sprinkler / shutter WIP
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user