2 posts / 0 new
Last post
yekun
Offline
Last seen: 2 months 7 hours ago
Joined: 2020-04-28 12:09
DA14585 高速NOTIFY数据

你好,我使用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);
}

 

Device: 
qifang
Offline
Last seen: 8 months 3 weeks ago
Staff
Joined: 2019-12-30 09:02
Hi Yekun, 你好

Hi Yekun, 你好

可以将看门狗先关闭,再进入debug模式排查,看在哪个位置调用了reset函数。

Best regards,

Qifan