add: weekly schedules support
This commit is contained in:
parent
db3bcaf7d1
commit
2fd48ac5e6
18 changed files with 301 additions and 86 deletions
include
|
@ -20,9 +20,10 @@ typedef enum
|
|||
COMMAND_MAPPING_CODE = 0,
|
||||
COMMAND_MAPPING_NAME = 1,
|
||||
COMMAND_MAPPING_RELAY_NUM = 2,
|
||||
COMMAND_MAPPING_SCHEDULE_ID = 3,
|
||||
COMMAND_MAPPING_PERIODS_COUNT = 4,
|
||||
COMMAND_MAPPING_PERIODS_BLOB = 5,
|
||||
COMMAND_MAPPING_SCHEDULES_ARRAY = 3,
|
||||
COMMAND_MAPPING_SCHEDULE_ID = 4,
|
||||
COMMAND_MAPPING_PERIODS_COUNT = 5,
|
||||
COMMAND_MAPPING_PERIODS_BLOB = 6,
|
||||
} control_mapping_t;
|
||||
|
||||
typedef enum
|
||||
|
|
|
@ -29,6 +29,9 @@ int
|
|||
helper_load_config(IniDispatch *disp, void *config_void);
|
||||
|
||||
void
|
||||
helpers_parse_cli(int argc, const char **argv, config_t *config);
|
||||
helper_parse_cli(int argc, const char **argv, config_t *config);
|
||||
|
||||
int
|
||||
helper_get_weekday(const time_t timestamp_now);
|
||||
|
||||
#endif /* CONTROLLER_HELPERS_H */
|
||||
|
|
|
@ -48,7 +48,6 @@ typedef enum
|
|||
DB_KEY_CONTROLLER_NAME = 1,
|
||||
DB_KEY_CONTROLLER_COMMAND_PORT = 2,
|
||||
DB_KEY_CONTROLLER_DISCOVERY_PORT = 3,
|
||||
DB_KEY_CONTROLLER_RELAYS = 4,
|
||||
} db_key_controller_e;
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,7 +12,7 @@ typedef struct
|
|||
{
|
||||
uint8_t number;
|
||||
char name[MAX_NAME_LENGTH + 1];
|
||||
schedule_t *schedule;
|
||||
schedule_t *schedules[7];
|
||||
} relay_t;
|
||||
|
||||
/**
|
||||
|
@ -21,8 +21,6 @@ typedef struct
|
|||
typedef enum
|
||||
{
|
||||
DB_KEY_RELAY_NAME = 0,
|
||||
DB_KEY_RELAY_SCHEDULE_ID = 1,
|
||||
DB_KEY_RELAY_SCHEDULE_PERIODS = 2,
|
||||
} db_key_relay_e;
|
||||
|
||||
relay_t*
|
||||
|
|
|
@ -3,18 +3,35 @@
|
|||
|
||||
#include <stdint.h>
|
||||
#include <uuid/uuid.h>
|
||||
#include <lmdb.h>
|
||||
|
||||
#include <models/period.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uuid_t id;
|
||||
uint8_t weekday;
|
||||
uint16_t length;
|
||||
period_t **periods;
|
||||
} schedule_t;
|
||||
|
||||
/**
|
||||
* @brief Key to save schedule information in database
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
DB_KEY_SCHEDULE_ID = 0,
|
||||
DB_KEY_SCHEDULE_PERIODS = 1,
|
||||
} db_key_schedule_e;
|
||||
|
||||
schedule_t*
|
||||
schedule_create(uuid_t id, uint16_t length, uint16_t *periods_blob);
|
||||
schedule_create(uuid_t id, uint8_t weekday, uint16_t length, uint16_t *periods_blob);
|
||||
|
||||
schedule_t*
|
||||
schedule_load(MDB_env *mdb_env, uint8_t relay_num, uint8_t weekday);
|
||||
|
||||
int
|
||||
schedule_save(schedule_t *schedule, uint8_t relay_num, MDB_env *mdb_env);
|
||||
|
||||
uint16_t*
|
||||
schedule_periods_to_blob(schedule_t *schedule);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue