22#ifndef INCLUDE_HUEPLUSPLUS_TIME_PATTERN
23#define INCLUDE_HUEPLUSPLUS_TIME_PATTERN
49std::chrono::system_clock::time_point
parseTimestamp(
const std::string& timestamp);
57std::chrono::system_clock::time_point
parseUTCTimestamp(
const std::string& timestamp);
69std::chrono::system_clock::duration
parseDuration(
const std::string& hourMinSec);
74 using clock = std::chrono::system_clock;
102 clock::time_point base;
110 using clock = std::chrono::system_clock;
117 explicit AbsoluteVariedTime(clock::time_point baseTime, clock::duration variation = std::chrono::seconds(0));
138 clock::duration variation;
223 using clock = std::chrono::system_clock;
231 explicit RecurringTime(clock::duration daytime,
Weekdays days, clock::duration variation = std::chrono::seconds(0));
251 clock::duration time;
252 clock::duration variation;
262 using clock = std::chrono::system_clock;
287 clock::duration start;
298 using clock = std::chrono::system_clock;
307 Timer(clock::duration duration, clock::duration variation = std::chrono::seconds(0));
312 Timer(clock::duration duration,
int numExecutions, clock::duration variation = std::chrono::seconds(0));
342 clock::duration expires;
343 clock::duration variation;
One-time, absolute time point.
Definition TimePattern.h:73
clock::time_point getBaseTime() const
Get base time point.
Definition TimePattern.cpp:155
static AbsoluteTime parseUTC(const std::string &s)
Parse AbsoluteTime from formatted UTC string.
Definition TimePattern.cpp:171
std::string toString() const
Get formatted string as expected by Hue API.
Definition TimePattern.cpp:159
static AbsoluteTime parse(const std::string &s)
Parse AbsoluteTime from formatted string in local timezone.
Definition TimePattern.cpp:164
Definition TimePattern.h:109
clock::duration getRandomVariation() const
Get random variation or zero.
Definition TimePattern.cpp:182
std::string toString() const
Get formatted string as expected by Hue API.
Definition TimePattern.cpp:200
static AbsoluteVariedTime parse(const std::string &s)
Parse AbsoluteTime from formatted string in local timezone.
Definition TimePattern.cpp:187
Time repeated weekly to daily, with possible random variation.
Definition TimePattern.h:222
clock::duration getRandomVariation() const
Get random variation.
Definition TimePattern.cpp:336
std::string toString() const
Get formatted string as expected by Hue API.
Definition TimePattern.cpp:346
clock::duration getDaytime() const
Get time of day.
Definition TimePattern.cpp:331
Weekdays getWeekdays() const
Get days on which the repetition will happen.
Definition TimePattern.cpp:341
Time interval repeated daily to weekly.
Definition TimePattern.h:261
clock::duration getEndTime() const
Get end time of the interval.
Definition TimePattern.cpp:369
std::string toString() const
Get formatted string as expected by Hue API.
Definition TimePattern.cpp:379
Weekdays getWeekdays() const
Get active days.
Definition TimePattern.cpp:374
clock::duration getStartTime() const
Get start time of the interval.
Definition TimePattern.cpp:364
Holds different time representations.
Definition TimePattern.h:352
static TimePattern parse(const std::string &s)
Parses TimePattern from formatted string as returned by Hue API.
Definition TimePattern.cpp:555
AbsoluteVariedTime absolute
Definition TimePattern.h:427
TimeInterval interval
Definition TimePattern.h:429
RecurringTime recurring
Definition TimePattern.h:428
RecurringTime asRecurring() const
Get contained recurring time.
Definition TimePattern.cpp:521
Timer timer
Definition TimePattern.h:430
std::nullptr_t undefined
Definition TimePattern.h:426
TimePattern & operator=(const TimePattern &other)
Copy assignment for union.
Definition TimePattern.cpp:472
TimeInterval asInterval() const
Get contained time interval.
Definition TimePattern.cpp:526
AbsoluteVariedTime asAbsolute() const
Get contained absolute time.
Definition TimePattern.cpp:516
Type
Currently active type.
Definition TimePattern.h:356
TimePattern()
Create empty TimePattern.
Definition TimePattern.cpp:452
~TimePattern()
Destructor for union.
Definition TimePattern.cpp:454
Type getType() const
Get currently active type.
Definition TimePattern.cpp:511
std::string toString() const
Get formatted string of the contained value as expected by Hue API.
Definition TimePattern.cpp:536
Timer asTimer() const
Get contained timer.
Definition TimePattern.cpp:531
Timer that is started and triggers after specified delay.
Definition TimePattern.h:297
clock::duration getExpiryTime() const
Get expiry time.
Definition TimePattern.cpp:414
int getNumberOfExecutions() const
Get number of executions.
Definition TimePattern.cpp:409
static constexpr int infiniteExecutions
Definition TimePattern.h:302
bool isRecurring() const
Returns true when the timer is executed more than once.
Definition TimePattern.cpp:404
clock::duration getRandomVariation() const
Get random variation of expiry time.
Definition TimePattern.cpp:419
std::string toString() const
Get formatted string as expected by Hue API.
Definition TimePattern.cpp:424
Any number of days of the week.
Definition TimePattern.h:145
Weekdays operator|(Weekdays other) const
Create set union with other Weekdays.
Definition TimePattern.h:178
static Weekdays sunday()
Creates Sunday.
Definition TimePattern.cpp:315
Weekdays()
Create with no days.
Definition TimePattern.h:148
static Weekdays saturday()
Creates Saturday.
Definition TimePattern.cpp:310
bool isAll() const
Check if all days are set.
Definition TimePattern.cpp:216
bool operator==(const Weekdays &other) const
Check whether all days are equal.
Definition TimePattern.h:209
bool isTuesday() const
Check if Tuesday is contained.
Definition TimePattern.cpp:227
static Weekdays all()
Creates set of all days.
Definition TimePattern.cpp:278
bool isNone() const
Check if no days are set.
Definition TimePattern.cpp:211
bool isWednesday() const
Check if Wednesday is contained.
Definition TimePattern.cpp:232
bool isSaturday() const
Check if Saturday is contained.
Definition TimePattern.cpp:247
bool operator!=(const Weekdays &other) const
Check whether not all days are equal.
Definition TimePattern.h:211
bool isThursday() const
Check if Thursday is contained.
Definition TimePattern.cpp:237
std::string toString() const
Create a formatted, numeric string.
Definition TimePattern.cpp:257
static Weekdays monday()
Creates Monday.
Definition TimePattern.cpp:285
static Weekdays friday()
Creates Friday.
Definition TimePattern.cpp:305
bool isFriday() const
Check if Friday is contained.
Definition TimePattern.cpp:242
Weekdays(int num)
Create with the day num.
Definition TimePattern.h:151
bool isSunday() const
Check if Sunday is contained.
Definition TimePattern.cpp:252
bool isMonday() const
Check if Monday is contained.
Definition TimePattern.cpp:222
static Weekdays thursday()
Creates Thursday.
Definition TimePattern.cpp:300
Weekdays unionWith(Weekdays other) const
Create set union with other Weekdays.
Definition TimePattern.cpp:267
static Weekdays tuesday()
Creates Tuesday.
Definition TimePattern.cpp:290
static Weekdays none()
Creates an empty Weekdays.
Definition TimePattern.cpp:273
static Weekdays wednesday()
Creates Wednesday.
Definition TimePattern.cpp:295
static Weekdays parse(const std::string &s)
Parse from three digit code.
Definition TimePattern.cpp:320
std::chrono::system_clock::time_point parseUTCTimestamp(const std::string ×tamp)
Converts an UTC timestamp to a time_point.
Definition TimePattern.cpp:90
std::chrono::system_clock::time_point parseTimestamp(const std::string ×tamp)
Converts a timestamp to a time_point.
Definition TimePattern.cpp:79
std::chrono::system_clock::duration parseDuration(const std::string &hourMinSec)
Converts time string to a duration.
Definition TimePattern.cpp:144
std::string durationTo_hh_mm_ss(std::chrono::system_clock::duration duration)
Converts duration to a time string.
Definition TimePattern.cpp:126
std::string timepointToTimestamp(std::chrono::system_clock::time_point time)
Converts a time_point to a timestamp string.
Definition TimePattern.cpp:58
Namespace for the hueplusplus library.
Definition Action.h:28