aboutsummaryrefslogtreecommitdiff
path: root/light/Light.h
diff options
context:
space:
mode:
authorBruno Martins <bgcngm@gmail.com>2018-01-19 15:42:00 +0000
committerDavide Garberi <dade.garberi@gmail.com>2018-01-25 17:06:44 +0100
commite03f3220a3bb949ca5c11b78de3c6ce5228b0d19 (patch)
tree69e5478269bda2d50354ce8c6f821c37e5075833 /light/Light.h
parent01a7a3c04cde89a3ba8c81d55c3d29d9309ae8b5 (diff)
msm8996-common: Convert lights HAL into a native binderized HAL
Change-Id: If41458e22b9a67a5c2a415571723917df1904aa1 Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Diffstat (limited to 'light/Light.h')
-rw-r--r--light/Light.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/light/Light.h b/light/Light.h
new file mode 100644
index 0000000..f21e19e
--- /dev/null
+++ b/light/Light.h
@@ -0,0 +1,97 @@
+/*
+ * 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::vector<std::ofstream>&& button_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 setButtonsBacklight(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::vector<std::ofstream> mButtonBacklight;
+ 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