add: weekly schedules support
This commit is contained in:
parent
db3bcaf7d1
commit
2fd48ac5e6
18 changed files with 301 additions and 86 deletions
models
|
@ -3,6 +3,7 @@
|
|||
#include <uuid/uuid.h>
|
||||
|
||||
#include <logger.h>
|
||||
#include <helpers.h>
|
||||
#include <models/relay.h>
|
||||
|
||||
relay_t*
|
||||
|
@ -17,7 +18,10 @@ relay_create(uint8_t number)
|
|||
memset(off_id, 0, sizeof(uuid_t));
|
||||
memcpy(off_id, "off", 3);
|
||||
|
||||
new_relay->schedule = schedule_create(off_id, 0, NULL);
|
||||
for(int i = 0; i < 7; ++i)
|
||||
{
|
||||
new_relay->schedules[i] = schedule_create(off_id, i, 0, NULL);
|
||||
}
|
||||
|
||||
return new_relay;
|
||||
}
|
||||
|
@ -32,7 +36,8 @@ relay_set_name(relay_t *relay, const char *name)
|
|||
int
|
||||
relay_is_active(relay_t *relay, time_t timestamp_now)
|
||||
{
|
||||
if(relay->schedule->length == 0)
|
||||
schedule_t *schedule = relay->schedules[helper_get_weekday(timestamp_now)];
|
||||
if(schedule->length == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -42,9 +47,9 @@ relay_is_active(relay_t *relay, time_t timestamp_now)
|
|||
// finally remove seconds
|
||||
timestamp_now /= SECONDS_PER_MINUTE;
|
||||
|
||||
for(uint16_t i = 0; i < relay->schedule->length; ++i)
|
||||
for(uint16_t i = 0; i < schedule->length; ++i)
|
||||
{
|
||||
if(period_includes_time(relay->schedule->periods[i], timestamp_now))
|
||||
if(period_includes_time(schedule->periods[i], timestamp_now))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
@ -62,16 +67,19 @@ relay_debug(relay_t *relay)
|
|||
}
|
||||
LOG_DEBUG("(1/3) %d @ %p\n", relay->number, (void*)relay);
|
||||
LOG_DEBUG("(2/3) name: %s\n", relay->name);
|
||||
LOG_DEBUG("(3/3) schedule:\n");
|
||||
schedule_debug(relay->schedule);
|
||||
LOG_DEBUG("(3/3) schedules @ %p:\n", (void*)relay->schedules);
|
||||
for(int i = 0; i < 7; ++i)
|
||||
{
|
||||
schedule_debug(relay->schedules[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
relay_free(relay_t *relay)
|
||||
{
|
||||
if(relay->schedule)
|
||||
for(int i = 0; i < 7; ++i)
|
||||
{
|
||||
schedule_free(relay->schedule);
|
||||
schedule_free(relay->schedules[i]);
|
||||
}
|
||||
free(relay);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue