Thread 中讨论的其他器件:CC2650
工具/软件:TI-RTOS
大家好、
我正在研究心率项目、我已经修改了该项目以支持发送(通知) 20字节数据包、并进行了修改以使其正常工作。
接下来、我 想在 cc26xx 和我的 Android 应用之间建立双向通信。 所以、我正在修改心率控制点特征、它看起来是"有效"的。 我从 CC2650修改的代码如下:
静态 bStatus_t 传闻证据_WriteAttrCB (uint16_t connHandle、 gattAttribute_t *pAttr、uint8_t *pValue、 uint16_t len、uint16_t offset、 uint8_t 方法) { bStatus_t status = Success; uint16 uuid = build_uint16 (pAttr->type.uuuuid[0]、pAttr->type.uuuuid[1]); switch (uuid) { 案例传闻_CTRL_PT_UUID: 如果(偏移> 0) { 状态= ATT_ERR_ATTR_NOT _long; } 其他 { *(pAttr->pValue)= pValue[0]; (*心跳服务 CB)(耳戴式命令集); /*使用接收到的命令输入*/ } 中断;
我的目标是在收到来自 Android 应用的输入后、它将执行一些预定义的任务。 例如、0表示切换 LED ... 现在、我希望它通过添加以下内容来通知接收到的数据:
*(pAttr->pValue)= pValue[0]; (*心跳服务 CB)(耳戴式命令集); //返回值*(pAttr->pValue) attHandleValueNoti_t 心跳评估; 心跳速率测量值.pValue = GATT_BM_alloc (connHandle、ATT_Handle_Value_Noti、 20、NULL); char buf[12]; sprintf (buf、"CC2650 received:%d"、*(pAttr->pValue)); bedRateMeas len = 20; betRateMeas .pValue[0]= 1; int 计数器= 0;int i; for (i = 1;i <= strlen (buf);++I、++counter){ butRateMeas .pValue[i]= buf[计数器]; } if (HeartRate_MeasNotify (connHandle、¢erRateMeas)!=成功) { GATT_BM_FREE (((gattMsg_t *)&心跳 速率测量、ATT_Handle_value_Noti); }
但是、当应用程序执行这些代码行时、它会崩溃和/或断开连接。 为什么? 我使用非常类似的方法为函数 HeartRate_MeasNotify 发送20字节 int/string 数据包。
最棒的
Henry