altos: Set APRS deviation to 3kHz
[fw/altos] / src / core / ao_cmd.c
index 05dbfb51f04a57d6281de37ee92d19c8928d1d4e..6eed08d91931a401da9d4c325e9f3f34b247eb1a 100644 (file)
@@ -28,8 +28,8 @@ static __xdata char   cmd_line[CMD_LEN];
 static __pdata uint8_t cmd_len;
 static __pdata uint8_t cmd_i;
 
-static void
-put_string(__code char *s)
+void
+ao_put_string(__code char *s)
 {
        char    c;
        while ((c = *s++))
@@ -39,7 +39,7 @@ put_string(__code char *s)
 static void
 backspace(void)
 {
-       put_string ("\010 \010");
+       ao_put_string ("\010 \010");
 }
 
 static void
@@ -47,7 +47,7 @@ readline(void)
 {
        char c;
        if (ao_echo())
-               put_string("> ");
+               ao_put_string("> ");
        cmd_len = 0;
        for (;;) {
                flush();
@@ -110,6 +110,22 @@ putnibble(uint8_t v)
                putchar(v + ('a' - 10));
 }
 
+uint8_t
+ao_getnibble(void)
+{
+       char    c;
+
+       c = getchar();
+       if ('0' <= c && c <= '9')
+               return c - '0';
+       if ('a' <= c && c <= 'f')
+               return c - ('a' - 10);
+       if ('A' <= c && c <= 'F')
+               return c - ('A' - 10);
+       ao_cmd_status = ao_cmd_lex_error;
+       return 0;
+}
+
 void
 ao_cmd_put16(uint16_t v)
 {
@@ -249,12 +265,25 @@ ao_reboot(void)
 static void
 version(void)
 {
-       printf("manufacturer     %s\n", ao_manufacturer);
-       printf("product          %s\n", ao_product);
-       printf("serial-number    %u\n", ao_serial_number);
+       printf("manufacturer     %s\n"
+              "product          %s\n"
+              "serial-number    %u\n"
+#if HAS_FLIGHT
+              "current-flight   %u\n"
+#endif
 #if HAS_LOG
-       printf("log-format       %u\n", ao_log_format);
+              "log-format       %u\n"
 #endif
+              , ao_manufacturer
+              , ao_product
+              , ao_serial_number
+#if HAS_FLIGHT
+              , ao_flight_number
+#endif
+#if HAS_LOG
+              , ao_log_format
+#endif
+               );
 #if HAS_MS5607
        ao_ms5607_info();
 #endif
@@ -274,12 +303,22 @@ help(void)
        __pdata uint8_t cmds;
        __pdata uint8_t cmd;
        __code struct ao_cmds * __pdata cs;
-       const char *h;
+       __code const char *h;
+       uint8_t e;
 
        for (cmds = 0; cmds < ao_ncmds; cmds++) {
                cs = ao_cmds[cmds];
-               for (cmd = 0; (h = cs[cmd].help); cmd++)
-                       printf("%-45s %s\n", h, h + 1 + strlen(h));
+               for (cmd = 0; cs[cmd].func; cmd++) {
+                       h = cs[cmd].help;
+                       ao_put_string(h);
+                       e = strlen(h);
+                       h += e + 1;
+                       e = 45 - e;
+                       while (e--)
+                               putchar(' ');
+                       ao_put_string(h);
+                       putchar('\n');
+               }
        }
 }