Ability to turn the bi-color led on and off using the config 45/193945/1
authorMichal Skorupinski <m.skorupinsk@samsung.com>
Wed, 31 Oct 2018 16:22:14 +0000 (17:22 +0100)
committerMichal Skorupinski <m.skorupinsk@samsung.com>
Wed, 31 Oct 2018 16:22:14 +0000 (17:22 +0100)
Change-Id: I108d6f94c53c17ea60de9486451d7af9028ff879
Signed-off-by: Michal Skorupinski <m.skorupinsk@samsung.com>
inc/resource/resource_led.h
src/lap_counter/lap_counter.c
src/resource/resource_led.c

index 06ce749..882adf1 100644 (file)
@@ -19,9 +19,9 @@
 #define RESOURCE_RESOURCE_LED_H_
 
 typedef enum _led_color_e {
-       LED_COLOR_NONE,
-       LED_COLOR_RED,
-       LED_COLOR_GREEN,
+       LED_COLOR_NONE = -1,
+       LED_COLOR_RED = 0,
+       LED_COLOR_GREEN = 1,
 } led_color_e;
 
 void resource_led_init(void);
index b52bd8a..b096534 100644 (file)
@@ -113,7 +113,7 @@ void lap_counter_get_lap_time()
                _calculate_lap_time(&s_info.last_timestamp, &timestamp);
        } else {
                _D("Initial lap");
-               resource_led_blink(LED_COLOR_NONE, 1000);
+               resource_led_blink(LED_COLOR_RED, 1000);
        }
 
        s_info.last_timestamp.tv_sec = timestamp.tv_sec;
index e112615..b05ca7e 100644 (file)
 
 #define DEFAULT_LED_RED 17
 #define DEFAULT_LED_GREEN 27
-#define CONFIG_KEY_RPI_PIN_LED_RED "led.red"
-#define CONFIG_KEY_RPI_PIN_LED_GREEN "led.green"
-#define CONFIG_GRP_RPI "Rpi"
+#define CONFIG_KEY_RPI_PIN_LED_RED "bi.red"
+#define CONFIG_KEY_RPI_PIN_LED_GREEN "bi.green"
+#define CONFIG_KEY_RPI_USE_BI_LED "bi.use"
+#define CONFIG_GRP_RPI "Rpi.led"
+
 
 typedef struct _led_s {
-       peripheral_gpio_h gpio_red;
-       peripheral_gpio_h gpio_green;
+       peripheral_gpio_h gpio_bi_led[2];
        led_color_e current_color;
+
+       int use_bi_led;
 } led_s;
 
-static led_s s_info = { 0, };
+static led_s s_info = {
+       .current_color = LED_COLOR_NONE,
+       0, };
 
 #define  CHECK_GPIO_ERROR(pin, ret) \
        if (ret != PERIPHERAL_ERROR_NONE) { \
@@ -51,6 +56,10 @@ static inline void _led_set(led_color_e color)
        int red;
        int green;
 
+       if (!s_info.use_bi_led) {
+               _D("Bi led is turned OFF");
+               return;
+       }
 
        switch (color) {
                case LED_COLOR_RED:
@@ -67,11 +76,13 @@ static inline void _led_set(led_color_e color)
                        break;
        }
 
-       int ret = peripheral_gpio_write(s_info.gpio_red, red);
-       CHECK_GPIO_ERROR(s_info.gpio_red, ret);
+       _D("Colors: %d %d", red, green);
 
-       peripheral_gpio_write(s_info.gpio_green, green);
-       CHECK_GPIO_ERROR(s_info.gpio_green, ret);
+       int ret = peripheral_gpio_write(s_info.gpio_bi_led[LED_COLOR_RED], red);
+       ret_error_message(ret != PERIPHERAL_ERROR_NONE, ret);
+
+       peripheral_gpio_write(s_info.gpio_bi_led[LED_COLOR_GREEN], green);
+       ret_error_message(ret != PERIPHERAL_ERROR_NONE, ret);
 }
 
 static gboolean _restore_color_cb(gpointer data)
@@ -83,7 +94,7 @@ static gboolean _restore_color_cb(gpointer data)
 static peripheral_gpio_h _init_gpio(int default_gpio, char *key)
 {
        peripheral_gpio_h gpio;
-//     int ret = PERIPHERAL_ERROR_NONE;
+       int ret = PERIPHERAL_ERROR_NONE;
        int pin = 0;
        bool modified = config_get_int_with_default(CONFIG_GRP_RPI, key, default_gpio, &pin);
 
@@ -94,31 +105,41 @@ static peripheral_gpio_h _init_gpio(int default_gpio, char *key)
        }
 
        peripheral_gpio_open(pin, &gpio);
-//     ret_error_message(ret != PERIPHERAL_ERROR_NONE, ret);
+       retv_error_message(ret != PERIPHERAL_ERROR_NONE, ret, 0);
 
        peripheral_gpio_set_direction(gpio, PERIPHERAL_GPIO_DIRECTION_OUT_INITIALLY_LOW);
-//     CHECK_GPIO_ERROR(gpio, ret);
+       retv_error_message(ret != PERIPHERAL_ERROR_NONE, ret, 0);
 
        return gpio;
 
 }
 
-void resource_led_init(void)
+static void _init_bi_led(void)
 {
-       _D("Initialize Led");
+       bool modified = config_get_int_with_default(CONFIG_GRP_RPI, CONFIG_KEY_RPI_USE_BI_LED, 1, &s_info.use_bi_led);
 
-       s_info.gpio_red = _init_gpio(DEFAULT_LED_RED, CONFIG_KEY_RPI_PIN_LED_RED);
-       s_info.gpio_green = _init_gpio(DEFAULT_LED_GREEN, CONFIG_KEY_RPI_PIN_LED_GREEN);
+       if (s_info.use_bi_led) {
+               s_info.gpio_bi_led[LED_COLOR_RED] = _init_gpio(DEFAULT_LED_RED, CONFIG_KEY_RPI_PIN_LED_RED);
+               s_info.gpio_bi_led[LED_COLOR_GREEN] = _init_gpio(DEFAULT_LED_GREEN, CONFIG_KEY_RPI_PIN_LED_GREEN);
+       } else {
+               _D("BI-Led is turned OFF");
+       }
 
+       if (modified) {
+               config_save();
+       }
+}
 
-       int ret = peripheral_gpio_write(s_info.gpio_green, 1);
-       CHECK_GPIO_ERROR(s_info.gpio_green, ret);
+void resource_led_init(void)
+{
+       _D("Initialize Led");
+       _init_bi_led();
 }
 
 void resource_led_destroy(void)
 {
-       peripheral_gpio_close(s_info.gpio_red);
-       peripheral_gpio_close(s_info.gpio_green);
+       peripheral_gpio_close(s_info.gpio_bi_led[LED_COLOR_RED]);
+       peripheral_gpio_close(s_info.gpio_bi_led[LED_COLOR_GREEN]);
 }
 
 void resource_led_set(led_color_e color)