diff options
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/ao.h | 8 | ||||
-rw-r--r-- | src/kernel/ao_cmd.c | 56 | ||||
-rw-r--r-- | src/kernel/ao_config.c | 111 | ||||
-rw-r--r-- | src/kernel/ao_fake_flight.c | 6 | ||||
-rw-r--r-- | src/kernel/ao_log.c | 3 | ||||
-rw-r--r-- | src/kernel/ao_log_single.c | 14 | ||||
-rw-r--r-- | src/kernel/ao_monitor.c | 3 | ||||
-rw-r--r-- | src/kernel/ao_pyro.c | 17 | ||||
-rw-r--r-- | src/kernel/ao_radio_cmac_cmd.c | 10 | ||||
-rw-r--r-- | src/kernel/ao_send_packet.c | 3 | ||||
-rw-r--r-- | src/kernel/ao_storage.c | 27 | ||||
-rw-r--r-- | src/kernel/ao_tracker.c | 4 |
12 files changed, 118 insertions, 144 deletions
diff --git a/src/kernel/ao.h b/src/kernel/ao.h index fd1d1276..3beeb880 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -160,8 +160,6 @@ enum ao_cmd_status { ao_cmd_syntax_error = 2, }; -extern uint16_t ao_cmd_lex_i; -extern uint32_t ao_cmd_lex_u32; extern char ao_cmd_lex_c; extern enum ao_cmd_status ao_cmd_status; @@ -189,13 +187,13 @@ ao_cmd_white(void); int8_t ao_cmd_hexchar(char c); -void +uint8_t ao_cmd_hexbyte(void); -void +uint32_t ao_cmd_hex(void); -void +uint32_t ao_cmd_decimal(void); /* Read a single hex nibble off stdin. */ diff --git a/src/kernel/ao_cmd.c b/src/kernel/ao_cmd.c index d28db5b7..a72192f4 100644 --- a/src/kernel/ao_cmd.c +++ b/src/kernel/ao_cmd.c @@ -19,8 +19,6 @@ #include "ao.h" #include "ao_task.h" -uint16_t ao_cmd_lex_i; -uint32_t ao_cmd_lex_u32; char ao_cmd_lex_c; enum ao_cmd_status ao_cmd_status; @@ -174,55 +172,49 @@ ao_cmd_hexchar(char c) return -1; } -void -ao_cmd_hexbyte(void) +static +uint32_t +_ao_cmd_hex(uint8_t lim) { + uint32_t result = 0; uint8_t i; - int8_t n; - ao_cmd_lex_i = 0; ao_cmd_white(); - for (i = 0; i < 2; i++) { - n = ao_cmd_hexchar(ao_cmd_lex_c); + for (i = 0; i < lim; i++) { + int8_t n = ao_cmd_hexchar(ao_cmd_lex_c); if (n < 0) { - ao_cmd_status = ao_cmd_syntax_error; + if (i == 0 || lim != 0xff) + ao_cmd_status = ao_cmd_lex_error; break; } - ao_cmd_lex_i = (ao_cmd_lex_i << 4) | n; + result = (result << 4) | n; ao_cmd_lex(); } + return result; } -void -ao_cmd_hex(void) +uint8_t +ao_cmd_hexbyte(void) { - uint8_t r = ao_cmd_lex_error; - int8_t n; + return _ao_cmd_hex(2); +} - ao_cmd_lex_i = 0; - ao_cmd_white(); - for(;;) { - n = ao_cmd_hexchar(ao_cmd_lex_c); - if (n < 0) - break; - ao_cmd_lex_i = (ao_cmd_lex_i << 4) | n; - r = ao_cmd_success; - ao_cmd_lex(); - } - if (r != ao_cmd_success) - ao_cmd_status = r; +uint32_t +ao_cmd_hex(void) +{ + return _ao_cmd_hex(0xff); } -void +uint32_t ao_cmd_decimal(void) { + uint32_t result = 0; uint8_t r = ao_cmd_lex_error; - ao_cmd_lex_u32 = 0; ao_cmd_white(); for(;;) { if ('0' <= ao_cmd_lex_c && ao_cmd_lex_c <= '9') - ao_cmd_lex_u32 = (ao_cmd_lex_u32 * 10) + (ao_cmd_lex_c - '0'); + result = result * 10 + (ao_cmd_lex_c - '0'); else break; r = ao_cmd_success; @@ -230,7 +222,7 @@ ao_cmd_decimal(void) } if (r != ao_cmd_success) ao_cmd_status = r; - ao_cmd_lex_i = (uint16_t) ao_cmd_lex_u32; + return result; } uint8_t @@ -250,9 +242,9 @@ ao_match_word(const char *word) static void echo(void) { - ao_cmd_hex(); + uint32_t v = ao_cmd_hex(); if (ao_cmd_status == ao_cmd_success) - ao_stdios[ao_cur_stdio].echo = ao_cmd_lex_i != 0; + ao_stdios[ao_cur_stdio].echo = v != 0; } static void diff --git a/src/kernel/ao_config.c b/src/kernel/ao_config.c index 277dddd9..596a0410 100644 --- a/src/kernel/ao_config.c +++ b/src/kernel/ao_config.c @@ -318,11 +318,11 @@ ao_config_frequency_show(void) void ao_config_frequency_set(void) { - ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.frequency = ao_cmd_lex_u32; + ao_config.frequency = r; ao_config_set_radio(); _ao_config_edit_finish(); #if HAS_RADIO_RECV @@ -369,11 +369,11 @@ ao_config_main_deploy_show(void) void ao_config_main_deploy_set(void) { - ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.main_deploy = ao_cmd_lex_i; + ao_config.main_deploy = r; _ao_config_edit_finish(); } @@ -445,16 +445,17 @@ void ao_config_accel_calibrate_set(void) { int16_t up, down; + uint16_t r; #if HAS_GYRO int16_t accel_along_up = 0, accel_along_down = 0; int16_t accel_across_up = 0, accel_across_down = 0; int16_t accel_through_up = 0, accel_through_down = 0; #endif - ao_cmd_decimal(); + r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - if (ao_cmd_lex_i == 0) { + if (r == 0) { up = ao_config_accel_calibrate_auto("up"); #if HAS_GYRO accel_along_up = accel_cal_along; @@ -468,11 +469,11 @@ ao_config_accel_calibrate_set(void) accel_through_down = accel_cal_through; #endif } else { - up = ao_cmd_lex_i; - ao_cmd_decimal(); + up = r; + r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - down = ao_cmd_lex_i; + down = r; } if (up >= down) { printf("Invalid accel: up (%d) down (%d)\n", @@ -483,7 +484,7 @@ ao_config_accel_calibrate_set(void) ao_config.accel_plus_g = up; ao_config.accel_minus_g = down; #if HAS_GYRO - if (ao_cmd_lex_i == 0) { + if (r == 0) { ao_config.accel_zero_along = (accel_along_up + accel_along_down) / 2; ao_config.accel_zero_across = (accel_across_up + accel_across_down) / 2; ao_config.accel_zero_through = (accel_through_up + accel_through_down) / 2; @@ -503,11 +504,11 @@ ao_config_apogee_delay_show(void) void ao_config_apogee_delay_set(void) { - ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.apogee_delay = ao_cmd_lex_i; + ao_config.apogee_delay = r; _ao_config_edit_finish(); } @@ -521,11 +522,11 @@ ao_config_apogee_lockout_show(void) void ao_config_apogee_lockout_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.apogee_lockout = ao_cmd_lex_i; + ao_config.apogee_lockout = r; _ao_config_edit_finish(); } @@ -541,11 +542,11 @@ ao_config_radio_cal_show(void) void ao_config_radio_cal_set(void) { - ao_cmd_decimal(); + uint32_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.radio_cal = ao_cmd_lex_u32; + ao_config.radio_cal = r; ao_config_set_radio(); _ao_config_edit_finish(); } @@ -566,15 +567,15 @@ ao_config_radio_rate_show(void) void ao_config_radio_rate_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - if (AO_RADIO_RATE_MAX < ao_cmd_lex_i) { + if (AO_RADIO_RATE_MAX < r) { ao_cmd_status = ao_cmd_lex_error; return; } _ao_config_edit_start(); - ao_config.radio_rate = ao_cmd_lex_i; + ao_config.radio_rate = r; _ao_config_edit_finish(); #if HAS_TELEMETRY ao_telemetry_reset_interval(); @@ -618,19 +619,20 @@ ao_config_log_set(void) #else uint16_t block = (uint16_t) (ao_storage_block >> 10); uint16_t log_max = (uint16_t) (ao_storage_log_max >> 10); + uint32_t r; - ao_cmd_decimal(); + r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; if (ao_log_present()) printf("Storage must be empty before changing log size\n"); - else if (block > 1024 && (ao_cmd_lex_i & (block - 1))) + else if (block > 1024 && (r & (block - 1))) printf("Flight log size must be multiple of %d kB\n", block); - else if (ao_cmd_lex_i > log_max) + else if (r > log_max) printf("Flight log max %d kB\n", log_max); else { _ao_config_edit_start(); - ao_config.flight_log_max = (uint32_t) ao_cmd_lex_i << 10; + ao_config.flight_log_max = r << 10; _ao_config_edit_finish(); } #endif @@ -647,11 +649,11 @@ ao_config_ignite_mode_show(void) void ao_config_ignite_mode_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.ignite_mode = ao_cmd_lex_i; + ao_config.ignite_mode = r; _ao_config_edit_finish(); } #endif @@ -670,18 +672,17 @@ ao_config_pad_orientation_show(void) void ao_config_pad_orientation_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal() & 1; if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_cmd_lex_i &= 1; - if (ao_config.pad_orientation != ao_cmd_lex_i) { + if (ao_config.pad_orientation != r) { int16_t t; t = ao_config.accel_plus_g; ao_config.accel_plus_g = AO_ACCEL_INVERT - ao_config.accel_minus_g; ao_config.accel_minus_g = AO_ACCEL_INVERT - t; } - ao_config.pad_orientation = ao_cmd_lex_i; + ao_config.pad_orientation = r; _ao_config_edit_finish(); } #endif @@ -696,11 +697,11 @@ ao_config_radio_enable_show(void) void ao_config_radio_enable_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.radio_enable = ao_cmd_lex_i; + ao_config.radio_enable = r; _ao_config_edit_finish(); #if HAS_TELEMETRY && HAS_RADIO_RATE ao_telemetry_reset_interval(); @@ -729,10 +730,10 @@ ao_config_key_set(void) _ao_config_edit_start(); for (i = 0; i < AO_AES_LEN; i++) { - ao_cmd_hexbyte(); + uint8_t b = ao_cmd_hexbyte(); if (ao_cmd_status != ao_cmd_success) break; - ao_config.aes_key[i] = ao_cmd_lex_i; + ao_config.aes_key[i] = b; } ++ao_config_aes_seq; _ao_config_edit_finish(); @@ -750,11 +751,11 @@ ao_config_aprs_show(void) void ao_config_aprs_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.aprs_interval = ao_cmd_lex_i; + ao_config.aprs_interval = r; _ao_config_edit_finish(); ao_telemetry_reset_interval(); } @@ -772,11 +773,11 @@ ao_config_radio_amp_show(void) void ao_config_radio_amp_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.radio_amp = ao_cmd_lex_i; + ao_config.radio_amp = r; _ao_config_edit_finish(); } @@ -793,11 +794,11 @@ ao_config_radio_power_show(void) void ao_config_radio_power_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.radio_power = ao_cmd_lex_i; + ao_config.radio_power = r; _ao_config_edit_finish(); } @@ -813,11 +814,11 @@ ao_config_beep_show(void) void ao_config_beep_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.mid_beep = ao_cmd_lex_i; + ao_config.mid_beep = r; _ao_config_edit_finish(); } #endif @@ -835,14 +836,12 @@ void ao_config_tracker_set(void) { uint16_t m, i; - ao_cmd_decimal(); + m = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - m = ao_cmd_lex_i; - ao_cmd_decimal(); + i = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - i = ao_cmd_lex_i; _ao_config_edit_start(); ao_config.tracker_motion = m; ao_config.tracker_interval = i; @@ -863,11 +862,11 @@ ao_config_pyro_time_show(void) void ao_config_pyro_time_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.pyro_time = ao_cmd_lex_i; + ao_config.pyro_time = r; _ao_config_edit_finish(); } #endif @@ -883,26 +882,26 @@ ao_config_aprs_ssid_show(void) void ao_config_aprs_ssid_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - if (15 < ao_cmd_lex_i) { + if (15 < r) { ao_cmd_status = ao_cmd_lex_error; return; } _ao_config_edit_start(); - ao_config.aprs_ssid = ao_cmd_lex_i; + ao_config.aprs_ssid = r; _ao_config_edit_finish(); } void ao_config_aprs_format_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.aprs_format = ao_cmd_lex_i != 0; + ao_config.aprs_format = r != 0; _ao_config_edit_finish(); } @@ -923,11 +922,11 @@ ao_config_pad_box_show(void) void ao_config_pad_box_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.pad_box = ao_cmd_lex_i; + ao_config.pad_box = r; _ao_config_edit_finish(); } @@ -940,11 +939,11 @@ ao_config_pad_idle_show(void) void ao_config_pad_idle_set(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; _ao_config_edit_start(); - ao_config.pad_idle = ao_cmd_lex_i; + ao_config.pad_idle = r; _ao_config_edit_finish(); } #endif diff --git a/src/kernel/ao_fake_flight.c b/src/kernel/ao_fake_flight.c index 5880cf2b..8da0141c 100644 --- a/src/kernel/ao_fake_flight.c +++ b/src/kernel/ao_fake_flight.c @@ -133,14 +133,12 @@ ao_fake_flight(void) enum ao_flight_state my_state = ao_flight_invalid; int i; - ao_cmd_hex(); + calib_size = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - calib_size = ao_cmd_lex_i; - ao_cmd_hex(); + data_size = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - data_size = ao_cmd_lex_i; if ((unsigned) calib_size != sizeof (struct ao_fake_calib)) { printf ("calib size %d larger than actual size %d\n", calib_size, sizeof (struct ao_fake_calib)); diff --git a/src/kernel/ao_log.c b/src/kernel/ao_log.c index 1119cce4..fac211cf 100644 --- a/src/kernel/ao_log.c +++ b/src/kernel/ao_log.c @@ -437,10 +437,9 @@ ao_log_delete(void) cmd_flight = -1; ao_cmd_lex(); } - ao_cmd_decimal(); + cmd_flight *= ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - cmd_flight *= (int16_t) ao_cmd_lex_i; slots = ao_log_slots(); /* Look for the flight log matching the requested flight */ diff --git a/src/kernel/ao_log_single.c b/src/kernel/ao_log_single.c index da627387..a2b63c8d 100644 --- a/src/kernel/ao_log_single.c +++ b/src/kernel/ao_log_single.c @@ -118,10 +118,11 @@ ao_log_single_restart(void) void ao_log_single_set(void) { + uint16_t r; printf("Logging currently %s\n", ao_log_running ? "on" : "off"); - ao_cmd_hex(); + r = ao_cmd_hex(); if (ao_cmd_status == ao_cmd_success) { - if (ao_cmd_lex_i) { + if (r) { printf("Logging from %ld to %ld\n", ao_log_current_pos, ao_log_end_pos); ao_log_single_start(); } else { @@ -136,13 +137,12 @@ void ao_log_single_delete(void) { uint32_t pos; - - ao_cmd_hex(); + uint16_t r = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - if (ao_cmd_lex_i != 1) { + if (r != 1) { ao_cmd_status = ao_cmd_syntax_error; - printf("No such flight: %d\n", ao_cmd_lex_i); + printf("No such flight: %d\n", r); return; } ao_log_single_stop(); @@ -153,7 +153,7 @@ ao_log_single_delete(void) } ao_log_current_pos = ao_log_start_pos = 0; if (pos == 0) - printf("No such flight: %d\n", ao_cmd_lex_i); + printf("No such flight: %d\n", r); else printf ("Erased\n"); } diff --git a/src/kernel/ao_monitor.c b/src/kernel/ao_monitor.c index b6b8d888..3f1ff217 100644 --- a/src/kernel/ao_monitor.c +++ b/src/kernel/ao_monitor.c @@ -296,8 +296,7 @@ ao_monitor_enable(void) static void set_monitor(void) { - ao_cmd_hex(); - ao_external_monitoring = ao_cmd_lex_i; + ao_external_monitoring = ao_cmd_hex(); ao_wakeup(&ao_external_monitoring); ao_wakeup(&ao_monitor_head); _ao_monitor_adjust(); diff --git a/src/kernel/ao_pyro.c b/src/kernel/ao_pyro.c index e24ab46b..173cf8a3 100644 --- a/src/kernel/ao_pyro.c +++ b/src/kernel/ao_pyro.c @@ -484,10 +484,9 @@ ao_pyro_set(void) } #endif - ao_cmd_decimal(); + p = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - p = ao_cmd_lex_i; if (AO_PYRO_NUM <= p) { printf ("invalid pyro channel %d\n", p); return; @@ -516,25 +515,23 @@ ao_pyro_set(void) } pyro_tmp.flags |= ao_pyro_values[v].flag; if (ao_pyro_values[v].offset != NO_VALUE) { - uint8_t negative = 0; + int16_t r = 1; ao_cmd_white(); if (ao_cmd_lex_c == '-') { - negative = 1; + r = -1; ao_cmd_lex(); } - ao_cmd_decimal(); + r *= ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; if (ao_pyro_values[v].flag & AO_PYRO_8_BIT_VALUE) { - if (negative) { + if (r < 0) { ao_cmd_status = ao_cmd_syntax_error; return; } - *((uint8_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i; + *((uint8_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = r; } else { - if (negative) - ao_cmd_lex_i = -ao_cmd_lex_i; - *((int16_t *) (void *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i; + *((int16_t *) (void *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = r; } } } diff --git a/src/kernel/ao_radio_cmac_cmd.c b/src/kernel/ao_radio_cmac_cmd.c index e5b4ffdf..1433e96d 100644 --- a/src/kernel/ao_radio_cmac_cmd.c +++ b/src/kernel/ao_radio_cmac_cmd.c @@ -50,16 +50,14 @@ radio_cmac_send_cmd(void) uint8_t i; uint8_t len; - ao_cmd_decimal(); + len = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - len = ao_cmd_lex_i; if (len > AO_CMAC_MAX_LEN) { ao_cmd_status = ao_cmd_syntax_error; return; } flush(); - len = ao_cmd_lex_i; for (i = 0; i < len; i++) { cmac_data[i] = getbyte(); if (ao_cmd_status != ao_cmd_success) @@ -74,14 +72,12 @@ radio_cmac_recv_cmd(void) uint8_t len, i; uint16_t timeout; - ao_cmd_decimal(); + len = ao_cmd_decimal(); if (ao_cmd_status != ao_cmd_success) return; - len = ao_cmd_lex_i; - ao_cmd_decimal(); + timeout = AO_MS_TO_TICKS(ao_cmd_decimal()); if (ao_cmd_status != ao_cmd_success) return; - timeout = AO_MS_TO_TICKS(ao_cmd_lex_i); i = ao_radio_cmac_recv(cmac_data, len, timeout); if (i == AO_RADIO_CMAC_OK) { printf ("PACKET "); diff --git a/src/kernel/ao_send_packet.c b/src/kernel/ao_send_packet.c index 3206b2d6..cae25151 100644 --- a/src/kernel/ao_send_packet.c +++ b/src/kernel/ao_send_packet.c @@ -29,8 +29,7 @@ ao_send_packet(void) uint8_t b; uint8_t i; - ao_cmd_hex(); - count = ao_cmd_lex_i; + count = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; if (count > AO_MAX_SEND - 2) { diff --git a/src/kernel/ao_storage.c b/src/kernel/ao_storage.c index 5292e120..890bdcae 100644 --- a/src/kernel/ao_storage.c +++ b/src/kernel/ao_storage.c @@ -92,15 +92,16 @@ static uint8_t storage_data[128]; static void ao_storage_dump(void) { + uint32_t block; uint8_t i, j; - ao_cmd_hex(); + block = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; for (i = 0; ; i += 8) { - if (ao_storage_read(((uint32_t) (ao_cmd_lex_i) << 8) + i, - storage_data, - 8)) { + if (ao_storage_read((block << 8) + i, + storage_data, + 8)) { ao_cmd_put16((uint16_t) i); for (j = 0; j < 8; j++) { putchar(' '); @@ -123,23 +124,19 @@ ao_storage_store(void) uint16_t block; uint8_t i; uint16_t len; - static uint8_t b; + uint8_t b; uint32_t addr; - ao_cmd_hex(); - block = ao_cmd_lex_i; - ao_cmd_hex(); - i = ao_cmd_lex_i; + block = ao_cmd_hex(); + i = ao_cmd_hex(); addr = ((uint32_t) block << 8) | i; - ao_cmd_hex(); - len = ao_cmd_lex_i; + len = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; while (len--) { - ao_cmd_hex(); + b = ao_cmd_hexbyte(); if (ao_cmd_status != ao_cmd_success) return; - b = ao_cmd_lex_i; ao_storage_write(addr, &b, 1); addr++; } @@ -149,10 +146,10 @@ ao_storage_store(void) void ao_storage_zap(void) { - ao_cmd_hex(); + uint32_t v = ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; - ao_storage_erase((uint32_t) ao_cmd_lex_i << 8); + ao_storage_erase((uint32_t) v << 8); } void diff --git a/src/kernel/ao_tracker.c b/src/kernel/ao_tracker.c index 46278530..f79bd18a 100644 --- a/src/kernel/ao_tracker.c +++ b/src/kernel/ao_tracker.c @@ -211,9 +211,9 @@ static struct ao_task ao_tracker_task; static void ao_tracker_set_telem(void) { - ao_cmd_hex(); + uint16_t r = ao_cmd_hex(); if (ao_cmd_status == ao_cmd_success) - ao_tracker_force_telem = ao_cmd_lex_i; + ao_tracker_force_telem = r; ao_cmd_status = ao_cmd_success; printf ("flight: %d\n", ao_flight_number); printf ("force_telem: %d\n", ao_tracker_force_telem); |