void
ao_cmd_put16(uint16_t v)
{
- ao_cmd_put8(v >> 8);
- ao_cmd_put8(v);
+ ao_cmd_put8((uint8_t) (v >> 8));
+ ao_cmd_put8((uint8_t) v);
}
void
ao_cmd_hexchar(char c)
{
if ('0' <= c && c <= '9')
- return (c - '0');
+ return (int8_t) (c - '0');
if ('a' <= c && c <= 'f')
- return (c - 'a' + 10);
+ return (int8_t) (c - 'a' + 10);
if ('A' <= c && c <= 'F')
- return (c - 'A' + 10);
+ return (int8_t) (c - 'A' + 10);
return -1;
}
ao_cmd_status = ao_cmd_lex_error;
break;
}
- result = (result << 4) | n;
+ result = (uint32_t) ((result << 4) | (uint32_t) n);
ao_cmd_lex();
}
return result;
uint8_t
ao_cmd_hexbyte(void)
{
- return get_hex(2);
+ return (uint8_t) get_hex(2);
}
uint32_t
{
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');
}
if (r != ao_cmd_success)
ao_cmd_status = r;
+ if (negative)
+ result = -result;
return result;
}
#endif
#if HAS_VERSION
+#define _stringify(x) #x
+#define stringify(x) _stringify(x)
static void
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
, 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
, (unsigned) ((uint32_t) AO_BOOT_APPLICATION_BOUND - (uint32_t) AO_BOOT_APPLICATION_BASE)
#endif
);
- printf("software-version %s\n", ao_version);
+ printf("software-version %." stringify(AO_MAX_VERSION) "s\n", ao_version);
}
#endif
uint8_t cmd;
const struct ao_cmds * cs;
const char *h;
- uint8_t e;
+ size_t e;
for (cmds = 0; cmds < ao_ncmds; cmds++) {
cs = ao_cmds[cmds];