return 0;
}
-int hal_device_led_set_state(struct led_state *state)
+int hal_device_led_set_state(enum led_device_type type, struct led_state *state)
{
- if (!g_led_funcs ||
- !g_led_funcs->set_state)
+ switch (type) {
+ case CAMERA_FRONT:
+ if (!g_led_funcs ||
+ !(g_led_funcs->camera_front) ||
+ !(g_led_funcs->camera_front->set_state))
+ return -ENODEV;
+ return g_led_funcs->camera_front->set_state(type, state);
+
+ case CAMERA_BACK:
+ if (!g_led_funcs ||
+ !(g_led_funcs->camera_back) ||
+ !(g_led_funcs->camera_back->set_state))
+ return -ENODEV;
+ return g_led_funcs->camera_back->set_state(type, state);
+
+ case NOTIFICATION:
+ if (!g_led_funcs ||
+ !(g_led_funcs->notification) ||
+ !(g_led_funcs->notification->set_state))
+ return -ENODEV;
+ return g_led_funcs->notification->set_state(type, state);
+
+ case TOUCH_KEY:
+ if (!g_led_funcs ||
+ !(g_led_funcs->touch_key) ||
+ !(g_led_funcs->touch_key->set_state))
+ return -ENODEV;
+ return g_led_funcs->touch_key->set_state(type, state);
+
+ default:
+ _E("Invalid led type: %d", type);
return -ENODEV;
-
- return g_led_funcs->set_state(state);
+ }
}
-int hal_device_led_get_state(struct led_state **state)
+int hal_device_led_get_state(enum led_device_type type, struct led_state **state)
{
- if (!g_led_funcs ||
- !g_led_funcs->get_state)
+ switch (type) {
+ case CAMERA_FRONT:
+ if (!g_led_funcs ||
+ !(g_led_funcs->camera_front) ||
+ !(g_led_funcs->camera_front->get_state))
+ return -ENODEV;
+ return g_led_funcs->camera_front->get_state(type, state);
+
+ case CAMERA_BACK:
+ if (!g_led_funcs ||
+ !(g_led_funcs->camera_back) ||
+ !(g_led_funcs->camera_back->get_state))
+ return -ENODEV;
+ return g_led_funcs->camera_back->get_state(type, state);
+
+ case NOTIFICATION:
+ if (!g_led_funcs ||
+ !(g_led_funcs->notification) ||
+ !(g_led_funcs->notification->get_state))
+ return -ENODEV;
+ return g_led_funcs->notification->get_state(type, state);
+
+ case TOUCH_KEY:
+ if (!g_led_funcs ||
+ !(g_led_funcs->touch_key) ||
+ !(g_led_funcs->touch_key->get_state))
+ return -ENODEV;
+ return g_led_funcs->touch_key->get_state(type, state);
+
+ default:
+ _E("Invalid led type: %d", type);
return -ENODEV;
-
- return g_led_funcs->get_state(state);
+ }
}
int hal_device_led_get_number(void)
{
if (!g_led_funcs ||
- !g_led_funcs->get_number)
+ !(g_led_funcs->notification) ||
+ !(g_led_funcs->notification->get_number))
return -ENODEV;
- return g_led_funcs->get_number();
+ return g_led_funcs->notification->get_number();
}
int hal_device_led_set_number(int number)
{
if (!g_led_funcs ||
- !g_led_funcs->set_num)
+ !(g_led_funcs->notification) ||
+ !(g_led_funcs->notification->set_num))
return -ENODEV;
- g_led_funcs->set_num(number);
+ g_led_funcs->notification->set_num(number);
return 0;
}
int hal_device_led_get_max_num(void)
{
if (!g_led_funcs ||
- !g_led_funcs->get_max_num)
+ !(g_led_funcs->notification) ||
+ !(g_led_funcs->notification->get_max_num))
return -ENODEV;
- return g_led_funcs->get_max_num();
+ return g_led_funcs->notification->get_max_num();
}
int hal_device_keyled_set_state(struct keyled_state *state)
{
if (!g_led_funcs ||
- !g_led_funcs->keyled_set_state)
+ !(g_led_funcs->touch_key) ||
+ !(g_led_funcs->touch_key->keyled_set_state))
return -ENODEV;
- return g_led_funcs->keyled_set_state(state);
+ return g_led_funcs->touch_key->keyled_set_state(state);
}
int hal_device_keyled_get_state(int *keycode, int *brightness)
{
if (!g_led_funcs ||
- !g_led_funcs->keyled_get_state)
+ !(g_led_funcs->touch_key) ||
+ !(g_led_funcs->touch_key->keyled_get_state))
return -ENODEV;
- return g_led_funcs->keyled_get_state(keycode, brightness);
+ return g_led_funcs->touch_key->keyled_get_state(keycode, brightness);
}