Ejemplo n.º 1
0
void REF_Danger(void){
	int i = 0;
	uint8_t sensor = 0;
	bool temp;


	if(!EVNT_EventIsSet(EVNT_DONT_FALL_DOWN))
		for( i=0;i<REF_NOF_SENSORS;i++) {

				if(SensorCalibrated[i] < 1000-THRESHOLD_BLK && SensorCalibrated[i]!=0 ){
					sensor = i;

				if(fightOn){
					fight_state = WHITE_LINE_DETECTION;
					FRTOS1_vTaskSuspend(checkRefl);
				}
				if(remoteOn){
					EVNT_SetEvent(EVNT_REMOTE_DEACTIVATE);
					MOT_SetSpeedPercent(MOT_GetMotorHandle(MOT_MOTOR_LEFT), -30);
					MOT_SetSpeedPercent(MOT_GetMotorHandle(MOT_MOTOR_RIGHT), -30);
					vTaskDelay(500/TRG_TICKS_MS);
					EVNT_SetEvent(EVNT_REMOTE_ACTIVATE);
				}
				else {
					 MOT_SetSpeedPercent(MOT_GetMotorHandle(MOT_MOTOR_LEFT) , 0);
					 MOT_SetSpeedPercent(MOT_GetMotorHandle(MOT_MOTOR_RIGHT), 0);
					 EVNT_SetEvent(EVNT_DONT_FALL_DOWN);
					 FRTOS1_vTaskSuspend(checkRefl);
				}

			}
	}
}
Ejemplo n.º 2
0
void RADIO_DataIndicationPacket(tRxPacket *sRxPacket) {
  if (sRxPacket->u8Status==SMAC1_TIMEOUT) {      /* Put timeout condition code here */
    LED1_Neg(); LED2_Neg();  /* indicator for bad or no communication */
    EVNT_SetEvent(EVNT_RADIO_TIMEOUT);
  } else if (sRxPacket->u8Status == SMAC1_SUCCESS) { /* good packet received: handle it. */
    if (RADIO_isSniffing) {
      QueueMessage(RADIO_QUEUE_MSG_SNIFF, (const char*)sRxPacket->pu8Data, sRxPacket->u8DataLength);
    }
    /* check if it is the packet we expect...*/
    if (   RADIO_AppStatus==RADIO_WAITING_FOR_ACK
        && UTIL1_strncmp((char*)sRxPacket->pu8Data, RADIO_PREFIX_STR RADIO_ACK_STR, sizeof(RADIO_PREFIX_STR RADIO_ACK_STR)-1)==0
       ) /* is it our acknowledge packet? */
    {
      EVNT_SetEvent(EVNT_RADIO_ACK);
    } else if (UTIL1_strncmp((char*)sRxPacket->pu8Data, RADIO_PREFIX_STR, sizeof(RADIO_PREFIX_STR)-1)==0) {
#if PL_HAS_REMOTE && PL_HAS_MOTOR
      /*! \todo Implement your own message handling */
      if (UTIL1_strncmp((char*)sRxPacket->pu8Data, RADIO_PREFIX_STR REMOTE_ACCEL_PREFIX, sizeof(RADIO_PREFIX_STR REMOTE_ACCEL_PREFIX)-1)==0) {
        QueueMessage(RADIO_QUEUE_MSG_ACCEL, (const char*)sRxPacket->pu8Data, sRxPacket->u8DataLength);
      }
#endif
      EVNT_SetEvent(EVNT_RADIO_DATA);
    } else { /* unknown packet? */
      EVNT_SetEvent(EVNT_RADIO_UNKNOWN);
    }
  } else if (sRxPacket->u8Status==SMAC1_OVERFLOW) { /* received packet, but it was longer than what we expect. */
    EVNT_SetEvent(EVNT_RADIO_OVERFLOW);
    LED1_Neg(); LED2_Neg(); /* indicator for bad or no communication */
  }
}
Ejemplo n.º 3
0
static void App(void) {
#if PL_CONFIG_HAS_SHELL
  int cntr = 0;
#endif

	EVNT_SetEvent(EVNT_STARTUP);
	  for(;;) {
	  #if PL_CONFIG_HAS_EVENTS
#if PL_CONFIG_EVENTS_AUTO_CLEAR
    EVNT_HandleEvent(APP_EvntHandler, TRUE);
    #else
    EVNT_HandleEvent(APP_EvntHandler, FALSE);
    #endif
	  #endif
      #if PL_CONFIG_HAS_KEYS
	    KEY_Scan();
      #endif
#if PL_CONFIG_HAS_TETIRS
    WAIT1_Waitms(50);
    if (TETRIS_Run()==0) {
      TETRIS_Start();
    }
  #else
    #if PL_CONFIG_HAS_SHELL

    #endif
  #endif

}
}
Ejemplo n.º 4
0
void APP_Run(void) {
#if PL_HAS_RTOS_TRACE
	if (!RTOSTRC1_uiTraceStart()) {
		for(;;) {} /* failed! */
	}
#endif
	EVNT_SetEvent(EVNT_INIT);
#if PL_HAS_RTOS
	if (FRTOS1_xTaskCreate(
			MainTask, /* pointer to the task */
			"Main", /* task name for kernel awareness debugging */
			configMINIMAL_STACK_SIZE, /* task stack size */
			(void*)NULL, /* optional task startup argument */
			tskIDLE_PRIORITY, /* initial priority */
			(xTaskHandle*)NULL /* optional task handle to create */
	) != pdPASS ) {
		/*lint -e527 */
		for (;;) {
		} /* error! probably out of memory */
		/*lint +e527 */
	}
	FRTOS1_vTaskStartScheduler();
#else
	APP_Loop();
#endif
}
Ejemplo n.º 5
0
void APP_Start(void) {
  EVNT_SetEvent(EVNT_INIT);
#if PL_HAS_RTOS
  if (FRTOS1_xTaskCreate(
        MainTask,  /* pointer to the task */
        "Main", /* task name for kernel awareness debugging */
        configMINIMAL_STACK_SIZE, /* task stack size */
        (void*)NULL, /* optional task startup argument */
        tskIDLE_PRIORITY,  /* initial priority */
        (xTaskHandle*)NULL /* optional task handle to create */
      ) != pdPASS) {
    /*lint -e527 */
    for(;;){} /* error! probably out of memory */
    /*lint +e527 */
  }
  FRTOS1_vTaskStartScheduler();
#else
  for(;;) { /* application main loop */
#if PL_HAS_SHELL
    SHELL_Process();
#endif
#if PL_HAS_KEYS && !PL_HAS_KBI
    /* poll keys */
    KEY_Scan(); /* poll keys */
#endif
    EVNT_HandleEvent(APP_HandleEvent);
    WAIT1_Waitms(10);
  }
#endif
}
Ejemplo n.º 6
0
void TMR_OnInterrupt(void) {
    cnt++;
    if(cnt>1000){
        cnt = 0;
  	    EVNT_SetEvent(EVNT_HEARTBEAT);
    }
}
Ejemplo n.º 7
0
void APP_Start(void) {
  PL_Init(); /* platform initialization */
  //TEST_Test();
  EVNT_SetEvent(EVNT_INIT); /* set initial event */
#if PL_HAS_RTOS
  if (FRTOS1_xTaskCreate(AppTask, (signed portCHAR *)"App", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL) != pdPASS) {
    for(;;){} /* error */
  }
  RTOS_Run();
#else
  APP_Loop();
#endif
#if 0
  for(;;) {
#if PL_HAS_MEALY
    MEALY_Step();
#else
    LED1_On();
    WAIT1_Waitms(300);
    LED1_Off();
    LED2_On();
    WAIT1_Waitms(300);
    LED2_Off();
    LED3_On();
    WAIT1_Waitms(300);
    LED3_Off();
#endif
  }
#endif
  /* just in case we leave the main application loop */
  PL_Deinit();
}
Ejemplo n.º 8
0
void TaskLoop(void *pvParameters){
	int16_t x,y,z;
	#if PL_HAS_ACCEL
	ACCEL_LowLevelInit();
	#endif
	(void)pvParameters;
	for(;;){
		#if PL_HAS_KEYS
			KEY_Scan();
		#endif
		#if PL_HAS_LINE_SENSOR
			typ = Line_Detection();
			if(typ!=LINE_STATE_NO_LINE){
				EVNT_SetEvent(EVNT_LINE);
			}
			switch(typ) {
            case LINE_STATE_LEFT:
				EVNT_SetEvent(EVNT_LINE_LEFT);
            	break;
            case LINE_STATE_RIGHT:
				EVNT_SetEvent(EVNT_LINE_RIGHT);
            	break;
            case LINE_STATE_AHEAD:
				EVNT_SetEvent(EVNT_LINE);
            	break;
            case LINE_STATE_MIDDLE:
				EVNT_SetEvent(EVNT_LINE);
            	break;
            case LINE_STATE_NO_LINE:
				/* No event */
            	break;
            case LINE_STATE_LINE:
				EVNT_SetEvent(EVNT_LINE);
            	break;
            case LINE_STATE_ERR:
				EVNT_SetEvent(EVNT_LINE);
            	break;
            default:
				/* No event */
            	break;
			}
		#endif
		#if PL_HAS_ACCEL
			ACCEL_GetValues(&x,&y,&z);
			if(z < Z_ACCEL_THRESHOLD){
				EVNT_SetEvent(EVNT_ACCEL);
			}
		#endif
		#if PL_HAS_EVENTS
		  EVNT_HandleEvent(APP_EventHandler);
		#endif
		  FRTOS1_vTaskDelay(5/portTICK_RATE_MS);
	  }
}
Ejemplo n.º 9
0
void APP_Start(void) {
    PL_Init(); /* platform initialization */

    EVNT_SetEvent(EVNT_INIT);
#if PL_HAS_RTOS
    RTOS_Run();
#else
    APP_Loop();
#endif

}
Ejemplo n.º 10
0
/*! \brief Function for starting the Application. Inits and Start the RTOS */
void APP_Start(void) {
  PL_Init(); 				/* platform initialization */

  EVNT_SetEvent(EVNT_INIT); /* set initial event */

  //Create application Task
  if (FRTOS1_xTaskCreate(APPTask, (signed portCHAR *)"APP_Task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL) != pdPASS) {
    for(;;){} /* error */
  }

  RTOS_Run();
}
Ejemplo n.º 11
0
Archivo: RTOS.c Proyecto: chregubr85/42
static portTASK_FUNCTION(AccelObserv, pvParameters) {

	for(;;) {
		static int16_t x,y,z;

		ACCEL_GetValues(&x, &y, &z);

		if(z < -200){
			EVNT_SetEvent(EVNT_FREEFALL);
		}
		FRTOS1_vTaskDelay(10/TRG_TICKS_MS);
	}
}
Ejemplo n.º 12
0
void TMR_OnInterrupt(void) {
  /* this one gets called from an interrupt!!!! */
  static int cntr=0;

  cntr++;
  if (cntr==(1000/TMR_TICK_MS)) {
#if 1 /* setting an event */
    EVNT_SetEvent(EVENT_LED_HEARTBEAT);
#else /* toggling directly the LED */
    LED1_Neg();
#endif
    cntr = 0;
  }
#if PL_HAS_TRIGGER
  TRG_IncTick(); //Increment the Trigger (10ms are over)
#endif
}
Ejemplo n.º 13
0
static void AppTask(void* param) {
  EVNT_SetEvent(EVNT_STARTUP); /* set startup event */
  for(;;) {
#if PL_CONFIG_HAS_EVENTS
  #if PL_CONFIG_EVENTS_AUTO_CLEAR
  EVNT_HandleEvent(APP_EvntHandler, TRUE);
  #else
  EVNT_HandleEvent(APP_EvntHandler, FALSE);
  #endif
#endif
#if PL_CONFIG_HAS_KEYS && PL_CONFIG_NOF_KEYS>0 && !PL_CONFIG_HAS_KBI
    KEY_Scan(); /* scan keys */
#endif
    //LED1_Neg();
    FRTOS1_vTaskDelay(5/portTICK_RATE_MS);
  }
}
Ejemplo n.º 14
0
void RTOS_Init(void) {
  static const int led1 = 1;
  static const int led2 = 2;

  EVNT_SetEvent(EVNT_STARTUP); /* set startup event */
  /*! \todo Create tasks here */
  if (FRTOS1_xTaskCreate(AppTask, (signed portCHAR *)"App1", configMINIMAL_STACK_SIZE, (void*)&led1, tskIDLE_PRIORITY, NULL) != pdPASS) {
    for(;;){} /* error case only, stay here! */
  }
#if 0
  if (FRTOS1_xTaskCreate(AppTask, (signed portCHAR *)"App2", configMINIMAL_STACK_SIZE, (void*)&led2, tskIDLE_PRIORITY, NULL) != pdPASS) {
    for(;;){} /* error case only, stay here! */
  }
  if (FRTOS1_xTaskCreate(KillMe, (signed portCHAR *)"KillMe", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL) != pdPASS) {
    for(;;){} /* error case only, stay here! */
  }
#endif
}
Ejemplo n.º 15
0
void TMR_OnInterrupt(void) {
  /* this one gets called from an interrupt!!!! */
  static int cntr=0;

  cntr++;
  if (cntr==(1000/TMR_TICK_MS)) {
#if 1 /* setting an event */
    EVNT_SetEvent(EVENT_LED_HEARTBEAT);
#else /* toggling directly the LED */
    LED1_Neg();
#endif
    cntr = 0;
  }
#if PL_HAS_TRIGGER
  TRG_IncTick();
#endif
  TMOUT1_AddTick();
#if PL_HAS_MOTOR_TACHO
  TACHO_Sample();
#endif
}
Ejemplo n.º 16
0
void KEY_Scan(void) {
  /*! check handling all keys */
#if PL_CONFIG_HAS_DEBOUNCE
  KEYDBNC_Process();
#else
  #if PL_CONFIG_NOF_KEYS >= 1
    if (KEY1_Get()) { /* key pressed */
      EVNT_SetEvent(EVNT_SW1_PRESSED);
    }
  #endif
  #if PL_CONFIG_NOF_KEYS >= 2
    if (KEY2_Get()) { /* key pressed */
      EVNT_SetEvent(EVNT_SW2_PRESSED);
    }
  #endif
  #if PL_CONFIG_NOF_KEYS >= 3
    if (KEY3_Get()) { /* key pressed */
      EVNT_SetEvent(EVNT_SW3_PRESSED);
    }
  #endif
  #if PL_CONFIG_NOF_KEYS >= 4
    if (KEY4_Get()) { /* key pressed */
      EVNT_SetEvent(EVNT_SW4_PRESSED);
    }
  #endif
  #if PL_CONFIG_NOF_KEYS >= 5
    if (KEY5_Get()) { /* key pressed */
      EVNT_SetEvent(EVNT_SW5_PRESSED);
    }
  #endif
  #if PL_CONFIG_NOF_KEYS >= 6
    if (KEY6_Get()) { /* key pressed */
      EVNT_SetEvent(EVNT_SW6_PRESSED);
    }
  #endif
  #if PL_CONFIG_NOF_KEYS >= 7
    if (KEY7_Get()) { /* key pressed */
      EVNT_SetEvent(EVNT_SW7_PRESSED);
    }
  #endif
#endif
}
Ejemplo n.º 17
0
Archivo: RTOS.c Proyecto: chregubr85/42
static portTASK_FUNCTION(T1, pvParameters) {
#if PL_HAS_ACCEL
	ACCEL_LowLevelInit();
#endif
#if PL_HAS_REMOTE
	remoteInit();
#endif
#if PL_HAS_ANALOG_JOY
	AD1_Calibrate(TRUE);
	CalibXY();
#endif
#if PL_HAS_FIGHT
	FIGHT_Init();
#endif
#if REMOTE_WITHOUT_REFLECTANCE
	FRTOS1_vTaskSuspend(checkRefl);
#endif
  for(;;) {
	EVNT_SetEvent(EVNT_LED_HEARTBEAT);
    FRTOS1_vTaskDelay(1000/TRG_TICKS_MS);
  }
}
Ejemplo n.º 18
0
static void APP_EvntHandler(EVNT_Handle event) {
	switch (event) {
	case EVNT_INIT:
		LED1_On();
		WAIT1_Waitms(100);
		LED1_Off();
		break;

#if PL_HAS_LED_HEARTBEAT
		case EVNT_LED_HEARTBEAT:
		LED3_Neg();
		break;
#endif
#if PL_NOF_KEYS>=1
	case EVNT_SW1_PRESSED:

		if (REF_IsCalibrated()) {
			STR_Start();
		}

		break;

	case EVNT_SW1_LPRESSED:
#if PL_HAS_LINE_SENSOR
		LED4_On();
		WAIT1_Waitms(500);
		EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION);
		DRV_Drive_Forward(40);
		WAIT1_Waitms(300);
		DRV_Drive_Forward(-60);
		WAIT1_Waitms(200);
		DRV_Drive_Forward(0);
		EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION);
		WAIT1_Waitms(500);
		if (REF_IsCalibrated()) {
			LED4_Off();
		}
		break;
		
#endif
		break;
#endif
#if PL_NOF_KEYS>=2
		case EVNT_SW2_PRESSED:
		LED2_Neg();
		break;
#endif
#if PL_NOF_KEYS>=3
		case EVNT_SW3_PRESSED:
		LED3_Neg();
		break;
#endif
#if PL_NOF_KEYS>=4
		case EVNT_SW4_PRESSED:
		LED4_Neg();
		break;
#endif

	default:
		break;
	}
}
Ejemplo n.º 19
0
static void APP_EventHandler(EVNT_Handle event) {
	  switch(event) {
	    case EVNT_INIT:
	      /*LED1_On();
	      WAIT1_Waitms(50);
	      LED1_Off();
	      LED2_On();
	      WAIT1_Waitms(50);
	      LED2_Off();
	      LED3_On();
	      WAIT1_Waitms(50);
	      LED3_Off();*/
	      break;
	    case EVENT_LED_HEARTBEAT:
	      //LED1_Neg();
	      break;
	#if PL_NOF_KEYS >= 1
	    case EVNT_SW1_PRESSED:
	      lastKeyPressed = 1;
	  #if PL_HAS_SHELL
	      SHELL_SendString("SW1 pressed!\r\n");
	  #endif
	  #if PL_HAS_BUZZER
	      BUZ_Beep(300, 500);
	  #endif
	      break;
	    case EVNT_SW1_LPRESSED:
	  #if PL_HAS_SHELL
	      SHELL_SendString("SW1 long pressed!\r\n");
	  #endif
	      break;
	    case EVNT_SW1_RELEASED:
	  #if PL_HAS_SHELL
	      SHELL_SendString("SW1 released!\r\n");
	  #endif
	      break;
	#endif
	#if PL_NOF_LEDS_ROBO
	    case EVNT_SW2_PRESSED:
	      lastKeyPressed = 2;
	 #if PL_HAS_SHELL
	      SHELL_SendString("SW2 pressed!\r\n");
	      EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION);
	 #endif
	      break;
	    case EVNT_SW2_LPRESSED:
	    	LED_U1_Neg();
	 #if PL_HAS_SHELL
	      SHELL_SendString("SW2 long pressed!\r\n");
	 #endif
	      break;
	    case EVNT_SW2_RELEASED:
	    	LED_U1_Neg();
	 #if PL_HAS_SHELL
	      SHELL_SendString("SW2 released!\r\n");
	 #endif
	      break;
	#endif
	#if PL_NOF_KEYS >= 3
	    case EVNT_SW3_PRESSED:
	      lastKeyPressed = 3;
	#if PL_HAS_SHELL
	      SHELL_SendString("SW3 pressed!\r\n");
	#endif
	      break;
	#endif
	#if PL_NOF_KEYS >= 4
	    case EVNT_SW4_PRESSED:
	      lastKeyPressed = 4;
	#if PL_HAS_SHELL
	      SHELL_SendString("SW4 pressed!\r\n");
	#endif
	      break;
	#endif
	#if PL_NOF_KEYS >= 5
	    case EVNT_SW5_PRESSED:
	      lastKeyPressed = 5;
	#if PL_HAS_SHELL
	      SHELL_SendString("SW5 pressed!\r\n");
	#endif
	      break;
	#endif
	#if PL_NOF_KEYS >= 6
	    case EVNT_SW6_PRESSED:
	      lastKeyPressed = 6;
	#if PL_HAS_SHELL
	      SHELL_SendString("SW6 pressed!\r\n");
	#endif
	      break;
	#endif
	#if PL_NOF_KEYS >= 7
	    case EVNT_SW7_PRESSED:
	      lastKeyPressed = 7;
	#if PL_HAS_SHELL
	      SHELL_SendString("SW7 pressed!\r\n");
	#endif
	      break;
	#endif
	    default:
	      break;
	  }
	}
