- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I tried to translate this KBA223087 into Japanese.
Extracting the Length of Characteristic Value in Long Write – KBA223087
==========
タイトル:ロングライトの特性値の長さの抽出
質問:
特性(キャラクタリスティック)値がMTUサイズより長い場合に、どうやってクライアントからサーバに書き込まれた特性値の長さを抽出すれば良いですか。
回答:
書き込まれた特性値の長さがMTUサイズより大きい場合、サーバ側でCYBLE_EVT_GATTS_EXEC_WRITE_REQイベントが生成されます。
イベントパラメータは、CYBLE_GATTS_EXEC_WRITE_REQ_T構造体へのポインタです。
CYBLE_GATTS_EXEC_WRITE_REQ_T構造体では、prepwritecount個のbaseAddr.handleValuePair.value.lenを加算して、書き込まれた特性値の合計の長さを取得できます
サンプルコードは以下です。
次の変数を宣言します:
CYBLE_GATTS_EXEC_WRITE_REQ_T *longwrite;
CYBLE_GATT_HANDLE_VALUE_OFFSET_PARAM_T *dataaddress;
スタックイベントハンドラに、次のケース文を追加します:
case CYBLE_EVT_GATTS_EXEC_WRITE_REQ:
{
uint8 length=0;
uint8 writecount;
//イベントパラメータを取得する
longwrite= (CYBLE_GATTS_EXEC_WRITE_REQ_T *)eventParam;
dataaddress= longwrite->baseAddr;
//prepwritecount数を取得する
writecount=longwrite->prepWriteReqCount;
//prepwritecount個のbaseaddress.handevaluepair.value.lenを加算する
for(int8 i=0;i<writecount;i++)
length+= dataaddress.handleValuePair.value.len;
printf("\nLength written is %d \n",length);
}
break;
==========
BR,
Omoi