ota gatt通信问题
-
用二个FR8016H Dongle,分别用作主从AT,能正常执行AT命令及透传等功能,希望能通过主机对从机进行代码更新等工作。
已在user_entry_after_ble_init(void)中均添加 ota_gatt_add_service(); 能通过手机与从机进行可选择的AT或ota服务进行数据交换。
想通过Dongle主机与发信息给从机进行OTA服务,将根据 at_spsc_send_data()修改并增加 void ota_gatt_send_data(uint8_t conidx,uint8_t *data, uint8_t len) 如下:
void ota_gatt_send_data(uint8_t conidx,uint8_t *data, uint8_t len)
{
//if(l2cm_get_nb_buffer_available() > 0)
{
gatt_client_write_t write;
write.conidx = conidx;
write.client_id = ota_svc_id;
// write.att_idx = 1; //TX
write.att_idx = OTA_ATT_IDX_CHAR_VALUE_TX; //TX
write.p_data = data;
write.data_len = MIN(len,gatt_get_mtu(conidx) - 3);
// gatt_client_write_cmd(write);
gatt_client_write_req(write);
}
}
在 at_task_func()的AT_RECV_TRANSPARENT_DATA 事件中将at_spsc_send_data()替换为ota_gatt_send_data():
#if 0
if(gAT_buff_env.peer_param[gAT_ctrl_env.transparent_conidx].link_mode == SLAVE_ROLE)
at_spss_send_data(gAT_ctrl_env.transparent_conidx, gAT_env.at_recv_buffer,gAT_env.at_recv_index);
else if(gAT_buff_env.peer_param[gAT_ctrl_env.transparent_conidx].link_mode == MASTER_ROLE) //master
at_spsc_send_data(gAT_ctrl_env.transparent_conidx, gAT_env.at_recv_buffer,gAT_env.at_recv_index);
#else
co_printf("\r\n transparent_conidx:%d ota_gatt_send_data:",gAT_ctrl_env.transparent_conidx);
show_reg(gAT_env.at_recv_buffer,gAT_env.at_recv_index,1);
co_printf("\r\n");
ota_gatt_send_data(gAT_ctrl_env.transparent_conidx,gAT_env.at_recv_buffer,gAT_env.at_recv_index);
// ota_gatt_report_notify(gAT_ctrl_env.transparent_conidx,gAT_env.at_recv_buffer,gAT_env.at_recv_index);
#endif
本希望能在从机 OTA_gatt服务端的到来自主机的信息,但实际却是在从机AT GATT服务端(SPSS)收到数据,请教问题出在哪? 急!!!- 列表
-
找到你对应的OTA服务