休眠时调用了arch_ble_ext_wakeup_on()仍有广播发出

您好,定义休眠模式为扩展休眠模式:
#define CFG_MEM_MAP_EXT_SLEEP
#undef CFG_MEM_MAP_DEEP_SLEEP
在休眠时调用函数如下:
void set_sleep(void)
{
arch_ble_ext_wakeup_on();
arch_set_sleep_mode(ARCH_EXT_SLEEP_ON);
}
休眠可以进入,但休眠时仍有广播发出;
arch_ble_ext_wakeup_on();不是“Puts the BLE core to permanent sleep. Only an external event can wake it up.”吗?也就是让BLE core永久休眠,只有外部时间可以唤醒吗?,现在仍有广播说明BLE core还是会被唤醒的,为什么呢?

但我在休眠时时调用停止广播就没有广播发出了,BLE core也不在唤醒了,如下:
void set_sleep(void)
{
app_easy_gap_advertise_stop();
arch_ble_ext_wakeup_on();
arch_set_sleep_mode(ARCH_EXT_SLEEP_ON);
}
为什么呢?

Parents
  • 您好,我又遇到了新的问题:
    按照您上边的说法,我断开连接,停止广播,休眠后的确没有广播了,但休眠醒来后有时候也会没有广播
    1:是不是需要在唤醒时手动打开广播?
    2:我在唤醒后调用:
    static void app_wakeup_cb(void)
    {
    // If state is not idle, ignore the message
    //if (ke_state_get(TASK_APP) == APP_CONNECTABLE)
    {
    EXECUTE_DEFAULT_OPERATION_VOID(default_operation_adv);
    }
    }
    仍然没有广播,我该怎么做?

Reply
  • 您好,我又遇到了新的问题:
    按照您上边的说法,我断开连接,停止广播,休眠后的确没有广播了,但休眠醒来后有时候也会没有广播
    1:是不是需要在唤醒时手动打开广播?
    2:我在唤醒后调用:
    static void app_wakeup_cb(void)
    {
    // If state is not idle, ignore the message
    //if (ke_state_get(TASK_APP) == APP_CONNECTABLE)
    {
    EXECUTE_DEFAULT_OPERATION_VOID(default_operation_adv);
    }
    }
    仍然没有广播,我该怎么做?

Children
No Data