Ejemplo n.º 20
0
/*!
 * \brief Event called in the event of a long key press detected.
 * \param keys The keyboard port content
 * \param event The event kind
 */
static void KEYDBNC_OnDebounceEvent(DBNC_EventKinds event, DBNC_KeySet keys) {
  switch(event) {
    /* pressed */
    case DBNC_EVENT_PRESSED:
#if PL_NOF_KEYS >= 1
      if (keys==(1<<0)) {
        EVNT_SetEvent(EVNT_SW_A_PRESSED);
      }
#endif
#if PL_NOF_KEYS >= 2
      if (keys==(1<<1)) {
        EVNT_SetEvent(EVNT_SW_B_PRESSED);
      }
#endif
#if PL_NOF_KEYS >= 3
      if (keys==(1<<2)) {
        EVNT_SetEvent(EVNT_SW_C_PRESSED);
      }
#endif
#if PL_NOF_KEYS >= 4
      if (keys==(1<<3)) {
        EVNT_SetEvent(EVNT_SW_D_PRESSED);
      }
#endif
#if PL_NOF_KEYS >= 5
      if (keys==(1<<4)) {
        EVNT_SetEvent(EVNT_SW_E_PRESSED);
      }
#endif
#if PL_NOF_KEYS >= 6
      if (keys==(1<<5)) {
        EVNT_SetEvent(EVNT_SW_F_PRESSED);
      }
#endif
#if PL_NOF_KEYS >= 7
      if (keys==(1<<6)) {
        EVNT_SetEvent(EVNT_SW_G_PRESSED);
      }
#endif
      break;

    /* long pressed */
    case DBNC_EVENT_LONG_PRESSED:
#if PL_NOF_KEYS >= 1
      if (keys==(1<<0)) {
        EVNT_SetEvent(EVNT_SW_A_LPRESSED);
      }
#endif
#if PL_NOF_KEYS >= 2
      if (keys==(1<<1)) {
        EVNT_SetEvent(EVNT_SW_B_LPRESSED);
      }
#endif
#if PL_NOF_KEYS >= 3
     if (keys==(1<<2)) {
        EVNT_SetEvent(EVNT_SW_C_LPRESSED);
      }
#endif
#if PL_NOF_KEYS >= 4
     if (keys==(1<<3)) {
        EVNT_SetEvent(EVNT_SW_D_LPRESSED);
      }
#endif
#if PL_NOF_KEYS >= 5
     if (keys==(1<<4)) {
        EVNT_SetEvent(EVNT_SW_E_LPRESSED);
      }
#endif
#if PL_NOF_KEYS >= 6
     if (keys==(1<<5)) {
        EVNT_SetEvent(EVNT_SW_F_LPRESSED);
      }
#endif
#if PL_NOF_KEYS >= 7
     if (keys==(1<<6)) {
        EVNT_SetEvent(EVNT_SW_G_LPRESSED);
      }
#endif
     break;

     /* released */
    case DBNC_EVENT_RELEASED:
#if PL_NOF_KEYS >= 1
      if (keys==(1<<0)) {
        EVNT_SetEvent(EVNT_SW_A_RELEASED);
      }
#endif
#if PL_NOF_KEYS >= 2
      if (keys==(1<<1)) {
        EVNT_SetEvent(EVNT_SW_B_RELEASED);
      }
#endif
#if PL_NOF_KEYS >= 3
      if (keys==(1<<2)) {
        EVNT_SetEvent(EVNT_SW_C_RELEASED);
      }
#endif
#if PL_NOF_KEYS >= 4
      if (keys==(1<<3)) {
        EVNT_SetEvent(EVNT_SW_D_RELEASED);
      }
#endif
#if PL_NOF_KEYS >= 5
      if (keys==(1<<4)) {
        EVNT_SetEvent(EVNT_SW_E_RELEASED);
      }
#endif
#if PL_NOF_KEYS >= 6
      if (keys==(1<<5)) {
        EVNT_SetEvent(EVNT_SW_F_RELEASED);
      }
#endif
#if PL_NOF_KEYS >= 7
      if (keys==(1<<6)) {
        EVNT_SetEvent(EVNT_SW_G_RELEASED);
      }
#endif
      break;
    case DBNC_EVENT_END:
      /*! \todo Implement what you have to do at the end of the debouncing */
#if PL_HAS_KBI
      KEY_EnableInterrupts();
#endif
      break;
  } /* switch */
}
Ejemplo n.º 21
0
/*! \brief Handles the Events */
static void APP_EventHandler(EVNT_Handle event) {
	uint8_t err;
  switch(event) {
    case EVNT_INIT:
      LED1_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED1_Off();
      LED2_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED2_Off();
      LED3_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED3_Off();
      break;
    case EVENT_LED_HEARTBEAT:
      LED2_Neg();
      break;
    case EVNT_SW1_PRESSED:
      lastKeyPressed = 1;
      LED1_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED1_Off();
      //EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION);
#if PL_HAS_FIGHT_MODE
      FIGHT_SetState(FIGHT_STATE_COUNTDOWN);
      break;
#endif

#if PL_HAS_LINE_SENSOR
    case EVNT_REF_START_STOP_CALIBRATION: //Create event again, because the event is handled in the "Reflectance.c" directly.
    	if(!EVNT_EventIsSet(EVNT_REF_START_STOP_CALIBRATION))
    	{
    		EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION);
    	}

      break;
#endif

#if PL_IS_FRDM
    case EVNT_SW2_PRESSED:
      lastKeyPressed = 2;
      LED1_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED1_Off();
      break;
    case EVNT_SW3_PRESSED:
      lastKeyPressed = 3;
      LED1_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED1_Off();
      break;
    case EVNT_SW4_PRESSED:
      lastKeyPressed = 4;
      LED1_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED1_Off();
      break;
    case EVNT_SW5_PRESSED:
      lastKeyPressed = 5;
      LED1_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED1_Off();
      break;
    case EVNT_SW6_PRESSED:
      lastKeyPressed = 6;
      LED1_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED1_Off();
      break;
    case EVNT_SW7_PRESSED:
      lastKeyPressed = 7;
      LED1_On();
      vTaskDelay(50/portTICK_RATE_MS);
      LED1_Off();
      break;
#endif
    default:
      break;
  }
}
Ejemplo n.º 22
0
void RADIO_ResetIndication(void) {
  EVNT_SetEvent(EVNT_RADIO_RESET);         /* MC13192 reset, re-initialize.*/
}
Ejemplo n.º 23
0
void Calibration_Run(void){
	// Wenn SW1 pressed, kommt er da rein. beim 2ten mal stopt er calibration.
	EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION);
}
Ejemplo n.º 24
0
/*!
 * \brief Event called in the event of a long key press detected.
 * \param keys The keyboard port content
 * \param event The event kind
 */
