void ShortBeepSetTimes(unsigned char Times){ BeepTimes=Times; if(BeepID2!=0)ReleaseTimer(BeepID2); //強迫停止 if(BeepID!=0)ReleaseTimer(BeepID); //強迫停止 BuzzerOff(); BeepID2=0; BeepID=0; BeepCount2=0; BeepCount=0; BeepID2=TakeTimer(RANDOM,3000,0,ShortBeep); //9830=32768/3 }
void CheckPort()//under ISR,dont spend time too long { Port[1].count++; if((Port[1].PortStatus & P2IN) & P2IE != 0){ //Free button if (Port[1].PortStatus & BUTTON) LT1_Creat(300); //Staring Port[1].PortStatus = 0; ReleaseTimer(Port[1].TimerID); Port[1].TimerID = 0xff; }else if(Port[1].count == 200){ //press button continually till 2s if (Port[1].PortStatus & BUTTON) P3OUT ^= BT_POWER; Port[1].PortStatus = 0; ReleaseTimer(Port[1].TimerID); Port[1].TimerID = 0xff; } }
void CHookedWindow::_KillWindow() { if (!_stOldWindowProc && !_stOldRootWindowProc) return; LogWrite(InstIdx(), "**Exiting main loop**", LT_INFO, __FILE__, __LINE__); Console()->UnRegCom("quit"); _pDelMessageProc->Invoke(TWindowMessage(WMT_CLOSE)); _pDelMessageProc->Invoke(TWindowMessage(WMT_DESTROY)); if (!_bNoMloopHook && !ReleaseTimer(_uiUpdateTimer)) LOG("Can't kill update timer.", LT_ERROR); if( SetWindowLongPtr(_hWnd, GWLP_WNDPROC, (LONG_PTR)_stOldWindowProc)!=NULL && (_stOldRootWindowProc == NULL || SetWindowLongPtr(_hRootHWnd, GWLP_WNDPROC, (LONG_PTR)_stOldRootWindowProc) != NULL) ) LOG("Window controls message hooks unset successfully.", LT_INFO); else LOG("Can't unset window control message hooks.", LT_ERROR); _stOldWindowProc = NULL; _stOldRootWindowProc = NULL; _pDelMessageProc->Invoke(TWindowMessage(WMT_RELEASED)); }
void delay( DWORD dwTime ){ BYTE bTime; bTime = GetTimer( dwTime ); while ( !IsTimerTimeOut( bTime ) ); ReleaseTimer( &bTime ); return; }
void ShortBeep(){ BeepCount=0; if(BeepID!=0){ ReleaseTimer(BeepID); //強迫停止..否則原本的若還在響..將會佔用1個TIMER不放 BeepID=0; BuzzerOff(); //關閉並省電 } if (BeepCount2>=BeepTimes){ ReleaseTimer(BeepID2); BeepID2=0; BuzzerOff(); //關閉並省電 }else{ BuzzerOn(); BeepID=TakeTimer(RANDOM,1500,SINGLE,BuzzerOff); } BeepCount2++; }
void TimerISRFunction(TIMERID num) { unsigned int *pTBCCR; if ( num < 7 && TimerB_Array[num].Timer_Function_Pointer != 0){ pTBCCR = (unsigned int *)(&TBCCR0 + num); *pTBCCR += TimerB_Array[num].Period; TimerB_Array[num].Timer_Function_Pointer(); if ((TimerB_Array[num].Operated_Mode & SINGLE) != 0) ReleaseTimer(num); } }
void Beep1Sec(){ if(BeepID!=0){ ReleaseTimer(BeepID); //強迫停止..否則原本的若還在響..將會佔用1個TIMER不放 BeepID=0; BuzzerOff(); //關閉並省電 } BuzzerOn(); BeepID=TakeTimer(RANDOM,3000,SINGLE,BuzzerOff); }
BYTE ModemGSM_Off( void ){ BYTE bTimer; bTimer = GetTimer( DELAY_POWER_OFF ); if ( GSM_STATUS == 1 ){ GSM_PWRKEY_OFF(); delay( 2000 ); GSM_PWRKEY_ON(); RestartTimer( bTimer, DELAY_POWER_OFF ); do{ } while( (IsTimerTimeOut( bTimer ) == FALSE) && (GSM_STATUS == 1)); ModemGSM_ResetStateSIMCARD(); } ReleaseTimer( &bTimer ); return TRUE; }
void CheckGSM_ONOffState( void ){ static BYTE bState_ONOffState = 0; BYTE bDevState = 0xFF; // if ( timer == TIMER_NULL ){ // timer = GetTimer( TIMEOUT_START_MODEM ); // } switch( bState_ONOffState ) { case 0: if ( IsTimerTimeOut( timerCheckONOFF ) == TRUE ){ if ( ModemGSM_IsReady() == FALSE ){ bState_ONOffState = 1; return; } RestartTimer( timerCheckONOFF, TIMEOUT_CHECK_ONOFF ); } return; case 1: if ( ModemGSM_IsReady() == FALSE ) { if( ModemGSM_IsOn() == TRUE ){ switch( ModemGSM_OffNoBlk() ){ case GSM_OK : //Dev_ChangeState( DEV_GSM_PWR_KEY, OFF ); bState_ONOffState = 2; return; case GSM_IDLE : return; case GSM_MODEM_ERROR : case GSM_MODEM_NTENPT : case GSM_MODEM_TIMEOUT : bState_ONOffState = 0; RestartTimer( timerCheckONOFF, TIMEOUT_CHECK_ONOFF ); return; } } } else{ bState_ONOffState = 0; RestartTimer( timerCheckONOFF, TIMEOUT_CHECK_ONOFF ); return; } case 2: if ( ModemGSM_IsReady() == FALSE ){ switch( ModemGSM_OnNoBlk() ){ case GSM_OK : bState_ONOffState = 0; ReleaseTimer( &timerCheckONOFF ); //Dev_ChangeState( DEV_GSM_PWR_KEY, ON ); return; case GSM_IDLE : return; case GSM_MODEM_ERROR : case GSM_MODEM_NTENPT : case GSM_MODEM_TIMEOUT : bState_ONOffState = 0; RestartTimer( timerCheckONOFF, TIMEOUT_CHECK_ONOFF ); return; } } else{ bState_ONOffState = 0; RestartTimer( timerCheckONOFF, TIMEOUT_CHECK_ONOFF ); return; } return; } return; }
BYTE ModemGSM_OffNoBlk( void ){ BYTE bTmp; static BYTE bState = 0; static TIMER_HANDLE bTimer = TIMER_NULL; #ifndef _BAUDRATE_AUTOBAUD return TRUE; #else //! há um erro na atualização da variável bState_OffNoBlk. Após o módulo retornar GSM_OK switch( bState ){ case 0: //! //! desliga o PowerKey //! if ( bTimer != TIMER_NULL ){ ReleaseTimer( &bTimer ); } if ( bTimer == TIMER_NULL ){ bTimer = GetTimer( 2000 /*DELAY_POWER_OFF*/ ); } bState = 1; GSM_PWRKEY_OFF(); return GSM_IDLE; case 1: // espera tempo de desligamento do powerkey if ( IsTimerTimeOut( bTimer ) == TRUE ){ RestartTimer( bTimer, DELAY_POWER_OFF ); GSM_PWRKEY_ON(); bState = 100; } return GSM_IDLE; case 100: //! //! Espera o tempo para GSM_STATUS (VDD_EXT) ir para o nível lógico 0 //! bTmp = GSM_STATUS; if ( (IsTimerTimeOut( bTimer ) == TRUE) || (GSM_STATUS == 0) ) { if ( GSM_STATUS == 0 ) { bState = 0; ReleaseTimer( &bTimer ); //teste ModemGSM_Ready = FALSE; CleanStatus( ST_MODEM_RDY ); //teste return GSM_OK; } //else //{ // // reinicia o processo de desligar o modem // bState_OffNoBlk = 0; //} } return GSM_IDLE; default: if ( bTimer != TIMER_NULL ){ bState = 0; ReleaseTimer( &bTimer ); } return GSM_MODEM_ERROR; } return GSM_IDLE; #endif }
BYTE ModemGSM_OnNoBlk( void ){ #ifndef _BAUDRATE_AUTOBAUD return TRUE; #else char cBuffer[16]; static BYTE contTent = 0; static BYTE bState = 0; static TIMER_HANDLE bTimer = TIMER_NULL; if ( contTent > 4 ) { contTent = 0; return GSM_MODEM_NTENPT; } switch( bState ){ case 0: if ( bTimer == TIMER_NULL ){ bTimer = GetTimer( DELAY_POWER_ON ); } GSM_PWRKEY_OFF(); // coloca o PWR_KEY para nível zero. bState = 1; return GSM_IDLE; case 1 : if ( IsTimerTimeOut( bTimer ) == TRUE ) { // ocorreu o timeout da operação com o modem // deve verificar o valor de GSM_STATUS GSM_PWRKEY_ON(); contTent++; if ( GSM_STATUS == 0 ){ // não foi possível ligar o modem. delay( 10 ); GSM_PWRKEY_OFF(); bState = 2; bTimer = GetTimer( DELAY_POWER_ON ); return GSM_IDLE; } else{ contTent = 0; bState = 3; RestartTimer( bTimer, TIMEOUT_START_MODEM ); return GSM_IDLE; } } case 2: if ( IsTimerTimeOut( bTimer ) == TRUE ){ bState = 1; } return GSM_IDLE; case 3: if ( IsTimerTimeOut( bTimer ) == TRUE ){ // Send a .AT. string to modem to detect the baudrate strcpypgm2ram( (char*)cBuffer, (const MEM_MODEL rom char*)".AT." ); ModemGSM_SendATCMD( (BYTE*)cBuffer, strlen( cBuffer ) ); RestartTimer( bTimer, TIMEOUT_START_MODEM ); bState = 4; } return GSM_IDLE; case 4: if ( IsTimerTimeOut( bTimer ) == TRUE ){ // Send a .AT. string to modem to detect the baudrate strcpypgm2ram( (char*)cBuffer, (const MEM_MODEL rom char*)"AT+IPR=?\r\n" ); ModemGSM_SendATCMD( (BYTE*)cBuffer, strlen( cBuffer ) ); bState = 5; RestartTimer( bTimer, 10000 ); } return GSM_IDLE; case 5: if ( (IsTimerTimeOut( bTimer ) == TRUE) || ( ModemGSM_IsReady( ) == TRUE ) ){ ReleaseTimer( &bTimer ); bState = 0; if ( ModemGSM_IsReady( ) == TRUE ) { SetStatus( ST_MODEM_RDY ); return GSM_OK; } else{ return GSM_MODEM_TIMEOUT; } } return GSM_IDLE; default: return GSM_MODEM_ERROR; } #endif }
void Close_BattDetect(){ BattStruct.BattDetectState=0; Close_ADC(); ReleaseTimer(BattStruct.BattID); }
void ProcessaPacotes( void ){ BYTE dataLen; //if ( serialPC_timer != TIMER_NULL ){ // // verifica se houve um timeout entre a recepção de caracteres em uma mensagem // // se houver, descarta o pacote // if ( IsTimerTimeOut( serialPC_timer ) == TRUE ){ // serialPC_CRC = 0; // serialPC_DataCounter = 0; // stSerialPC = ST_STX; // serialPC_ProcessaPkt = FALSE; // ReleaseTimer( &serialPC_timer ); // return; // } //} #ifdef USE_SONDA if ( serialPC_SondaTimer != TIMER_NULL ){ if ( IsTimerTimeOut( serialPC_SondaTimer ) == TRUE ){ // ocorreu um timeout no timer SONDA. Altera o estado do SMS Box para offline CleanStatus( ST_COM_PC_OK ); // libera o recurso do timer ReleaseTimer( &serialPC_SondaTimer ); } } else{ // não está conectado e deve ignorar pacote return; } #endif #ifdef _USE_SERIALPC_TIMEOUT if ( IsTimerTimeOut( serialPC_timer ) == TRUE ){ serialPC_CRC = 0; serialPC_DataCounter = 0; stSerialPC = ST_STX; serialPC_ProcessaPkt = FALSE; ReleaseTimer( &serialPC_timer ); return; } #endif if ( serialPC_ProcessaPkt == FALSE ){ return; } serialPC_ProcessaPkt = FALSE; dataLen = serialPC_Buffer[LEN_FIELD]; memcpy( (void*)cmdBuffer, (void*)(serialPC_Buffer + ED_FIELD), dataLen + 4 ); switch( cmdBuffer[CMD_FIELD] ) { case CMD_HELLO : ProcessaCMD_HELLO( cmdBuffer ); return; case CMD_MODEM : ProcessaCMD_MODEM( cmdBuffer ); return; case CMD_ASC : ProcessaCMD_ASC( cmdBuffer ); return; #ifdef USE_SONDA case CMD_SONDA: ProcessaCMD_SONDA( cmdBuffer ); return; #endif case CMD_STATUS: ProcessaCMD_STATUS( cmdBuffer ); return; case CMD_VERSION: ProcessaCMD_VERSION( cmdBuffer ); return; case CMD_SET_DEV_ST: ProcessaCMD_SET_DEV_ST( cmdBuffer ); return; case CMD_GET_DEV_ST: ProcessaCMD_GET_DEV_ST( cmdBuffer ); return; case CMD_GET_LOG: ProcessaCMD_GET_LOG( cmdBuffer ); return; //! Upload firmware command case CMD_BOOTLOADER_UPLOAD_FW: enviaNACK( cmdBuffer[ED_FIELD] , DONT_NOT_FUNC ); //ProcessaCMD_BOOTLOADER_UPLOAD_FW( cmdBuffer ); return; //! get the CRC32 for validate the firmware upload case CMD_BOOTLOADER_GETCRC32: enviaNACK( cmdBuffer[ED_FIELD] , DONT_NOT_FUNC ); //ProcessaCMD_BOOTLOADER_GETCRC32( cmdBuffer ); return; //! call the firmware change routine case CMD_BOOTLOADER_CHANGEFW: enviaNACK( cmdBuffer[ED_FIELD] , DONT_NOT_FUNC ); //ProcessaCMD_BOOTLOADER_CHANGEFW( cmdBuffer ); return; default: return; } }
//---------------------------------------- //CDantas -> Alterada função para trabalhar com Serial Emulada void ProcessaProtocolo( BYTE bData ){ if ( serialPC_DataCounter >= sizeof( serialPC_Buffer ) ) { serialPC_DataCounter = 0; stSerialPC = ST_STX; return; } switch( stSerialPC ) { case ST_STX: serialPC_CRC = 0; serialPC_DataLen = 0; serialPC_DataCounter = 0; #ifdef _USE_SERIALPC_TIMEOUT serialPC_timer = GetTimer( TIMEOUT_COM_PC ); #endif if ( bData == STX ){ stSerialPC = ST_ED; } break; case ST_ED: case ST_EO: case ST_LEN: case ST_DATA: case ST_LRC: if ( stSerialPC == ST_DATA ) { if ( serialPC_DLE == 1 ){ serialPC_Buffer[serialPC_DataCounter] = bData ^ DLE_CHAR; serialPC_CRC ^= bData; serialPC_DataCounter++; serialPC_DLE = 0; } else{ if ( (bData == DLE)||(bData == ETX)||(bData == STX) ){ serialPC_DLE = 1; } else{ serialPC_Buffer[serialPC_DataCounter] = bData; serialPC_CRC ^= bData; serialPC_DataCounter++; } } } else{ serialPC_Buffer[serialPC_DataCounter] = bData; serialPC_CRC ^= bData; serialPC_DataCounter++; } #ifdef _USE_SERIALPC_TIMEOUT RestartTimer( serialPC_timer , TIMEOUT_COM_PC ); #endif switch( stSerialPC ){ case ST_ED: if ( bData != GetID() ){ //pacote não é para este SMS Box serialPC_CRC = 0; serialPC_DataCounter = 0; stSerialPC = ST_STX; serialPC_ProcessaPkt = FALSE; #ifdef _USE_SERIALPC_TIMEOUT ReleaseTimer( &serialPC_timer ); #endif } else{ stSerialPC = ST_EO; } break; case ST_EO: stSerialPC = ST_LEN; break; case ST_LEN: stSerialPC = ST_DATA; break; case ST_DATA: if ( serialPC_Buffer[LEN_FIELD] == ( serialPC_DataCounter - DATA_FIELD )){ stSerialPC = ST_LRC; } break; case ST_LRC: if ( serialPC_CRC ){ serialPC_CRC = 0; serialPC_DataCounter = 0; stSerialPC = ST_STX; serialPC_ProcessaPkt = FALSE; } stSerialPC = ST_ETX; break; } break; case ST_ETX: serialPC_CRC = 0; serialPC_DataCounter = 0; stSerialPC = ST_STX; serialPC_ProcessaPkt = TRUE; if ( bData != ETX ){ serialPC_ProcessaPkt = FALSE; } #ifdef _USE_SERIALPC_TIMEOUT ReleaseTimer( &serialPC_timer ); #endif break; default: serialPC_CRC = 0; serialPC_DataCounter = 0; stSerialPC = ST_STX; serialPC_ProcessaPkt = FALSE; #ifdef _USE_SERIALPC_TIMEOUT ReleaseTimer( &serialPC_timer ); #endif } return; }
nuiAnimation::~nuiAnimation() { delete mpEasing; ReleaseTimer(); }