altos: Add bit-bang i2c driver
[fw/altos] / src / kernel / ao_cmd.c
index d1c049ac78aaf5b03905dc13542905f74cb01d71..4ae63781fcb0900e39acdfc02ad8f737819d4b03 100644 (file)
@@ -205,8 +205,13 @@ ao_cmd_decimal(void)
 {
        uint32_t result = 0;
        uint8_t r = ao_cmd_lex_error;
+       bool negative = false;
 
        ao_cmd_white();
+       if (ao_cmd_lex_c == '-') {
+               negative = true;
+               ao_cmd_lex();
+       }
        for(;;) {
                if ('0' <= ao_cmd_lex_c && ao_cmd_lex_c <= '9')
                        result = result * 10 + (ao_cmd_lex_c - '0');
@@ -217,6 +222,8 @@ ao_cmd_decimal(void)
        }
        if (r != ao_cmd_success)
                ao_cmd_status = r;
+       if (negative)
+               result = -result;
        return result;
 }
 
@@ -269,7 +276,7 @@ version(void)
        printf("manufacturer     %s\n"
               "product          %s\n"
               "serial-number    %u\n"
-#if HAS_FLIGHT || HAS_TRACKER
+#if HAS_LOG && (HAS_FLIGHT || HAS_TRACKER)
               "current-flight   %u\n"
 #endif
 #if HAS_LOG
@@ -287,7 +294,7 @@ version(void)
               , ao_manufacturer
               , ao_product
               , ao_serial_number
-#if HAS_FLIGHT || HAS_TRACKER
+#if HAS_LOG && (HAS_FLIGHT || HAS_TRACKER)
               , ao_flight_number
 #endif
 #if HAS_LOG