From f00b7fefb0ffaf7322b358a53cc8b6e32ab06f3c Mon Sep 17 00:00:00 2001 From: jbnadal Date: Mon, 7 May 2018 17:55:57 +0200 Subject: [PATCH] add sprinkler --- .../domod/src/ubus/devices-controller.cpp | 6 +- src/prog/domod/src/ubus/devices-controller.h | 2 +- .../domod/src/ubus/shutters-controller.cpp | 29 ++++++- src/prog/domod/src/ubus/shutters-controller.h | 2 - .../domod/src/ubus/sprinklers-controller.cpp | 80 +++---------------- .../domod/src/ubus/sprinklers-controller.h | 11 +-- 6 files changed, 47 insertions(+), 83 deletions(-) diff --git a/src/prog/domod/src/ubus/devices-controller.cpp b/src/prog/domod/src/ubus/devices-controller.cpp index cb7cb20e..c48a275e 100644 --- a/src/prog/domod/src/ubus/devices-controller.cpp +++ b/src/prog/domod/src/ubus/devices-controller.cpp @@ -77,7 +77,7 @@ DevicesController::DevicesController(DevicesManager *a_device_manager, const std /*! ---------------------------------------------------------------------------- * @fn ~DevicesController * - * @brief Destructor of the Outlets Controller. + * @brief Destructor of the Outlets Controller. */ DevicesController::~DevicesController(void) { @@ -199,9 +199,9 @@ int DevicesController::update(struct ubus_context *a_ctx, struct ubus_request_da } /*! ---------------------------------------------------------------------------- - * @fn del + * @fn remove * - * @brief delete a specific outlet. + * @brief remove a specific outlet. */ int DevicesController::remove(struct ubus_context *, struct ubus_request_data *, struct blob_attr *a_msg) { diff --git a/src/prog/domod/src/ubus/devices-controller.h b/src/prog/domod/src/ubus/devices-controller.h index e9c25d9c..e2b660d8 100644 --- a/src/prog/domod/src/ubus/devices-controller.h +++ b/src/prog/domod/src/ubus/devices-controller.h @@ -44,7 +44,7 @@ class DevicesController : public UBusObject public: DevicesController(DevicesManager *a_device_manager, const std::string &a_cap, const std::string &a_service_name); DevicesController(DevicesManager *a_device_manager, const std::string &a_cap, const std::string &a_service_name, ubus_object_type &anObjType); - ~DevicesController(void); + virtual ~DevicesController(void); int create(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); int list(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); diff --git a/src/prog/domod/src/ubus/shutters-controller.cpp b/src/prog/domod/src/ubus/shutters-controller.cpp index 50f14946..7237f19e 100644 --- a/src/prog/domod/src/ubus/shutters-controller.cpp +++ b/src/prog/domod/src/ubus/shutters-controller.cpp @@ -58,7 +58,7 @@ static ObjectType gShuttersControllerUbus_types( /*! ---------------------------------------------------------------------------- * @fn ShuttersController * - * @brief Constructor of the UBus Mixer Volume. + * @brief Constructor of the Shutters Controller. */ ShuttersController::ShuttersController(DevicesManager *a_device_manager, const std::string &a_cap, const std::string &a_service_name) : DevicesController(a_device_manager, a_cap, a_service_name, gShuttersControllerUbus_types) { @@ -67,32 +67,57 @@ ShuttersController::ShuttersController(DevicesManager *a_device_manager, const s /*! ---------------------------------------------------------------------------- * @fn ~ShuttersController * - * @brief Destructor of the UBus Mixer Volume. + * @brief Destructor of the Shutters Controller. */ ShuttersController::~ShuttersController(void) { } +/*! ---------------------------------------------------------------------------- + * @fn create + * + * @brief Create a new Shutters. + */ int ShuttersController::create(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { return DevicesController::create(a_ctx, a_req, a_msg); } +/*! ---------------------------------------------------------------------------- + * @fn list + * + * @brief List all the Shutters + */ int ShuttersController::list(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { return DevicesController::list(a_ctx, a_req, a_msg); } +/*! ---------------------------------------------------------------------------- + * @fn read + * + * @brief Read a specific Shutters object. + */ int ShuttersController::read(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { return DevicesController::read(a_ctx, a_req, a_msg); } +/*! ---------------------------------------------------------------------------- + * @fn update + * + * @brief Update a specific Shutters. + */ int ShuttersController::update(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { return DevicesController::update(a_ctx, a_req, a_msg); } +/*! ---------------------------------------------------------------------------- + * @fn remove + * + * @brief remove a specific outlet. + */ int ShuttersController::remove(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { return DevicesController::remove(a_ctx, a_req, a_msg); diff --git a/src/prog/domod/src/ubus/shutters-controller.h b/src/prog/domod/src/ubus/shutters-controller.h index 6eb8956e..bdf8d986 100644 --- a/src/prog/domod/src/ubus/shutters-controller.h +++ b/src/prog/domod/src/ubus/shutters-controller.h @@ -34,7 +34,6 @@ /*--------------------------------- Define ----------------------------------*/ -class DevicesManager; /*--------------------------------- CLASS ----------------------------------*/ @@ -52,7 +51,6 @@ class ShuttersController : public DevicesController int up(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); int down(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); - }; #endif /* _UBUS_SHUTTERS_CONTROLLER_H */ diff --git a/src/prog/domod/src/ubus/sprinklers-controller.cpp b/src/prog/domod/src/ubus/sprinklers-controller.cpp index e48dafe6..c4df94a0 100644 --- a/src/prog/domod/src/ubus/sprinklers-controller.cpp +++ b/src/prog/domod/src/ubus/sprinklers-controller.cpp @@ -50,7 +50,7 @@ static ObjectType gSprinklersControllerUbus_types( Method("list", UBUS_CPP(SprinklersController, list)), Method("read", UBUS_CPP(SprinklersController, read), Int32Arg("id")), Method("update", UBUS_CPP(SprinklersController, update), Int32Arg("id")), - Method("delete", UBUS_CPP(SprinklersController, del), Int32Arg("id")), + Method("delete", UBUS_CPP(SprinklersController, remove), Int32Arg("id")), Method("open", UBUS_CPP(SprinklersController, open), Int32Arg("id")), Method("close", UBUS_CPP(SprinklersController, close), Int32Arg("id")) @@ -62,8 +62,7 @@ static ObjectType gSprinklersControllerUbus_types( * * @brief Constructor of the UBus Sprinkler controller. */ -SprinklersController::SprinklersController(DevicesManager *a_device_manager, const std::string &a_cap, const std::string &a_service_name) : UBusObject(gSprinklersControllerUbus_types, a_service_name.c_str()), - m_devices_manager(a_device_manager) +SprinklersController::SprinklersController(DevicesManager *a_device_manager, const std::string &a_cap, const std::string &a_service_name) : DevicesController(a_device_manager, a_cap, a_service_name, gSprinklersControllerUbus_types) { } @@ -81,10 +80,9 @@ SprinklersController::~SprinklersController(void) * * @brief Create a new sprinkler. */ -int SprinklersController::create(struct ubus_context *, struct ubus_request_data *, struct blob_attr *) +int SprinklersController::create(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { - printf("%s\n", __PRETTY_FUNCTION__); - return 0; + return DevicesController::create(a_ctx, a_req, a_msg); } /*! ---------------------------------------------------------------------------- @@ -92,21 +90,9 @@ int SprinklersController::create(struct ubus_context *, struct ubus_request_data * * @brief List all the sequences */ -int SprinklersController::list(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *) +int SprinklersController::list(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { - int the_result; - struct blob_buf the_buf = {0}; - printf("%s\n", __PRETTY_FUNCTION__); - - blob_buf_init(&the_buf, 0); - - blobmsg_add_json_from_string(&the_buf, m_devices_manager->get(kSprinklerEntry).c_str()); - - the_result = ubus_send_reply(a_ctx, a_req, the_buf.head); - - blob_buf_free(&the_buf); - - return the_result; + return DevicesController::list(a_ctx, a_req, a_msg); } /*! ---------------------------------------------------------------------------- @@ -114,10 +100,9 @@ int SprinklersController::list(struct ubus_context *a_ctx, struct ubus_request_d * * @brief Read a specific sequence object. */ -int SprinklersController::read(struct ubus_context *, struct ubus_request_data *, struct blob_attr *) +int SprinklersController::read(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { - printf("%s\n", __PRETTY_FUNCTION__); - return 0; + return DevicesController::read(a_ctx, a_req, a_msg); } /*! ---------------------------------------------------------------------------- @@ -127,56 +112,17 @@ int SprinklersController::read(struct ubus_context *, struct ubus_request_data * */ int SprinklersController::update(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { - int the_result = 0; - struct blob_buf the_buf = {0}; - char *the_string; - struct json_object *the_root_node, *the_output_node; - printf("%s\n", __PRETTY_FUNCTION__); - - the_string = blobmsg_format_json(a_msg, true); - - the_root_node = json_tokener_parse(the_string); - free(the_string); - - if (the_root_node == NULL) - { - fprintf(stderr, "Failed parse the parameters.\n"); - return UBUS_STATUS_INVALID_ARGUMENT; - } - - if (m_devices_manager->set(kSprinklerEntry, the_root_node) < 0) - { - fprintf(stderr, "Failed to set the new state.\n"); - return UBUS_STATUS_INVALID_ARGUMENT; - } - - // Create the output node. - the_output_node = json_object_new_object(); - json_object_object_add(the_output_node, kSprinklerEntry, the_root_node); - - blob_buf_init(&the_buf, 0); - - blobmsg_add_json_from_string(&the_buf, json_object_to_json_string(the_output_node)); - - the_result = ubus_send_reply(a_ctx, a_req, the_buf.head); - - blob_buf_free(&the_buf); - - json_object_put(the_root_node); - json_object_put(the_output_node); - - return the_result; + return DevicesController::update(a_ctx, a_req, a_msg); } /*! ---------------------------------------------------------------------------- - * @fn del + * @fn remove * - * @brief delete a specific sequence. + * @brief remove a specific sequence. */ -int SprinklersController::del(struct ubus_context *, struct ubus_request_data *, struct blob_attr *) +int SprinklersController::remove(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { - printf("%s\n", __PRETTY_FUNCTION__); - return 0; + return DevicesController::remove(a_ctx, a_req, a_msg); } /*! ---------------------------------------------------------------------------- diff --git a/src/prog/domod/src/ubus/sprinklers-controller.h b/src/prog/domod/src/ubus/sprinklers-controller.h index b160be26..641e09bd 100644 --- a/src/prog/domod/src/ubus/sprinklers-controller.h +++ b/src/prog/domod/src/ubus/sprinklers-controller.h @@ -30,15 +30,13 @@ #include -#include +#include "devices-controller.h" /*--------------------------------- Define ----------------------------------*/ -class DevicesManager; - /*--------------------------------- CLASS ----------------------------------*/ -class SprinklersController : public UBusObject +class SprinklersController : public DevicesController { public: @@ -49,13 +47,10 @@ class SprinklersController : public UBusObject int list(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); int read(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); int update(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); - int del(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); + int remove(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); int open(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); int close(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); - - private: - DevicesManager *m_devices_manager; }; #endif /* _UBUS_SPRINKLERS_CONTROLLER_H */