void EggRotateCheck() { //rotate detector BOOL x=0; BOOL y=0; if( //jika IsTimeOut(&EggRotateTimeout) //sudah waktunya dirotasi && //dan EggIsRotating==STOP //sedang tidak dirotasi ) { EggRotatorGoRight(); EggIsRotating=TO_RIGHT; TimeOutSet(&EggRotateTimeout, ROTATE_TIMEOUT); TimeOutSet(&EggRotatorTimeout,ROTATOR_TIMEOUT ); } #if 1 else if( EggIsRotating!=STOP && IsTimeOut(&EggRotatorTimeout) ) { x=EggLimiterL(); y=EggLimiterR(); if(!x||!y) { EggIsRotating=STOP; EggRotatorStop(); } } #endif }
// 显示数值. VOID DispNum(WORD Num) { #if (defined(FUNC_SEG_LED_EN) || defined(FUNC_SEG_LCD_EN)) //DBG(("DispVolume,0\n")); if((gDisplayMode <= DISP_DEV_LCD58) && (gDisplayMode >= DISP_DEV_LED1888)) { #ifdef FUNC_NUMBER_KEY_EN if(((NumKeyRadioFreqErrorFlag == TRUE) && (gSys.SystemMode == SYS_MODE_RADIO)) || ((Num > gFsInfo.FileSum) && ((gSys.SystemMode == SYS_MODE_USB) || (gSys.SystemMode == SYS_MODE_SD)))) { if(NumKeyErrorDispFlag == FALSE) { Num2Char(Num, FALSE); NumKeyErrorDispFlag = TRUE; TimeOutSet(&RecvNumTimer, NORMAL_INTERVAL); TimeOutSet(&DispTmr, NORMAL_INTERVAL); TimeOutSet(&NumKeyErrDispTimer, 500); //数字显示500ms } else { if(IsTimeOut(&NumKeyErrDispTimer)) { DispString(" Err"); } } } else #endif { Num2Char(Num, FALSE); } #ifdef FUNC_NUMBER_KEY_EN if((NumKeyErrorDispFlag == FALSE) && (NumKeyRadioFreqErrorFlag == FALSE)) #endif { TimeOutSet(&DispTmr, SET_INTERVL); } #ifdef FUNC_NUMBER_KEY_EN else { if(IsTimeOut(&DispTmr)) { NumKeyRadioFreqErrorFlag = FALSE; NumKeyErrorDispFlag = FALSE; } } #endif DispIcon(ICON_COLON, LIGHT_OFF); } #ifdef FUNC_SEG_LCD_EN if(gDisplayMode == DISP_DEV_LCD58) { LcdFlushDispData(); } #endif #else Num = 0; #endif }
//确定函数 void CSystemOptionDlg::OnOK() { //如果超时,退出 if ( IsTimeOut()) { return; } //获取输入 CInitParamter InitParamter; InitParamter.m_wListenPort=GetDlgItemInt(IDC_LISTEN_PORT); InitParamter.m_wMaxConnect=GetDlgItemInt(IDC_MAX_CONNECT); //信息数据库 InitParamter.m_wServerDataBasePort=GetDlgItemInt(IDC_SERVER_DATABASE_PORT); GetDlgItemText(IDC_SERVER_DATABASE_USER,InitParamter.m_szServerDataBaseUser,sizeof(InitParamter.m_szServerDataBaseUser)); GetDlgItemText(IDC_SERVER_DATABASE_PASS,InitParamter.m_szServerDataBasePass,sizeof(InitParamter.m_szServerDataBasePass)); GetDlgItemText(IDC_SERVER_DATABASE_NAME,InitParamter.m_szServerDataBaseName,sizeof(InitParamter.m_szServerDataBaseName)); //信息数据库地址 DWORD dwDataBaseIP=INADDR_NONE; BYTE * pAddrByte=(BYTE *)&dwDataBaseIP; ((CIPAddressCtrl *)GetDlgItem(IDC_SERVER_DATABASE_IP))->GetAddress(dwDataBaseIP); _snprintf(InitParamter.m_szServerDataBaseAddr,sizeof(InitParamter.m_szServerDataBaseAddr),TEXT("%d.%d.%d.%d"), pAddrByte[3],pAddrByte[2],pAddrByte[1],pAddrByte[0]); //保存设置 InitParamter.SaveInitParamter(false); __super::OnOK(); }
// Searches for an event TVerdict RTestStepMmfCtlfrmAudio::SearchForEvent( TMMFEvent& aEvent ) { #ifdef EVENT_SEARCH_DISABLED WARN_PRINTF1(_L("Warning : SearchForEvent disabled")); TMMFEvent dummyEvent; // JS aEvent = dummyEvent; // to get rid of compiler warning return EPass; #else TVerdict result = EFail; // status of events TRequestStatus timerStatus; TRequestStatus eventStatus; // due to problems with the timer as a member variable // added a local timer here RTimer myTimer ; myTimer.CreateLocal(); // create an event and initialise with unknown marker TMMFEventPckg receivedEvent; // for KMaxRetries attempt to find the event for( TInt retries = 0; retries < KMaxRetries; retries++ ) { // post receive event to controller iController.ReceiveEvents( receivedEvent, eventStatus ); // start breakout timer to escape myTimer.After(timerStatus, KDelay); // wait for an event to mature User::WaitForRequest( eventStatus, timerStatus ); // check if the command is the event // and that a timeout did not occur if( IsTimeOut( eventStatus )) { // cancel the receive events CancelReceivedEvents(); } else if( IsSoughtEvent( aEvent, receivedEvent ) ) { // cancel the outstanding timer User::Check(); myTimer.Cancel(); // set status to pass since we have found the event result = EPass; break; } else { // We rx'd an event other than expected myTimer.Cancel(); } } return result; #endif // EVENT_SEARCH_DISABLED }
//按键响应 //状态处理 VOID RadioStateCtrl(VOID) { RadioEventProcess(); RadioStationSearch(); #ifdef FUNC_RADIO_ESD_AUTO_RESUME if(gRadioCtrl.State == RADIO_IDLE) { if(IsTimeOut(&RadioStateCheckTimer)) { if((MVFM_ReadReg(0x00) & 0x20) || (MVFM_GetCh() != gRadioCurrFreqBack)) { RadioStateCheckCount++; if(RadioStateCheckCount > 2) { RadioSetFreq(); RadioMute(FALSE); } } else { RadioStateCheckCount = 0; } TimeOutSet(&RadioStateCheckTimer, 250); } } #endif }
//初始化函数 BOOL CCenterServerDlg::OnInitDialog() { __super::OnInitDialog(); //设置图标 HICON hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); SetIcon(hIcon,TRUE); SetIcon(hIcon,FALSE); //设置组件 if (m_EventService.CreateInstance()==true) { IUnknownEx * pIUnknownEx=(IUnknownEx *)m_EventService->QueryInterface(IID_IUnknownEx,VER_IUnknownEx); m_EventService->SetRichEditHwnd(m_RichEditCtrl.GetSafeHwnd()); m_CenterService.SetEventService(pIUnknownEx); } m_RichEditCtrl.SetBackgroundColor(FALSE,RGB(220,220,220)); //如果超时,退出 if ( IsTimeOut()) { __super::OnCancel(); } return TRUE; }
void EggTimeoutCheck() { if( //jika IsTimeOut(&EggFanTTimeout) //batas waktu fan pemanas habis && //dan fFanT==ON //fan pemanas sedang menyala ) { EggFanTOff(); } if( //jika IsTimeOut(&EggFanHTimeout) //batas waktu fan kelembapan habis && //dan fFanH==ON //fan kelembapan sedang menyala ) { EggFanHOff();; } if( //jika IsTimeOut(&EggFanExTimeout) //batas waktu exhaust habis && //dan fFanEx==ON //fan exhaust pemanas sedang menyala ) { EggFanExOff(); } if( //jika IsTimeOut(&EggHeaterTimeout) //batas waktu Heater habis && //dan fHeater==ON //Heater pemanas sedang menyala ) { EggHeaterOff(); } #if 0 if( //jika IsTimeOut(&EggRotatorTimeout) //batas waktu rotator habis && //dan EggIsRotating!=STOP //rotator sedang bekerja ) { EggRotatorStop(); EggIsRotating=STOP; } #endif }
VOID RefreshUdpListEntrySafe( VOID ) /*++ Routine Description: Remove stale mapping info from UDP port map list entries. This function is thread-safe. Do NOT acquire id list spin lock around this function. --*/ { LARGE_INTEGER now; PLIST_ENTRY p, temp; NdisAcquireSpinLock(&PortListLock); if (IsListEmpty(&PortListHead)) { // List is empty, nothing to be done. NdisReleaseSpinLock(&PortListLock); return; } NdisGetCurrentSystemTime(&now); p = PortListHead.Flink; while (p != &PortListHead) { PUDP_MAP_CONTEXT Map = CONTAINING_RECORD(p, UDP_MAP_CONTEXT, ListEntry); if (IsTimeOut(&now, &(Map->MapSetTime), &UdpTimeOut)) { // Time out. Release mapping info and reset corresponding hash table entry DBGPRINT(("==> RefreshUdpListEntrySafe: map %d -> %d time out. Delete.\n", Map->OriginalPort, Map->MappedPort)); // Protect the loop from break temp = p; p = p->Flink; // Clear hash table pointer UdpPortMapOutTable[Map->OriginalPort].Map = NULL; UdpPortMapInTable[Map->MappedPort].Map = NULL; // Remove entry and clear memory RemoveEntryList(temp); PortListLength--; NdisFreeMemory(Map, 0, 0); //DBGPRINT(("==> RefreshUdpListEntrySafe: map context memory freed.\n")); // Go to next entry } else { // Go to next entry // Map set time is refreshed when this map is accessed by mapping functions, no need to refresh it here p = p->Flink; } } NdisReleaseSpinLock(&PortListLock); }
/********************************************************************* 写所有数据到手机中 *********************************************************************/ void __fastcall TMainForm::WriteAllClick(TObject *Sender) { //StatusBar1->Panels->Items[0]->Text = "Writing Data Please Waiting......"; Prompt_Form->Show(); Security_Form->Button_MCC_WriteClick(Sender); if(IsTimeOut()) { return; } Security_Form->Button_SIM_WriteClick(Sender); if(IsTimeOut()) { return; } Security_Form->Button_IMSI_WriteClick(Sender); if(IsTimeOut()) { return; } /*Security_Form->Button_OtherLock_WriteClick(Sender); if(g_bTimeout) { return; }*/ PRI_Form->Button_VoiceMail_WriteClick(Sender); if(IsTimeOut()) { return; } PRI_Form->Button_WriteSMSClick(Sender); if(IsTimeOut()) { return; } /*PRI_Form->Button_SetBannerClick(Sender); if(IsTimeOut()) { return; }*/ PRI_Form->Button_EM_WriteClick(Sender); if(IsTimeOut()) { return; } if(Form_V3KEY->CheckBox_SaveV3->Checked)//if(Form_V3KEY->Edit_Version->Text != "") { Form_V3KEY->Button_WriteClick(Sender); if(IsTimeOut()) { return; } } //StatusBar1->Panels->Items[0]->Text = "Writing Data Over!"; //ShowMessage("Write all ok"); Prompt_Form->Hide(); }
VOID SystemOffTimeWait(VOID) { switch(gSysTimeOffState.ProState) { case SYS_OFF_TIMEING_IDLE: break; case SYS_OFF_TIMEING_READ_ONLY_IDLE: case SYS_OFF_TIMEING_READ_ONLY_TIMING: case SYS_OFF_TIMEING_SET_DIS: case SYS_OFF_TIMEING_SET_MODE_VALID: case SYS_OFF_TIMEING_SET_MODE_INVALID: if(IsTimeOut(&gSysTimeOffState.DisTimer)) { if((gSysTimeOffState.ProState == SYS_OFF_TIMEING_SET_MODE_VALID) || (gSysTimeOffState.ProState == SYS_OFF_TIMEING_READ_ONLY_TIMING)) { gSysTimeOffState.ProState = SYS_OFF_TIMEING_WAIT_POWEROFF; } else { gSysTimeOffState.ProState = SYS_OFF_TIMEING_IDLE; } } break; case SYS_OFF_TIMEING_WAIT_POWEROFF: if(IsTimeOut(&gSysTimeOffState.AutoOutTimer)) { if(gSysTimeOffState.EnState == TRUE) { DBG(("SYSTEM OFF BY TimeOut!\n")); SystemOff(); } } break; default: break; } }
void UsbAudioFreqAdjust(void) { uint16_t Samples; if(!IsTimeOut(&UsbAudioFreqAdjustTimer)) { return; } TimeOutSet(&UsbAudioFreqAdjustTimer, 1000); Samples = MixerGetRemainSamples(MIXER_SOURCE_USB); DacSampRateAdjust(TRUE, (Samples - 1024) * 5); APP_DBG("%d\n", Samples); }
void SLSound::Update(const Float3 & listener) { float vol = mVolume * AudioSystem::Instance()->GetGlobalVolume(mCategory); if (mFlags & AUDIO_FLAG_3DSOUND) { Float3 d = mPosition - listener; float len = d.Length(); if (len > mAttenStart) { float k = (len - mAttenStart) * mInvAttenDist; k = 1.0f - Math::Clamp(k, 0.0f, 1.0f); vol *= k; } } float fade = 1; if (mFadeMode == FADE_IN) mFadeTime += Root::Instance()->GetFrameTime(); else if (mFadeMode == FADE_OUT) mFadeTime -= Root::Instance()->GetFrameTime(); mFadeTime = Math::Clamp(mFadeTime, 0.0f, SL_FADETIME); fade = mFadeTime / SL_FADETIME; vol *= fade; if (mVolumeAbs != vol) { SLmillibel volume = _getVolumeLevel(vol); (*mVolumeI)->SetVolumeLevel(mVolumeI, volume); (*mVolumeI)->SetMute(mVolumeI, vol > 0 ? FALSE : TRUE); mVolumeAbs = vol; } if (fade == 0 && mFadeMode == FADE_OUT) Stop(); else if (IsTimeOut()) Stop(); else if (i_thread == NULL) Track(); }
// 上电时,硬件扫描消抖 void InitDeviceDetect(void) { TIMER Timer; // GpioLcdIoConfig(RESTORE_TO_GENERAL_IO); // ??? 当前linein gpio c6 与 lcd touch 存在复用关系,所以先设置io为普通io口 //TimeOutSet(&Timer, 800); //set the device detection time upto 500 ms by Robert. -20140114 if(OSSysAuxtmrGet() + 200 + 130 + 60 < 500) { /* * if device detection(especial USB) time less than 500ms,complement the left time to delete the device jitter */ TimeOutSet(&Timer, 500 - 60 - 130 - 200 - OSSysAuxtmrGet()); } else { /* * give 20 ms enough to device detection */ TimeOutSet(&Timer, 20); } while(!IsTimeOut(&Timer)) { #ifdef FUNC_USB_EN IsUDiskLink(); #endif IsPcLink(); #ifdef FUNC_CARD_EN IsCardLink(); #endif IsLineInLink(); #ifdef FUNC_MIC_DET_EN IsMicLinkFlag = IsMicInLink(); #endif } }
static BYTE RtcAlarmSetWaitTime(VOID) { if(RtcAutOutTimeCount == RTC_AUTO_OUT_TIME_COUNT) { TimeOutSet(&RtcAutoOutTimer, RTC_AUTO_OUT_TIME_UNIT); RtcAutOutTimeCount--; } else if(IsTimeOut(&RtcAutoOutTimer)) { if(RtcAutOutTimeCount > 0) { TimeOutSet(&RtcAutoOutTimer, RTC_AUTO_OUT_TIME_UNIT); RtcAutOutTimeCount--; } else { RtcState = RTC_STATE_IDLE; RtcSubState = RTC_SET_NONE; return TRUE; } } return FALSE;; }
/* SearchForEvent Searches for an event returns whether the event has been found */ TVerdict CTestStepActrl::SearchForEvent( TMMFEvent& aEvent ) { TVerdict result = EFail; // [ status of events ] TRequestStatus timerStatus ; TRequestStatus eventStatus ; // [ due to problems with the timer as a member variable // added a local timer here ] RTimer myTimer ; TInt err = myTimer.CreateLocal(); if (err != KErrNone) { ERR_PRINTF2(_L("CreateLocal failed, error code %d"), err); return EFail; } //[ create an event and initialise with unknown marker ] TMMFEventPckg receivedEvent; //[ for KMaxRetries attempt to find the event ] for( TInt retries = 0; retries < KMaxRetries; retries++ ) { // [post receive event to controller ] iController.ReceiveEvents( receivedEvent, eventStatus ); // [ start break out timer to escape ] myTimer.After( timerStatus, KDelay ); //StartTheTimer( timerStatus, KDelay ); // [ wait for an event to mature ] User::WaitForRequest( eventStatus, timerStatus ); // [ check if the command is the event // and that a timeout did not occur] if( IsTimeOut( eventStatus )) { // cancel the receive events CancelReceivedEvents(); } else if( IsSoughtEvent( aEvent, receivedEvent ) ) { // [ cancel the outstanding timer ] User::Check(); // [ due to problems with rtimer as member variable ] myTimer.Cancel(); //CancelTheTimer(); //[ set status to pass since we have found the event ] result = EPass; break; } else { // [ We rx'd an event other than expected ] // [ due to problems with RTimer as mv] myTimer.Cancel(); //CancelTheTimer(); } } return result; }
// 主函数调用. VOID Display(VOID) { #if (defined(FUNC_SEG_LED_EN) || defined(FUNC_SEG_LCD_EN)) if((gDisplayMode <= DISP_DEV_LCD58) && (gDisplayMode >= DISP_DEV_LED1888)) { #ifdef FUN_SYSTEM_POWEROFF_WAIT_TIME if(DispSysTimOff()) { return; } #endif #ifdef FUNC_RTC_EN if(DispRtcSet()) { return; } #endif //DBG(("gDispState:%bd\n", gDispState)); if(gDispState != DISP_STATE_IDLE) { DispDev(); return; // Waiting for " LOD" timeout. } if(IsTimeOut(&DispTmr)) { if(gBlink.BlinkFlag) { TimeOutSet(&DispTmr, MUTE_BLINK_INTERVAL); if(gBlink.Blink.MuteBlink) // MUTE闪烁 { if(gBlink.Blink.MuteBlankScreen) { gBlink.Blink.MuteBlankScreen = 0; DispResume(); } else { gBlink.Blink.MuteBlankScreen = 1; ClearDigit(); //清数值显示 } } } else { DispResume(); } } #ifdef FUNC_SEG_LCD_EN else if(gDisplayMode == DISP_DEV_LCD58) {//为解决显示音量、EQ等状态时没有幅度显示的问题,增加以下代码。 if(IsTimeOut(&gAmplitudeTmr)) { LcdFlushDispData();//在LcdFlushDispData函数内部调用幅度显示函数。 } } #endif } #endif #ifdef FUNC_SINGLE_LED_EN if(gDisplayMode == DISP_DEV_SLED) { SLedDisplay(); } #endif }
// 设备切换时调用. VOID DispDev(VOID) { // DBG((">>DispDev()\n")); #if (defined(FUNC_SEG_LED_EN) || defined(FUNC_SEG_LCD_EN)) if((gDisplayMode <= DISP_DEV_LCD58) && (gDisplayMode >= DISP_DEV_LED1888)) { if(gDispState == DISP_STATE_IDLE) { gDispState = DISP_STATE_DEV; } //DBG(("gDispState:%bd\n", gDispState)); if(IsTimeOut(&DispTmr)) { switch(gDispState) { case DISP_STATE_DEV: //DBG(("DISP_STATE_DEV\n")); DispDevSymbol(); if((gSys.SystemMode == SYS_MODE_USB) || (gSys.SystemMode == SYS_MODE_SD)) { if(gFsInitOK == 1) { gDispState = DISP_STATE_FILE; } else if(gFsInitOK != 0) { gDispState = DISP_STATE_IDLE; } } else { gDispState = DISP_STATE_IDLE; } break; case DISP_STATE_FILE: //DBG(("DISP_STATE_FILE\n")); if((gSys.SystemMode == SYS_MODE_USB) || (gSys.SystemMode == SYS_MODE_SD)) { if(gFsInitOK == 1) { DispFileNum(); } else { DispString(" FER"); } } gDispState = DISP_STATE_IDLE; break; default: //DBG(("DISP_STATE_IDLE\n")); gDispState = DISP_STATE_IDLE; break; } #ifdef FUNC_SEG_LCD_EN //DBG(("gDisplayMode:%bd\n", gDisplayMode)); if(gDisplayMode == DISP_DEV_LCD58) { LcdFlushDispData(); } #endif //DBG(("%02BX, %02BX, %02BX, %02BX, %02BX\n", gDispBuff[0], gDispBuff[1], gDispBuff[2], gDispBuff[3], gDispBuff[3])); } } #endif #ifdef FUNC_SINGLE_LED_EN if(gDisplayMode == DISP_DEV_SLED) { SLedDispDevSymbol(); } #endif // DBG(("<<DispDev()\n")); }
// Key process, image key value to key event. MESSAGE AdcKeyEventGet(VOID) { static BYTE PreKeyIndex = -1; static BYTE KeyIndex; //DBG(("AdcKeyEventGet*******\n")); if(!IsTimeOut(&AdcKeyScanTimer)) { return MSG_NONE; } TimeOutSet(&AdcKeyScanTimer, ADC_KEY_SCAN_TIME); KeyIndex = GetAdcKeyIndex(); #ifdef FUNC_BEEP_SOUND_EN gPushKeyNeedBeepFlag = FALSE; #endif switch(AdcKeyState) { case ADC_KEY_STATE_IDLE: if(KeyIndex == -1) { #ifdef AU6210K_ZB_BT007_CSR baGPIOCtrl[GPIO_D_OUT] &= ~0x20; baGPIOCtrl[GPIO_D_OUT] &= ~0x40; baGPIOCtrl[GPIO_A_OUT] &= ~0x04; baGPIOCtrl[GPIO_A_OUT] &= ~0x02; #endif return MSG_NONE; } PreKeyIndex = KeyIndex; TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_JTTER_TIME); //DBG(("GOTO JITTER!\n")); AdcKeyState = ADC_KEY_STATE_JITTER; case ADC_KEY_STATE_JITTER: if(PreKeyIndex != KeyIndex) { //DBG(("%bx != %bx,GOTO IDLE Because jitter!\n", PreKeyIndex, KeyIndex)); AdcKeyState = ADC_KEY_STATE_IDLE; } else if(IsTimeOut(&AdcKeyWaitTimer)) { //DBG(("GOTO PRESS_DOWN!\n")); // if((PreKeyIndex == ADC_KEY_POWER0_IDX) // ||(PreKeyIndex == ADC_KEY_POWER1_IDX) // || (PreKeyIndex == ADC_KEY_POWER2_IDX) // ) // { // //set cp-time 3000ms for power-down key // TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_PWRDOWN_CP_TIME); // } #ifdef HEADPHONE_ADC_PORT_CH if(PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX) { TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_HPPUSHOUT_CP_TIME); } else #endif { //DBG(("ADC_KEY_CP_TIME!\n")); TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_CP_TIME); } AdcKeyState = ADC_KEY_STATE_PRESS_DOWN; } break; case ADC_KEY_STATE_PRESS_DOWN: if(PreKeyIndex != KeyIndex) { //return key sp value //DBG(("KEY SP %bu\n",PreKeyIndex)); AdcKeyState = ADC_KEY_STATE_IDLE; #ifdef FUNC_BEEP_SOUND_EN gPushKeyNeedBeepFlag = TRUE; #endif #ifdef HEADPHONE_ADC_PORT_CH if((PreKeyIndex == ADC_KEY_HPPUSHIN_IDX) || (PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX)) { break; } #endif #if 0 //def AU6210K_ZB_BT007_CSR if(PreKeyIndex != 1) switch(PreKeyIndex) { case 1: baGPIOCtrl[GPIO_A_OUT] &= ~0x04; //A2 break; case 2: baGPIOCtrl[GPIO_A_OUT] &= ~0x02; //A1 break; case 3: baGPIOCtrl[GPIO_D_OUT] &= ~0x40; //D6 break; case 4: baGPIOCtrl[GPIO_D_OUT] &= ~0x20; //D5 break; default: break; } #endif return AdcKeyEvent[PreKeyIndex][0]; } else if(IsTimeOut(&AdcKeyWaitTimer)) { //return key cp value //DBG(("KEY CPS %bu\n",PreKeyIndex)); TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_CPH_TIME); AdcKeyState = ADC_KEY_STATE_CP; #ifdef FUNC_BEEP_SOUND_EN gPushKeyNeedBeepFlag = TRUE; #endif #ifdef HEADPHONE_ADC_PORT_CH if(PreKeyIndex == ADC_KEY_HPPUSHIN_IDX) { break; } if(PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX) { IsHeadphoneLinkFlag = FALSE; break; } #endif return AdcKeyEvent[PreKeyIndex][1]; } break; case ADC_KEY_STATE_CP: if(PreKeyIndex != KeyIndex) { //return key cp value //DBG(("ADC KEY CPR!\n")); AdcKeyState = ADC_KEY_STATE_IDLE; #ifdef HEADPHONE_ADC_PORT_CH if((PreKeyIndex == ADC_KEY_HPPUSHIN_IDX) || (PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX)) { break; } #endif return AdcKeyEvent[PreKeyIndex][3]; } else if(IsTimeOut(&AdcKeyWaitTimer)) { //return key cph value //DBG(("ADC KEY CPH!\n")); // if((PreKeyIndex == ADC_KEY_POWER0_IDX) // ||(PreKeyIndex == ADC_KEY_POWER1_IDX) // || (PreKeyIndex == ADC_KEY_POWER2_IDX)) // { // //set cp-time 3000ms for power-down key // //DBG(("ADC POWER!\n")); // TimeOutSet(&AdcKeyWaitTimer, 3000); // } // else // { TimeOutSet(&AdcKeyWaitTimer, ADC_KEY_CPH_TIME); // } #ifdef HEADPHONE_ADC_PORT_CH if(PreKeyIndex == ADC_KEY_HPPUSHIN_IDX) { IsHeadphoneLinkFlag = TRUE; break; } else if(PreKeyIndex == ADC_KEY_HPPUSHOUT_IDX) { IsHeadphoneLinkFlag = FALSE; break; } #endif return AdcKeyEvent[PreKeyIndex][2]; } break; default: AdcKeyState = ADC_KEY_STATE_IDLE; break; } return MSG_NONE; }
// Searches for an event TVerdict RTestStepMmfCtlfrmDualAudio::SearchForEvent( TMMFEvent& aEvent, TInt aWhichController ) { // NB don't worry about EVENT_SEARCH_DISABLED here, // as generally we'll be looking for events from the Controller Framework here, // not from the custom Audio Controller TVerdict result = EFail; // status of events TRequestStatus timerStatus ; TRequestStatus eventStatus ; RMMFController* theController; // which controller are we searching on? if(aWhichController == 1) theController = &iController1; else if(aWhichController == 2) theController = &iController2; else { ERR_PRINTF1(_L("SearchForEvent error : controller must be 1 or 2")); return result = EFail; } // due to problems with the timer as a member variable // added a local timer here RTimer myTimer ; myTimer.CreateLocal(); // create an event and initialise with unknown marker TMMFEventPckg receivedEvent; // for KMaxRetries attempt to find the event for( TInt retries = 0; retries < KMaxRetries; retries++ ) { // post receive event to controller (*theController).ReceiveEvents( receivedEvent, eventStatus ); // start breakout timer to escape myTimer.After( timerStatus, KDelay ); // wait for an event to mature User::WaitForRequest( eventStatus, timerStatus ); // check if the command is the event // and that a timeout did not occur if( IsTimeOut( eventStatus )) { // cancel the receive events CancelReceivedEvents(aWhichController); } else if( IsSoughtEvent( aEvent, receivedEvent ) ) { // cancel the outstanding timer User::Check(); myTimer.Cancel(); // set status to pass since we have found the event result = EPass; break; } else { // We rx'd an event other than expected myTimer.Cancel(); } } return result; }
VOID RtcDisplay(VOID) { #ifdef FUNC_UARTDBG_EN static BYTE TempSec = -1; #endif //Display RTC time if(IsTimeOut(&RtcReadTimer)) { TimeOutSet(&RtcReadTimer, 500); if(RtcState != RTC_STATE_SET_TIME) { GetRTCCurrTime(&gRtcTime); } #ifdef FUNC_UARTDBG_EN if(gRtcTime.Sec != TempSec) { TempSec = gRtcTime.Sec; RtcUpdateDisplay = TRUE; } #endif } #ifdef FUNC_UARTDBG_EN if(RtcUpdateDisplay) { RtcUpdateDisplay = FALSE; if(RtcFlag == 1) { //YYYY-MM-DD(W) HH:MM:SS DBG(("%d-%-.2d-%-.2d(星期%d) ", (WORD)gRtcTime.Year, (WORD)gRtcTime.Mon, (WORD)gRtcTime.Date, (WORD)(gRtcTime.WDay))); #ifdef FUNC_LUNAR_EN DisplayLunarDate(); #endif DBG((" %-.2d:%-.2d:%-.2d ", (WORD)gRtcTime.Hour, (WORD)gRtcTime.Min, (WORD)gRtcTime.Sec)); DBG(("\n")); } #ifdef FUNC_ALARM_EN else if(RtcFlag == 2) { switch(gAlarmMode) { case ALARM_MODE_ONCE_ONLY: DBG(("闹钟模式:单次(once only) ")); DBG(("%d-%-.2d-%-.2d(星期%d) ", (WORD)gAlarmTime.Year, (WORD)gAlarmTime.Mon, (WORD)gAlarmTime.Date, (WORD)gAlarmTime.WDay)); break; case ALARM_MODE_PER_DAY: DBG(("闹钟模式:每天一次(every day)")); break; case ALARM_MODE_PER_WEEK: DBG(("闹钟模式:每周一次(every week) 星期%2BX", gAlarmTime.WDay)); break; default: DBG(("模式错误(mode error)\n")); break; } DBG((" %-.2d:%-.2d:%-.2d ", (WORD)gAlarmTime.Hour, (WORD)gAlarmTime.Min, (WORD)(gAlarmTime.Sec+1))); DBG(("\n")); } DBG(("RtcAlarmNum = :%2BX\n",RtcAlarmNum)); #endif } #endif }
//左键双击 void __cdecl CPlazaViewItem::OnTreeLeftDBClick(CListItem *pListItem, HTREEITEM hTreeItem, CTreeCtrl *pTreeCtrl) { //效验参数 if(pListItem==NULL) { return ; } //消息处理 switch (pListItem->GetItemGenre()) { //游戏类型 case ItemGenre_Kind: { CListKind *pListKind = (CListKind *)pListItem; tagGameKind *pGameKind = pListKind->GetItemInfo(); //Add by doctor 20071014 //大类型ID int gameTypeInt = pGameKind->wTypeID ; CString gameExeStr; gameExeStr.Format("%s", pGameKind->szProcessName ); if ( IsTimeOut()) {} else { //是否为单机,FLASH游戏 switch (gameTypeInt) { //单机游戏 case 5: { CString lpszFileName ; CString gamePath; CString applicationPath; CFileFind fFind; //获得应用程序路径 int nPos; GetModuleFileName(NULL,applicationPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH); applicationPath.ReleaseBuffer(); nPos = applicationPath.ReverseFind('\\'); applicationPath = applicationPath.Left(nPos); gamePath = applicationPath + "\\LocalGame"; lpszFileName = gamePath +"\\"+gameExeStr;//这里修改成你的调用应用程序的文件名称 //启动单机游戏 if(!fFind.FindFile(lpszFileName)) { AfxMessageBox("没有找到调用的应用程序!"+ lpszFileName); return ; } else { CString cmdLine; cmdLine.Format("-%s", "FlyGame2007"); // ShellExecute(NULL,"open", gameExeStr, cmdLine ,NULL,SW_SHOW); ShellExecute(NULL,"open", gameExeStr, cmdLine ,gamePath,SW_SHOW); // ShellExecute(NULL,NULL,_T(gameExeStr),NULL, gamePath,NULL); } return; } break; //flash游戏 case 6: { //启动FLASH游戏 //连接规则 TCHAR szRuleUrl[256]=TEXT(""); _snprintf(szRuleUrl,sizeof(szRuleUrl),TEXT("%sPlayGame.asp?KindID=%ld"), Glb().m_MainHomeUrl, pGameKind->wKindID); WebBrowse(szRuleUrl,true); return; } break; default: {} } //End add }//End if //安装判断 if (pListKind->m_bInstall==false) { TCHAR szBuffer[512]=TEXT(""); _snprintf(szBuffer,sizeof(szBuffer),TEXT("【%s】还没有安装,现在是否下载?"),pGameKind->szKindName); int nResult = ShowMessageBox(szBuffer, MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1); if(nResult == IDYES) { g_GlobalAttemper.DownLoadClient(pGameKind->szKindName, pGameKind->wKindID, true); } } return; } //进程类型 case ItemGenre_Process: { CListProcess *pListProcess = (CListProcess *)pListItem; tagGameProcess *pGameProcess= pListProcess->GetItemInfo(); //构造命令行 CString strCommonLine; tagGlobalUserData & UserData=g_GlobalUnits.GetGolbalUserData(); strCommonLine.Format(TEXT("%s /UserToken:%ld#%s#%s /KindID:%ld /WndPlaza:%ld"), pGameProcess->szProcessName, UserData.dwUserID, UserData.szAccounts, UserData.szPassWord, pGameProcess->wKindID, m_hWnd); //启动游戏客户端 STARTUPINFO StartInfo; PROCESS_INFORMATION ProcessInfo; memset(&StartInfo,0,sizeof(StartInfo)); memset(&ProcessInfo,0,sizeof(ProcessInfo)); StartInfo.cb=sizeof(StartInfo); StartInfo.wShowWindow=SW_SHOWMAXIMIZED; BOOL bSuccess=CreateProcess(NULL,strCommonLine.GetBuffer(),NULL,NULL,FALSE,CREATE_DEFAULT_ERROR_MODE,NULL,NULL,&StartInfo,&ProcessInfo); strCommonLine.ReleaseBuffer(); if(bSuccess == FALSE) { //下载询问 TCHAR szBuffer[512]=TEXT(""); _snprintf(szBuffer,sizeof(szBuffer),TEXT("【%s】还没有安装,现在是否下载?"),pGameProcess->szKindName); int nResult=ShowMessageBox(szBuffer,MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON1); if (nResult==IDYES) g_GlobalAttemper.DownLoadClient(pGameProcess->szKindName,pGameProcess->wKindID,true); } else { CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); } return; } //游戏房间 case ItemGenre_Server: { CListServer * pListServer=(CListServer *)pListItem; g_pControlBar->CreateRoomViewItem(pListServer); return; } }//End switch (pListItem->GetItemGenre()) return; }
// Seek tuning will search up or down for a valid channel. VOID RadioStationSearch(VOID) { BYTE SearchState; switch(gRadioCtrl.State) { case RADIO_SEEK: if(IsTimeOut(&gRadioCtrl.SeekPreviewTimer)) { MuteOn(TRUE, TRUE); //解决FM信号源从DAC直接输出时,自动搜台过程中会有较大低噪声 RadioMute(TRUE); RadioDisFlag = RadioDisCurFreNum; #ifdef FUNC_RADIO_AUTOSEEK_EN if((gRadioCtrl.SeekMode == SEEK_AUTOSCAN) ||(gRadioCtrl.SeekMode == SEEK_SCANUP)) { #ifdef FUNC_SLAVE_UART_EN MVFM_AutoSeekConfig(gRadioData.CurrFreq, gRadioCtrl.RadioUpperBound, gRadioCtrl.RadioSeekStep, 1, 0); #else MVFM_AutoSeekConfig(gRadioData.CurrFreq, RADIO_UPPER_BOUND, RADIO_SEEK_STEP, 1, 0); #endif } else { #ifdef FUNC_SLAVE_UART_EN MVFM_AutoSeekConfig(gRadioData.CurrFreq, gRadioCtrl.RadioLowerBound, gRadioCtrl.RadioSeekStep, 1, 0); #else MVFM_AutoSeekConfig(gRadioData.CurrFreq, RADIO_LOWER_BOUND, RADIO_SEEK_STEP, 1, 0); #endif } DBG(("Auto Seek Start Freq %d\n", gRadioData.CurrFreq)); #else if((gRadioCtrl.SeekMode == SEEK_AUTOSCAN) ||(gRadioCtrl.SeekMode == SEEK_SCANUP)) { gRadioData.CurrFreq++; } else { gRadioData.CurrFreq--; } //DBG(("Search Freq %d\n",gRadioData.CurrFreq)); //RadioSearchSet(gRadioData.CurrFreq); #ifdef FUNC_SLAVE_UART_EN MVFM_AutoSeekConfig(gRadioData.CurrFreq, gRadioCtrl.RadioUpperBound, gRadioCtrl.RadioSeekStep, 0, 0); gRadioCtrl.RadioSeekResult =0; #else MVFM_AutoSeekConfig(gRadioData.CurrFreq, RADIO_UPPER_BOUND, RADIO_SEEK_STEP, 0, 0); #endif #endif gRadioCtrl.State = RADIO_READ; TimeOutSet(&gRadioCtrl.SeekPreviewTimer, RadioSeekTimeValue); #ifdef FUNC_RADIO_ESD_AUTO_RESUME gRadioCurrFreqBack = gRadioData.CurrFreq; #endif #ifdef FUNC_SLAVE_UART_EN SlaveRadioRetCurrentStatus(); #endif } break; case RADIO_READ: if(IsTimeOut(&gRadioCtrl.SeekPreviewTimer)) { #ifdef FUNC_RADIO_AUTOSEEK_EN if(SearchState = RadioRSSIRead(TRUE)) #else if(SearchState = RadioRSSIRead(FALSE)) #endif { #ifdef FUNC_SLAVE_UART_EN gRadioCtrl.RadioSeekResult =1; #endif #ifdef FUNC_RADIO_AUTOSEEK_EN #ifdef FUNC_DISP_EN DispResume(); #endif #endif if(SearchState == 3) { //DBG(("Search Freq %d\n",gRadioData.CurrFreq)); TimeOutSet(&gRadioCtrl.SeekPreviewTimer, RadioSeekTimeValue); break; } if(gRadioCtrl.SeekMode == SEEK_AUTOSCAN) { if(gRadioData.StationSum < MAX_RADIO_STATION_NUM) { if(gRadioData.CurrFreq < RADIO_FREQ_BASE_875) { gRadioData.Stations[gRadioData.StationSum] = (gRadioData.CurrFreq - RADIO_FREQ_BASE_760); gRadioData.Area1StationSum++; } else { //DBG(("~~~~~~~~~~~~~%u\n",gRadioData.CurrFreq)); gRadioData.Stations[gRadioData.StationSum] = (gRadioData.CurrFreq - RADIO_FREQ_BASE_875); } gRadioData.StationSum++; //#if (defined(FUNC_SINGLE_LED_EN)) //单个LED显示需要搜台预览功能 #ifdef RADIO_SEEK_WAIT_EN RadioMute(FALSE); UnMute(); #endif //#endif RadioDisFlag = RadioDisCurChAutoscan; TimeOutSet(&gRadioCtrl.SeekPreviewTimer, RadioPreVimeTimerValue); #ifdef FUNC_SINGLE_LED_EN DispDev(); #endif #ifdef FUNC_SLAVE_UART_EN SlaveRadioRetCurrentStatus(); #endif } else { //DBG(("FM Buffer Over\n")); gRadioData.CurrStation = 0; if(gRadioData.Area1StationSum > 0) { gRadioData.CurrFreq = gRadioData.Stations[gRadioData.CurrStation] + RADIO_FREQ_BASE_760; } else { gRadioData.CurrFreq = gRadioData.Stations[gRadioData.CurrStation] + RADIO_FREQ_BASE_875; } RadioMute(FALSE); UnMute(); gRadioCtrl.State = RADIO_IDLE; RadioWriteData(); RadioShowDebug(RadioShowSearchEndOverflow); #ifdef FUNC_SINGLE_LED_EN DispDev(); #endif #ifdef FUNC_SLAVE_UART_EN SlaveRadioRetCurrentStatus(); #endif return; } } else { gRadioCtrl.State = RADIO_IDLE; RadioMute(FALSE); UnMute(); RadioWriteData(); RadioShowDebug(RadioShowSearchUpDown); #ifdef FUNC_SINGLE_LED_EN DispDev(); #endif #ifdef FUNC_SLAVE_UART_EN SlaveRadioRetCurrentStatus(); #endif return; } } #ifdef FUNC_SLAVE_UART_EN if(((gRadioCtrl.SeekMode == SEEK_SCANDOWN) && (gRadioData.CurrFreq <= gRadioCtrl.RadioLowerBound)) || (((gRadioCtrl.SeekMode == SEEK_SCANUP) || (gRadioCtrl.SeekMode == SEEK_AUTOSCAN)) && (gRadioData.CurrFreq >= gRadioCtrl.RadioUpperBound))) #else if(((gRadioCtrl.SeekMode == SEEK_SCANDOWN) && (gRadioData.CurrFreq <= RADIO_LOWER_BOUND)) || (((gRadioCtrl.SeekMode == SEEK_SCANUP) || (gRadioCtrl.SeekMode == SEEK_AUTOSCAN)) && (gRadioData.CurrFreq >= RADIO_UPPER_BOUND))) #endif { gRadioCtrl.State = RADIO_IDLE; if((gRadioData.StationSum > 0) && (gRadioCtrl.SeekMode == SEEK_AUTOSCAN)) { #ifdef FUNC_RADIO_AUTOSEEK_EN #ifdef FUNC_DISP_EN DispResume(); #endif #endif gRadioData.CurrStation = 0; if(gRadioData.Area1StationSum > 0) { gRadioData.CurrFreq = gRadioData.Stations[gRadioData.CurrStation] + RADIO_FREQ_BASE_760; } else { gRadioData.CurrFreq = gRadioData.Stations[gRadioData.CurrStation] + RADIO_FREQ_BASE_875; } RadioSetFreq(); RadioWriteData(); RadioShowDebug(RadioShowSearchEndBufferEnough); } else { DBG(("Error:empty\n")); RadioSetFreq(); } RadioMute(FALSE); UnMute(); #ifdef FUNC_SINGLE_LED_EN DispDev(); #endif #ifdef FUNC_SLAVE_UART_EN SlaveRadioRetCurrentStatus(); #endif } else { gRadioCtrl.State = RADIO_SEEK; #ifdef FUNC_RADIO_AUTOSEEK_EN if(gRadioCtrl.SeekMode == SEEK_SCANDOWN) { gRadioData.CurrFreq--; } else { gRadioData.CurrFreq++; } #endif } } break; case RADIO_IDLE: if(IsTimeOut(&gRadioCtrl.SeekPreviewTimer)) { if(RadioDisFlag == RadioDisCurChChange) { #ifdef AU6210K_BOOMBOX_DEMO RadioDisFlag = RadioDisCurPresetCh; #else RadioDisFlag = RadioDisCurFreNum; #endif } else if(RadioDisFlag == RadioDisCurChAutoscan) { RadioDisFlag = RadioDisCurFreNum; } #ifdef FUNC_NUMBER_KEY_EN else if(RadioDisFlag == RadioDisCurFreBlink) { #ifdef FUNC_DISP_EN RadioDisBlink(); #endif if(RadioDisCount > 0) { RadioDisCount--; } else { RadioDisFlag = RadioDisCurFreNum; } TimeOutSet(&gRadioCtrl.SeekPreviewTimer, RadioBlinkTime); } #endif } break; #ifdef AU6210K_BOOMBOX_DEMO case RADIO_PROG: if(IsTimeOut(&gRadioCtrl.SeekPreviewTimer)) { gRadioCtrl.State = RADIO_IDLE; RadioDisFlag = RadioDisCurFreNum; } break; #endif default: break; } }
int main(void) { static BOOL bSignal ; BOOL bOldSignal, bChangeMode ; int dump_count = 0 ; hdmirx_clear_hpd(); EnableHDMIRXVideoOutput(VIDEO_AUTO) ; SelectHDMIPort(CAT_HDMI_PORTA); InitHDMIRX(TRUE); hdmirx_set_hpd(); xCntCnt = 0 ; xCntSum = 0 ; while(1){ HoldSystem(); if(ReadRXIntPin()) { Check_HDMInterrupt(); } #if 0 // for switching to port B hdmirx_clear_hpd(); EnableHDMIRXVideoOutput(VIDEO_AUTO) ; SelectHDMIPort(CAT_HDMI_PORTB); hdmirx_set_hpd(); #endif if(IsTimeOut(LOOP_MSEC)) { dump_count ++ ; bOldSignal = bSignal ; bSignal = CheckHDMIRX(); bChangeMode = (bSignal != bOldSignal); if(bChangeMode) { // if Changed Mode ... if(bSignal) { // if signal is TRUE , then ... dump_vidmode(); if( IsHDMIRXHDMIMode() ) dump_InfoFrame() ; dump_audSts(); } else { // if signal is FALSE , then ... xCntCnt = 0 ; xCntSum = 0 ; } bChangeMode = FALSE ; // clear bChange Mode action } else { // if not change mode, ... if(bSignal) { // if signal is TRUE , then ... if( (dump_count % 20) == 1 ) { xCntCnt ++ ; xCntSum += getHDMIRXxCnt() ; if( xCntCnt > 40 ) { xCntCnt /= 2 ; xCntSum /= 2 ; } } } else { // if signal is FALSE , then ... xCntCnt = 0 ; xCntSum = 0 ; } } if( dump_count > (DUMP_TIME*1000/20) ) { dump_count = 0 ; if( bSignal ) { dump_vidmode(); if( IsHDMIRXHDMIMode() ) dump_InfoFrame() ; dump_audSts(); } else { printf("There is no signal: Reg10 = %02X Reg12 = %02X Reg64 = %02X Reg65 = %02X\n" ,(int)HDMIRX_ReadI2C_Byte(0x10) ,(int)HDMIRX_ReadI2C_Byte(0x12) ,(int)HDMIRX_ReadI2C_Byte(0x64) ,(int)HDMIRX_ReadI2C_Byte(0x65) ) ; } printf("\n\n") ; DumpHDMIRXReg(); } }// if(IsTimeOut(20)) } return 0; }
void EggCalibrateCondition(WORD temperNow,WORD humiNow) { //only calibrate after timeout if(!IsTimeOut(&EggCalibrateTimeout)) return; ////////////////////// //////cek suhu///////// ////////////////////// //jika suhu sangat rendah if(temperNow<TEMPER_V_LO) { //nyalakan kipas pendingin dengan time out lama TimeOutSet(&EggFanTTimeout,FAN_T_V_TIMEOUT); EggFanTOn(); fFanT=ON; //matikan pemanas EggHeaterOff(); fHeater=OFF; } //jika suhu rendah else if(temperNow<TEMPER_LO&&temperNow>TEMPER_V_LO) { //nyalakan kipas pendingin dengan time out singkat TimeOutSet(&EggFanTTimeout,FAN_T_TIMEOUT); EggFanTOn(); fFanT=ON; //matikan pemanas EggHeaterOff(); fHeater=OFF;} //jika suhu rata rata else if(temperNow<TEMPER_HI&&temperNow>TEMPER_LO) { } //jika suhu tinggi else if(temperNow<TEMPER_V_HI&&temperNow>TEMPER_HI) { //nyalakan pemanas dengan timeout lama TimeOutSet(&EggHeaterTimeout,HEATER_TIMEOUT); fHeater=ON; //matikan pendingin EggFanTOff(); fFanT=OFF; } //jika suhu sangat tinggi else if(temperNow>TEMPER_V_HI) { //nyalakan pemanas dengan timeout singkat TimeOutSet(&EggHeaterTimeout,HEATER_V_TIMEOUT); EggHeaterOn(); fHeater=ON; //matikan pendingin EggFanTOff(); fFanT=OFF; } /////////////////////// /////cek kelembapan/////////// /////////////////////// //jika udara sangat kering if(humiNow<HUMI_V_LO) { //nyalakan timer kipas penambah kelembapan, timeout lama TimeOutSet(&EggFanHTimeout,FAN_H_V_TIMEOUT); EggFanHOn(); //matikan exhaust EggFanExOff(); } //jika udara kering else if(humiNow>HUMI_V_LO&&humiNow<HUMI_LO) { //nyalakan timer kipas penambah kelembapan, timeout singkat TimeOutSet(&EggFanHTimeout,FAN_H_TIMEOUT); EggFanHOn(); //matikan exhaust EggFanExOff(); } //jika kelembapan udara rata rata else if(humiNow>HUMI_LO&&humiNow<HUMI_LO) { } //jika udara lembap else if(humiNow>HUMI_HI&&humiNow<HUMI_V_HI) { //nyalakan timer kipas exhaust, timeout singkat TimeOutSet(&EggFanExTimeout,FANEX_TIMEOUT); EggFanExOn(); //matikan pelembab EggFanHOff(); } //jikaudara sangat lembap else if(humiNow>HUMI_V_HI) { //nyalakan timer kipas exhaust, teimout lama TimeOutSet(&EggFanExTimeout,FANEX_V_TIMEOUT); EggFanExOn(); //matikan pelembab EggFanHOff(); } TimeOutSet(&EggCalibrateTimeout, CALIBRATE_TIMEOUT); }
//系统启动,包括系统从SLEEP状态下唤醒启动或者从POWER DOWN状态下以片内主电源上电方式启动的相关处理 //一般情况下,2种启动方式在用户产品中不会同时存在 VOID SystemOn(VOID) { TIMER WaitTimer; DBG1(("*******SystemOn************\n")); #if (POWER_SAVING_MODE_OPTION == POWER_SAVING_MODE_SLEEP) //获得从SLEEP状态唤醒的触发源标志 DBG1((">>WakeUpOp(), gWakeupTrigFlg:%bx\n", gWakeupTrigFlg)); //系统定义了IR唤醒功能,IR接收头连接于GPIOB6/GPIOE0,IR信号唤醒系统后,则判断键值 #ifdef WIS_FLG_IR if((gWakeupTrigFlg == WIS_FLG_GPB6) || (gWakeupTrigFlg == WIS_FLG_GPE0)) { DWORD IrKeyData; TimeOutSet(&WaitTimer, 3500); //如果在规定时间内未发现预定的IR键值,则继续睡眠 while(!IsTimeOut(&WaitTimer)) { #ifdef FUNC_WATCHDOG_EN FeedWatchDog(); #endif IrKeyData = IrKeyDataVal(); DBG1(("IrKeyData = : %08LX\n", IrKeyData)); //如果检测到预定的IR键值,则开始运行系统 if( (IrKeyData == 0x5AA57F80) || (IrKeyData == 0x5FA07F80) || (IrKeyData == 0x5EA17F80) || (IrKeyData == 0x5DA27F80) || (IrKeyData == 0x5CA37F80) || (IrKeyData == 0x59A67F80) || (IrKeyData == 0x5BA47F80) ) { MessageInit(); DBG1(("WAKE UP FROM SLEEP BY IR!\n")); baGPIOCtrl[GPIO_A_IE] &= ~0x40;//A2 return; } else { DBG1(("ERROR IR KEY!\n")); break; } } DBG1(("TIMEOUT!\n")); #ifdef IR_KEY_PORT if(IR_KEY_PORT == IR_INPUT_GPIOB6) { SetWakeupSrcInSleep(WIS_GPB6_LOW); DBG1(("*GPIO_B_IN:%bx\n", GetGpioReg(GPIO_B_IN))); while((GetGpioReg(GPIO_B_IN) & 0x40) != 0x40) { DBG1(("请确保进入Sleep状态前WakeUp条件不成立!(GPIO_C_IN:%bx(GPIOC3 shoule be 0))\n", GetGpioReg(GPIO_B_IN))); WaitMs(10); #ifdef FUNC_WATCHDOG_EN FeedWatchDog(); #endif } } else if(IR_KEY_PORT == IR_INPUT_GPIOE0) { SetWakeupSrcInSleep(WIS_GPE0_LOW); DBG(("*GPIO_E_IN:%bx\n", GetGpioReg(GPIO_E_IN))); while((GetGpioReg(GPIO_E_IN) & 0x01) != 0x01) { DBG1(("请确保进入Sleep状态前WakeUp条件不成立!(GPIO_C_IN:%bx(GPIOC3 shoule be 0))\n", GetGpioReg(GPIO_B_IN))); WaitMs(10); #ifdef FUNC_WATCHDOG_EN FeedWatchDog(); #endif } } #endif GoToSleepMode(SLEEP_MOD_OTP_PD); DBG1(("<<WakeUpOp()\n")); return; } #endif #elif (POWER_SAVING_MODE_OPTION == POWER_SAVING_MODE_POWERDOWN) #if (PWR_KEY_MODE == PWR_KEY_PUSH_BUTTON) DBG(("\nPWR_KEY_PUSH_BUTTON\n\n")); SetChip8SRstMode(CRM_IN_PUSH_BUTTON); #elif(PWR_KEY_MODE == PWR_KEY_SLIDE_SWITCH) DBG(("\nPWR_KEY_SLIDE_SWITCH\n\n")); SetChip8SRstMode(CRM_IN_SLIDE_SWITCH); #endif gWakeupTrigFlg = GetWakeupFlgFromPD(); //获得从powerdown状态触发片内主电源上电系统启动的触发源标志 DBG(("gWakeupTrigFlg:%bx\n", gWakeupTrigFlg)); if(WIP_SRC_PWR_KEY & gWakeupTrigFlg) { DBG(("POWER KEY SYS ON\n")); } else if(WIP_SRC_LP_RTC & gWakeupTrigFlg) { DBG(("LP_RTC SYS ON\n")); } //如果POWER_KEY使用软开关(push button),并且定义了POWER KEY开关机保持时间 //例如,要求按住POWER_KEY超过2秒后,系统才会点亮显示继续运行,否则系统再次关闭,用户不会感觉到系统运行过 //POWER_KEY持续按下了规定时间的判定是在power_key.c内完成的。 #if ((PWR_KEY_MODE == PWR_KEY_PUSH_BUTTON) && defined(TIME_POWER_ON_HOLD)) if(WIP_SRC_PWR_KEY & gWakeupTrigFlg) //必须是POWER_KEY唤醒系统时,才检查开机保持时间,而WTD复位等系统重新启动则不需要 { TimeOutSet(&WaitTimer, (TIME_POWER_ON_HOLD * 2)); while(!IsTimeOut(&WaitTimer)) { #ifdef FUNC_WATCHDOG_EN FeedWatchDog(); #endif KeyEventGet(); if(MessageGet(MSG_FIFO_KEY) == MSG_SYS_ON) //如果达到开机保持时间,则系统继续运行 { MessageInit(); DBG(("POWER_KEY Hold time,MSG_SYS_ON\n")); return; } } DBG(("TIMEOUT!\n")); //如果在规定时间内没有收到由power_key.c推送的MSG_SYS_ON消息,需要再次系统关闭。 GoToPDMode(); } #elif(PWR_KEY_MODE == PWR_KEY_SLIDE_SWITCH) DBG(("\nPWR_KEY_MODE == PWR_KEY_SLIDE_SWITCH\n\n")); #endif #endif }