Пример #1
0
void signal_shutting_down() {
   led_digits_set_blink(0);
   led_digits_enable();
   led_green_set(0);
   led_green_set_blink(0);
   led_red_set(1);
   led_red_set_blink(1);
}
Пример #2
0
void signal_boot_up() {
   led_digits_set_value(0);
   led_digits_set_blink(0);
   led_red_set(0);
   led_green_set(1);
   led_green_set_blink(1);
   led_red_set_blink(1);
}
Пример #3
0
void keyboard_task()
{
 uint16_t input;

while(1)
{
	input = read_inputs_image();

	if(input&BUTT_0_MASK) led_green_toggle();
	if(input&BUTT_1_MASK) led_red_toggle();
	if(input&BUTT_2_MASK) {led_green_toggle();led_red_toggle();}
	if(input&BUTT_3_MASK) {led_green_set();led_red_set();}
	if(input&BUTT_4_MASK) {led_green_reset();led_red_reset();}
	if(input&BUTT_5_MASK) {led_green_set();}
	if(input&BUTT_6_MASK) {led_red_set();}
	if(input&BUTT_7_MASK) {led_green_reset();}
	if(input&BUTT_8_MASK) {led_red_reset();}
	if(input&BUTT_9_MASK) {}
	if(input&BUTT_F_MASK) {}
	if(input&BUTT_N_MASK) {}
}

}
Пример #4
0
/*****************************************************************************
**   Main Function  main()
******************************************************************************/
int main (void) {

   /* Setup SysTick Timer for 10 msec interrupts  */
   if (SysTick_Config(SystemCoreClock / 100)) {
		while (1); /* Capture error */
   }

   if (!(SysTick->CTRL & SysTick_CTRL_CLKSOURCE_Msk)) {
        /* When external reference clock is used(CLKSOURCE in
		Systick Control and register bit 2 is set to 0), the
		SYSTICKCLKDIV must be a non-zero value and 2.5 times
		faster than the reference clock.
		When core clock, or system AHB clock, is used(CLKSOURCE
		in Systick Control and register bit 2 is set to 1), the
		SYSTICKCLKDIV has no effect to the SYSTICK frequency. See
		more on Systick clock and status register in Cortex-M3
		technical Reference Manual. */
		LPC_SYSCON->SYSTICKCLKDIV = 0x08;
	}


   GPIOInit();

   init_timers();


   // The LED on Xpresso
   /* Set port 0_7 to output */
   GPIOSetDir( LED_PORT, LED_BIT, 1 );
   GPIOSetValue( 0, 7, LEDvalue );

   // buttons
   buttons_init();

   power_mgr_init();

   // check for 'next' button
   if (GPIOGetValue(0, 6)) {
	   led_digits_init();
	   led_digits_enable();
	   //led_digits_set_blink(1);
	   led_red_set(1);
	   led_green_set(1);
   }
   else {
	   GPIOSetValue( 0, 7, 1 );
	   delay32Ms(0,500);
	   GPIOSetValue( 0, 7, 0 );
	   delay32Ms(0,500);
	   GPIOSetValue( 0, 7, 1 );
	   delay32Ms(0,500);
	   GPIOSetValue( 0, 7, 0 );
	   delay32Ms(0,500);
	   GPIOSetValue( 0, 7, 1 );
	   delay32Ms(0,500);
	   GPIOSetValue( 0, 7, 0 );
	   delay32Ms(0,500);
   }


   // BARCODE reader
   barcode_init();
   barcode_reset();

   // RFID reader
   rdm630_init();
   rdm630_reset();

   // UART
   UARTInit(115200);
   // Enable the UART Interrupt
   NVIC_EnableIRQ(UART_IRQn);
   LPC_UART->IER = IER_RBR | IER_RLS;

   logger_setEnabled(1);
   logger_logStringln("/O:entering main loop..."); // send online message (means i'm online)

   uint8_t counter = 0;
   for(counter = 0; counter < 100; counter++) {
	   led_digits_set_value(counter);
	   delay32Ms(0, 20);
   }

   for(counter = 0; counter < 10; counter++) {
	   led_digits_set_value_by_chars('0' + counter, '0' + counter);
	   delay32Ms(0, 200);
   }
   delay32Ms(0, 200);
   led_digits_enable();

   signal_boot_up();

   int8_t last_remaining_seconds = -1;
   while (1) {

       /* process logger */
       if (logger_dataAvailable() && UARTTxEmpty) {
         uint8_t iCounter;
         // fill transmit FIFO with 14 bytes
         for (iCounter = 0; iCounter < 14 && logger_dataAvailable(); iCounter++) {
            UARTSendByte(logger_read());
         }
       }

       power_mgr_process(msTicks);

       barcode_process(msTicks);

       rdm630_process(msTicks);

       buttons_process(msTicks);

       led_digits_process(msTicks);


       /*
	   if (power_mgr_is_shutting_down()) {
		   if (power_mgr_get_remaining_player_seconds() != last_remaining_seconds) {
			   last_remaining_seconds = power_mgr_get_remaining_player_seconds();
			   led_digits_set_value(last_remaining_seconds);
		   }
		   if (last_remaining_seconds == 0) {
			   led_green_set(0);
			   led_red_set(1);
			   led_digits_disable();
		   }
		   continue;
	   }
	   */


       main_process_barcode();

       main_process_rfid();

       main_process_buttons();

       main_process_uart();

   }
}
Пример #5
0
void main_process_uart() {
    if (UARTCount > 0 && UARTBuffer[UARTCount-1] == 0x0A) {
 	   // command structure:
 	   // [0] = '/' => identifier
 	   // [1] = <command>
 	   // [2] = ':' => separator
 	   // [3] = <param1>
 	   // [4] = <param2>
 	   // etc.
 	   // [n] = 0x0A

 	   if (UARTCount > 3 && UARTBuffer[0] == '/' && UARTBuffer[2] == ':') {
 		   uint8_t command = UARTBuffer[1];

 		   // heart beat message from player
 		   if (command == 'H') {
 			   led_digits_set_blink(0);
 			   led_digits_set_blink_interval(500);
 			   led_green_set_blink(0);
 			   led_red_set_blink(0);
 			   led_red_set(0);
 			   led_green_set(1);
 			   // send heart beat
 			   logger_logString("/H:0");
 			   logger_logCRLF();
 		   }

 		   // set led digits
 		   // e.g. /L:13 -> output 13
 		   if (command == 'L' && UARTCount > 5) {
 			   uint8_t digit1 = UARTBuffer[3];
 			   uint8_t digit0 = UARTBuffer[4];
 			   // update only if new
 			   /*
 			   if (digit0 != last_digit_0 || digit1 != last_digit_1) {
 				   last_digit_0 = digit0;
 				   last_digit_1 = digit1;
 			   }
 			   */
 			   led_digits_set_value_by_chars(digit0, digit1);
 		   }

 		   // set led
 		   // "/l:R0" -> led red off
 		   // "/l:R1" -> led red on
 		   // "/l:R2" -> led red blink off
 		   // "/l:R3" -> led red blink on
 		   // "/l:G0" -> led green off
 		   // "/l:G1" -> led green on
 		   // "/l:G2" -> led green blink off
 		   // "/l:G3" -> led green blink on
 		   if (command == 'l' && UARTCount > 5) {
 			   uint8_t param1 = UARTBuffer[3];
 			   uint8_t param2 = UARTBuffer[4];
 			   if (param1 == 'R') {
 				   switch (param2) {
 				   case '0' : led_red_set(0); break;
 				   case '1' : led_red_set(1); break;
 				   case '2' : led_red_set_blink(0); break;
 				   case '3' : led_red_set_blink(1); break;
 				   }
 			   }
 			   if (param1 == 'G') {
 				   switch (param2) {
 				   case '0' : led_green_set(0); break;
 				   case '1' : led_green_set(1); break;
 				   case '2' : led_green_set_blink(0); break;
 				   case '3' : led_green_set_blink(1); break;
 				   }
 			   }
 		   }


 		   // shutdown message
 		   // message '/S:xx'
 		   // e.g. '/S:30' shutdown in 30 seconds
 		   if (command == 'S' && UARTCount > 5) {
 			   // do somegthing
 			   int8_t param1 = get_char_to_int(UARTBuffer[3]);
 			   int8_t param2 = get_char_to_int(UARTBuffer[4]);
 			   if (param1 > -1 && param2 > -1) {
 				   signal_shutting_down();
 				   int8_t seconds = param1*10 + param2;
 				   power_mgr_shutdown_player(seconds);
 			   }
 		   }


 		   // message blink digits
 		   if (command == 'D' && UARTCount > 4) {
 			   uint8_t param1 = UARTBuffer[3];
			   switch (param1) {
			   case '0' : led_digits_disable(); led_digits_set_blink(0); break;
			   case '1' : led_digits_enable(); led_digits_set_blink(0); break;
			   case '2' : led_digits_set_blink(0); led_digits_enable(); break;
			   case '3' : led_digits_set_blink(1); break;
			   }

 			   /*
 			   // e.g. '/D:15'
 			   if (UARTCount >= 5 && UARTBuffer[4] >= '0' && UARTBuffer[4] <= '9') {
 				   uint16_t interval = 100 * UARTBuffer[4];
 				   led_digits_set_blink_interval(interval);
 			   }
 			   */
 		   }

 		   // message power management control
 		   // "/P:P0" -> player off (use with care!)
 		   // "/P:P1" -> player on (obsolete)
 		   // "/P:A0" -> amp off
 		   // "/P:A1" -> amp on

 		   if (command == 'P' && UARTCount > 5) {
 			   uint8_t param1 = UARTBuffer[3];
 			   uint8_t param2 = UARTBuffer[4];
 			   if (param1 == 'P') {
 				   switch (param2) {
 				   case '0' : power_mgr_set_player(0); break;
 				   case '1' : power_mgr_set_player(1); break;
 				   }
 			   }
 			   if (param1 == 'A') {
 				   switch (param2) {
 				   case '0' : power_mgr_set_amp(0); break;
 				   case '1' : power_mgr_set_amp(1); break;
 				   }
 			   }
 		   }

 	   }
 	   UARTCount = 0;
    }
}