|
|
- // -----------------------------------------------------------------------------
- // Lights
- // -----------------------------------------------------------------------------
-
- #pragma once
-
- namespace Light {
- constexpr const size_t ChannelsMax = 5;
-
- constexpr const long VALUE_MIN = LIGHT_MIN_VALUE;
- constexpr const long VALUE_MAX = LIGHT_MAX_VALUE;
-
- constexpr const long BRIGHTNESS_MIN = LIGHT_MIN_BRIGHTNESS;
- constexpr const long BRIGHTNESS_MAX = LIGHT_MAX_BRIGHTNESS;
-
- constexpr const long PWM_MIN = LIGHT_MIN_PWM;
- constexpr const long PWM_MAX = LIGHT_MAX_PWM;
- constexpr const long PWM_LIMIT = LIGHT_LIMIT_PWM;
-
- enum Communications : unsigned char {
- COMMS_NONE = 0,
- COMMS_NORMAL = 1 << 0,
- COMMS_GROUP = 1 << 1
- };
- }
-
- struct channel_t {
-
- channel_t();
- channel_t(unsigned char pin, bool inverse);
-
- unsigned char pin; // real GPIO pin
- bool inverse; // whether we should invert the value before using it
- bool state; // is the channel ON
- unsigned char inputValue; // raw value, without the brightness
- unsigned char value; // normalized value, including brightness
- unsigned char target; // target value
- double current; // transition value
-
- };
-
- size_t lightChannels();
-
- void lightState(unsigned char i, bool state);
- bool lightState(unsigned char i);
-
- void lightState(bool state);
- bool lightState();
-
- void lightBrightness(long brightness);
- long lightBrightness();
-
- long lightChannel(unsigned char id);
- void lightChannel(unsigned char id, long value);
-
- void lightBrightnessStep(long steps, long multiplier = LIGHT_STEP);
- void lightChannelStep(unsigned char id, long steps, long multiplier = LIGHT_STEP);
|