add code to control the audio buzzer
[protos/xbee-avr.git] / commands.c
index ce85088..b58594a 100644 (file)
@@ -51,6 +51,7 @@
 #include "rc_proto.h"
 #include "main.h"
 #include "cmdline.h"
+#include "beep.h"
 
 /* commands_gen.c */
 extern const parse_inst_t PROGMEM cmd_reset;
@@ -1299,6 +1300,45 @@ const parse_inst_t PROGMEM cmd_baudrate = {
        },
 };
 
+
+/**********************************************************/
+
+/* this structure is filled when cmd_beep is parsed successfully */
+struct cmd_beep_result {
+       fixed_string_t beep;
+};
+
+/* function called when cmd_beep is parsed successfully */
+static void cmd_beep_parsed(void *parsed_result, void *data)
+{
+       (void)parsed_result;
+       (void)data;
+
+       beep(0, 3, 3);
+       beep(1, 3, 3);
+       beep(2, 3, 3);
+       beep(0, 1, 1);
+       beep(1, 1, 1);
+       beep(2, 1, 1);
+}
+
+const char PROGMEM str_beep[] = "beep";
+const parse_token_string_t PROGMEM cmd_beep_beep =
+       TOKEN_STRING_INITIALIZER(struct cmd_beep_result, beep,
+                                str_beep);
+
+const char PROGMEM help_beep[] = "Send a beep";
+
+const parse_inst_t PROGMEM cmd_beep = {
+       .f = cmd_beep_parsed,  /* function to call */
+       .data = NULL,      /* 2nd arg of func */
+       .help_str = help_beep,
+       .tokens = {        /* token list, NULL terminated */
+               (PGM_P)&cmd_beep_beep,
+               NULL,
+       },
+};
+
 /**********************************************************/
 
 /* this structure is filled when cmd_servo is parsed successfully */
@@ -1313,7 +1353,6 @@ struct cmd_servo_result {
 static void cmd_servo_parsed(void * parsed_result, void *data)
 {
        struct cmd_servo_result *res = parsed_result;
-       uint8_t i;
 
        (void)data;
 
@@ -1335,11 +1374,7 @@ static void cmd_servo_parsed(void * parsed_result, void *data)
                spi_servo_set_ppm(!!res->val);
        }
        else if (!strcmp_P(res->arg1, PSTR("show"))) {
-               for (i = 0; i < 6; i++)
-                       printf_P(PSTR("%d: %d\r\n"), i, spi_servo_get(i));
-               printf_P(PSTR("bypass=%d ppm=%d\n"),
-                        spi_servo_get_bypass(), spi_servo_get_ppm());
-               printf_P(PSTR("\r\n"));
+               spi_servo_dump();
        }
 }
 
@@ -1444,10 +1479,9 @@ static void cmd_test_spi_parsed(void * parsed_result, void *data)
                        spi_servo_set(i, val);
 
                wait_ms(wait_time);
-
-               for (i = 0; i < 6; i++)
-                       printf_P(PSTR("%d: %d\r\n"), i, spi_servo_get(i));
-               printf_P(PSTR("\r\n"));
+               printf_P(PSTR("%4.4d %4.4d %4.4d %4.4d %4.4d %4.4d\r\n"),
+                        spi_servo_get(0), spi_servo_get(1), spi_servo_get(2),
+                        spi_servo_get(3), spi_servo_get(4), spi_servo_get(5));
        }
 
        printf_P(PSTR("bypass mode, with spi commands in background\r\n"));
@@ -1470,10 +1504,9 @@ static void cmd_test_spi_parsed(void * parsed_result, void *data)
                        spi_servo_set(i, val);
 
                wait_ms(wait_time);
-
-               for (i = 0; i < 6; i++)
-                       printf_P(PSTR("%d: %d\r\n"), i, spi_servo_get(i));
-               printf_P(PSTR("\r\n"));
+               printf_P(PSTR("%4.4d %4.4d %4.4d %4.4d %4.4d %4.4d\r\n"),
+                        spi_servo_get(0), spi_servo_get(1), spi_servo_get(2),
+                        spi_servo_get(3), spi_servo_get(4), spi_servo_get(5));
        }
 
        printf_P(PSTR("PPM to servo\r\n"));
@@ -1553,6 +1586,7 @@ const parse_ctx_t PROGMEM main_ctx[] = {
        &cmd_dump,
        &cmd_debug,
        &cmd_baudrate,
+       &cmd_beep,
        &cmd_servo_set,
        &cmd_servo_bypassppm,
        &cmd_servo_show,