Hi Dialog,
我使用的发送函数是 send_ble_data(const uint8_t *data,uint16_t length),
send_ble_data(const uint8_t *data,uint16_t length)
{
struct sps_server_data_tx_req *req = KE_MSG_ALLOC_DYN(SPS_SERVER_DATA_TX_REQ,
TASK_SPS_SERVER,
TASK_APP,
sps_server_data_tx_req,
len);
req->length = len;
memcpy(req->value, buf, len);
ke_msg_send(req);
}
我也参考了这个回答,
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...
我第二个数据包应该是把第一个覆盖掉了,然后又发了一次第二个数据包。
请问一下我这样的处理方式哪里错了错误,我这个程序是在DSPS的基础上改的。
谢谢了!
Device:
你好,
从你贴上来的代码,我们只知道:
你从 user 层,向 profile 层发送了一条消息,需要发送一段数据。并附上待发送的数据和数据长度。
至于这个消息由 profile 层接收之后,做什么处理,我们无从得知。
不过,如果你没有对 DSPS 工程的 profile 层做任何修改的话,这种发送数据的方式应该没问题。
DSPS 工程发送数据过程,大概描述如下:
1.用户层发消息给概要文件层,并附上待发送数据和数据长度
2. profile 层接收到 user 层的数据之后,把他们都扔进缓冲
3. profile 层检查一切条件成熟之后(串口没有数据,发送缓冲历史遗留的待数据等),将数据从缓冲中拉出来(ble_pull_data),然后扔给底层(GATTC_NOTIFICATION)
4. 底层发送完数据之后,会给到上层一条成功与否的消息
5. profile 层接收到发送结束消息之后,在回调函数中继续从缓冲中拉数据出来,继续发送。重复 3 4 5,直到数据完毕。
Hi,
我使用SDK 5.0.4 ble_app_profile, 也是參考下面回答,連續呼叫兩次send_to_app();
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bluetooth-low-energy-%E2%80%93-hardware-device-reference-designs-dialog--26
但也是跟一樓一樣,兩筆封包都是第二筆的資料,是不能這樣呼叫嗎?