예제 #1
0
/*************************************************************************************
// 	       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;
}
예제 #2
0
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;
}
예제 #4
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);
		}
         }
	}
}