summaryrefslogtreecommitdiffstats
path: root/liblight/lights.c
diff options
context:
space:
mode:
Diffstat (limited to 'liblight/lights.c')
-rw-r--r--liblight/lights.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/liblight/lights.c b/liblight/lights.c
index 86feb9d..47bd5ce 100644
--- a/liblight/lights.c
+++ b/liblight/lights.c
@@ -98,6 +98,24 @@ static int set_light_backlight(struct light_device_t *dev,
return err;
}
+#ifdef BUTTONS_FILE
+static int set_light_buttons(struct light_device_t *dev,
+ struct light_state_t const *state)
+{
+ int touch_led_control = !!(state->color & 0x00ffffff);
+ int res;
+
+ ALOGD("set_light_buttons: color=%#010x, tlc=%u.", state->color,
+ touch_led_control);
+
+ pthread_mutex_lock(&g_lock);
+ res = write_int(BUTTONS_FILE, touch_led_control);
+ pthread_mutex_unlock(&g_lock);
+
+ return res;
+}
+#endif
+
static int close_lights(struct light_device_t *dev)
{
ALOGV("close_light is called");
@@ -119,6 +137,10 @@ static int open_lights(const struct hw_module_t *module, char const *name,
set_light = set_light_backlight;
else if (0 == strcmp(LIGHT_ID_NOTIFICATIONS, name))
set_light = set_light_notifications;
+#ifdef BUTTONS_FILE
+ else if (0 == strcmp(LIGHT_ID_BUTTONS, name))
+ set_light = set_light_buttons;
+#endif
else
return -EINVAL;