主机写数据到从机时,哪个标志可以确认从机是否收到数据。也就是主机写数据成功。
可以看代码有没有跑进gattc_write_cmd_ind_handler,
然后可以检查消息里面的内容,是否是你写入的内容,是否写入了正确的属性句柄等等
gattc_write_cmd_ind_handler这个是从机收到数据时调用的,我的意思是主机怎么确定它发送的数据是否成功。就是主机给从机发送数据时调用user_send_ble_data这个函数,然后就是底层对从机进行通信,对于主机的应用层,怎么确定底层是否写入数据成功。
发送的消息是在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;
这边走完数据就应该从协议栈出去了
可以看代码有没有跑进gattc_write_cmd_ind_handler,
然后可以检查消息里面的内容,是否是你写入的内容,是否写入了正确的属性句柄等等
gattc_write_cmd_ind_handler这个是从机收到数据时调用的,我的意思是主机怎么确定它发送的数据是否成功。
就是主机给从机发送数据时调用user_send_ble_data这个函数,然后就是底层对从机进行通信,对于主机的应用层,怎么确定底层是否写入数据成功。
发送的消息是在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;
这边走完数据就应该从协议栈出去了