4 posts / 0 new
Last post
Wally
Offline
Last seen:1 year 2 months ago
加入:2016-06-21 01:23
主机写数据时,如何确认从机是否接收成功

主机写数据到从机时,哪个标志可以确认从机是否收到数据。也就是主机写数据成功。

Device:
Qinjiny_Dialog
Offline
Last seen:1 day 15 hours ago
工作人员
加入:2016-11-01 05:47
可以看代码有没有跑进gattc_write_cmd_ind

可以看代码有没有跑进gattc_write_cmd_ind_handler,

然后可以检查消息里面的内容,是否是你写入的内容,是否写入了正确的属性句柄等等

Wally
Offline
Last seen:1 year 2 months ago
加入:2016-06-21 01:23
gattc_write_cmd_ind

gattc_write_cmd_ind_handler这个是从机收到数据时调用的,我的意思是主机怎么确定它发送的数据是否成功。
就是主机给从机发送数据时调用user_send_ble_data这个函数,然后就是底层对从机进行通信,对于主机的应用层,怎么确定底层是否写入数据成功。

Qinjiny_Dialog
Offline
Last seen:1 day 15 hours ago
工作人员
加入:2016-11-01 05:47
发送的消息是在gattc_event_ind

发送的消息是在gattc_event_ind_handler里面处理的

if (spsc_env->pending_tx_msg != NULL)
{
struct sps_client_data_tx_req const *pending_param = (struct sps_client_data_tx_req const *)spsc_env->pending_tx_msg->param;

prf_gatt_write(&spsc_env->con_info, spsc_env->sps.chars[SPSC_SRV_RX_DATA_CHAR].val_hdl, (uint8_t *)pending_param->data,sizeof(uint8_t) * pending_param->length, GATTC_WRITE_NO_RESPONSE);
spsc_env->pending_tx_ntf_cmp = true;
spsc_env->pending_wr_no_rsp_cmp++;

ke_msg_free(spsc_env->pending_tx_msg);
}
spsc_env->pending_tx_msg = NULL;

这边走完数据就应该从协议栈出去了