Add Triggers
This commit is contained in:
@@ -6,6 +6,13 @@ LFLAGS += -lUtilities
|
||||
LFLAGS += -L$(ROOTPATH)/Libraries/Utilities/lib/$(ARCH)
|
||||
CFLAGS += -I$(ROOTPATH)/Libraries/Utilities/include
|
||||
|
||||
LFLAGS += -lDateTime
|
||||
LFLAGS += -L$(ROOTPATH)/Libraries/DateTime/lib/$(ARCH)
|
||||
CFLAGS += -I$(ROOTPATH)/Libraries/DateTime/include
|
||||
|
||||
CFLAGS += -I$(ROOTPATH)/Libraries/asio/asio/include
|
||||
CFLAGS += -I$(ROOTPATH)/Libraries/SimpleSignal
|
||||
|
||||
LFLAGS += -lTimer
|
||||
LFLAGS += -L$(ROOTPATH)/lib/$(ARCH)
|
||||
CFLAGS += -I$(ROOTPATH) -I$(ROOTPATH)/include
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
#include "Trigger.h"
|
||||
#include <date.h>
|
||||
#include <DateTime.h>
|
||||
|
||||
|
||||
namespace Timer {
|
||||
|
||||
asio::system_timer::time_point Trigger::Second()
|
||||
{
|
||||
return Second(std::chrono::system_clock::now());
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Minute()
|
||||
{
|
||||
return Minute(std::chrono::system_clock::now());
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Hour()
|
||||
{
|
||||
return Hour(std::chrono::system_clock::now());
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Day()
|
||||
{
|
||||
return Day(std::chrono::system_clock::now());
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Seconds(int seconds)
|
||||
{
|
||||
return Seconds(std::chrono::system_clock::now(), seconds);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Minutes(int minutes)
|
||||
{
|
||||
return Minutes(std::chrono::system_clock::now(), minutes);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Hours(int hours)
|
||||
{
|
||||
return Hours(std::chrono::system_clock::now(), hours);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::SecondsMultitude(int seconds)
|
||||
{
|
||||
return SecondsMultitude(std::chrono::system_clock::now(), seconds);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::MinutesMultitude(int minutes)
|
||||
{
|
||||
return MinutesMultitude(std::chrono::system_clock::now(), minutes);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::HoursMultitude(int hours)
|
||||
{
|
||||
return HoursMultitude(std::chrono::system_clock::now(), hours);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Second(std::chrono::time_point<std::chrono::system_clock> base)
|
||||
{
|
||||
return Seconds(base, 1);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Minute(std::chrono::time_point<std::chrono::system_clock> base)
|
||||
{
|
||||
return Minutes(base, 1);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Hour(std::chrono::time_point<std::chrono::system_clock> base)
|
||||
{
|
||||
return Hours(base, 1);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Day(std::chrono::time_point<std::chrono::system_clock> base)
|
||||
{
|
||||
asio::system_timer::time_point tomorrow = base + std::chrono::hours(24) + std::chrono::seconds(DateTime::GetUTCOffset());
|
||||
auto daypoint = date::floor<date::days>(tomorrow); // This call works on UTC
|
||||
auto yearMonthDay = date::year_month_day(daypoint);
|
||||
|
||||
DateTime::DateTime dateTime{
|
||||
static_cast<int>(yearMonthDay.year()),
|
||||
static_cast<unsigned>(yearMonthDay.month()),
|
||||
static_cast<unsigned>(yearMonthDay.day())
|
||||
};
|
||||
|
||||
return DateTime::DateTime_to_time_point(dateTime, date::current_zone());
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Seconds(std::chrono::time_point<std::chrono::system_clock> base, int seconds)
|
||||
{
|
||||
asio::system_timer::time_point now = base + std::chrono::seconds(1);
|
||||
auto time = date::make_time(now.time_since_epoch());
|
||||
asio::system_timer::duration targetTime = time.hours() + time.minutes() + time.seconds() + std::chrono::seconds(seconds);
|
||||
return asio::system_timer::time_point(targetTime);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Minutes(std::chrono::time_point<std::chrono::system_clock> base, int minutes)
|
||||
{
|
||||
asio::system_timer::time_point now = base + std::chrono::seconds(1);
|
||||
auto time = date::make_time(now.time_since_epoch());
|
||||
asio::system_timer::duration targetTime = time.hours() + time.minutes() + std::chrono::minutes(minutes);
|
||||
return asio::system_timer::time_point(targetTime);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::Hours(std::chrono::time_point<std::chrono::system_clock> base, int hours)
|
||||
{
|
||||
asio::system_timer::time_point now = base + std::chrono::seconds(1);
|
||||
auto time = date::make_time(now.time_since_epoch());
|
||||
asio::system_timer::duration targetTime = time.hours() + time.minutes() + std::chrono::hours(hours);
|
||||
return asio::system_timer::time_point(targetTime);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::SecondsMultitude(std::chrono::time_point<std::chrono::system_clock> base, int seconds)
|
||||
{
|
||||
asio::system_timer::time_point now = base + std::chrono::seconds(1);
|
||||
auto time = date::make_time(now.time_since_epoch());
|
||||
|
||||
auto baseSeconds = time.seconds() - std::chrono::seconds(time.seconds().count() % seconds);
|
||||
|
||||
asio::system_timer::duration targetTime = time.hours() + time.minutes() + baseSeconds + std::chrono::seconds(seconds);
|
||||
return asio::system_timer::time_point(targetTime);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::MinutesMultitude(std::chrono::time_point<std::chrono::system_clock> base, int minutes)
|
||||
{
|
||||
asio::system_timer::time_point now = base + std::chrono::seconds(1);
|
||||
auto time = date::make_time(now.time_since_epoch());
|
||||
|
||||
auto baseMinutes = time.minutes() - std::chrono::minutes(time.minutes().count() % minutes);
|
||||
|
||||
asio::system_timer::duration targetTime = time.hours() + baseMinutes + std::chrono::minutes(minutes);
|
||||
return asio::system_timer::time_point(targetTime);
|
||||
}
|
||||
|
||||
asio::system_timer::time_point Trigger::HoursMultitude(std::chrono::time_point<std::chrono::system_clock> base, int hours)
|
||||
{
|
||||
asio::system_timer::time_point now = base + std::chrono::seconds(1);
|
||||
auto time = date::make_time(now.time_since_epoch());
|
||||
|
||||
auto baseHours = time.hours() - std::chrono::hours(time.hours().count() % hours);
|
||||
|
||||
asio::system_timer::duration targetTime = baseHours + std::chrono::hours(hours);
|
||||
return asio::system_timer::time_point(targetTime);
|
||||
}
|
||||
|
||||
} // namespace Timer
|
||||
@@ -0,0 +1,41 @@
|
||||
#ifndef TRIGGER_H
|
||||
#define TRIGGER_H
|
||||
|
||||
#include <asio.hpp>
|
||||
|
||||
|
||||
namespace Timer {
|
||||
|
||||
class Trigger
|
||||
{
|
||||
public:
|
||||
static asio::system_timer::time_point Second();
|
||||
static asio::system_timer::time_point Minute();
|
||||
static asio::system_timer::time_point Hour();
|
||||
static asio::system_timer::time_point Day();
|
||||
|
||||
static asio::system_timer::time_point Seconds(int seconds);
|
||||
static asio::system_timer::time_point Minutes(int minutes);
|
||||
static asio::system_timer::time_point Hours(int hours);
|
||||
|
||||
static asio::system_timer::time_point SecondsMultitude(int seconds);
|
||||
static asio::system_timer::time_point MinutesMultitude(int minutes);
|
||||
static asio::system_timer::time_point HoursMultitude(int hours);
|
||||
|
||||
static asio::system_timer::time_point Second(std::chrono::time_point<std::chrono::system_clock> base);
|
||||
static asio::system_timer::time_point Minute(std::chrono::time_point<std::chrono::system_clock> base);
|
||||
static asio::system_timer::time_point Hour(std::chrono::time_point<std::chrono::system_clock> base);
|
||||
static asio::system_timer::time_point Day(std::chrono::time_point<std::chrono::system_clock> base);
|
||||
|
||||
static asio::system_timer::time_point Seconds(std::chrono::time_point<std::chrono::system_clock> base, int seconds);
|
||||
static asio::system_timer::time_point Minutes(std::chrono::time_point<std::chrono::system_clock> base, int minutes);
|
||||
static asio::system_timer::time_point Hours(std::chrono::time_point<std::chrono::system_clock> base, int hours);
|
||||
|
||||
static asio::system_timer::time_point SecondsMultitude(std::chrono::time_point<std::chrono::system_clock> base, int seconds);
|
||||
static asio::system_timer::time_point MinutesMultitude(std::chrono::time_point<std::chrono::system_clock> base, int minutes);
|
||||
static asio::system_timer::time_point HoursMultitude(std::chrono::time_point<std::chrono::system_clock> base, int hours);
|
||||
};
|
||||
|
||||
} // namespace Timer
|
||||
|
||||
#endif // TRIGGER_H
|
||||
Reference in New Issue
Block a user