基于WinCE驅動程序的電源管理研究與設計
圖3 系統(tǒng)電源狀態(tài)的轉換
3 背光驅動的電源管理
3.1 LCD 背光的電源管理策略
背光驅動啟動一個監(jiān)視工作線程, 不停的等待3 個事件:
3.1.1 BackLightChang eEv ent
等待注冊表中時鐘的更新, 在注冊表的時鐘更新之后總是將背光燈打開。
dw Resul t = WaitForMul tipleObject s( NUM _EVENT S, g_evtSignal[ 0] , FALSE, dw Tim eout ) ;
if ( WAIT _OBJECT_0 = = dw Res ult ) {
BL_ReadRegist ry( g_BLInf o) ;
BL_On( TRUE) ;
}
3.1.2 Pow erChangedEv ent
供電電源發(fā)生變化, 例如插入了電源, 監(jiān)視線程會獲得了這個事件。如果使用電源, 可以使用m _ dw ACTimeout 值作為超時值, 否則, 使用m _ dw Batter yT imeout 值作為超時值。
if ( dw Result = = WAIT_OBJECT _0+ BL_POWERE VT) {
if ( IsACOn( ) ) {
dw Timeout = g_BLInf o. m_dw ACTim eout * 1000;
}
else {
dw Timeout = g_BLInf o. m_dw Bat t eryT imeout * 1000;
}
}
3.1.3 Pow erM anag er/ ActivityTimer / UserActivity
等待用戶輸入事件,如果用戶有按鍵動作,則無論電源插上與否背光驅動都打開,否則,等待超時事件的發(fā)生, 將背光驅動關閉。
if ( dw Result = = WAIT_OBJECT _0+ 1 | | dwResult = = WAIT _OBJECT _0 + BL_BUT TONEVT )
{
if ( IsACOn( ) ) {
if ( g_BLIn fo. m_bAC Au t o) {
BL_On( TRUE) ; }
}
else {
if ( g_BLIn fo. m_bBat t eryAut o) {
BL_On( TRUE) ; }
}
}
else if ( dw Result = = WAIT_T IMEOUT ) {
BL_On( FALSE) ;
}
注冊表的超時值決定了背光燈的工作時間。在注冊表中進行如下超時值的設置:
[ H KEY_CURRE NT_USER/ Cont rolPanel / Backlight ]
AC Timeout = dword: 3c / / 十六進制, 十進制為60
Bat t eryT imeout = dw ord: 1e / / 十六進制, 十進制為30
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論