diff --git a/liblights/include/samsung_lights.h b/liblights/include/samsung_lights.h index fce13081..b866a4e0 100644 --- a/liblights/include/samsung_lights.h +++ b/liblights/include/samsung_lights.h @@ -29,6 +29,7 @@ #define PANEL_MAX_BRIGHTNESS_NODE "/sys/class/backlight/panel/max_brightness" #define BUTTON_BRIGHTNESS_NODE "/sys/class/sec/sec_touchkey/brightness" #define LED_BLINK_NODE "/sys/class/sec/led/led_blink" +#define LED_BLN_NODE "/sys/class/misc/backlightnotification/notification_led" // Uncomment to enable variable button brightness //#define VAR_BUTTON_BRIGHTNESS 1 diff --git a/liblights/lights.c b/liblights/lights.c index ad6edc63..27be2480 100644 --- a/liblights/lights.c +++ b/liblights/lights.c @@ -43,6 +43,7 @@ enum component_mask_t { COMPONENT_BACKLIGHT = 0x1, COMPONENT_BUTTON_LIGHT = 0x2, COMPONENT_LED = 0x4, + COMPONENT_BLN = 0x8, }; enum light_t { @@ -76,6 +77,10 @@ void check_component_support() hw_components |= COMPONENT_BUTTON_LIGHT; if (access(LED_BLINK_NODE, W_OK) == 0) hw_components |= COMPONENT_LED; +#ifdef LED_BLN_NODE + if (access(LED_BLN_NODE, W_OK) == 0) + hw_components |= COMPONENT_BLN; +#endif } void init_g_lock(void) @@ -293,6 +298,19 @@ switched: return err; } +#ifdef LED_BLN_NODE +static int set_light_bln_notifications(struct light_device_t *dev __unused, + struct light_state_t const *state) +{ + int err = 0; + + pthread_mutex_lock(&g_lock); + err = write_str(LED_BLN_NODE, state->color & COLOR_MASK ? "1" : "0"); + pthread_mutex_unlock(&g_lock); + + return err; +} +#endif static int set_light_leds_battery(struct light_device_t *dev __unused, struct light_state_t const *state) { @@ -352,6 +370,12 @@ static int open_lights(const struct hw_module_t *module, char const *name, } else if (0 == strcmp(LIGHT_ID_NOTIFICATIONS, name)) { requested_component = COMPONENT_LED; set_light = set_light_leds_notifications; +#ifdef LED_BLN_NODE + if (hw_components & COMPONENT_BLN) { + requested_component = COMPONENT_BLN; + set_light = set_light_bln_notifications; + } +#endif } else if (0 == strcmp(LIGHT_ID_ATTENTION, name)) { requested_component = COMPONENT_LED; set_light = set_light_leds_attention;