/** * Allows controlling logical lights/indicators, mapped to LEDs in a * hardware-specific manner by the HAL implementation. */ @VintfStability interface ILights { /** * Set light identified by id to the provided state. * * If control over an invalid light is requested, this method exists with * EX_UNSUPPORTED_OPERATION. Control over supported lights is done on a * device-specific best-effort basis and unsupported sub-features will not * be reported. * * @param id ID of logical light to set as returned by getLights() * @param state describes what the light should look like. */ void setLightState(in int id, in HwLightState state);
/** * Discover what lights are supported by the HAL implementation. * * @return List of available lights */ HwLight[] getLights(); }
using ::aidl::android::hardware::light::BnLights; using ::aidl::android::hardware::light::HwLight; using ::aidl::android::hardware::light::HwLightState; using ::aidl::android::hardware::light::ILights; using ::aidl::android::hardware::light::LightType; using ::aidl::android::hardware::light::FlashMode;
ScopedAStatus Lights::setLightState(int id, const HwLightState& state) { if (!(0 <= id && id < availableLights.size())) { ALOGE("Light id:%d does not exist.\n", id); return ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); }
HwLight const& light = availableLights[id]; int ret = 0;
switch (light.type) { case LightType::BACKLIGHT: ret = setLightBacklight(state); break; case LightType::KEYBOARD: ret = setLightKeyboard(state); break; case LightType::BUTTONS: ret = setLightButtons(state); break; case LightType::NOTIFICATIONS: ret = setLightLedsNotifications(state); break; case LightType::ATTENTION: ret = setLightLedsAttention(state); break; case LightType::BATTERY: ret = setLightLedsNotifications(state); break; }
if (ret) ALOGE("%s light type:%d fail:%d", __func__, light.type, ret);