From 6af03ba9549b9a1e0c9d8323f752f0b31e450e25 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 17 Jun 2018 00:17:29 -0700 Subject: [PATCH] altos/telelco-v0: Test display, show batt voltage at boot Just like telelco v2 Signed-off-by: Keith Packard --- src/drivers/ao_lco.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/drivers/ao_lco.c b/src/drivers/ao_lco.c index e1806ca3..f0f518aa 100644 --- a/src/drivers/ao_lco.c +++ b/src/drivers/ao_lco.c @@ -23,6 +23,12 @@ #include #include #include +#if HAS_ADC_SINGLE +#include +#endif +#if HAS_ADC +#include +#endif #define DEBUG 1 @@ -640,6 +646,35 @@ ao_lco_arm_warn(void) } } +/* + * Light up everything for a second at power on to let the user + * visually inspect the system for correct operation + */ +static void +ao_lco_display_test() +{ + 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_delay(AO_MS_TO_TICKS(1000)); + ao_led_off(LEDS_AVAILABLE); +} + +static void +ao_lco_batt_voltage(void) +{ + struct ao_adc packet; + int16_t decivolt; + + ao_adc_single_get(&packet); + decivolt = ao_battery_decivolt(packet.v_batt); + ao_lco_set_voltage(decivolt); + ao_delay(AO_MS_TO_TICKS(1000)); +} + static struct ao_task ao_lco_input_task; static struct ao_task ao_lco_monitor_task; static struct ao_task ao_lco_arm_warn_task; @@ -651,6 +686,8 @@ ao_lco_monitor(void) uint16_t delay; uint8_t box; + ao_lco_display_test(); + ao_lco_batt_voltage(); ao_lco_search(); ao_add_task(&ao_lco_input_task, ao_lco_input, "lco input"); ao_add_task(&ao_lco_arm_warn_task, ao_lco_arm_warn, "lco arm warn"); -- 2.30.2