static void KEYDBNC_OnDebounceEvent(DBNC_EventKinds event, DBNC_KeySet keys) {
  switch(event) {
    /* pressed */
    case DBNC_EVENT_PRESSED:
#if PL_CONFIG_NOF_KEYS >= 1
      if (keys&(1<<0)) {
        EVNT_SetEvent(EVNT_SW1_PRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 2
      if (keys&(1<<1)) {
        EVNT_SetEvent(EVNT_SW2_PRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 3
      if (keys&(1<<2)) {
        EVNT_SetEvent(EVNT_SW3_PRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 4
      if (keys&(1<<3)) {
        EVNT_SetEvent(EVNT_SW4_PRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 5
      if (keys&(1<<4)) {
        EVNT_SetEvent(EVNT_SW5_PRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 6
      if (keys&(1<<5)) {
        EVNT_SetEvent(EVNT_SW6_PRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 7
      if (keys&(1<<6)) {
        EVNT_SetEvent(EVNT_SW7_PRESSED);
      }
#endif
      break;

    /* long pressed */
    case DBNC_EVENT_LONG_PRESSED:
#if PL_CONFIG_NOF_KEYS >= 1
      if (keys&(1<<0)) {
        EVNT_SetEvent(EVNT_SW1_LPRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 2
      if (keys&(1<<1)) {
        EVNT_SetEvent(EVNT_SW2_LPRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 3
     if (keys&(1<<2)) {
        EVNT_SetEvent(EVNT_SW3_LPRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 4
     if (keys&(1<<3)) {
        EVNT_SetEvent(EVNT_SW4_LPRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 5
     if (keys&(1<<4)) {
        EVNT_SetEvent(EVNT_SW5_LPRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 6
     if (keys&(1<<5)) {
        EVNT_SetEvent(EVNT_SW6_LPRESSED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 7
     if (keys&(1<<6)) {
        EVNT_SetEvent(EVNT_SW7_LPRESSED);
      }
#endif
     break;

     /* released */
    case DBNC_EVENT_RELEASED:
#if PL_CONFIG_NOF_KEYS >= 1
      if (keys&(1<<0)) {
        EVNT_SetEvent(EVNT_SW1_RELEASED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 2
      if (keys&(1<<1)) {
        EVNT_SetEvent(EVNT_SW2_RELEASED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 3
      if (keys&(1<<2)) {
        EVNT_SetEvent(EVNT_SW3_RELEASED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 4
      if (keys&(1<<3)) {
        EVNT_SetEvent(EVNT_SW4_RELEASED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 5
      if (keys&(1<<4)) {
        EVNT_SetEvent(EVNT_SW5_RELEASED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 6
      if (keys&(1<<5)) {
        EVNT_SetEvent(EVNT_SW6_RELEASED);
      }
#endif
#if PL_CONFIG_NOF_KEYS >= 7
      if (keys&(1<<6)) {
        EVNT_SetEvent(EVNT_SW7_RELEASED);
      }
#endif
      break;
    case DBNC_EVENT_END:
      /*! \todo Implement what you have to do at the end of the debouncing. Need to re-enable interrupts? */
    #if PL_CONFIG_HAS_KBI
      KEY_EnableInterrupts();
    #endif
      break;
  } /* switch */
}
Ejemplo n.º 25
0
static void APP_EventHandler(EVNT_Handle event) {
	#if PL_HAS_LINE_SENSOR

	#endif
	static uint16_t buzzer = 1000;
	switch(event){
	case EVNT_INIT:
	    LED1_On();
	    WAIT1_Waitms(100);
	    LED1_Off();
#if PL_HAS_BUZZER
	    BUZ_Beep(1000,400);
#endif
	    break;
	case EVNT_HEARTBEAT:
		//LED1_Off();
		break;
	case EVNT_SW_A_RELEASED:
		//BUZ_Beep(2000,2000);
		break;
	case EVNT_SW_A_PRESSED:
		#if PL_HAS_BUZZER
			BUZ_Beep(1000,10);
            #if PL_HAS_BATTLE
			    BATTLE_changeState(BATTLE_STATE_WAIT);
            #endif /* PL_HAS_BATTLE */
		#endif
		break;
	case EVNT_SW_A_LPRESSED:
		#if PL_HAS_LINE_SENSOR
			LED1_Neg();
			EVNT_SetEvent(EVNT_REF_START_STOP_CALIBRATION);
		#endif
		break;
	case EVNT_SW_B_PRESSED:
		LED2_Neg();
		LED3_Neg();
		#if PL_HAS_SHELL
			CLS1_SendStr("SW B pressed\n",CLS1_GetStdio()->stdOut);
		#endif
		break;
	case EVNT_SW_C_PRESSED:
		LED1_Neg();
		LED2_Neg();
		#if PL_HAS_SHELL
			CLS1_SendStr("SW C pressed\n",CLS1_GetStdio()->stdOut);
		#endif
		break;
	case EVNT_SW_D_PRESSED:
		LED1_Neg();
		#if PL_HAS_SHELL
			CLS1_SendStr("SW D pressed\n",CLS1_GetStdio()->stdOut);
		#endif
		break;
	case EVNT_SW_E_PRESSED:
		LED2_Neg();
		#if PL_HAS_SHELL
				CLS1_SendStr("SW E pressed\n",CLS1_GetStdio()->stdOut);
		#endif
		break;
	case EVNT_SW_F_PRESSED:
		LED3_Neg();
		#if PL_HAS_SHELL
			CLS1_SendStr("SW F pressed\n",CLS1_GetStdio()->stdOut);
		#endif
		break;
	case EVNT_SW_G_PRESSED:
		LED1_Neg();
		LED2_Neg();
		LED3_Neg();
		#if PL_HAS_SHELL
			CLS1_SendStr("SW g pressed\n",CLS1_GetStdio()->stdOut);
		#endif
		break;
	case EVNT_REF_START_STOP_CALIBRATION:

		break;
	default:
		break;
	}
}