你好,我使用notify 数据 ,使用定时器 100ms mtu:128 上传数据给APP ,在信号强度rssi-110至-120出现进入以下函数:
void platform_reset_func(uint32_t error)
{
uint16_t tmp;
#if (!PRODUCTION_TEST)
// Trigger assert if the reset reason is other than RESET_AFTER_SUOTA_UPDATE
ASSERT_WARNING(error == RESET_AFTER_SUOTA_UPDATE);
#endif
// Trigger SW reset
tmp = GetWord16(SYS_CTRL_REG);
tmp = (tmp & ~REMAP_ADR0) | 0; // Map ROM at address 0
tmp |= SW_RESET;
SetWord16(SYS_CTRL_REG, tmp);
}
我将以下堆栈修改进去platform_reset_func概率明显降低,但是我将定时器100ms改成50ms 又在信号差的时候进去platform_reset_func;
/****************************************************************************************************************/
/* Custom heap sizes */
/****************************************************************************************************************/
#define DB_HEAP_SZ 1024
#define NON_RET_HEAP_SZ 1024
#define ENV_HEAP_SZ 4928
#define MSG_HEAP_SZ 7904
你好:我现在想通过rssi强度来动态改变notify的定时器周期,防止内存溢出。并拥有更好的传输速率,是否可是实现;
然后蓝牙的rssi 强度怎么获取?如下是否正确?调试过程中gagc_con_rssi_ind_handler未被调用;
*/
void app_easy_gap_get_con_rssi(uint8_t connection_idx)
{
ASSERT_WARNING(connection_idx < APP_EASY_MAX_ACTIVE_CONNECTION);
struct gapc_get_info_cmd *cmd = KE_MSG_ALLOC(GAPC_GET_INFO_CMD,
KE_BUILD_ID(TASK_GAPC, connection_idx),
TASK_APP,
gapc_get_info_cmd);
cmd->operation = GAPC_GET_CON_RSSI;
ke_msg_send(cmd);
}
uint8_t rssi_buf[16] ,i;
int gagc_con_rssi_ind_handler(ke_msg_id_t const msgid,
struct gapc_con_rssi_ind const *param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
rssi_buf[i]=param->rssi;
i++;
if(i==16)
i=0;
return (KE_MSG_CONSUMED);
}
Hi Yekun, 你好
可以将看门狗先关闭,再进入debug模式排查,看在哪个位置调用了reset函数。
Best regards,
Qifan