/*
 * Copyright (C) 2018 The LineageOS Project
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#pragma once

#include <aidl/android/hardware/light/BnLights.h>
#include <android-base/logging.h>
#include <hardware/hardware.h>
#include <hardware/lights.h>
#include <vector>

static unsigned int brightness_table_0x7ff[256] = {
    0,    1,    9,    33,   49,   73,   89,   113,  218,  299,  379,  444,
    484,  540,  580,  629,  669,  685,  725,  766,  790,  830,  854,  870,
    911,  935,  951,  991,  1015, 1040, 1056, 1080, 1096, 1120, 1136, 1160,
    1160, 1160, 1160, 1225, 1225, 1241, 1265, 1265, 1281, 1281, 1305, 1305,
    1322, 1322, 1346, 1346, 1362, 1362, 1386, 1386, 1402, 1402, 1426, 1426,
    1426, 1450, 1450, 1450, 1467, 1467, 1467, 1491, 1491, 1491, 1507, 1507,
    1507, 1531, 1531, 1531, 1531, 1547, 1547, 1547, 1547, 1571, 1571, 1587,
    1587, 1587, 1587, 1587, 1612, 1612, 1612, 1636, 1636, 1636, 1636, 1636,
    1652, 1652, 1652, 1652, 1652, 1676, 1676, 1676, 1676, 1676, 1692, 1692,
    1692, 1692, 1692, 1716, 1716, 1716, 1716, 1716, 1732, 1732, 1732, 1732,
    1732, 1732, 1732, 1732, 1757, 1757, 1757, 1757, 1773, 1773, 1773, 1773,
    1773, 1773, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797,
    1813, 1813, 1813, 1813, 1813, 1813, 1813, 1837, 1837, 1837, 1837, 1837,
    1837, 1837, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
    1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1902, 1902, 1902,
    1902, 1902, 1902, 1902, 1902, 1902, 1918, 1918, 1918, 1918, 1918, 1918,
    1918, 1918, 1918, 1918, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942,
    1942, 1942, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958,
    1958, 1958, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982, 1982,
    1982, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998,
    1998, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
    2022, 2022, 2047, 2047
};

static unsigned int brightness_table_0xfff[256] = {
    0,    1,    17,   65,   97,   146,  178,  226,  436,  597,  758,  887,
    968,  1080, 1161, 1258, 1338, 1371, 1451, 1532, 1580, 1661, 1709, 1741,
    1822, 1870, 1902, 1983, 2031, 2080, 2112, 2160, 2193, 2241, 2273, 2322,
    2322, 2322, 2322, 2450, 2450, 2483, 2531, 2531, 2563, 2563, 2612, 2612,
    2644, 2644, 2692, 2692, 2724, 2724, 2773, 2773, 2805, 2805, 2853, 2853,
    2853, 2902, 2902, 2902, 2934, 2934, 2934, 2982, 2982, 2982, 3015, 3015,
    3015, 3063, 3063, 3063, 3063, 3095, 3095, 3095, 3095, 3144, 3144, 3176,
    3176, 3176, 3176, 3176, 3224, 3224, 3224, 3272, 3272, 3272, 3272, 3272,
    3305, 3305, 3305, 3305, 3305, 3353, 3353, 3353, 3353, 3353, 3385, 3385,
    3385, 3385, 3385, 3434, 3434, 3434, 3434, 3434, 3466, 3466, 3466, 3466,
    3466, 3466, 3466, 3466, 3514, 3514, 3514, 3514, 3546, 3546, 3546, 3546,
    3546, 3546, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595,
    3627, 3627, 3627, 3627, 3627, 3627, 3627, 3675, 3675, 3675, 3675, 3675,
    3675, 3675, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724,
    3756, 3756, 3756, 3756, 3756, 3756, 3756, 3756, 3756, 3804, 3804, 3804,
    3804, 3804, 3804, 3804, 3804, 3804, 3837, 3837, 3837, 3837, 3837, 3837,
    3837, 3837, 3837, 3837, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885,
    3885, 3885, 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3917,
    3917, 3917, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966,
    3966, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998, 3998,
    3998, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046, 4046,
    4046, 4046, 4095, 4095
};

using ::aidl::android::hardware::light::HwLightState;
using ::aidl::android::hardware::light::HwLight;
using ::aidl::android::hardware::light::LightType;
using ::aidl::android::hardware::light::BnLights;

namespace aidl {
namespace android {
namespace hardware {
namespace light {

class Lights : public BnLights {
      ndk::ScopedAStatus setLightState(int id, const HwLightState& state) override;
      ndk::ScopedAStatus getLights(std::vector<HwLight>* types) override;
};

}  // namespace light
}  // namespace hardware
}  // namespace android
}  // namespace aidl
