sdm710-common: light: Drop notification LED support
* also remove led capabilities overlay Signed-off-by: SamarV-121 <samarvispute121@gmail.com>
This commit is contained in:
parent
531e208ca9
commit
d5a635d142
4 changed files with 7 additions and 120 deletions
|
@ -51,29 +51,6 @@ static T get(const std::string& path, const T& def) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr int kDefaultMaxBrightness = 255;
|
static constexpr int kDefaultMaxBrightness = 255;
|
||||||
static constexpr int kRampSteps = 50;
|
|
||||||
static constexpr int kRampMaxStepDurationMs = 5;
|
|
||||||
|
|
||||||
static uint32_t getBrightness(const LightState& state) {
|
|
||||||
uint32_t alpha, red, green, blue;
|
|
||||||
|
|
||||||
// Extract brightness from AARRGGBB
|
|
||||||
alpha = (state.color >> 24) & 0xff;
|
|
||||||
|
|
||||||
// Retrieve each of the RGB colors
|
|
||||||
red = (state.color >> 16) & 0xff;
|
|
||||||
green = (state.color >> 8) & 0xff;
|
|
||||||
blue = state.color & 0xff;
|
|
||||||
|
|
||||||
// Scale RGB colors if a brightness has been applied by the user
|
|
||||||
if (alpha != 0xff) {
|
|
||||||
red = red * alpha / 0xff;
|
|
||||||
green = green * alpha / 0xff;
|
|
||||||
blue = blue * alpha / 0xff;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (77 * red + 150 * green + 29 * blue) >> 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint32_t rgbToBrightness(const LightState& state) {
|
static uint32_t rgbToBrightness(const LightState& state) {
|
||||||
uint32_t color = state.color & 0x00ffffff;
|
uint32_t color = state.color & 0x00ffffff;
|
||||||
|
@ -83,10 +60,7 @@ static uint32_t rgbToBrightness(const LightState& state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Light::Light() {
|
Light::Light() {
|
||||||
mLights.emplace(Type::ATTENTION, std::bind(&Light::handleNotification, this, std::placeholders::_1, 0));
|
|
||||||
mLights.emplace(Type::BACKLIGHT, std::bind(&Light::handleBacklight, this, std::placeholders::_1));
|
mLights.emplace(Type::BACKLIGHT, std::bind(&Light::handleBacklight, this, std::placeholders::_1));
|
||||||
mLights.emplace(Type::BATTERY, std::bind(&Light::handleNotification, this, std::placeholders::_1, 1));
|
|
||||||
mLights.emplace(Type::NOTIFICATIONS, std::bind(&Light::handleNotification, this, std::placeholders::_1, 2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Light::handleBacklight(const LightState& state) {
|
void Light::handleBacklight(const LightState& state) {
|
||||||
|
@ -101,60 +75,6 @@ void Light::handleBacklight(const LightState& state) {
|
||||||
set("/sys/class/backlight/panel0-backlight/brightness", brightness);
|
set("/sys/class/backlight/panel0-backlight/brightness", brightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Light::handleNotification(const LightState& state, size_t index) {
|
|
||||||
mLightStates.at(index) = state;
|
|
||||||
|
|
||||||
LightState stateToUse = mLightStates.front();
|
|
||||||
for (const auto& lightState : mLightStates) {
|
|
||||||
if (lightState.color & 0xffffff) {
|
|
||||||
stateToUse = lightState;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t whiteBrightness = getBrightness(stateToUse);
|
|
||||||
|
|
||||||
uint32_t onMs = stateToUse.flashMode == Flash::TIMED ? stateToUse.flashOnMs : 0;
|
|
||||||
uint32_t offMs = stateToUse.flashMode == Flash::TIMED ? stateToUse.flashOffMs : 0;
|
|
||||||
|
|
||||||
auto getScaledDutyPercent = [](int brightness) -> std::string {
|
|
||||||
std::string output;
|
|
||||||
for (int i = 0; i <= kRampSteps; i++) {
|
|
||||||
if (i != 0) {
|
|
||||||
output += ",";
|
|
||||||
}
|
|
||||||
output += std::to_string(i * 100 * brightness / (kDefaultMaxBrightness * kRampSteps));
|
|
||||||
}
|
|
||||||
return output;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Disable blinking to start
|
|
||||||
set("/sys/class/leds/white/blink", 0);
|
|
||||||
|
|
||||||
if (onMs > 0 && offMs > 0) {
|
|
||||||
uint32_t pauseLo, pauseHi, stepDuration;
|
|
||||||
if (kRampMaxStepDurationMs * kRampSteps > onMs) {
|
|
||||||
stepDuration = onMs / kRampSteps;
|
|
||||||
pauseHi = 0;
|
|
||||||
} else {
|
|
||||||
stepDuration = kRampMaxStepDurationMs;
|
|
||||||
pauseHi = onMs - kRampSteps * stepDuration;
|
|
||||||
pauseLo = offMs - kRampSteps * stepDuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
set("/sys/class/leds/white/start_idx", 0);
|
|
||||||
set("/sys/class/leds/white/duty_pcts", getScaledDutyPercent(whiteBrightness));
|
|
||||||
set("/sys/class/leds/white/pause_lo", pauseLo);
|
|
||||||
set("/sys/class/leds/white/pause_hi", pauseHi);
|
|
||||||
set("/sys/class/leds/white/ramp_step_ms", stepDuration);
|
|
||||||
|
|
||||||
// Start blinking
|
|
||||||
set("/sys/class/leds/white/blink", 1);
|
|
||||||
} else {
|
|
||||||
set("/sys/class/leds/white/brightness", whiteBrightness);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Return<Status> Light::setLight(Type type, const LightState& state) {
|
Return<Status> Light::setLight(Type type, const LightState& state) {
|
||||||
auto it = mLights.find(type);
|
auto it = mLights.find(type);
|
||||||
|
|
||||||
|
|
|
@ -46,11 +46,9 @@ class Light : public ILight {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void handleBacklight(const LightState& state);
|
void handleBacklight(const LightState& state);
|
||||||
void handleNotification(const LightState& state, size_t index);
|
|
||||||
|
|
||||||
std::mutex mLock;
|
std::mutex mLock;
|
||||||
std::unordered_map<Type, std::function<void(const LightState&)>> mLights;
|
std::unordered_map<Type, std::function<void(const LightState&)>> mLights;
|
||||||
std::array<LightState, 3> mLightStates;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace implementation
|
} // namespace implementation
|
||||||
|
|
|
@ -1,24 +1,7 @@
|
||||||
on boot
|
service vendor.light-hal-2-0 /vendor/bin/hw/android.hardware.light@2.0-service
|
||||||
chown system system /sys/class/leds/white/brightness
|
interface android.hardware.light@2.0::ILight default
|
||||||
|
class hal
|
||||||
chown system system /sys/class/leds/white/blink
|
user system
|
||||||
chown system system /sys/class/leds/white/duty_pcts
|
group system
|
||||||
chown system system /sys/class/leds/white/pause_hi
|
# shutting off lights while powering-off
|
||||||
chown system system /sys/class/leds/white/pause_lo
|
shutdown critical
|
||||||
chown system system /sys/class/leds/white/ramp_step_ms
|
|
||||||
chown system system /sys/class/leds/white/start_idx
|
|
||||||
|
|
||||||
chmod 660 /sys/class/leds/white/blink
|
|
||||||
chmod 660 /sys/class/leds/white/duty_pcts
|
|
||||||
chmod 660 /sys/class/leds/white/pause_hi
|
|
||||||
chmod 660 /sys/class/leds/white/pause_lo
|
|
||||||
chmod 660 /sys/class/leds/white/ramp_step_ms
|
|
||||||
chmod 660 /sys/class/leds/white/start_idx
|
|
||||||
|
|
||||||
service vendor.light-hal-2-0 /vendor/bin/hw/android.hardware.light@2.0-service
|
|
||||||
interface android.hardware.light@2.0::ILight default
|
|
||||||
class hal
|
|
||||||
user system
|
|
||||||
group system
|
|
||||||
# shutting off lights while powering-off
|
|
||||||
shutdown critical
|
|
||||||
|
|
|
@ -45,20 +45,6 @@
|
||||||
<integer name="config_proximityCheckTimeout">100</integer>
|
<integer name="config_proximityCheckTimeout">100</integer>
|
||||||
<bool name="config_proximityCheckOnWakeEnabledByDefault">true</bool>
|
<bool name="config_proximityCheckOnWakeEnabledByDefault">true</bool>
|
||||||
|
|
||||||
<!-- All the capabilities of the LEDs on this device, stored as a bit field.
|
|
||||||
This integer should equal the sum of the corresponding value for each
|
|
||||||
of the following capabilities present:
|
|
||||||
LIGHTS_RGB_NOTIFICATION_LED = 1
|
|
||||||
LIGHTS_RGB_BATTERY_LED = 2
|
|
||||||
LIGHTS_MULTIPLE_NOTIFICATION_LED = 4 (deprecated)
|
|
||||||
LIGHTS_PULSATING_LED = 8
|
|
||||||
LIGHTS_SEGMENTED_BATTERY_LED = 16
|
|
||||||
LIGHTS_ADJUSTABLE_NOTIFICATION_LED_BRIGHTNESS = 32
|
|
||||||
LIGHTS_BATTERY_LED = 64
|
|
||||||
For example, a device with notification and battery lights that supports
|
|
||||||
pulsating and RGB control would set this config to 75. -->
|
|
||||||
<integer name="config_deviceLightCapabilities">104</integer>
|
|
||||||
|
|
||||||
<!-- Whether device has screen with higher aspect ratio -->
|
<!-- Whether device has screen with higher aspect ratio -->
|
||||||
<bool name="config_haveHigherAspectRatioScreen">true</bool>
|
<bool name="config_haveHigherAspectRatioScreen">true</bool>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue