diff options
author | Minh-Quang Nguyen <minh-quang.nguyen@nutaq.com> | 2017-01-16 14:56:10 -0500 |
---|---|---|
committer | Minh-Quang Nguyen <minh-quang.nguyen@nutaq.com> | 2017-01-16 14:56:10 -0500 |
commit | 390ac9725ff0c825fa38ca465c0c7c1f4dc84d28 (patch) | |
tree | a19ebb4a735db195912c4edd06390d6f6c026573 | |
parent | 84d4b208d259f81c3a6cc6851ea092aaa992a771 (diff) |
LC15: Fix order of LED timers for VSWR pattern
Change-Id: Ic8f81c53b7680efe7d4d0887bc666d9cef6632b7
-rw-r--r-- | src/osmo-bts-litecell15/misc/lc15bts_led.c | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/src/osmo-bts-litecell15/misc/lc15bts_led.c b/src/osmo-bts-litecell15/misc/lc15bts_led.c index d3e048fc..9899e9b3 100644 --- a/src/osmo-bts-litecell15/misc/lc15bts_led.c +++ b/src/osmo-bts-litecell15/misc/lc15bts_led.c @@ -53,7 +53,7 @@ static struct lc15bts_led_timer { }; static struct lc15bts_led_control { - struct lc15bts_led_timer timers[_LC15BTS_LED_MAX - 1]; + struct lc15bts_led_timer timers[_LC15BTS_LED_MAX]; uint32_t led_flags; }; @@ -131,12 +131,38 @@ static void led_sleep_cb(void *_data) { osmo_timer_del(&lc15bts_leds.timers[active_timer].timer); - LOGP(DTEMP, LOGL_DEBUG,"%s timer expired in %d sec + %d usec\n", get_value_string(lc15bts_led_strs, active_timer), lc15bts_leds.timers[active_timer].param.sleep_sec, lc15bts_leds.timers[active_timer].param.sleep_usec); - - for (i = 0; i < _LC15BTS_LED_MAX; i++) { - if (i != lc15bts_leds.timers[active_timer].idx) { - if (lc15bts_leds.timers[i].param.sleep_sec + lc15bts_leds.timers[i].param.sleep_usec) { - led_sleep(&lc15bts_leds.timers[i], led_sleep_cb); + LOGP(DTEMP, LOGL_DEBUG,"%s timer expired in %d sec + %d usec \n", get_value_string(lc15bts_led_strs, active_timer), lc15bts_leds.timers[active_timer].param.sleep_sec, lc15bts_leds.timers[active_timer].param.sleep_usec); + + /* start next LED timer */ + if (!strcmp(current_blink_pattern, blink_pattern_command[BLINK_PATTERN_VSWR_HIGH])) { + switch (active_timer) { + case LC15BTS_LED_RED: + if (lc15bts_leds.timers[LC15BTS_LED_GREEN].param.sleep_sec + lc15bts_leds.timers[LC15BTS_LED_GREEN].param.sleep_usec) + led_sleep(&lc15bts_leds.timers[LC15BTS_LED_GREEN], led_sleep_cb); + else + led_set_off(); + break; + case LC15BTS_LED_GREEN: + if (lc15bts_leds.timers[LC15BTS_LED_ORANGE].param.sleep_sec + lc15bts_leds.timers[LC15BTS_LED_ORANGE].param.sleep_usec) + led_sleep(&lc15bts_leds.timers[LC15BTS_LED_ORANGE], led_sleep_cb); + else + led_set_off(); + break; + case LC15BTS_LED_ORANGE: + if (lc15bts_leds.timers[LC15BTS_LED_RED].param.sleep_sec + lc15bts_leds.timers[LC15BTS_LED_RED].param.sleep_usec) + led_sleep(&lc15bts_leds.timers[LC15BTS_LED_RED], led_sleep_cb); + else + led_set_off(); + break; + default: + led_set_off(); + } + } else { + for (i = 0; i < _LC15BTS_LED_MAX; i++) { + if (i != lc15bts_leds.timers[active_timer].idx) { + if (lc15bts_leds.timers[i].param.sleep_sec + lc15bts_leds.timers[i].param.sleep_usec) { + led_sleep(&lc15bts_leds.timers[i], led_sleep_cb); + } } } } |