From 739b70b45f2e0c60fade10d348d3b2d6ee614091 Mon Sep 17 00:00:00 2001 From: Danny Trunk Date: Mon, 17 Feb 2025 20:25:37 +0000 Subject: [PATCH] Revert^2 "tama-common: Switch to common lights HAL" This reverts commit b831f0a9764025d9a4fca6f7423d0383d2891893. Reason for revert: Common HAL handles it just fine Change-Id: Ie7cc2c90e4d7bf43a432440de57746f168860ce2 --- common.mk | 2 +- lights/Android.bp | 21 -- lights/Lights.cpp | 232 ------------------ lights/Lights.h | 48 ---- ...roid.hardware.light-service.sony_sdm845.rc | 35 --- ...oid.hardware.light-service.sony_sdm845.xml | 7 - lights/service.cpp | 24 -- sepolicy/vendor/file_contexts | 1 - 8 files changed, 1 insertion(+), 369 deletions(-) delete mode 100644 lights/Android.bp delete mode 100644 lights/Lights.cpp delete mode 100644 lights/Lights.h delete mode 100644 lights/android.hardware.light-service.sony_sdm845.rc delete mode 100644 lights/android.hardware.light-service.sony_sdm845.xml delete mode 100644 lights/service.cpp diff --git a/common.mk b/common.mk index 4e7127e..9d22afb 100644 --- a/common.mk +++ b/common.mk @@ -277,7 +277,7 @@ PRODUCT_PACKAGES += \ # Lights PRODUCT_PACKAGES += \ - android.hardware.light-service.sony_sdm845 \ + android.hardware.light-service.lineage \ android.hardware.light@2.0.vendor # Media diff --git a/lights/Android.bp b/lights/Android.bp deleted file mode 100644 index 98a8caa..0000000 --- a/lights/Android.bp +++ /dev/null @@ -1,21 +0,0 @@ -// -// SPDX-FileCopyrightText: 2018-2024 The LineageOS Project -// SPDX-License-Identifier: Apache-2.0 -// - -cc_binary { - name: "android.hardware.light-service.sony_sdm845", - relative_install_path: "hw", - init_rc: ["android.hardware.light-service.sony_sdm845.rc"], - vintf_fragments: ["android.hardware.light-service.sony_sdm845.xml"], - vendor: true, - srcs: [ - "Lights.cpp", - "service.cpp", - ], - shared_libs: [ - "libbase", - "libbinder_ndk", - "android.hardware.light-V2-ndk", - ], -} diff --git a/lights/Lights.cpp b/lights/Lights.cpp deleted file mode 100644 index b2f5a53..0000000 --- a/lights/Lights.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2018-2024 The LineageOS Project - * SPDX-License-Identifier: Apache-2.0 - */ - -#define LOG_TAG "LightsService" - -#include "Lights.h" - -#include - -#include - -#define SYS_CLASS "/sys/class/" - -#define PANEL_BACKLIGHT SYS_CLASS "backlight/panel0-backlight/" -#define LEDS SYS_CLASS "leds/" - -#define RED_LED LEDS "red/" -#define GREEN_LED LEDS "green/" -#define BLUE_LED LEDS "blue/" - -#define BLINK "blink" -#define BRIGHTNESS "brightness" -#define DUTY_PCTS "duty_pcts" -#define LUT_FLAGS "lut_flags" -#define PAUSE_HI "pause_hi" -#define PAUSE_LO "pause_lo" -#define RAMP_STEP_MS "ramp_step_ms" -#define START_IDX "start_idx" - - -/* - * 8 duty percent steps. - */ -#define RAMP_STEPS 8 -/* - * Each step will stay on for 50ms by default. - */ -#define RAMP_STEP_DURATION 50 -/* - * Each value represents a duty percent (0 - 100) for the led pwm. - */ -static int32_t BRIGHTNESS_RAMP[RAMP_STEPS] = {0, 12, 25, 37, 50, 72, 85, 100}; - -namespace { -/* - * Write value to path and close file. - */ -static void set(std::string path, std::string value) { - std::ofstream file(path); - - if (!file.is_open()) { - LOG(WARNING) << "failed to write " << value.c_str() << " to " << path.c_str(); - return; - } - - file << value; -} - -static void set(std::string path, int value) { - set(path, std::to_string(value)); -} - -static void handleBacklight(const HwLightState& state) { - uint32_t brightness = state.color & 0xFF; - set(PANEL_BACKLIGHT BRIGHTNESS, brightness); -} - -/* - * Scale each value of the brightness ramp according to the - * brightness of the color. - */ -static std::string getScaledRamp(uint32_t brightness) { - std::string ramp, pad; - - for (auto const& step : BRIGHTNESS_RAMP) { - ramp += pad + std::to_string(step * brightness / 0xFF); - pad = ","; - } - - return ramp; -} - -static void handleNotification(const HwLightState& state) { - uint32_t redBrightness, greenBrightness, blueBrightness, brightness; - - /* - * Extract brightness from AARRGGBB. - */ - redBrightness = (state.color >> 16) & 0xFF; - greenBrightness = (state.color >> 8) & 0xFF; - blueBrightness = state.color & 0xFF; - - brightness = (state.color >> 24) & 0xFF; - - /* - * Scale RGB brightness if the Alpha brightness is within the proper range (0-255). - */ - if (brightness > 0 && brightness < 255) { - redBrightness = (redBrightness * brightness) / 0xFF; - greenBrightness = (greenBrightness * brightness) / 0xFF; - blueBrightness = (blueBrightness * brightness) / 0xFF; - } - - /* Disable blinking. */ - set(RED_LED BLINK, 0); - set(GREEN_LED BLINK, 0); - set(BLUE_LED BLINK, 0); - - if (state.flashMode == FlashMode::TIMED) { - /* - * If the flashOnMs duration is not long enough to fit ramping up - * and down at the default step duration, step duration is modified - * to fit. - */ - int32_t stepDuration = RAMP_STEP_DURATION; - int32_t pauseHi = state.flashOnMs - (stepDuration * RAMP_STEPS * 2); - int32_t pauseLo = state.flashOffMs; - - if (pauseHi < 0) { - stepDuration = state.flashOnMs / (RAMP_STEPS * 2); - pauseHi = 0; - } - - /* Red */ - set(RED_LED LUT_FLAGS, 95); - set(RED_LED START_IDX, 0 * RAMP_STEPS); - set(RED_LED DUTY_PCTS, getScaledRamp(redBrightness)); - set(RED_LED PAUSE_LO, pauseLo); - set(RED_LED PAUSE_HI, pauseHi); - set(RED_LED RAMP_STEP_MS, stepDuration); - - /* Green */ - set(GREEN_LED LUT_FLAGS, 95); - set(GREEN_LED START_IDX, 1 * RAMP_STEPS); - set(GREEN_LED DUTY_PCTS, getScaledRamp(greenBrightness)); - set(GREEN_LED PAUSE_LO, pauseLo); - set(GREEN_LED PAUSE_HI, pauseHi); - set(GREEN_LED RAMP_STEP_MS, stepDuration); - - /* Blue */ - set(BLUE_LED LUT_FLAGS, 95); - set(BLUE_LED START_IDX, 2 * RAMP_STEPS); - set(BLUE_LED DUTY_PCTS, getScaledRamp(blueBrightness)); - set(BLUE_LED PAUSE_LO, pauseLo); - set(BLUE_LED PAUSE_HI, pauseHi); - set(BLUE_LED RAMP_STEP_MS, stepDuration); - - /* Enable blinking. */ - set(RED_LED BLINK, 1); - set(GREEN_LED BLINK, 1); - set(BLUE_LED BLINK, 1); - } else { - set(RED_LED BRIGHTNESS, redBrightness); - set(GREEN_LED BRIGHTNESS, greenBrightness); - set(BLUE_LED BRIGHTNESS, blueBrightness); - } -} - -static inline bool isLit(const HwLightState& state) { - return state.color & 0x00ffffff; -} - -/* Keep sorted in the order of importance. */ -static std::vector backends = { - { LightType::ATTENTION, handleNotification }, - { LightType::NOTIFICATIONS, handleNotification }, - { LightType::BATTERY, handleNotification }, - { LightType::BACKLIGHT, handleBacklight }, -}; - -} // anonymous namespace - -namespace aidl { -namespace android { -namespace hardware { -namespace light { - -ndk::ScopedAStatus Lights::setLightState(int id, const HwLightState& state) { - LightStateHandler handler = nullptr; - LightType type = static_cast(id); - - /* Lock global mutex until light state is updated. */ - std::lock_guard lock(globalLock); - - /* Update the cached state value for the current type. */ - for (LightBackend& backend : backends) { - if (backend.type == type) { - backend.state = state; - handler = backend.handler; - } - } - - /* If no handler has been found, then the type is not supported. */ - if (!handler) { - return ndk::ScopedAStatus::fromExceptionCode(EX_UNSUPPORTED_OPERATION); - } - - /* Light up the type with the highest priority that matches the current handler. */ - for (LightBackend& backend : backends) { - if (handler == backend.handler && isLit(backend.state)) { - handler(backend.state); - return ndk::ScopedAStatus::ok(); - } - } - - /* If no type has been lit up, then turn off the hardware. */ - handler(state); - - return ndk::ScopedAStatus::ok(); -} - -ndk::ScopedAStatus Lights::getLights(std::vector* lights) { - int i = 0; - - for (const LightBackend& backend : backends) { - HwLight hwLight; - hwLight.id = (int) backend.type; - hwLight.type = backend.type; - hwLight.ordinal = i; - lights->push_back(hwLight); - i++; - } - - return ndk::ScopedAStatus::ok(); -} - -} // namespace light -} // namespace hardware -} // namespace android -} // namespace aidl diff --git a/lights/Lights.h b/lights/Lights.h deleted file mode 100644 index 787da48..0000000 --- a/lights/Lights.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2018-2024 The LineageOS Project - * SPDX-License-Identifier: Apache-2.0 - */ - -#pragma once - -#include - -#include -#include - -using ::aidl::android::hardware::light::BnLights; -using ::aidl::android::hardware::light::FlashMode; -using ::aidl::android::hardware::light::HwLight; -using ::aidl::android::hardware::light::HwLightState; -using ::aidl::android::hardware::light::LightType; - -typedef void (*LightStateHandler)(const HwLightState&); - -struct LightBackend { - LightType type; - HwLightState state; - LightStateHandler handler; - - LightBackend(LightType type, LightStateHandler handler) : type(type), handler(handler) { - this->state.color = 0xff000000; - } -}; - -namespace aidl { -namespace android { -namespace hardware { -namespace light { - -class Lights : public BnLights { - public: - ndk::ScopedAStatus setLightState(int id, const HwLightState& state) override; - ndk::ScopedAStatus getLights(std::vector* types) override; - - private: - std::mutex globalLock; -}; - -} // namespace light -} // namespace hardware -} // namespace android -} // namespace aidl diff --git a/lights/android.hardware.light-service.sony_sdm845.rc b/lights/android.hardware.light-service.sony_sdm845.rc deleted file mode 100644 index 090af4f..0000000 --- a/lights/android.hardware.light-service.sony_sdm845.rc +++ /dev/null @@ -1,35 +0,0 @@ -on boot - # RGB leds - chown system system /sys/class/leds/red/blink - chown system system /sys/class/leds/red/brightness - chown system system /sys/class/leds/red/duty_pcts - chown system system /sys/class/leds/red/lut_flags - chown system system /sys/class/leds/red/pause_hi - chown system system /sys/class/leds/red/pause_lo - chown system system /sys/class/leds/red/ramp_step_ms - chown system system /sys/class/leds/red/start_idx - - chown system system /sys/class/leds/green/blink - chown system system /sys/class/leds/green/brightness - chown system system /sys/class/leds/green/duty_pcts - chown system system /sys/class/leds/green/lut_flags - chown system system /sys/class/leds/green/pause_hi - chown system system /sys/class/leds/green/pause_lo - chown system system /sys/class/leds/green/ramp_step_ms - chown system system /sys/class/leds/green/start_idx - - chown system system /sys/class/leds/blue/blink - chown system system /sys/class/leds/blue/brightness - chown system system /sys/class/leds/blue/duty_pcts - chown system system /sys/class/leds/blue/lut_flags - chown system system /sys/class/leds/blue/pause_hi - chown system system /sys/class/leds/blue/pause_lo - chown system system /sys/class/leds/blue/ramp_step_ms - chown system system /sys/class/leds/blue/start_idx - -service vendor.light-sony_sdm845 /vendor/bin/hw/android.hardware.light-service.sony_sdm845 - class hal - user system - group system - # shutting off lights while powering-off - shutdown critical diff --git a/lights/android.hardware.light-service.sony_sdm845.xml b/lights/android.hardware.light-service.sony_sdm845.xml deleted file mode 100644 index abdd74e..0000000 --- a/lights/android.hardware.light-service.sony_sdm845.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - android.hardware.light - 2 - ILights/default - - diff --git a/lights/service.cpp b/lights/service.cpp deleted file mode 100644 index bf43ae4..0000000 --- a/lights/service.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2018-2024 The LineageOS Project - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "Lights.h" - -#include -#include -#include - -using ::aidl::android::hardware::light::Lights; - -int main() { - ABinderProcess_setThreadPoolMaxThreadCount(0); - std::shared_ptr lights = ndk::SharedRefBase::make(); - - const std::string instance = std::string() + Lights::descriptor + "/default"; - binder_status_t status = AServiceManager_addService(lights->asBinder().get(), instance.c_str()); - CHECK_EQ(status, STATUS_OK); - - ABinderProcess_joinThreadPool(); - return EXIT_FAILURE; // should not reach -} diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index 56ad5f4..9f1aedc 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -82,7 +82,6 @@ /(vendor|system/vendor)/bin/wvkbd u:object_r:wvkbd_exec:s0 # Vendor HALs -/(vendor|system/vendor)/bin/hw/android\.hardware\.light-service\.sony_sdm845 u:object_r:hal_light_default_exec:s0 /(vendor|system/vendor)/bin/hw/fpc_fingerprint@2\.1_HIDL-service u:object_r:hal_fingerprint_default_exec:s0 /(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.tama u:object_r:hal_lineage_touch_default_exec:s0 /(vendor|system/vendor)/bin/hw/vendor\.semc\.hardware\.secd@1\.0-service u:object_r:hal_secd_default_exec:s0