BLE GATTサーバのGATT DBでの属性値更新– KBA219298 - Community Translated (JA)

Version 1

    Community Translated by  HiOm_1802421          Version: **

     

    質問:

    BLE GATTサーバのGATT DBで属性値を更新する方法を教えてください。

     

    回答:

    BLE GATTサーバでは、プロファイル関連データはGATTデータベースと呼ばれるデータベース内で構造化されます。GATTデータベースは、サーバ上に存在するサービス、特性、特性記述子、および宣言から構成されます。

    PSoC® Creator™では、これらの属性 (特性、記述子) は、BLE Component構成ウィンドウのProfilesタブで初期化できます。実行時に特性値を更新する必要がある場合、アプリケーションは、以下のように API およびマクロを使用して更新できます。

    いずれの場合も、値ソースの長さは、BLE Componentコンポーネント構成で設定された特性の長さ以下でなければなりません。

     

    1. サーバ自体が値をローカルで更新する必要がある場合: GATT特性は、GATTクライアントによって読み出されるスイッチの状態やセンサー出力などのアプリケーションでリアルタイム値を反映するためによく使用されます。特性の値を更新するに、アプリケーションで以下のいずれかを使用できます。

     

    1. CyBle_GattsWriteAttributeValue() APIおよび最後のパラメータをCYBLE_GATT_DB_LOCALLY_INITIATEDに設定
    2. CYBLE_GATT_DB_ATTR_SET_GEN_VALUE (handle,src,length) マクロ

     

    いずれの場合も、値ソースの長さは、BLE Component構成で設定された特性の長さ以下でなければなりません。

     

    2. GATT クライアントが書き込み要求を送信したために値を更新する必要がある場合: この場合、CyBle_GattsWriteAttributeValue() APIを使用し、最後のパラメータをCYBLE_GATT_DB_PEER_INITIATEDにセットしてください。

     

    CyBle_GattsWriteAttributeValue() APIの最後のパラメータがCYBLE_GATT_DB_LOCALLY_INITIATEDに設定されているとき、APIは属性の権限をチェックせず、属性値を盲目的に更新します。逆に、フラグがCYBLE_GATT_DB_PEER_INITIATEDに設定されているとき、APIは書き込み操作を実行する前に属性の権限を確認します。クライアントが必要な権限と一致しい場合、CyBle_GattsWriteAttributeValue() APIはそれに応じてGATTエラーコードを返します。戻り値に基づいて、書き込み応答またはエラー応答をクライアントに送り返せます。