X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Ftelelco-v2.0%2Fao_lco_v2.c;h=1238d72f01dae3316ab352d00d47ad558fe12fce;hp=9fefde3bead63f3ed84f427d331d75990a63306b;hb=54e98a498db0d7026ce16c3ad53bc60986c68253;hpb=c48d4b60da8b23bf358e6c14d7332d3a360c2d2f diff --git a/src/telelco-v2.0/ao_lco_v2.c b/src/telelco-v2.0/ao_lco_v2.c index 9fefde3b..1238d72f 100644 --- a/src/telelco-v2.0/ao_lco_v2.c +++ b/src/telelco-v2.0/ao_lco_v2.c @@ -39,7 +39,7 @@ static uint8_t ao_lco_select_mode; static uint8_t ao_lco_display_mutex; void -ao_lco_set_pad(uint8_t pad) +ao_lco_show_pad(uint8_t pad) { ao_mutex_get(&ao_lco_display_mutex); ao_seven_segment_set(AO_LCO_PAD_DIGIT, pad | (ao_lco_drag_race << 4)); @@ -64,7 +64,7 @@ ao_lco_set_pad(uint8_t pad) (0 << 6)) void -ao_lco_set_box(uint16_t box) +ao_lco_show_box(uint16_t box) { ao_mutex_get(&ao_lco_display_mutex); ao_seven_segment_set(AO_LCO_BOX_DIGIT_1, box % 10 | (ao_lco_drag_race << 4)); @@ -72,8 +72,8 @@ ao_lco_set_box(uint16_t box) ao_mutex_put(&ao_lco_display_mutex); } -void -ao_lco_set_voltage(uint16_t decivolts) +static void +ao_lco_show_voltage(uint16_t decivolts) { uint8_t tens, ones, tenths; @@ -89,13 +89,13 @@ ao_lco_set_voltage(uint16_t decivolts) } void -ao_lco_set_display(void) +ao_lco_show(void) { - if (ao_lco_pad == 0) { - ao_lco_set_voltage(ao_pad_query.battery); + if (ao_lco_pad == AO_LCO_PAD_VOLTAGE) { + ao_lco_show_voltage(ao_pad_query.battery); } else { - ao_lco_set_pad(ao_lco_pad); - ao_lco_set_box(ao_lco_box); + ao_lco_show_pad(ao_lco_pad); + ao_lco_show_box(ao_lco_box); } } @@ -143,12 +143,7 @@ ao_lco_step_box(int8_t dir) if (new_box == ao_lco_box) break; } while (!ao_lco_box_present(new_box)); - if (ao_lco_box != new_box) { - ao_lco_box = new_box; - ao_lco_pad = 1; - ao_lco_channels[ao_lco_box] = 0; - ao_lco_set_display(); - } + ao_lco_set_box(new_box); } static struct ao_task ao_lco_drag_task; @@ -156,13 +151,13 @@ static struct ao_task ao_lco_drag_task; static void ao_lco_drag_monitor(void) { - uint16_t delay = ~0; - uint16_t now; + AO_TICK_TYPE delay = ~0; + AO_TICK_TYPE now; ao_beep_for(AO_BEEP_MID, AO_MS_TO_TICKS(200)); for (;;) { PRINTD("Drag monitor count %d delay %d\n", ao_lco_drag_beep_count, delay); - if (delay == (uint16_t) ~0) + if (delay == (AO_TICK_TYPE) ~0) ao_sleep(&ao_lco_drag_beep_count); else ao_sleep_for(&ao_lco_drag_beep_count, delay); @@ -213,14 +208,8 @@ ao_lco_input(void) ao_lco_set_firing(event.value); break; case AO_BUTTON_DRAG_SELECT: - if (event.value && ao_lco_drag_race) { - if (ao_lco_pad != 0) { - ao_lco_selected[ao_lco_box] ^= (1 << (ao_lco_pad - 1)); - PRINTD("Toggle box %d pad %d (pads now %x) to drag race\n", - ao_lco_pad, ao_lco_box, ao_lco_selected[ao_lco_box]); - ao_lco_drag_add_beeps(ao_lco_pad); - } - } + if (event.value) + ao_lco_toggle_drag(); break; case AO_BUTTON_DRAG_MODE: if (event.value) @@ -247,16 +236,16 @@ ao_lco_input(void) * visually inspect the system for correct operation */ static void -ao_lco_display_test() +ao_lco_display_test(void) { ao_mutex_get(&ao_lco_display_mutex); ao_seven_segment_set(AO_LCO_PAD_DIGIT, 8 | 0x10); ao_seven_segment_set(AO_LCO_BOX_DIGIT_1, 8 | 0x10); ao_seven_segment_set(AO_LCO_BOX_DIGIT_10, 8 | 0x10); ao_mutex_put(&ao_lco_display_mutex); - ao_led_on(LEDS_AVAILABLE); + ao_led_on(AO_LEDS_AVAILABLE); ao_delay(AO_MS_TO_TICKS(1000)); - ao_led_off(LEDS_AVAILABLE); + ao_led_off(AO_LEDS_AVAILABLE); } static void @@ -267,7 +256,7 @@ ao_lco_batt_voltage(void) ao_adc_single_get(&packet); decivolt = ao_battery_decivolt(packet.v_batt); - ao_lco_set_voltage(decivolt); + ao_lco_show_voltage(decivolt); ao_delay(AO_MS_TO_TICKS(1000)); } @@ -290,15 +279,15 @@ ao_lco_main(void) } #if DEBUG -void +static void ao_lco_set_debug(void) { - ao_cmd_decimal(); + uint16_t r = ao_cmd_decimal(); if (ao_cmd_status == ao_cmd_success) - ao_lco_debug = ao_cmd_lex_i != 0; + ao_lco_debug = r != 0; } -__code struct ao_cmds ao_lco_cmds[] = { +const struct ao_cmds ao_lco_cmds[] = { { ao_lco_set_debug, "D <0 off, 1 on>\0Debug" }, { ao_lco_search, "s\0Search for pad boxes" }, { 0, NULL }