微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > GATT_WriteLongCharValue 发送数据出错,求解!

GATT_WriteLongCharValue 发送数据出错,求解!

时间:10-02 整理:3721RD 点击:

hi, all; 

我在central端执行GATT_WriteLongCharValue操作, 但是他的返回值为fail, 失败的原因为blePending(0x16)

具体代码如下:

/*这里获取notification事件的charhdl, 有进行跟踪,获取的值是正确的(和server端打印的一致)。 */

slave_block[i].ble_charhdl6= BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[0], pMsg->msg.readByTypeRsp.dataList[1] );       

     

      /* 对notification进行enable操作 */

      gattPrepareWriteReq_t req;

      req.handle = slave_block[i].ble_charhdl6 + 1;    /*  找到CCC的句柄 */

      req.len = 2;

      req.pValue[0] = LO_UINT16(SERVER_NOTIFICATION_ENABLE);    /* 0x01 */

      req.pValue[1] = HI_UINT16(SERVER_NOTIFICATION_ENABLE);     /* 0x00 */

      req.offset = 0;

 

      status = GATT_WriteLongCharValue( slave_block[i].ble_connhdl, &req, simpleBLETaskId );   /* 调用LONG函数进行写操作 */

                                                            /*  slave_block[i].ble_connhdl  这玩意也为0,感觉有点诡异,但在前面跟踪的时候确实为0 */

 

      if (status == SUCCESS) {

                 LCD_WRITE_STRING( "write success", HAL_LCD_LINE_3 );

      } else {

        LCD_WRITE_STRING( "write fail", HAL_LCD_LINE_3 );            /*  结局失败,原因码为 0x16 */

        SerialPrintValue("fail reason", status, 16);                           

        SerialPrintString("\r\n");

      }

我在server端的simpleProfile_WriteAttrCB的 GATT_CLIENT_CHAR_CFG_UUID分支进行打印到LCD检查,发现没进入该条件

请各位大神帮帮忙, Ti的工程师指点下更是万分欣慰

BR

TKS

补充下

      req.pValue[0] = LO_UINT16(SERVER_NOTIFICATION_ENABLE);    /* 0x00*/      这两个提问的时候我注释反了

      req.pValue[1] = HI_UINT16(SERVER_NOTIFICATION_ENABLE);     /* 0x01 */

且:  上面的req.pValue申请了空间的情况下也是如此

请大师点拨下

此帖已结

谢谢

说一下如何解决的方法吧,谢谢

enable写过程不能放在该函数内,在其他的地方写可以成功

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top