data: load and save are fonctionnal.

This commit is contained in:
NADAL Jean-Baptiste
2019-12-26 16:54:52 +01:00
parent 4872f71428
commit 429ec84ccf
3 changed files with 104 additions and 21 deletions

View File

@@ -38,6 +38,8 @@
#include "domo.h"
#include "outlet_dio.h"
#include "shutter.h"
#include "sprinkler.h"
#include "devices_manager.h"
@@ -48,9 +50,11 @@ struct json_object *save_outlets(devices_manager_t *dm);
int create_outlet(struct json_object *node);
int load_shutters(devices_manager_t *dm, struct json_object *node);
struct json_object *save_shutters(devices_manager_t *dm);
int create_shutter(devices_manager_t *dm, struct json_object *node);
int load_sprinklers(devices_manager_t *dm, struct json_object *node);
struct json_object *save_sprinklers(devices_manager_t *dm);
int create_sprinkler(devices_manager_t *dm, struct json_object *node);
/*----------------------------- PUBLIC FUNCTIONS ----------------------------*/
@@ -69,8 +73,8 @@ devices_manager_t *devices_manager_new(void)
// Initialize instance.
devices_manager->outlets = qlist(0);
devices_manager->shutters = qhashtbl(0, 0);
devices_manager->sprinklers = qhashtbl(0, 0);
devices_manager->shutters = qlist(0);
devices_manager->sprinklers = qlist(0);
return devices_manager;
}
@@ -158,9 +162,9 @@ int devices_manager_save(devices_manager_t *dm)
// Outlets
json_object_object_add(root_node, kOutletEntry, save_outlets(dm));
// Shutters
//json_object_object_add(the_root_node, kShutterEntry, m_shutters.to_json());
json_object_object_add(root_node, kShutterEntry, save_shutters(dm));
// Sprinklers
//json_object_object_add(the_root_node, kSprinklerEntry, m_sprinklers.to_json());
json_object_object_add(root_node, kSprinklerEntry, save_sprinklers(dm));
result = json_object_to_file_ext(dm->file_path, root_node, JSON_C_TO_STRING_PRETTY);
@@ -174,7 +178,7 @@ int devices_manager_save(devices_manager_t *dm)
char *devices_manager_get(devices_manager_t *dm, const char *capability)
{
DEBUG("TODO");
#warning "TODO"
return NULL;
}
@@ -182,7 +186,7 @@ char *devices_manager_get(devices_manager_t *dm, const char *capability)
char *devices_manager_get_by_id(devices_manager_t *dm, const char *capability, uint32_t id)
{
DEBUG("TODO");
#warning "TODO"
return NULL;
}
@@ -190,7 +194,7 @@ char *devices_manager_get_by_id(devices_manager_t *dm, const char *capability, u
int devices_manager_set(devices_manager_t *dm, const char *capability, struct json_object *node)
{
DEBUG("TODO");
#warning "TODO"
return 0;
}
@@ -198,7 +202,7 @@ int devices_manager_set(devices_manager_t *dm, const char *capability, struct js
int devices_manager_set_state(devices_manager_t *dm, const char *capability, int id, bool state)
{
DEBUG("TODO");
#warning "TODO"
return 0;
}
@@ -206,7 +210,7 @@ int devices_manager_set_state(devices_manager_t *dm, const char *capability, int
int devices_manager_create(devices_manager_t *dm, const char *a_capability, struct json_object *node)
{
DEBUG("TODO");
#warning "TODO"
return 0;
}
@@ -214,7 +218,7 @@ int devices_manager_create(devices_manager_t *dm, const char *a_capability, stru
int devices_manager_update(devices_manager_t *dm, const char *a_capability, struct json_object *node)
{
DEBUG("TODO");
#warning "TODO"
return 0;
}
@@ -222,7 +226,7 @@ int devices_manager_update(devices_manager_t *dm, const char *a_capability, stru
int devices_manager_delete(devices_manager_t *dm, const char *a_capability, struct json_object *node)
{
DEBUG("TODO");
#warning "TODO"
return 0;
}
@@ -235,7 +239,7 @@ int devices_manager_delete(devices_manager_t *dm, const char *a_capability, stru
*/
int load_outlets(devices_manager_t *dm, struct json_object *node)
{
DEBUG("DevicesManager::load_outlets\n");
DEBUG("devicesManager-load_outlets\n");
/* Get Outlets */
if (json_object_get_type(node) == json_type_array)
@@ -282,15 +286,54 @@ struct json_object *save_outlets(devices_manager_t *dm)
int load_shutters(devices_manager_t *dm, struct json_object *node)
{
DEBUG("TODO");
return 0;
DEBUG("devicesManager-load_shutters\n");
/* Get Shutters */
if (json_object_get_type(node) == json_type_array)
{
int length;
struct json_object *shutter_node;
length = json_object_array_length(node);
for (int i = 0; i < length; i++)
{
shutter_t *shutter = shutter_new();
shutter_node = json_object_array_get_idx(node, i);
if (shutter_from_json(shutter, shutter_node) == 0)
{
qlist_addlast(dm->shutters, shutter, sizeof(shutter_t));
}
}
}
return 0;
}
/*--------------------------------------------------------------------------*/
struct json_object *save_shutters(devices_manager_t *dm)
{
struct json_object *root_node;
shutter_t *shutter;
qlist_obj_t obj;
memset((void *) &obj, 0, sizeof(obj));
root_node = json_object_new_array();
while (qlist_getnext(dm->shutters, &obj, true))
{
shutter = obj.data;
json_object_array_add(root_node, shutter_to_json_object(shutter));
}
return root_node;
}
/*--------------------------------------------------------------------------*/
int create_shutter(devices_manager_t *dm, struct json_object *node)
{
DEBUG("TODO");
#warning "TODO"
return 0;
}
@@ -298,14 +341,53 @@ int create_shutter(devices_manager_t *dm, struct json_object *node)
int load_sprinklers(devices_manager_t *dm, struct json_object *node)
{
DEBUG("TODO");
return 0;
DEBUG("devicesManager-load_sprinkler\n");
/* Get Shutters */
if (json_object_get_type(node) == json_type_array)
{
int length;
struct json_object *sprinkler_node;
length = json_object_array_length(node);
for (int i = 0; i < length; i++)
{
sprinkler_t *sprinkler = sprinkler_new();
sprinkler_node = json_object_array_get_idx(node, i);
if (sprinkler_from_json(sprinkler, sprinkler_node) == 0)
{
qlist_addlast(dm->sprinklers, sprinkler, sizeof(sprinkler_t));
}
}
}
return 0;
}
/*--------------------------------------------------------------------------*/
struct json_object *save_sprinklers(devices_manager_t *dm)
{
struct json_object *root_node;
sprinkler_t *sprinkler;
qlist_obj_t obj;
memset((void *) &obj, 0, sizeof(obj));
root_node = json_object_new_array();
while (qlist_getnext(dm->sprinklers, &obj, true))
{
sprinkler = obj.data;
json_object_array_add(root_node, sprinkler_to_json_object(sprinkler));
}
return root_node;
}
/*--------------------------------------------------------------------------*/
int create_sprinkler(devices_manager_t *dm, struct json_object *node)
{
DEBUG("TODO");
#warning "TODO"
return 0;
}

View File

@@ -49,8 +49,8 @@ struct devices_manager_s
char *file_path;
qlist_t *outlets;
qhashtbl_t *shutters;
qhashtbl_t *sprinklers;
qlist_t *shutters;
qlist_t *sprinklers;
};
/*--------------------------- PUBLIC FUNCTIONS -------------------------------*/

View File

@@ -131,8 +131,9 @@ int main(int argc, char **argv)
fprintf(stderr, "Failed to Load the devices.\n");
return -1;
}
devices_manager_save(device_manager);
#if 0
devices_manager_save(device_manager);
/* Setup the Sequences Manager. */
SequencesManager the_sequences_manager(the_config_path + "/sequences.json", &the_devices_manager);
if (the_sequences_manager.load() != 0)