summaryrefslogtreecommitdiff
path: root/src/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/ao.h8
-rw-r--r--src/kernel/ao_cmd.c56
-rw-r--r--src/kernel/ao_config.c111
-rw-r--r--src/kernel/ao_fake_flight.c6
-rw-r--r--src/kernel/ao_log.c3
-rw-r--r--src/kernel/ao_log_single.c14
-rw-r--r--src/kernel/ao_monitor.c3
-rw-r--r--src/kernel/ao_pyro.c17
-rw-r--r--src/kernel/ao_radio_cmac_cmd.c10
-rw-r--r--src/kernel/ao_send_packet.c3
-rw-r--r--src/kernel/ao_storage.c27
-rw-r--r--src/kernel/ao_tracker.c4
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);