我在gattc_write_req_ind_handler()写处理后,使用KE_MSG_SEND()发送消息,我该如何知道消息是否发送出去成功?
您好,
请问您使用的是哪款芯片
DA14531芯片,使用的是官方6.0.22的SDK
KE_MSG_SEND() 发送消息没有返回值的,内核会自动处理消息的
目前是遇到什么问题了吗
你好,我现在使用的是DA14531,使用的例程是\SDK_6.0.24.1464\DA145xx_SDK\6.0.24.1464\projects\target_apps\ble_examples\ble_app_profile\Keil_5我出现的问题是,我在进行蓝牙发送的时候,设备与DA14531远离后断开,再靠近后重新连接,但是再次连接后,运行了几秒钟没有数据发送,然后DA14531出现死机重启的状况我经过调试发现当我把蓝牙发送数据给屏蔽掉,没有再出现这种状况,这是我屏蔽的内容 // 动态分配消息内存// struct custs1_val_ntf_ind_req *req_id = KE_MSG_ALLOC_DYN(// CUSTS1_VAL_NTF_REQ,// prf_get_task_from_id(TASK_ID_CUSTS1),// TASK_APP,// custs1_val_ntf_ind_req,// len );// // 填充消息的其他字段// req_id->handle = SVC1_IDX_LONG_VALUE_SW_VAL; //SVC1_LONG_VALUE_test_VAL;// req_id->length = len;// req_id->notification = true;// memcpy(req_id->value, send_data1, len); // 复制数组数据到消息体中的动态数组 `value[]`// ke_msg_send(req_id); // 发送消息然后我经过测试发现当单独把// ke_msg_send(req_id);屏蔽的时候,执行到分配内存几次就死机自动重启了1.请问这里的ke_msg_send()由内核自动释放空间,如果是我申请了没有发送出去的话,需要我自己手动释放吗?2.是否可能出现我的蓝牙连接上了,并且调用了ke_msg_send()发送,但是没有发送成功,是否会自动释放空间?3.如果需要我自己手动释放空间的话,我应该在什么时候释放,是否有判定发送完成和发送失败函数?
连接了再发?
你好,我现在需要测试的是连接后再发送数据过程中设备远离的情况
你好,
1, 你发送notify 用的是timer周期发送吗?不一定是内存问题,有调试具体死在哪里了吗?
2, 会
3, 建议notify 的开启和关闭可以从主机来控制 参考ble_app_peripheral adc value 更新的例子
获取连接状态可以用: if (ke_state_get(TASK_APP) == APP_CONNECTED)
谢谢