aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMinh-Quang Nguyen <minh-quang.nguyen@nutaq.com>2017-01-16 14:56:10 -0500
committerMinh-Quang Nguyen <minh-quang.nguyen@nutaq.com>2017-01-16 14:56:10 -0500
commit390ac9725ff0c825fa38ca465c0c7c1f4dc84d28 (patch)
treea19ebb4a735db195912c4edd06390d6f6c026573
parent84d4b208d259f81c3a6cc6851ea092aaa992a771 (diff)
LC15: Fix order of LED timers for VSWR pattern
-rw-r--r--src/osmo-bts-litecell15/misc/lc15bts_led.c40
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);
+ }
}
}
}