Loading services/core/jni/com_android_server_lights_LightsService.cpp +64 −46 Original line number Diff line number Diff line Loading @@ -43,63 +43,46 @@ static sp<ILight> gLight; static bool validate(jint light, jint flash, jint brightness) { bool valid = true; if (light < 0 || light >= static_cast<int>(Type::COUNT)) { if (light < 0 || light >= static_cast<jint>(Type::COUNT)) { ALOGE("Invalid light parameter %d.", light); valid = false; } if (flash != static_cast<int>(Flash::NONE) && flash != static_cast<int>(Flash::TIMED) && flash != static_cast<int>(Flash::HARDWARE)) { if (flash != static_cast<jint>(Flash::NONE) && flash != static_cast<jint>(Flash::TIMED) && flash != static_cast<jint>(Flash::HARDWARE)) { ALOGE("Invalid flash parameter %d.", flash); valid = false; } if (brightness != static_cast<int>(Brightness::USER) && brightness != static_cast<int>(Brightness::SENSOR) && brightness != static_cast<int>(Brightness::LOW_PERSISTENCE)) { if (brightness != static_cast<jint>(Brightness::USER) && brightness != static_cast<jint>(Brightness::SENSOR) && brightness != static_cast<jint>(Brightness::LOW_PERSISTENCE)) { ALOGE("Invalid brightness parameter %d.", brightness); valid = false; } if (brightness == static_cast<jint>(Brightness::LOW_PERSISTENCE) && light != static_cast<jint>(Type::BACKLIGHT)) { ALOGE("Cannot set low-persistence mode for non-backlight device."); valid = false; } return valid; } static void setLight_native( JNIEnv* /* env */, jobject /* clazz */, jint light, static LightState constructState( jint colorARGB, jint flashMode, jint onMS, jint offMS, jint brightnessMode){ if (!validate(light, flashMode, brightnessMode)) { return; } // TODO(b/31632518) if (gLight == nullptr) { gLight = ILight::getService(); } if (gLight == nullptr) { ALOGE("LightService unable to get ILight interface."); return; } Type type = static_cast<Type>(light); Flash flash = static_cast<Flash>(flashMode); Brightness brightness = static_cast<Brightness>(brightnessMode); LightState state{}; if (brightnessMode == static_cast<int>(Brightness::LOW_PERSISTENCE)) { if (light != static_cast<int>(Type::BACKLIGHT)) { ALOGE("Cannot set low-persistence mode for non-backlight device."); return; } if (brightness == Brightness::LOW_PERSISTENCE) { state.flashMode = Flash::NONE; } else { // Only set non-brightness settings when not in low-persistence mode Loading @@ -111,27 +94,28 @@ static void setLight_native( state.color = colorARGB; state.brightnessMode = brightness; Status status; { ALOGD_IF_SLOW(50, "Excessive delay setting light"); Return<Status> ret = gLight->setLight(type, state); return state; } static void processReturn( const Return<Status> &ret, Type type, const LightState &state) { if (!ret.isOk()) { ALOGE("Failed to issue set light command."); gLight = nullptr; return; } status = static_cast<Status>(ret); // hal status } switch (status) { switch (static_cast<Status>(ret)) { case Status::SUCCESS: break; case Status::LIGHT_NOT_SUPPORTED: ALOGE("Light requested not availale on this device."); ALOGE("Light requested not available on this device. %d", type); break; case Status::BRIGHTNESS_NOT_SUPPORTED: ALOGE("Brightness parameter not supported on this device."); ALOGE("Brightness parameter not supported on this device: %d", state.brightnessMode); break; case Status::UNKNOWN: default: Loading @@ -139,6 +123,40 @@ static void setLight_native( } } static void setLight_native( JNIEnv* /* env */, jobject /* clazz */, jint light, jint colorARGB, jint flashMode, jint onMS, jint offMS, jint brightnessMode) { if (!validate(light, flashMode, brightnessMode)) { return; } if (gLight == nullptr || !gLight->ping().isOk()) { gLight = ILight::getService(); } if (gLight == nullptr) { ALOGE("Unable to get ILight interface."); return; } Type type = static_cast<Type>(light); LightState state = constructState( colorARGB, flashMode, onMS, offMS, brightnessMode); { ALOGD_IF_SLOW(50, "Excessive delay setting light"); Return<Status> ret = gLight->setLight(type, state); processReturn(ret, type, state); } } static const JNINativeMethod method_table[] = { { "setLight_native", "(IIIIII)V", (void*)setLight_native }, }; Loading Loading
services/core/jni/com_android_server_lights_LightsService.cpp +64 −46 Original line number Diff line number Diff line Loading @@ -43,63 +43,46 @@ static sp<ILight> gLight; static bool validate(jint light, jint flash, jint brightness) { bool valid = true; if (light < 0 || light >= static_cast<int>(Type::COUNT)) { if (light < 0 || light >= static_cast<jint>(Type::COUNT)) { ALOGE("Invalid light parameter %d.", light); valid = false; } if (flash != static_cast<int>(Flash::NONE) && flash != static_cast<int>(Flash::TIMED) && flash != static_cast<int>(Flash::HARDWARE)) { if (flash != static_cast<jint>(Flash::NONE) && flash != static_cast<jint>(Flash::TIMED) && flash != static_cast<jint>(Flash::HARDWARE)) { ALOGE("Invalid flash parameter %d.", flash); valid = false; } if (brightness != static_cast<int>(Brightness::USER) && brightness != static_cast<int>(Brightness::SENSOR) && brightness != static_cast<int>(Brightness::LOW_PERSISTENCE)) { if (brightness != static_cast<jint>(Brightness::USER) && brightness != static_cast<jint>(Brightness::SENSOR) && brightness != static_cast<jint>(Brightness::LOW_PERSISTENCE)) { ALOGE("Invalid brightness parameter %d.", brightness); valid = false; } if (brightness == static_cast<jint>(Brightness::LOW_PERSISTENCE) && light != static_cast<jint>(Type::BACKLIGHT)) { ALOGE("Cannot set low-persistence mode for non-backlight device."); valid = false; } return valid; } static void setLight_native( JNIEnv* /* env */, jobject /* clazz */, jint light, static LightState constructState( jint colorARGB, jint flashMode, jint onMS, jint offMS, jint brightnessMode){ if (!validate(light, flashMode, brightnessMode)) { return; } // TODO(b/31632518) if (gLight == nullptr) { gLight = ILight::getService(); } if (gLight == nullptr) { ALOGE("LightService unable to get ILight interface."); return; } Type type = static_cast<Type>(light); Flash flash = static_cast<Flash>(flashMode); Brightness brightness = static_cast<Brightness>(brightnessMode); LightState state{}; if (brightnessMode == static_cast<int>(Brightness::LOW_PERSISTENCE)) { if (light != static_cast<int>(Type::BACKLIGHT)) { ALOGE("Cannot set low-persistence mode for non-backlight device."); return; } if (brightness == Brightness::LOW_PERSISTENCE) { state.flashMode = Flash::NONE; } else { // Only set non-brightness settings when not in low-persistence mode Loading @@ -111,27 +94,28 @@ static void setLight_native( state.color = colorARGB; state.brightnessMode = brightness; Status status; { ALOGD_IF_SLOW(50, "Excessive delay setting light"); Return<Status> ret = gLight->setLight(type, state); return state; } static void processReturn( const Return<Status> &ret, Type type, const LightState &state) { if (!ret.isOk()) { ALOGE("Failed to issue set light command."); gLight = nullptr; return; } status = static_cast<Status>(ret); // hal status } switch (status) { switch (static_cast<Status>(ret)) { case Status::SUCCESS: break; case Status::LIGHT_NOT_SUPPORTED: ALOGE("Light requested not availale on this device."); ALOGE("Light requested not available on this device. %d", type); break; case Status::BRIGHTNESS_NOT_SUPPORTED: ALOGE("Brightness parameter not supported on this device."); ALOGE("Brightness parameter not supported on this device: %d", state.brightnessMode); break; case Status::UNKNOWN: default: Loading @@ -139,6 +123,40 @@ static void setLight_native( } } static void setLight_native( JNIEnv* /* env */, jobject /* clazz */, jint light, jint colorARGB, jint flashMode, jint onMS, jint offMS, jint brightnessMode) { if (!validate(light, flashMode, brightnessMode)) { return; } if (gLight == nullptr || !gLight->ping().isOk()) { gLight = ILight::getService(); } if (gLight == nullptr) { ALOGE("Unable to get ILight interface."); return; } Type type = static_cast<Type>(light); LightState state = constructState( colorARGB, flashMode, onMS, offMS, brightnessMode); { ALOGD_IF_SLOW(50, "Excessive delay setting light"); Return<Status> ret = gLight->setLight(type, state); processReturn(ret, type, state); } } static const JNINativeMethod method_table[] = { { "setLight_native", "(IIIIII)V", (void*)setLight_native }, }; Loading