Example #1
0
// diagnose commands
static void cmd_diagnose(void)
{
  u08 cmd, res;
  u08 exit = 0;
  while((cmd = get_char()) != 0) {
     switch(cmd) {
     case 'b': // buttons -> returns 0=no button  1=button2  2=button2  3=both buttons
       res = button1_pressed() | (button2_pressed() << 1);
       set_result(res);
       break;
     case 'l': // led: param: 1=green  2=yellow  3=both
       {
         cmd = parse_hex_byte(3);
         led_green(cmd  & 1);
         led_yellow(cmd & 2);
         set_result(cmd);
         delay_ms(1000);
       }
       break;
     case 'i': // io sd diagnose: show sd detect and sd protect
       {
         res = sdpin_no_card() ? 1 :0;
         res |= sdpin_write_protect() ? 2:0;
         set_result(res);
       }
       break;
     default:
       set_result(ERROR_SYNTAX);
     case '.':
       exit = 1;
       break;
     }
     if(exit) break;
   }
}
Example #2
0
u08 cmd_uart_get_next(u08 **data)
{
  rx_size = 0;
  int button_press = 0;
  while(1) {
      while(!uart_read_ready()) {
#ifdef USE_BUTTON_CONTROL
          // check buttons
          if(button1_pressed()) {
              while(button1_pressed()) {}
              rx_buf[0] = 'R';
              rx_size = 1;
              button_press = 1;
              break;
          }
          if(button2_pressed()) {
              while(button2_pressed()) {}
              rx_buf[0] = 'W';
              rx_size = 1;
              button_press = 1;
              break;
          }
#endif
      }
      if(button_press) {
          break;
      }

      u08 c;
      uart_read(&c);
      uart_send(c);
      if((c == '\n')||(c == '\r')) {
          break;
      }
      rx_buf[rx_size] = c;
      rx_size++;
  }
  *data = rx_buf;
  uart_send_crlf();
  return rx_size;
}
Example #3
0
/*
 * Task of polling buttons.
 */
void poll_buttons (void *data)
{
	unsigned char pagenum = 0;
	unsigned char b1_pressed = 0, b2_pressed = 0;
	unsigned char b3_pressed = 0, b4_pressed = 0;

	printf (&line1, "Testing LCD.");
	printf (&line2, "Use buttons.");

	for (;;) {
		timer_delay (&timer, 10);

		if (! button1_pressed ())
			b1_pressed = 0;
		else if (! b1_pressed) {
			b1_pressed = 1;

			/* Button 1: clear screen. */
			lcd_clear_all (&line1, &line2);
			printf (&line1, "Cleared.");
		}
		if (! button2_pressed ())
			b2_pressed = 0;
		else if (! b2_pressed) {
			b2_pressed = 1;

			/* Button 2: show previous page of symbols. */
			display_page (--pagenum);
		}
		if (! button3_pressed ())
			b3_pressed = 0;
		else if (! b3_pressed) {
			b3_pressed = 1;

			/* Button 3: show next page of symbols. */
			display_page (++pagenum);
		}
		if (! button4_pressed ())
			b4_pressed = 0;
		else if (! b4_pressed) {
			b4_pressed = 1;

			/* Button 4: scroll long message. */
			printf (&line2, message1);
			timer_delay (&timer, 500);
			printf (&line2, message2);
		}
	}
}