#include "include.h" sleep_cb_t sleep_cb = { .sleep_enter_callback_func = NULL, .sleep_exit_callback_func = NULL, .sleep_terminate = 1, .sys_is_sleep = 0, }; /** * 设置进入和退出休眠的回调函数 sleep是省功耗的模式,该模式下会关闭ADC和部分PLL、硬件定时器,以及节省功耗; BLE和EDR还是保持连接,BLE正常交互不会退出sleep模式;EDR动作会退出,比如播放音乐,来电等动作。 * enter_callback : 进入休眠会被调用,可以在里面放置休眠下不需要执行的功能的反初始化,IO销毁等动作,以达到省功耗; * exit_callback : 退出休眠会被调用,可以在里面放置退出休眠需要重新初始化、恢复硬件等功能; */ void bsp_sleep_callbck_set(sleep_callback_func enter_callback, sleep_callback_func exit_callback) { sleep_cb.sleep_enter_callback_func = enter_callback; sleep_cb.sleep_exit_callback_func = exit_callback; } /** * 设置是否允许进入休眠 * is_allow : 如果当前在RUN模式,设置为true,指示系统可以进入sleep模式(进入后会调用 enter_callback);已经在sleep模式,设置为true没有意义; 如果当前在RUN模式,设置false,指示系统不允许进入sleep模式;当已经sleep模式,设置为false,立马会退出sleep模式(会调用exit_callback); */ void bsp_sleep_permit_set(bool is_allow) { sleep_cb.sleep_terminate = is_allow; } /** * 获取当前是否在休眠模式 * 返回值:true,在sleep模式; false 在run模式 */ AT(.com_text.bsp.sleep) bool bsp_system_is_sleep(void) { return sleep_cb.sys_is_sleep; }