init
This commit is contained in:
commit
d8ad2c205a
12 changed files with 253 additions and 0 deletions
94
models/controller.c
Normal file
94
models/controller.c
Normal file
|
@ -0,0 +1,94 @@
|
|||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <uuid/uuid.h>
|
||||
|
||||
#include "controller.h"
|
||||
#include <macros.h>
|
||||
|
||||
|
||||
controller*
|
||||
controller_create(void)
|
||||
{
|
||||
controller *result = malloc(sizeof(*result));
|
||||
uuid_generate(result->uuid);
|
||||
|
||||
strcpy(result->name, "new emgauwa device");
|
||||
result->port = 0;
|
||||
result->relay_count = 10;
|
||||
|
||||
result->relays = malloc(sizeof(*result->relays) * result->relay_count);
|
||||
uint8_t i;
|
||||
for(i = 0; i < result->relay_count; i++)
|
||||
{
|
||||
result->relays[i] = relay_init(i);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
controller*
|
||||
controller_read(void)
|
||||
{
|
||||
FILE *fp;
|
||||
controller *result;;
|
||||
|
||||
fp = fopen(CONTROLLER_FILE_NAME, "rb");
|
||||
|
||||
if(fp == NULL)
|
||||
{
|
||||
LOG_ERROR("Error opening file");
|
||||
result = controller_create();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
uint8_t header[CONTROLLER_FILE_HEADER_SIZE];
|
||||
size_t read_size;
|
||||
|
||||
read_size = fread(header, sizeof(*header), CONTROLLER_FILE_HEADER_SIZE, fp);
|
||||
if(ferror(fp) || read_size != CONTROLLER_FILE_HEADER_SIZE)
|
||||
{
|
||||
LOG_ERROR("Error reading header");
|
||||
result = controller_create();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
uint8_t version = header[0];
|
||||
printf("%d\n", version);
|
||||
|
||||
|
||||
// size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
result = controller_create();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int
|
||||
controller_save(controller* ci)
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(CONTROLLER_FILE_NAME, "w+b");
|
||||
|
||||
if(fp == NULL)
|
||||
{
|
||||
LOG_ERROR("Error creating or opening file");
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint8_t header[CONTROLLER_FILE_HEADER_SIZE];
|
||||
header[0] = CONTROLLER_FILE_VERSION;
|
||||
|
||||
fwrite(header, sizeof(*header), CONTROLLER_FILE_HEADER_SIZE, fp);
|
||||
fwrite(ci->name, sizeof(*ci->name), CONTROLLER_NAME_LENGTH, fp);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
return 0;
|
||||
}
|
28
models/controller.h
Normal file
28
models/controller.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
#ifndef CONTROLLER_CONTROLLER_H
|
||||
#define CONTROLLER_CONTROLLER_H
|
||||
|
||||
#include <uuid/uuid.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <config.h>
|
||||
#include <models/relay.h>
|
||||
|
||||
typedef struct controller {
|
||||
uuid_t uuid;
|
||||
char name[CONTROLLER_NAME_LENGTH];
|
||||
uint16_t port;
|
||||
uint8_t relay_count;
|
||||
relay **relays;
|
||||
|
||||
} controller;
|
||||
|
||||
controller*
|
||||
controller_create(void);
|
||||
|
||||
controller*
|
||||
controller_read(void);
|
||||
|
||||
int
|
||||
controller_save(controller* ci);
|
||||
|
||||
#endif //CONTROLLER_CONTROLLER_H
|
10
models/relay.c
Normal file
10
models/relay.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
#include <stdlib.h>
|
||||
|
||||
#include "relay.h"
|
||||
|
||||
relay*
|
||||
relay_init(uint8_t index)
|
||||
{
|
||||
(void)index;
|
||||
return NULL;
|
||||
}
|
17
models/relay.h
Normal file
17
models/relay.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
#ifndef CONTROLLER_RELAY_H
|
||||
#define CONTROLLER_RELAY_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <config.h>
|
||||
|
||||
typedef struct relay {
|
||||
uint8_t index;
|
||||
char name[128];
|
||||
uint16_t *schedule;
|
||||
} relay;
|
||||
|
||||
relay*
|
||||
relay_init(uint8_t index);
|
||||
|
||||
#endif //CONTROLLER_RELAY_H
|
Loading…
Add table
Add a link
Reference in a new issue