/************************************************************************************* // Function: BspGetACStatus // Purpose: Give a AC status to upper layer // Returns: TRUE--ACOnline FALSE--ACOff //***********************************************************************************/ BOOL BspGetACStatus(void) { BOOL bRet = FALSE; if(BspAdapterDetect()||BspUSBChargerDetect()) bRet = TRUE; // if we support APM, then check the AC status and notify to APM // if (g_oalSysInfo.apmInfo.bEnabled) { BYTE ACLineStatus = AC_LINE_OFFLINE; if (bRet) ACLineStatus = AC_LINE_ONLINE; if ((g_ACLineStatusCheck != AC_LINE_UNKNOWN) && (g_ACLineStatusCheck != ACLineStatus)) { //notify the APM driver if (g_hevBatteryStatus) { if (ACLineStatus == AC_LINE_ONLINE) SetEventData(g_hevBatteryStatus, ACIn); else SetEventData(g_hevBatteryStatus, ACOut); SetEvent(g_hevBatteryStatus); } } g_ACLineStatusCheck = ACLineStatus; } return bRet; }
bool ARMQueue::ProcessEvents(KTKvectorIterator<IKEBarmEventHdl>& eventQueueIterator, //in ARMQueueStrategy* pQueueStrat, KTKautoPtr<KTKexception> & pError) // in out { ARMActionDispatcher aDisp; char action_str[60]; int set_in_use=0; ARMHistoryLog* hl = ARMHistoryLog::GetARMHistoryLog(_armEntitiesFactory,pError); aDisp.Initialize(_armEntitiesFactory, pQueueStrat,pError); aDisp._processSource=EVENT_CAT_QUEUE; // Get events to dispatch //IKDBconnection * pConn=_dbConnectionCust.GetPtr(); armHandlePtr armHdl = new armHandle(); while(eventQueueIterator.More()) { IKEBarmEventHdl eventQueue = *eventQueueIterator++; SetEventData(eventQueue); strcpy (action_str , eventQueue->GetAction().AsString() ); emit( ARMMOD, ARM_QUEUE_START_EACH_ACCT, eventQueue->GetAccountNo().AsInt(), eventQueue->GetBillRefNo().AsInt(), eventQueue->GetBillRefResets().AsInt(), eventQueue->GetOpenItemId().AsInt(), action_str); Arb_connection* dbp = _dbConnectionCust; // Transaction about to commence bool transStatus = false; transStatus = armHdl->GetCmfInUse(dbp, eventQueue->GetAccountNo().AsInt(),&set_in_use); if (set_in_use == 1) { emit( ARMMOD, ARM_CMF_IN_USE_SET, eventQueue->GetAccountNo().AsInt(), eventQueue->GetBillRefNo().AsInt(), eventQueue->GetBillRefResets().AsInt(), eventQueue->GetOpenItemId().AsInt()); } if ((set_in_use == 0) && (transStatus == 1)) { if(!aDisp.AddActionForDispatch(_eventData,pError)) { emit( ARMMOD, ARM_PROMISEQ_FAIL_EACH_ACCT , eventQueue->GetAccountNo().AsInt(), eventQueue->GetBillRefNo().AsInt(), eventQueue->GetBillRefResets().AsInt(), eventQueue->GetOpenItemId().AsInt() ); emit( ARMMOD, ARM_COMMON_ERR1 , pError->DebugMessages().Data() ); } } } return aDisp.DispatchAllActions(pError); }
// dirty code inspired by HTC keypad driver implementation. LRESULT CALLBACK HookProc(int code, WPARAM wParam, LPARAM lParam) { if (wParam == WM_KEYDOWN || wParam == WM_KEYUP) { KBDLLHOOKSTRUCT *kbd = (KBDLLHOOKSTRUCT*)lParam; CEDEVICE_POWER_STATE powerstate; DWORD res = GetDevicePower(L"BKL1:", POWER_NAME, &powerstate); if (powerstate == 4) badKeyTimeStamp = GetTickCount(); if (wParam == WM_KEYDOWN && (kbd->vkCode == 0x75 || kbd->vkCode == 0x76) && isOK == TRUE) downAfterRWinKey = TRUE; HWND volumeControl = FindWindow(L"VOLUMECONTROL", NULL); HWND foregroundWindow = GetForegroundWindow(); BOOL isOverlay = fnCheckOverlayAP(volumeControl, foregroundWindow); if ((foregroundWindow != volumeControl || isOverlay == TRUE) && (kbd->vkCode == VK_UP || kbd->vkCode == VK_DOWN)) return 1; BOOL shouldReturn = FALSE; if (downAfterRWinKey == FALSE && (kbd->vkCode == 0x75 || kbd->vkCode == 0x76)) { int ticks = GetTickCount(); if (wParam == WM_KEYDOWN) downKeyTimeStamp = ticks; if (volumeControl) { if ((ticks - badKeyTimeStamp) < 2000) return 1; if ((ticks - downKeyTimeStamp) > 2000) return 1; HANDLE hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, L"GetFromKeyEvent_11"); DWORD data = (kbd->vkCode << 4) | (wParam == WM_KEYUP ? 1 : 0); SetEventData(hEvent, data); SetEvent(hEvent); CloseHandle(hEvent); shouldReturn = TRUE; } } if (wParam == WM_KEYUP && (kbd->vkCode == 0x75 || kbd->vkCode == 0x76) && downAfterRWinKey == TRUE) downAfterRWinKey = FALSE; if (wParam == WM_KEYUP && kbd->vkCode == 0x5C) isOK = FALSE; else if (wParam == WM_KEYDOWN && kbd->vkCode == 0x5C) isOK = TRUE; if (shouldReturn == TRUE) return 1; } return 0; }
void BspBattCriticalLow( void) { DPSTR("endter BspBattCriticalLow"); if(BatCriticalLowWaitCount <BATTERY_CRITICAL_WAITING) { RETAILMSG(ZONE_BATT, (TEXT("++WARNING::BatteryCriticalLow !!!\r\n"))); BatCriticalLowWaitCount++; } else { BatCriticalLowWaitCount =0; // if (!g_oalSysInfo.apmInfo.bEnabled) //[david.modify] 2008-05-23 15:31 if(1) { RETAILMSG(ZONE_BATT, (TEXT("++BatteryCriticalLow enter sleep\r\n"))); if(!(BspAdapterDetect()||BspUSBChargerDetect())) { //================================================ //Awisc.Chen add 2008-07-14 18:10 start //[david.modify] 2008-08-18 09:33 #if 0 DPSTR("endter event"); DPNOK(g_hEvent); g_hEvent = CreateEvent(NULL , FALSE , FALSE , EVENT_OVL); DPNOK(g_hEvent); if(g_hEvent != INVALID_HANDLE_VALUE) { SetEventData(g_hEvent , BITMAP_LOWBAT_ID); //显示图片 SetEvent (g_hEvent); g_hEvent2 = CreateEvent(NULL , FALSE , FALSE , EVENT_OVL_END); DPNOK(g_hEvent2); if(g_hEvent2 != INVALID_HANDLE_VALUE) { DPNOK(g_hEvent2); WaitForSingleObject(g_hEvent2, 10000); //等待10s等待显示完毕 SetEventData(g_hEvent , BITMAP_HIDE_ID); //隐藏图片 SetEvent (g_hEvent); WaitForSingleObject(g_hEvent2, 10000); //等待10s 等待隐藏完毕//用时40MS CloseHandle(g_hEvent2); g_hEvent2 = NULL; } CloseHandle(g_hEvent); g_hEvent = NULL; } #else DPSTR("+BITMAP_LOWBAT_ID"); SendOvlEvent(BITMAP_LOWBAT_ID); DPSTR("-BITMAP_LOWBAT_ID"); Sleep(2000); // 关背光 OEM_IOCTL_Backlight_ONOFF(0); DPSTR("+BITMAP_HIDE_ID"); SendOvlEvent(BITMAP_HIDE_ID); DPSTR("-BITMAP_HIDE_ID"); Sleep(150); #endif //================================================//Awisc.Chen add 2008-07-14 18:10 end ForceEnterSleep(); } }else { //notify the APM driver if (g_hevBatteryStatus) { SetEventData(g_hevBatteryStatus, BatteryLow); SetEvent(g_hevBatteryStatus); } } } }