CY8CKIT-143A

  PSoC

Contents

main.c

チュートリアル用に用意されているソースを自分なりに解析

int main()

6行目までは、PSoC4本体やCapsenseモジュールの起動・初期化を実施。

9行目でBLEスタックの割り込みハンドラ(後ほど解析)を登録。

forループに入って、14~20行目では、前回のCapsenseスキャンが完了していたら以下の処理を実行。
・変数fingerPosにリニアスライダ上の指の位置を格納
・有効なセンサ情報を更新
・有効なウィジェットをスキャン
・updateCapsense()を実行 (後ほど解析)

21行目では、ペンディングになってるBLEスタック処理をチェックして実行。
Low Power Mode前にはペンディング無しにする必要がある。

22行目で、Low Power Modeに移行

 

 

BleCallBack()

これがPSoC4のBLEモジュールの肝。
eventcode毎に処理を記載。

1. CYBLE_EVT_STACK_ON
BLEスタックが初期化完了した際に発生するイベント。
特に何も処理しない。

2. CYBLE_EVT_GAP_DEVICE_DISCONNECTED
確立されていた接続が切断もしくは失敗した際に発生するイベント。
・アドバタイズメント・パケット(自分の存在を周囲に定期的に発送するブロードキャストパケット)送信開始
・青LED点滅開始

3. CYBLE_EVT_GATT_CONNECT_IND
コネクション確立時に発生するイベント。
・updateLed()処理実行 (後で解析)
・updateCapsense()処理実行(後で解析)
・青LED消灯

4. CYBLE_EVT_GATTS_WRITE_REQ
クライアントから書き込み要求が来た際に発生するイベント。
 ・CYBLE_LEDCAPSENSE_LED_CHAR_HANDLEへの書き込み要求
   ・赤LEDを書き込まれた値に従い点灯(1)/消灯(0)
   ・クライアントにレスポンスを返す
 ・CYBLE_LEDCAPSENSE_CAPSENSE_CAPSENSECCCD_DESC_HANDLEへの書き込み要求
   ・capsenseNotifyに書き込み値を反映(1: notify有効、0: notify無効)
   ・クライアントにレスポンスを返す

 

 

updateLed()

コネクションが確立してない場合は処理終了。
コネクションが確立していたら、現在の赤LEDの状態をGATTデータベースに反映する。

 

 

updateCapsense()

・コネクションが確立してない場合は処理終了
・コネクションが確立していたら、現在のCapsense値をGATTデータベースに反映
・notify有効時、前回のCapsense値と差分があればnotify発行

 

なんとなく処理がわかった。
データベースを増やしたら処理を加えていくだけで問題なさそう。

ページ: 1 2

LEAVE A COMMENT