X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Ftelelco-v2.0%2Fao_lco_v2.c;h=371b978afd62c1443d7cd02e0536d20da9380dff;hb=eb31a40b3499287e0a52324a9adc3728883ed957;hp=16903d7855ce49df58476098a7b47ce0bbb04a87;hpb=eb70e334ffc77e737bb21ab3fe777a982d80ee3b;p=fw%2Faltos diff --git a/src/telelco-v2.0/ao_lco_v2.c b/src/telelco-v2.0/ao_lco_v2.c index 16903d78..371b978a 100644 --- a/src/telelco-v2.0/ao_lco_v2.c +++ b/src/telelco-v2.0/ao_lco_v2.c @@ -102,6 +102,7 @@ ao_lco_set_voltage(uint16_t decivolts) { uint8_t tens, ones, tenths; + PRINTD("voltage %d\n", decivolts); tenths = decivolts % 10; ones = (decivolts / 10) % 10; tens = (decivolts / 100) % 10; @@ -252,6 +253,7 @@ ao_lco_drag_enable(void) PRINTD("Drag enable\n"); ao_lco_drag_race = 1; memset(ao_lco_selected, 0, sizeof (ao_lco_selected)); + ao_led_on(AO_LED_DRAG); ao_lco_drag_beep(5); ao_lco_set_display(); } @@ -261,6 +263,7 @@ ao_lco_drag_disable(void) { PRINTD("Drag disable\n"); ao_lco_drag_race = 0; + ao_led_off(AO_LED_DRAG); memset(ao_lco_selected, 0, sizeof (ao_lco_selected)); ao_lco_drag_beep(2); ao_lco_set_display(); @@ -406,7 +409,7 @@ ao_lco_input(void) } break; case AO_BUTTON_DRAG_SELECT: - if (ao_lco_drag_race) { + 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", @@ -415,16 +418,18 @@ ao_lco_input(void) } } break; - case AO_BUTTON_MODE_SELECT: + case AO_BUTTON_DRAG_MODE: if (event.value) ao_lco_drag_enable(); else ao_lco_drag_disable(); break; - case AO_BUTTON_SELECT: - if (!ao_lco_armed) { - ao_lco_select_mode = 1 - ao_lco_select_mode; - ao_lco_set_select(); + case AO_BUTTON_ENCODER_SELECT: + if (event.value) { + if (!ao_lco_armed) { + ao_lco_select_mode = 1 - ao_lco_select_mode; + ao_lco_set_select(); + } } break; } @@ -577,23 +582,32 @@ ao_lco_igniter_status(void) for (c = 0; c < AO_LED_CONTINUITY_NUM; c++) { uint8_t status; - if (ao_lco_drag_race) { - if (ao_lco_selected[ao_lco_box] & (1 << c) && t) + if (ao_pad_query.channels & (1 << c)) + status = ao_pad_query.igniter_status[c]; + else + status = AO_PAD_IGNITER_STATUS_NO_IGNITER_RELAY_OPEN; + + if (ao_lco_drag_race && (ao_lco_selected[ao_lco_box] & (1 << c))) { + uint8_t on = 0; + if (status == AO_PAD_IGNITER_STATUS_GOOD_IGNITER_RELAY_OPEN) { + if (t) + on = 1; + } else { + if (!t) + on = 1; + } + if (on) ao_led_on(continuity_led[c]); else ao_led_off(continuity_led[c]); } else { - if (ao_pad_query.channels & (1 << c)) - status = ao_pad_query.igniter_status[c]; - else - status = AO_PAD_IGNITER_STATUS_NO_IGNITER_RELAY_OPEN; if (status == AO_PAD_IGNITER_STATUS_GOOD_IGNITER_RELAY_OPEN) ao_led_on(continuity_led[c]); else ao_led_off(continuity_led[c]); } } - t = 1-t; + t = (t + 1) & 3; } }