中
A
最近在折腾这个,主要是跟手机app的通信问题,有A B C D E F 几个节点使用同个固件。
用vender model通信,几个节点可以互相通信,收发。
使用手机app连接某个节点的proxy server,之后往mesh网络中的0xffff地址发送数据,只有被连接的节点才能收到,其他节点收不到。
发现一个问题,就是同一套代码,用的是同个SDK,顶层业务功能不一样,但是用其中某个节点做proxy server,其他节点是可以收到广播的。打印了期间的流程日志,日志都一样,也没报什么异常。
这个不知道是代码跑久了才有的问题还是什么,发现不是必然出现的,但是出现的概率也是很高
问题出在app_proxy.c 里面的 proxy_gatt_Write 这个函数里面,跟踪调查发现
在
else if(p_gatt->msgType == MSG_NETWORK_PDU){
if(!pkt_pb_gatt_data(pw,L2CAP_NETWORK_TYPE,(u8 *)&p_bear->nw,&proxy_para_len)){
return 0;
}
// and then how to use the data ,make a demo to turn on or turn off the light
p_bear->trans_par_val = TRANSMIT_DEF_PAR;
p_bear->len=proxy_para_len+1;
p_bear->type=MESH_ADV_TYPE_MESSAGE;
mesh_nw_pdu_from_gatt_handle((u8 *)p_bear);
这里,有时候p_bear->trans_par_val =TRANSMIT_DEF_PAR,也就是这个 model_sig_cfg_s.nw_transmit.val 的值是0.
目前还不清楚这个为什么会有变成0
难道是因为业务逻辑比较复杂,用的ram太多导致溢出或在啥的,影响到这个?怎么在运行的时候查看ram使用情况,有相关的日志打印函数吗
发现一个问题,就是同一套代码,用的是同个SDK,顶层业务功能不一样,但是用其中某个节点做proxy server,其他节点是可以收到广播的。打印了期间的流程日志,日志都一样,也没报什么异常。
这个不知道是代码跑久了才有的问题还是什么,发现不是必然出现的,但是出现的概率也是很高
问题出在app_proxy.c 里面的 proxy_gatt_Write 这个函数里面,跟踪调查发现
在
else if(p_gatt->msgType == MSG_NETWORK_PDU){
if(!pkt_pb_gatt_data(pw,L2CAP_NETWORK_TYPE,(u8 *)&p_bear->nw,&proxy_para_len)){
return 0;
}
// and then how to use the data ,make a demo to turn on or turn off the light
p_bear->trans_par_val = TRANSMIT_DEF_PAR;
p_bear->len=proxy_para_len+1;
p_bear->type=MESH_ADV_TYPE_MESSAGE;
mesh_nw_pdu_from_gatt_handle((u8 *)p_bear);
}
这里,有时候p_bear->trans_par_val =TRANSMIT_DEF_PAR,也就是这个 model_sig_cfg_s.nw_transmit.val 的值是0.
目前还不清楚这个为什么会有变成0
难道是因为业务逻辑比较复杂,用的ram太多导致溢出或在啥的,影响到这个?怎么在运行的时候查看ram使用情况,有相关的日志打印函数吗