ロングライトの特性値の長さの抽出– KBA223087 - Community Translated (JA)

Version 1

    Community Translated by  HiOm_1802421          Version: **

     

    質問:

    特性(キャラクタリスティック)値が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[i].handleValuePair.value.len;

     

    printf("\nLength written is %d \n",length);

     

    }

        break;