aboutsummaryrefslogtreecommitdiff
path: root/light
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2024-10-13 14:21:42 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2024-10-13 14:21:42 +0530
commite394d17751ded0dbb60b2d75b4f6d4cca5e61bc1 (patch)
tree3b723581b08be2218898b6c67a6f4ef3988e6549 /light
parent4d671fec381d5159b4112868cad40b72b50ec2c1 (diff)
get compilation working
Diffstat (limited to 'light')
-rw-r--r--light/Android.bp31
-rw-r--r--light/Light.cpp264
-rw-r--r--light/Light.h94
-rw-r--r--light/android.hardware.light@2.0-service.zuk_8996.rc70
-rw-r--r--light/android.hardware.light@2.0-service.zuk_8996.xml11
-rw-r--r--light/service.cpp255
6 files changed, 0 insertions, 725 deletions
diff --git a/light/Android.bp b/light/Android.bp
deleted file mode 100644
index 821dc0d..0000000
--- a/light/Android.bp
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// Copyright (C) 2018,2020 The LineageOS Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-cc_binary {
- name: "android.hardware.light@2.0-service.zuk_8996",
- relative_install_path: "hw",
- init_rc: ["android.hardware.light@2.0-service.zuk_8996.rc"],
- vintf_fragments: ["android.hardware.light@2.0-service.zuk_8996.xml"],
- srcs: ["service.cpp", "Light.cpp"],
- shared_libs: [
- "libbase",
- "libcutils",
- "libhardware",
- "libhidlbase",
- "libutils",
- "android.hardware.light@2.0",
- ],
- proprietary: true,
-}
diff --git a/light/Light.cpp b/light/Light.cpp
deleted file mode 100644
index 85df5f8..0000000
--- a/light/Light.cpp
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright (C) 2018 The LineageOS Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LightService"
-
-#include "Light.h"
-
-#include <android-base/logging.h>
-
-namespace {
-using android::hardware::light::V2_0::LightState;
-
-static constexpr int RAMP_SIZE = 8;
-static constexpr int RAMP_STEP_DURATION = 50;
-
-static constexpr int BRIGHTNESS_RAMP[RAMP_SIZE] = {0, 12, 25, 37, 50, 72, 85, 100};
-static constexpr int DEFAULT_MAX_BRIGHTNESS = 255;
-
-static uint32_t rgbToBrightness(const LightState& state) {
- uint32_t color = state.color & 0x00ffffff;
- return ((77 * ((color >> 16) & 0xff)) + (150 * ((color >> 8) & 0xff)) +
- (29 * (color & 0xff))) >> 8;
-}
-
-static bool isLit(const LightState& state) {
- return (state.color & 0x00ffffff);
-}
-
-static std::string getScaledDutyPcts(int brightness) {
- std::string buf, pad;
-
- for (auto i : BRIGHTNESS_RAMP) {
- buf += pad;
- buf += std::to_string(i * brightness / 255);
- pad = ",";
- }
-
- return buf;
-}
-} // anonymous namespace
-
-namespace android {
-namespace hardware {
-namespace light {
-namespace V2_0 {
-namespace implementation {
-
-Light::Light(std::pair<std::ofstream, uint32_t>&& lcd_backlight,
- std::ofstream&& red_led, std::ofstream&& green_led, std::ofstream&& blue_led,
- std::ofstream&& red_duty_pcts, std::ofstream&& green_duty_pcts, std::ofstream&& blue_duty_pcts,
- std::ofstream&& red_start_idx, std::ofstream&& green_start_idx, std::ofstream&& blue_start_idx,
- std::ofstream&& red_pause_lo, std::ofstream&& green_pause_lo, std::ofstream&& blue_pause_lo,
- std::ofstream&& red_pause_hi, std::ofstream&& green_pause_hi, std::ofstream&& blue_pause_hi,
- std::ofstream&& red_ramp_step_ms, std::ofstream&& green_ramp_step_ms, std::ofstream&& blue_ramp_step_ms,
- std::ofstream&& red_blink, std::ofstream&& green_blink, std::ofstream&& blue_blink,
- std::ofstream&& rgb_blink)
- : mLcdBacklight(std::move(lcd_backlight)),
- mRedLed(std::move(red_led)),
- mGreenLed(std::move(green_led)),
- mBlueLed(std::move(blue_led)),
- mRedDutyPcts(std::move(red_duty_pcts)),
- mGreenDutyPcts(std::move(green_duty_pcts)),
- mBlueDutyPcts(std::move(blue_duty_pcts)),
- mRedStartIdx(std::move(red_start_idx)),
- mGreenStartIdx(std::move(green_start_idx)),
- mBlueStartIdx(std::move(blue_start_idx)),
- mRedPauseLo(std::move(red_pause_lo)),
- mGreenPauseLo(std::move(green_pause_lo)),
- mBluePauseLo(std::move(blue_pause_lo)),
- mRedPauseHi(std::move(red_pause_hi)),
- mGreenPauseHi(std::move(green_pause_hi)),
- mBluePauseHi(std::move(blue_pause_hi)),
- mRedRampStepMs(std::move(red_ramp_step_ms)),
- mGreenRampStepMs(std::move(green_ramp_step_ms)),
- mBlueRampStepMs(std::move(blue_ramp_step_ms)),
- mRedBlink(std::move(red_blink)),
- mGreenBlink(std::move(green_blink)),
- mBlueBlink(std::move(blue_blink)),
- mRgbBlink(std::move(rgb_blink)) {
- auto attnFn(std::bind(&Light::setAttentionLight, this, std::placeholders::_1));
- auto backlightFn(std::bind(&Light::setLcdBacklight, this, std::placeholders::_1));
- auto batteryFn(std::bind(&Light::setBatteryLight, this, std::placeholders::_1));
- auto notifFn(std::bind(&Light::setNotificationLight, this, std::placeholders::_1));
- mLights.emplace(std::make_pair(Type::ATTENTION, attnFn));
- mLights.emplace(std::make_pair(Type::BACKLIGHT, backlightFn));
- mLights.emplace(std::make_pair(Type::BATTERY, batteryFn));
- mLights.emplace(std::make_pair(Type::NOTIFICATIONS, notifFn));
-}
-
-// Methods from ::android::hardware::light::V2_0::ILight follow.
-Return<Status> Light::setLight(Type type, const LightState& state) {
- auto it = mLights.find(type);
-
- if (it == mLights.end()) {
- return Status::LIGHT_NOT_SUPPORTED;
- }
-
- it->second(state);
-
- return Status::SUCCESS;
-}
-
-Return<void> Light::getSupportedTypes(getSupportedTypes_cb _hidl_cb) {
- std::vector<Type> types;
-
- for (auto const& light : mLights) {
- types.push_back(light.first);
- }
-
- _hidl_cb(types);
-
- return Void();
-}
-
-void Light::setAttentionLight(const LightState& state) {
- std::lock_guard<std::mutex> lock(mLock);
- mAttentionState = state;
- setSpeakerBatteryLightLocked();
-}
-
-void Light::setLcdBacklight(const LightState& state) {
- std::lock_guard<std::mutex> lock(mLock);
-
- uint32_t brightness = rgbToBrightness(state);
-
- // If max panel brightness is not the default (255),
- // apply linear scaling across the accepted range.
- if (mLcdBacklight.second != DEFAULT_MAX_BRIGHTNESS) {
- int old_brightness = brightness;
- brightness = brightness * mLcdBacklight.second / DEFAULT_MAX_BRIGHTNESS;
- LOG(VERBOSE) << "scaling brightness " << old_brightness << " => " << brightness;
- }
-
- mLcdBacklight.first << brightness << std::endl;
-}
-
-void Light::setBatteryLight(const LightState& state) {
- std::lock_guard<std::mutex> lock(mLock);
- mBatteryState = state;
- setSpeakerBatteryLightLocked();
-}
-
-void Light::setNotificationLight(const LightState& state) {
- std::lock_guard<std::mutex> lock(mLock);
- mNotificationState = state;
- setSpeakerBatteryLightLocked();
-}
-
-void Light::setSpeakerBatteryLightLocked() {
- if (isLit(mNotificationState)) {
- setSpeakerLightLocked(mNotificationState);
- } else if (isLit(mAttentionState)) {
- setSpeakerLightLocked(mAttentionState);
- } else if (isLit(mBatteryState)) {
- setSpeakerLightLocked(mBatteryState);
- } else {
- // Lights off
- mRedLed << 0 << std::endl;
- mGreenLed << 0 << std::endl;
- mBlueLed << 0 << std::endl;
- mRedBlink << 0 << std::endl;
- mGreenBlink << 0 << std::endl;
- mBlueBlink << 0 << std::endl;
- }
-}
-
-void Light::setSpeakerLightLocked(const LightState& state) {
- int red, green, blue, blink;
- int onMs, offMs, stepDuration, pauseHi;
- uint32_t alpha;
-
- // 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;
- }
-
- switch (state.flashMode) {
- case Flash::TIMED:
- onMs = state.flashOnMs;
- offMs = state.flashOffMs;
- break;
- case Flash::NONE:
- default:
- onMs = 0;
- offMs = 0;
- break;
- }
- blink = onMs > 0 && offMs > 0;
-
- // Disable all blinking to start
- mRgbBlink << 0 << std::endl;
-
- if (blink) {
- stepDuration = RAMP_STEP_DURATION;
- pauseHi = onMs - (stepDuration * RAMP_SIZE * 2);
-
- if (stepDuration * RAMP_SIZE * 2 > onMs) {
- stepDuration = onMs / (RAMP_SIZE * 2);
- pauseHi = 0;
- }
-
- // Red
- mRedStartIdx << 0 << std::endl;
- mRedDutyPcts << getScaledDutyPcts(red) << std::endl;
- mRedPauseLo << offMs << std::endl;
- mRedPauseHi << pauseHi << std::endl;
- mRedRampStepMs << stepDuration << std::endl;
-
- // Green
- mGreenStartIdx << RAMP_SIZE << std::endl;
- mGreenDutyPcts << getScaledDutyPcts(green) << std::endl;
- mGreenPauseLo << offMs << std::endl;
- mGreenPauseHi << pauseHi << std::endl;
- mGreenRampStepMs << stepDuration << std::endl;
-
- // Blue
- mBlueStartIdx << RAMP_SIZE * 2 << std::endl;
- mBlueDutyPcts << getScaledDutyPcts(blue) << std::endl;
- mBluePauseLo << offMs << std::endl;
- mBluePauseHi << pauseHi << std::endl;
- mBlueRampStepMs << stepDuration << std::endl;
-
- // Start the party
- mRgbBlink << 1 << std::endl;
- } else {
- if (red == 0 && green == 0 && blue == 0) {
- mRedBlink << 0 << std::endl;
- mGreenBlink << 0 << std::endl;
- mBlueBlink << 0 << std::endl;
- }
- mRedLed << red << std::endl;
- mGreenLed << green << std::endl;
- mBlueLed << blue << std::endl;
- }
-}
-
-} // namespace implementation
-} // namespace V2_0
-} // namespace light
-} // namespace hardware
-} // namespace android
diff --git a/light/Light.h b/light/Light.h
deleted file mode 100644
index 958d215..0000000
--- a/light/Light.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2018 The LineageOS Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_LIGHT_V2_0_LIGHT_H
-#define ANDROID_HARDWARE_LIGHT_V2_0_LIGHT_H
-
-#include <android/hardware/light/2.0/ILight.h>
-#include <hidl/Status.h>
-
-#include <fstream>
-#include <mutex>
-#include <unordered_map>
-
-namespace android {
-namespace hardware {
-namespace light {
-namespace V2_0 {
-namespace implementation {
-
-struct Light : public ILight {
- Light(std::pair<std::ofstream, uint32_t>&& lcd_backlight,
- std::ofstream&& red_led, std::ofstream&& green_led, std::ofstream&& blue_led,
- std::ofstream&& red_duty_pcts, std::ofstream&& green_duty_pcts, std::ofstream&& blue_duty_pcts,
- std::ofstream&& red_start_idx, std::ofstream&& green_start_idx, std::ofstream&& blue_start_idx,
- std::ofstream&& red_pause_lo, std::ofstream&& green_pause_lo, std::ofstream&& blue_pause_lo,
- std::ofstream&& red_pause_hi, std::ofstream&& green_pause_hi, std::ofstream&& blue_pause_hi,
- std::ofstream&& red_ramp_step_ms, std::ofstream&& green_ramp_step_ms, std::ofstream&& blue_ramp_step_ms,
- std::ofstream&& red_blink, std::ofstream&& green_blink, std::ofstream&& blue_blink,
- std::ofstream&& rgb_blink);
-
- // Methods from ::android::hardware::light::V2_0::ILight follow.
- Return<Status> setLight(Type type, const LightState& state) override;
- Return<void> getSupportedTypes(getSupportedTypes_cb _hidl_cb) override;
-
- private:
- void setAttentionLight(const LightState& state);
- void setBatteryLight(const LightState& state);
- void setLcdBacklight(const LightState& state);
- void setNotificationLight(const LightState& state);
- void setSpeakerBatteryLightLocked();
- void setSpeakerLightLocked(const LightState& state);
-
- std::pair<std::ofstream, uint32_t> mLcdBacklight;
- std::ofstream mRedLed;
- std::ofstream mGreenLed;
- std::ofstream mBlueLed;
- std::ofstream mRedDutyPcts;
- std::ofstream mGreenDutyPcts;
- std::ofstream mBlueDutyPcts;
- std::ofstream mRedStartIdx;
- std::ofstream mGreenStartIdx;
- std::ofstream mBlueStartIdx;
- std::ofstream mRedPauseLo;
- std::ofstream mGreenPauseLo;
- std::ofstream mBluePauseLo;
- std::ofstream mRedPauseHi;
- std::ofstream mGreenPauseHi;
- std::ofstream mBluePauseHi;
- std::ofstream mRedRampStepMs;
- std::ofstream mGreenRampStepMs;
- std::ofstream mBlueRampStepMs;
- std::ofstream mRedBlink;
- std::ofstream mGreenBlink;
- std::ofstream mBlueBlink;
- std::ofstream mRgbBlink;
-
- LightState mAttentionState;
- LightState mBatteryState;
- LightState mNotificationState;
-
- std::unordered_map<Type, std::function<void(const LightState&)>> mLights;
- std::mutex mLock;
-};
-
-} // namespace implementation
-} // namespace V2_0
-} // namespace light
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_LIGHT_V2_0_LIGHT_H
diff --git a/light/android.hardware.light@2.0-service.zuk_8996.rc b/light/android.hardware.light@2.0-service.zuk_8996.rc
deleted file mode 100644
index f34de8c..0000000
--- a/light/android.hardware.light@2.0-service.zuk_8996.rc
+++ /dev/null
@@ -1,70 +0,0 @@
-on init
- # RGB lights
- chown system system /sys/class/leds/red/brightness
- chown system system /sys/class/leds/green/brightness
- chown system system /sys/class/leds/blue/brightness
-
- chown system system /sys/class/leds/red/pause_lo
- chown system system /sys/class/leds/green/pause_lo
- chown system system /sys/class/leds/blue/pause_lo
-
- chown system system /sys/class/leds/red/pause_hi
- chown system system /sys/class/leds/green/pause_hi
- chown system system /sys/class/leds/blue/pause_hi
-
- chown system system /sys/class/leds/red/blink
- chown system system /sys/class/leds/green/blink
- chown system system /sys/class/leds/blue/blink
-
- chown system system /sys/class/leds/rgb/rgb_blink
-
- chown system system /sys/class/leds/red/ramp_step_ms
- chown system system /sys/class/leds/green/ramp_step_ms
- chown system system /sys/class/leds/blue/ramp_step_ms
-
- chown system system /sys/class/leds/red/duty_pcts
- chown system system /sys/class/leds/green/duty_pcts
- chown system system /sys/class/leds/blue/duty_pcts
-
- chown system system /sys/class/leds/red/start_idx
- chown system system /sys/class/leds/green/start_idx
- chown system system /sys/class/leds/blue/start_idx
-
- chown system system /sys/class/leds/blue/lut_flags
- chown system system /sys/class/leds/red/lut_flags
- chown system system /sys/class/leds/green/lut_flags
-
- chmod 660 /sys/class/leds/red/brightness
- chmod 660 /sys/class/leds/green/brightness
- chmod 660 /sys/class/leds/blue/brightness
-
- chmod 660 /sys/class/leds/red/ramp_step_ms
- chmod 660 /sys/class/leds/green/ramp_step_ms
- chmod 660 /sys/class/leds/blue/ramp_step_ms
-
- chmod 660 /sys/class/leds/red/duty_pcts
- chmod 660 /sys/class/leds/green/duty_pcts
- chmod 660 /sys/class/leds/blue/duty_pcts
-
- chmod 660 /sys/class/leds/red/start_idx
- chmod 660 /sys/class/leds/green/start_idx
- chmod 660 /sys/class/leds/blue/start_idx
-
- chmod 660 /sys/class/leds/blue/lut_flags
- chmod 660 /sys/class/leds/red/lut_flags
- chmod 660 /sys/class/leds/green/lut_flags
-
- chmod 660 /sys/class/leds/blue/pause_lo
- chmod 660 /sys/class/leds/red/pause_lo
- chmod 660 /sys/class/leds/green/pause_lo
-
- chmod 660 /sys/class/leds/rgb/rgb_blink
-
-service vendor.light-hal-2-0 /vendor/bin/hw/android.hardware.light@2.0-service.zuk_8996
- interface android.hardware.light@2.0::ILight default
- class hal
- user system
- group system
- # shutting off lights while powering-off
- shutdown critical
- writepid /dev/cpuset/system-background/tasks
diff --git a/light/android.hardware.light@2.0-service.zuk_8996.xml b/light/android.hardware.light@2.0-service.zuk_8996.xml
deleted file mode 100644
index 6bf62e9..0000000
--- a/light/android.hardware.light@2.0-service.zuk_8996.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<manifest version="1.0" type="device">
- <hal format="hidl">
- <name>android.hardware.light</name>
- <transport>hwbinder</transport>
- <version>2.0</version>
- <interface>
- <name>ILight</name>
- <instance>default</instance>
- </interface>
- </hal>
-</manifest>
diff --git a/light/service.cpp b/light/service.cpp
deleted file mode 100644
index 6eae236..0000000
--- a/light/service.cpp
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (C) 2018 The LineageOS Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "android.hardware.light@2.0-service.zuk_8996"
-
-#include <android-base/logging.h>
-#include <hidl/HidlTransportSupport.h>
-#include <utils/Errors.h>
-
-#include "Light.h"
-
-using android::hardware::configureRpcThreadpool;
-using android::hardware::joinRpcThreadpool;
-
-// Generated HIDL files
-using android::hardware::light::V2_0::ILight;
-using android::hardware::light::V2_0::implementation::Light;
-
-const static std::string kLcdBacklightPath = "/sys/class/leds/lcd-backlight/brightness";
-const static std::string kLcdMaxBacklightPath = "/sys/class/leds/lcd-backlight/max_brightness";
-const static std::string kRedLedPath = "/sys/class/leds/red/brightness";
-const static std::string kGreenLedPath = "/sys/class/leds/green/brightness";
-const static std::string kBlueLedPath = "/sys/class/leds/blue/brightness";
-const static std::string kRedDutyPctsPath = "/sys/class/leds/red/duty_pcts";
-const static std::string kGreenDutyPctsPath = "/sys/class/leds/green/duty_pcts";
-const static std::string kBlueDutyPctsPath = "/sys/class/leds/blue/duty_pcts";
-const static std::string kRedStartIdxPath = "/sys/class/leds/red/start_idx";
-const static std::string kGreenStartIdxPath = "/sys/class/leds/green/start_idx";
-const static std::string kBlueStartIdxPath = "/sys/class/leds/blue/start_idx";
-const static std::string kRedPauseLoPath = "/sys/class/leds/red/pause_lo";
-const static std::string kGreenPauseLoPath = "/sys/class/leds/green/pause_lo";
-const static std::string kBluePauseLoPath = "/sys/class/leds/blue/pause_lo";
-const static std::string kRedPauseHiPath = "/sys/class/leds/red/pause_hi";
-const static std::string kGreenPauseHiPath = "/sys/class/leds/green/pause_hi";
-const static std::string kBluePauseHiPath = "/sys/class/leds/blue/pause_hi";
-const static std::string kRedRampStepMsPath = "/sys/class/leds/red/ramp_step_ms";
-const static std::string kGreenRampStepMsPath = "/sys/class/leds/green/ramp_step_ms";
-const static std::string kBlueRampStepMsPath = "/sys/class/leds/blue/ramp_step_ms";
-const static std::string kRedBlinkPath = "/sys/class/leds/red/blink";
-const static std::string kGreenBlinkPath = "/sys/class/leds/green/blink";
-const static std::string kBlueBlinkPath = "/sys/class/leds/blue/blink";
-const static std::string kRgbBlinkPath = "/sys/class/leds/rgb/rgb_blink";
-
-int main() {
- uint32_t lcdMaxBrightness = 255;
-
- std::ofstream lcdBacklight(kLcdBacklightPath);
- if (!lcdBacklight) {
- LOG(ERROR) << "Failed to open " << kLcdBacklightPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ifstream lcdMaxBacklight(kLcdMaxBacklightPath);
- if (!lcdMaxBacklight) {
- LOG(ERROR) << "Failed to open " << kLcdMaxBacklightPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- } else {
- lcdMaxBacklight >> lcdMaxBrightness;
- }
-
- std::ofstream redLed(kRedLedPath);
- if (!redLed) {
- LOG(ERROR) << "Failed to open " << kRedLedPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream greenLed(kGreenLedPath);
- if (!greenLed) {
- LOG(ERROR) << "Failed to open " << kGreenLedPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream blueLed(kBlueLedPath);
- if (!blueLed) {
- LOG(ERROR) << "Failed to open " << kBlueLedPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream redDutyPcts(kRedDutyPctsPath);
- if (!redDutyPcts) {
- LOG(ERROR) << "Failed to open " << kRedDutyPctsPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream greenDutyPcts(kGreenDutyPctsPath);
- if (!greenDutyPcts) {
- LOG(ERROR) << "Failed to open " << kGreenDutyPctsPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream blueDutyPcts(kBlueDutyPctsPath);
- if (!blueDutyPcts) {
- LOG(ERROR) << "Failed to open " << kBlueDutyPctsPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream redStartIdx(kRedStartIdxPath);
- if (!redStartIdx) {
- LOG(ERROR) << "Failed to open " << kRedStartIdxPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream greenStartIdx(kGreenStartIdxPath);
- if (!greenStartIdx) {
- LOG(ERROR) << "Failed to open " << kGreenStartIdxPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream blueStartIdx(kBlueStartIdxPath);
- if (!blueStartIdx) {
- LOG(ERROR) << "Failed to open " << kBlueStartIdxPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream redPauseLo(kRedPauseLoPath);
- if (!redPauseLo) {
- LOG(ERROR) << "Failed to open " << kRedPauseLoPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream greenPauseLo(kGreenPauseLoPath);
- if (!greenPauseLo) {
- LOG(ERROR) << "Failed to open " << kGreenPauseLoPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream bluePauseLo(kBluePauseLoPath);
- if (!bluePauseLo) {
- LOG(ERROR) << "Failed to open " << kBluePauseLoPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream redPauseHi(kRedPauseHiPath);
- if (!redPauseHi) {
- LOG(ERROR) << "Failed to open " << kRedPauseHiPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream greenPauseHi(kGreenPauseHiPath);
- if (!greenPauseHi) {
- LOG(ERROR) << "Failed to open " << kGreenPauseHiPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream bluePauseHi(kBluePauseHiPath);
- if (!bluePauseHi) {
- LOG(ERROR) << "Failed to open " << kBluePauseHiPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream redRampStepMs(kRedRampStepMsPath);
- if (!redRampStepMs) {
- LOG(ERROR) << "Failed to open " << kRedRampStepMsPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream greenRampStepMs(kGreenRampStepMsPath);
- if (!greenRampStepMs) {
- LOG(ERROR) << "Failed to open " << kGreenRampStepMsPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream blueRampStepMs(kBlueRampStepMsPath);
- if (!blueRampStepMs) {
- LOG(ERROR) << "Failed to open " << kBlueRampStepMsPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream redBlink(kRedBlinkPath);
- if (!redBlink) {
- LOG(ERROR) << "Failed to open " << kRedBlinkPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream greenBlink(kGreenBlinkPath);
- if (!greenBlink) {
- LOG(ERROR) << "Failed to open " << kGreenBlinkPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream blueBlink(kBlueBlinkPath);
- if (!blueBlink) {
- LOG(ERROR) << "Failed to open " << kBlueBlinkPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- std::ofstream rgbBlink(kRgbBlinkPath);
- if (!rgbBlink) {
- LOG(ERROR) << "Failed to open " << kRgbBlinkPath << ", error=" << errno
- << " (" << strerror(errno) << ")";
- return -errno;
- }
-
- android::sp<ILight> service = new Light(
- {std::move(lcdBacklight), lcdMaxBrightness},
- std::move(redLed), std::move(greenLed), std::move(blueLed),
- std::move(redDutyPcts), std::move(greenDutyPcts), std::move(blueDutyPcts),
- std::move(redStartIdx), std::move(greenStartIdx), std::move(blueStartIdx),
- std::move(redPauseLo), std::move(greenPauseLo), std::move(bluePauseLo),
- std::move(redPauseHi), std::move(greenPauseHi), std::move(bluePauseHi),
- std::move(redRampStepMs), std::move(greenRampStepMs), std::move(blueRampStepMs),
- std::move(redBlink), std::move(greenBlink), std::move(blueBlink),
- std::move(rgbBlink));
-
- configureRpcThreadpool(1, true);
-
- android::status_t status = service->registerAsService();
-
- if (status != android::OK) {
- LOG(ERROR) << "Cannot register Light HAL service";
- return 1;
- }
-
- LOG(INFO) << "Light HAL Ready.";
- joinRpcThreadpool();
- // Under normal cases, execution will not reach this line.
- LOG(ERROR) << "Light HAL failed to join thread pool.";
- return 1;
-}