sprinkler / shutter WIP
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
NADAL Jean-Baptiste
2020-02-24 18:49:36 +01:00
parent 397320ffe9
commit dfed6f6478

View File

@@ -41,6 +41,7 @@
/*--------------------------------------------------------------------------*/
int update_device(restd_resp_t *response, devices_manager_t *dm, const char *capability);
int remove_device(restd_resp_t *response, devices_manager_t *dm, const char *capability);
/*--------------------------------------------------------------------------*/
@@ -149,43 +150,9 @@ int outlet_get_handler(restd_resp_t *response, void *arg)
int outlet_update_handler(restd_resp_t *response, void *arg)
{
struct json_object *root_node = NULL;
char *data;
devices_manager_t *dm = (devices_manager_t *)arg;
data = restd_http_get_body(response);
if (data == NULL)
{
restd_http_response(response, 400, "application/json", kerror_body);
return RESTD_OK;
}
root_node = json_tokener_parse(data);
free(data);
if (root_node != NULL)
{
int ret;
if (response->has_parameter == true)
{
if (response->parameter_name != NULL)
{
json_object_object_add(root_node, response->parameter_name, json_object_new_int(response->parameter_value));
}
}
ret = devices_manager_update(dm, kOutletEntry, root_node);
json_object_put(root_node);
if (ret == 0)
{
restd_http_response(response, 204, "application/json", kempty_body);
return RESTD_OK;
}
}
restd_http_response(response, 500, "application/json", kerror_body);
return RESTD_OK;
return update_device(response, dm, kOutletEntry);
}
/*--------------------------------------------------------------------------*/
@@ -225,8 +192,10 @@ int sprinkler_get_handler(restd_resp_t *response, void *arg)
int sprinkler_update_handler(restd_resp_t *response, void *arg)
{
#warning TODO
return RESTD_OK;
devices_manager_t *dm = (devices_manager_t *)arg;
return update_device(response, dm, kSprinklerEntry);
}
/*--------------------------------------------------------------------------*/
@@ -266,8 +235,10 @@ int shutter_get_handler(restd_resp_t *response, void *arg)
int shutter_update_handler(restd_resp_t *response, void *arg)
{
#warning TODO
return RESTD_OK;
devices_manager_t *dm = (devices_manager_t *)arg;
return update_device(response, dm, kShutterEntry);
}
/*--------------------------------------------------------------------------*/
@@ -279,6 +250,49 @@ int shutter_remove_handler(restd_resp_t *response, void *arg)
return remove_device(response, dm, kShutterEntry);
}
/*--------------------------------------------------------------------------*/
int update_device(restd_resp_t *response, devices_manager_t *dm, const char *capability)
{
struct json_object *root_node = NULL;
char *data;
data = restd_http_get_body(response);
if (data == NULL)
{
restd_http_response(response, 400, "application/json", kerror_body);
return RESTD_OK;
}
root_node = json_tokener_parse(data);
free(data);
if (root_node != NULL)
{
int ret;
if (response->has_parameter == true)
{
if (response->parameter_name != NULL)
{
json_object_object_add(root_node, response->parameter_name, json_object_new_int(response->parameter_value));
}
}
ret = devices_manager_update(dm, capability, root_node);
json_object_put(root_node);
if (ret == 0)
{
restd_http_response(response, 204, "application/json", kempty_body);
return RESTD_OK;
}
}
restd_http_response(response, 500, "application/json", kerror_body);
return RESTD_OK;
}
/*--------------------------------------------------------------------------*/
int remove_device(restd_resp_t *response, devices_manager_t *dm, const char *capability)