1 Reply Latest reply on Apr 19, 2020 5:43 PM by JuyoungJ_06

    Community Translation - Extracting the Length of Characteristic Value in Long Write – KBA223087

    HiOm_1802421

      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[i].handleValuePair.value.len;

       

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

       

      }

          break;

      ==========

       

      BR,

      Omoi