解决cc2652做为client发送给对端的字节数最大为20的问题

测试cc2652最为client通过拥有notify属性的特征值给对端(APP)发送数据时,最多只能发送20个字节。原因是:虽然可以将堆栈配置为支持MAX_PDU_SIZE最多 255 个字节,但每个低功耗蓝牙连接最初都使用默认的 27 字节(ATT_MTU= 23 字节)值,直到交换 MTU 过程产生更大的 MTU 大小。必须在每个低功耗蓝牙连接上执行交换 MTU 过程,并且必须由客户端启动。

  即在BLE连接建立后,由作为client的cc2652通过调用GATT_ExchangeMTU函数发起更改MTU的操作,将MTU设置为想要的最大传输数据个数。

BLE-stack官网的相关描述见参考链接:https://dev.ti.com/tirex4-desktop/content/simplelink_cc13xx_cc26xx_sdk_7_40_00_77/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gatt.html?highlight=gatt_exchangemtu#maximum-transmission-unit-mtu

在SimplePeripheral_processGapMessage函数的case GAP_LINK_ESTABLISHED_EVENT:添加代码如下:

case GAP_LINK_ESTABLISHED_EVENT:
    {
      gapEstLinkReqEvent_t *pPkt = (gapEstLinkReqEvent_t *)pMsg;

      BLE_LOG_INT_TIME(0, BLE_LOG_MODULE_APP, "APP : ---- got GAP_LINK_ESTABLISHED_EVENT", 0);
      // Display the amount of current connections
      uint8_t numActive = linkDB_NumActive();

       ......

      if (pPkt->hdr.status == SUCCESS)
      {
        // Add connection to list and start RSSI
        SimplePeripheral_addConn(pPkt->connectionHandle);

        ......
		
		attExchangeMTUReq_t pReq;
		pReq.clientRxMTU = MAX_PDU_SIZE-L2CAP_HDR_SIZE;

		GATT_ExchangeMTU(pPkt->connectionHandle, &pReq, selfEntity);
		
        // Start Periodic Clock.
        Util_startClock(&clkPeriodic);
      }
      if ((numActive < MAX_NUM_BLE_CONNS) && (autoConnect == AUTOCONNECT_DISABLE))
      {
        // Start advertising since there is room for more connections
        GapAdv_enable(advHandleLegacy, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);
      }
      else
      {
        // Stop advertising since there is no room for more connections
        GapAdv_disable(advHandleLegacy);
      }
      break;
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值