X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fdrivers%2Fao_pad.c;h=07c49afc6b890a4094a842360223eddc52eef715;hp=85691f5c933474efa5fd73958b242a875d685f70;hb=54e98a498db0d7026ce16c3ad53bc60986c68253;hpb=0686a7b8aec524d81bda4c572549a3a068ce0eed diff --git a/src/drivers/ao_pad.c b/src/drivers/ao_pad.c index 85691f5c..07c49afc 100644 --- a/src/drivers/ao_pad.c +++ b/src/drivers/ao_pad.c @@ -26,10 +26,10 @@ static uint8_t ao_pad_ignite; static struct ao_pad_command command; static struct ao_pad_query query; static uint8_t ao_pad_armed; -static uint16_t ao_pad_arm_time; +static AO_TICK_TYPE ao_pad_arm_time; static uint8_t ao_pad_box; static uint8_t ao_pad_disabled; -static uint16_t ao_pad_packet_time; +static AO_TICK_TYPE ao_pad_packet_time; #ifndef AO_PAD_RSSI_MINIMUM #define AO_PAD_RSSI_MINIMUM -90 @@ -176,7 +176,7 @@ ao_pad_run(void) * AO_PAD_R_IGNITER_SENSE_GND Resistors from igniter sense ADC inputs to ground */ -int16_t +static int16_t ao_pad_decivolt(int16_t adc, int16_t r_plus, int16_t r_minus) { int32_t mul = (int32_t) AO_ADC_REFERENCE_DV * (r_plus + r_minus); @@ -288,7 +288,7 @@ ao_pad_monitor(void) prev = cur; } - if (ao_pad_armed && (int16_t) (ao_time() - ao_pad_arm_time) > AO_PAD_ARM_TIME) + if (ao_pad_armed && (AO_TICK_SIGNED) (ao_time() - ao_pad_arm_time) > AO_PAD_ARM_TIME) ao_pad_armed = 0; if (ao_pad_armed) { @@ -369,7 +369,7 @@ static int ao_pad_read_box(void) { static void ao_pad(void) { - int16_t time_difference; + int16_t tick_difference; int8_t ret; ao_pad_box = 0; @@ -378,7 +378,7 @@ ao_pad(void) while (ao_pad_disabled) ao_sleep(&ao_pad_disabled); ret = ao_radio_cmac_recv(&command, sizeof (command), 0); - PRINTD ("cmac_recv %d %d\n", ret, ao_radio_cmac_rssi); + PRINTD ("receive packet status %d rssi %d\n", ret, ao_radio_cmac_rssi); if (ret != AO_RADIO_CMAC_OK) continue; ao_pad_packet_time = ao_time(); @@ -398,12 +398,16 @@ ao_pad(void) if (command.channels & ~(AO_PAD_ALL_CHANNELS)) break; - time_difference = command.tick - ao_time(); - PRINTD ("arm tick %d local tick %d\n", command.tick, ao_time()); - if (time_difference < 0) - time_difference = -time_difference; - if (time_difference > 10) { - PRINTD ("time difference too large %d\n", time_difference); + tick_difference = command.tick - (uint16_t) ao_time(); + PRINTD ("arm tick %d local tick %d\n", command.tick, (uint16_t) ao_time()); + if (tick_difference < 0) + tick_difference = -tick_difference; + if (tick_difference > 10) { + PRINTD ("tick difference too large %d\n", tick_difference); + break; + } + if (query.arm_status != AO_PAD_ARM_STATUS_ARMED) { + PRINTD ("box not armed locally\n"); break; } PRINTD ("armed\n"); @@ -435,7 +439,7 @@ ao_pad(void) PRINTD ("not armed\n"); break; } - if ((uint16_t) (ao_time() - ao_pad_arm_time) > AO_SEC_TO_TICKS(20)) { + if ((AO_TICK_SIGNED) (ao_time() - ao_pad_arm_time) > AO_SEC_TO_TICKS(20)) { PRINTD ("late pad arm_time %d time %d\n", ao_pad_arm_time, ao_time()); break; @@ -453,7 +457,7 @@ ao_pad(void) #if HAS_LOG if (!ao_log_running) ao_log_start(); #endif - if ((uint16_t) (ao_time() - ao_pad_arm_time) > AO_SEC_TO_TICKS(20)) { + if ((AO_TICK_SIGNED) (ao_time() - ao_pad_arm_time) > AO_SEC_TO_TICKS(20)) { PRINTD ("late pad arm_time %d time %d\n", ao_pad_arm_time, ao_time()); break; @@ -472,7 +476,7 @@ ao_pad(void) } } -void +static void ao_pad_test(void) { uint8_t c; @@ -501,7 +505,7 @@ ao_pad_test(void) } } -void +static void ao_pad_manual(void) { uint8_t ignite; @@ -529,7 +533,7 @@ static struct ao_task ao_pad_ignite_task; static struct ao_task ao_pad_monitor_task; #if DEBUG -void +static void ao_pad_set_debug(void) { uint16_t r = ao_cmd_decimal();