#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) { \
int red;
int green;
+ if (!s_info.use_bi_led) {
+ _D("Bi led is turned OFF");
+ return;
+ }
switch (color) {
case LED_COLOR_RED:
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)
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);
}
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)