//Chris Xiong 2018 //3-Clause BSD License #ifndef BRIGHTNESS_CTRL_HPP #define BRIGHTNESS_CTRL_HPP #include #include #include #include #include #include #include "sensor_als.hpp" class BrightnessControl { private: filesystem::path cpath,brpath,maxbrpath; std::vector thresh,value; int delay,direction,br,maxbr,minabr,tr,offset; int doffset; size_t cur; SensorALS *als; std::mutex interrupt_m,threshnotify_m,adjust_m; std::condition_variable interrupt,threshnotify; void _brightness_slide(int p); public: void init(float initv,SensorALS *s); void set_path(filesystem::path p); void set_thresh(const std::vector &_th); void set_value(const std::vector &_v); void set_delay(int _d); void set_trigrange(int _tr); void set_minabr(int _mbr); void set_offset(int rel,int off); void set_frozen(bool frozen); int get_offset(); int get_brightness(); void force_adjust(); void on_sensor_report(float v); void brightness_slide(int p); void worker(); }; #endif