Exemple #1
0
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
}
Exemple #2
0
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;
    }
}
Exemple #3
0
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;
}
Exemple #5
0
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++; 
}
Exemple #6
0
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);
   }
}
Exemple #7
0
void Beep1Sec(){
  
  if(BeepID!=0){
    ReleaseTimer(BeepID);  //強迫停止..否則原本的若還在響..將會佔用1個TIMER不放
    BeepID=0;
    BuzzerOff();  //關閉並省電
  }
  
  BuzzerOn();
  BeepID=TakeTimer(RANDOM,3000,SINGLE,BuzzerOff);
}
Exemple #8
0
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;
}
Exemple #9
0
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;
}
Exemple #10
0
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
}
Exemple #11
0
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
}
Exemple #12
0
void Close_BattDetect(){
  BattStruct.BattDetectState=0;
  Close_ADC();
  ReleaseTimer(BattStruct.BattID);
}
Exemple #13
0
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;
  }
}
Exemple #14
0
//----------------------------------------
//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;
}
Exemple #15
0
nuiAnimation::~nuiAnimation()
{
  delete mpEasing;
  ReleaseTimer();
}