Stairs/src/settings/triggers/time.h

70 lines
1.2 KiB
C++

/*
* Stairs
* Copyright 2017 (c) Mark van Renswoude
*
* https://git.x2software.net/pub/Stairs
*/
#ifndef __settingstriggerstime
#define __settingstriggerstime
#include <Arduino.h>
#include <TimeLib.h>
enum DayOfWeek
{
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
};
extern timeDayOfWeek_t toTimeDayOfWeek(DayOfWeek day);
extern DayOfWeek toDayOfWeek(timeDayOfWeek_t timeDay);
enum TimeTriggerType
{
FixedTime = 0,
RelativeToSunrise = 1,
RelativeToSunset = 2
};
struct TimeTrigger
{
uint16_t timeOfDay;
uint8_t daysOfWeek;
uint8_t brightness;
TimeTriggerType triggerType;
bool enabled;
};
class TimeTriggerSettings
{
private:
uint16_t mTransitionTime = 0;
uint8_t mTriggerCount = 0;
TimeTrigger* mTriggers = nullptr;
public:
void read();
void write();
uint16_t transitionTime() { return mTransitionTime; }
void transitionTime(uint16_t value) { mTransitionTime = value; }
uint8_t triggerCount() { return mTriggerCount; }
TimeTrigger* trigger(uint8_t index) { return &mTriggers[index]; }
void beginSetTriggers(uint8_t count);
void setTrigger(uint8_t index, TimeTrigger* value);
void endSetTriggers();
};
#endif