微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640 notify使能 成功后,主机发送出错

CC2640 notify使能 成功后,主机发送出错

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

本人对bl4.0不太懂,目前刚接手的项目,调的焦头烂额,请求大神多多指点。

目前遇到的问题:

从机使能notify代码:

        // Do a write         attWriteReq_t req;

        req.pValue = GATT_bm_alloc(connHandle, ATT_WRITE_REQ, 2, NULL);        

if ( req.pValue != NULL )         {          

req.handle = charHdl+1;//特征值6          

//req.offset = 0;          

req.len = 2;          

req.pValue[0] = 0x01;          

 req.pValue[1] = 0x00;          

req.sig = 0;          

req.cmd = 0;

status = GATT_GATT_WriteCharValue(connHandle, &req);          

if ( status != SUCCESS )          

 {             GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);           }                  

 }

 

目前,设备可以连接并且可以通过特征值6给从设备发送数据。但是我使能notify,想要从机给主机发送数据的时候,使用的上面的代码。从机的notify功能被使能,可以给主机发送数据。但是,主机发送上面的命令,却收不到写成功的反馈。而且,发送这指令之前是可以给从机发送数据的,发送之后,主机再也无法给从机发送命令了。不知道是什么原因。有没有遇到类似情况的,或者可能发生此问题的原因,指点一下。已经困扰我好几天了。

ye,

那么你是在哪里调用上面的代码去发送给从机数据的呢?

有两个怀疑的地方,第一就是你的handle,特征值6,你得确保你那样写是正确的handle。 第二就是你调用这段代码的地方了。

Yan: 

非常的感谢回答我的问题。 我是在主函数中调用,没有问题。我已经查出来了,是从机程序有问题,但是不知道从机程序哪有问题。我换了一个从机的demo就行了。

 我现在又遇到了一个新的问题,我用的demo是“多角色“的demo,但是连接从机的时候,执行程序:

       uint8_t uuid[ATT_UUID_SIZE] = { TI_BASE_UUID_128(SIMPLEPROFILE_SERV_UUID) };     

       discState = BLE_DISC_STATE_SVC;

      // Discovery simple BLE service      

      VOID GATT_DiscPrimaryServiceByUUID(connHandle, uuid, ATT_UUID_SIZE,                                          selfEntity);     }

后,返回ATT_ERROR_RSP错误。

我确定我的SIMPLEPROFILE_SERV_UUID是正确的,因为我是多角色程序,一套程序,一个做主一个做从连接的。

我用这套程序作为主,连接另一个从机程序,是可以返回的。也就是说从机部分有问题,但是我查看代码,我的程序与那套从机程序没什么大的区别。

你知道这个原因,可能是哪出问题了吗,给我一个查找问题的方向也行?

 

 

Yan:

非常的感谢回答我的问题。 我是在主函数中调用,没有问题。我已经查出来了,是从机程序有问题,但是不知道从机程序哪有问题。我换了一个从机的demo就行了。

我现在又遇到了一个新的问题,我用的demo是“多角色“的demo,但是连接从机的时候,执行程序:

       uint8_t uuid[ATT_UUID_SIZE] = { TI_BASE_UUID_128(SIMPLEPROFILE_SERV_UUID) };    

       discState = BLE_DISC_STATE_SVC;

      // Discovery simple BLE service     

      VOID GATT_DiscPrimaryServiceByUUID(connHandle, uuid, ATT_UUID_SIZE,                                          selfEntity);     }

后,返回ATT_ERROR_RSP错误。

我确定我的SIMPLEPROFILE_SERV_UUID是正确的,因为我是多角色程序,一套程序,一个做主一个做从连接的。

我用这套程序作为主,连接另一个从机程序,是可以返回的。也就是说从机部分有问题,但是我查看代码,我的程序与那套从机程序没什么大的区别。

你知道这个原因,可能是哪出问题了吗,给我一个查找问题的方向也行?

ye,

无法判断。

这个需要你空中抓包分析,到底哪里交互有问题。

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

网站地图

Top