尊重原创,转载请注明:
基于蓝牙4.0,协议栈版本是1.3.2
在OSAL中的OSAL_PwrMgr.c与OSAL_PwrMgr.h两个文件实现对功耗的控制。
首先是功耗管理的结构体定义
typedef struct
{
uint16 pwrmgr_task_state; //是否进入节能模式
uint16 pwrmgr_next_timeout; //记录软件定时器中下次超时的最短一个时间
uint16 accumulated_sleep_time; //记录累计睡眠多少时间
uint8 pwrmgr_device; //记录现在设备供电的类型
} pwrmgr_attribute_t;
pwrmgr_task_state的bit0~bit15分别对应着16个任务的功耗状态,如果某一位为0,则它对应的任务进入节电模式。
pwrmgr_next_timeout记录着最短的超时时间,从定时器管理列表获得,在这段时间内,系统处于空闲状态,所以pwrmgr_next_timeout实际上是记录当次系统睡眠的时间。
accumulated_sleep_time则记录这系统累计睡眠时间。
<