add: relay/piface support
This commit is contained in:
parent
fa6ceb2bf4
commit
db64e4f820
34 changed files with 1259 additions and 313 deletions
models
|
@ -1,10 +1,83 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <uuid/uuid.h>
|
||||
|
||||
#include <constants.h>
|
||||
#include <logger.h>
|
||||
#include <models/relay.h>
|
||||
|
||||
relay*
|
||||
relay_init(uint8_t index)
|
||||
relay_t*
|
||||
relay_create(uint8_t number)
|
||||
{
|
||||
(void)index;
|
||||
return NULL;
|
||||
relay_t *new_relay = malloc(sizeof(relay_t));
|
||||
|
||||
new_relay->number = number;
|
||||
new_relay->name[0] = '\0';
|
||||
|
||||
uuid_t off_id;
|
||||
memset(off_id, 0, sizeof(uuid_t));
|
||||
memcpy(off_id, "off", 3);
|
||||
|
||||
new_relay->schedule = schedule_create(off_id, 0, NULL);
|
||||
|
||||
return new_relay;
|
||||
}
|
||||
|
||||
void
|
||||
relay_set_name(relay_t *relay, char *name)
|
||||
{
|
||||
strncpy(relay->name, name, MAX_NAME_LENGTH);
|
||||
relay->name[MAX_NAME_LENGTH] = '\0';
|
||||
}
|
||||
|
||||
int
|
||||
relay_is_active(relay_t *relay, time_t timestamp_now)
|
||||
{
|
||||
if(relay->schedule->length == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// we don't need days. reduce to hours, minutes and seconds
|
||||
timestamp_now %= SECONDS_PER_DAY;
|
||||
// finally remove seconds
|
||||
timestamp_now /= SECONDS_PER_MINUTE;
|
||||
|
||||
for(uint16_t i = 0; i < relay->schedule->length; ++i)
|
||||
{
|
||||
if(period_includes_time(relay->schedule->periods[i], timestamp_now))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
//struct tm time_start, time_now, time_end;
|
||||
//localtime_r(×tamp_start, &time_start);
|
||||
//localtime_r(×tamp_now, &time_now);
|
||||
//localtime_r(×tamp_end, &time_end);
|
||||
//LOG_DEBUG("%02d:%02d - %02d:%02d - %02d:%02d", time_start.tm_hour, time_start.tm_min, time_now.tm_hour, time_now.tm_min, time_end.tm_hour, time_end.tm_min);
|
||||
|
||||
void
|
||||
relay_debug(relay_t *relay)
|
||||
{
|
||||
if(relay == NULL)
|
||||
{
|
||||
LOG_DEBUG("relay is NULL");
|
||||
return;
|
||||
}
|
||||
LOG_DEBUG("(1/3) %d @ %p", relay->number, relay);
|
||||
LOG_DEBUG("(2/3) name: %s", relay->name);
|
||||
LOG_DEBUG("(3/3) schedule:");
|
||||
schedule_debug(relay->schedule);
|
||||
}
|
||||
|
||||
void
|
||||
relay_free(relay_t *relay)
|
||||
{
|
||||
if(relay->schedule)
|
||||
{
|
||||
schedule_free(relay->schedule);
|
||||
}
|
||||
free(relay);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue