diff --git a/src/prog/domod/builders/cmake/CMakeLists.txt b/src/prog/domod/builders/cmake/CMakeLists.txt index e7baae71..35f6810f 100644 --- a/src/prog/domod/builders/cmake/CMakeLists.txt +++ b/src/prog/domod/builders/cmake/CMakeLists.txt @@ -15,6 +15,7 @@ file( GLOB_RECURSE source_files ${workspaceRoot}/src/prog/domod/src/main.cpp + # devices ${workspaceRoot}/src/prog/domod/src/devices/devices-manager.cpp ${workspaceRoot}/src/prog/domod/src/devices/device.cpp ${workspaceRoot}/src/prog/domod/src/devices/light-device.cpp @@ -23,17 +24,15 @@ file( ${workspaceRoot}/src/prog/domod/src/devices/light.cpp ${workspaceRoot}/src/prog/domod/src/devices/shutter.cpp ${workspaceRoot}/src/prog/domod/src/devices/sprinkler.cpp + # ubus models + ${workspaceRoot}/src/prog/domod/src/ubus/capabilities.cpp + ${workspaceRoot}/src/prog/domod/src/ubus/capabilities_lights.cpp + #${workspaceRoot}/src/prog/domod/src/timers/event.cpp #${workspaceRoot}/src/prog/domod/src/ubus/timers.cpp ) # $ENV{SRC_DIR}/src/prog/domod/src/timers/Timers.cpp # $ENV{SRC_DIR}/src/prog/domod/src/timers/Clock.cpp -# - - - -# $ENV{SRC_DIR}/src/prog/domod/src/ubus/capabilities.cpp -# $ENV{SRC_DIR}/src/prog/domod/src/ubus/capabilities_lights.cpp # $ENV{SRC_DIR}/src/prog/domod/src/ubus/capabilities_shutters.cpp # $ENV{SRC_DIR}/src/prog/domod/src/ubus/capabilities_sprinklers.cpp # $ENV{SRC_DIR}/src/prog/domod/src/ubus/speach_command.cpp diff --git a/src/prog/domod/src/devices/devices-manager.cpp b/src/prog/domod/src/devices/devices-manager.cpp index d922776c..5df6e6a6 100644 --- a/src/prog/domod/src/devices/devices-manager.cpp +++ b/src/prog/domod/src/devices/devices-manager.cpp @@ -33,12 +33,6 @@ #include "devices/devices-manager.h" -/*------------------------------- DEFINES ----------------------------------*/ - -#define kLightEntry "Lights" -#define kShutterEntry "Shutters" -#define kSprinklerEntry "Sprinklers" - /*! ---------------------------------------------------------------------------- * @fn DevicesManager * diff --git a/src/prog/domod/src/devices/devices-manager.h b/src/prog/domod/src/devices/devices-manager.h index 71029872..e0d66732 100644 --- a/src/prog/domod/src/devices/devices-manager.h +++ b/src/prog/domod/src/devices/devices-manager.h @@ -36,6 +36,12 @@ #include "devices/device.h" +/*------------------------------- DEFINES ----------------------------------*/ + +#define kLightEntry "Lights" +#define kShutterEntry "Shutters" +#define kSprinklerEntry "Sprinklers" + /*---------------------------------- Deps -----------------------------------*/ /*--------------------------------- CLASS ----------------------------------*/ diff --git a/src/prog/domod/src/main.cpp b/src/prog/domod/src/main.cpp index 62e6b4de..413e8383 100644 --- a/src/prog/domod/src/main.cpp +++ b/src/prog/domod/src/main.cpp @@ -40,6 +40,9 @@ extern "C" { #include "timers/timers.h" #include "devices/devices-manager.h" +#include "ubus/capabilities.h" +#include "ubus/capabilities_lights.h" + /*-------------------------------- DEFINES ---------------------------------*/ #define k_dir_sep '/' @@ -142,8 +145,13 @@ int main(int argc, char *argv[]) return -2; } #endif - return 0; + /* Setup the UBus Models. */ + CapabilitiesModel the_capabilities(the_config_path + "./capabilities.json"); + CapabilitiesLightsModel the_cap_lights(&the_devices_manager); + + return 0; + /* Setup the Ubus context. */ the_ctx = setup_ubus(); if (the_ctx == NULL) @@ -151,6 +159,10 @@ int main(int argc, char *argv[]) return -1; } + /* Add the UBus to the model exposed. */ + ubus_add_object(the_ctx, &the_capabilities); + ubus_add_object(the_ctx, &the_cap_lights); + /* Main Event Loop. */ uloop_run(); @@ -161,8 +173,8 @@ int main(int argc, char *argv[]) } #if 0 -#include "ubus/capabilities.h" -#include "ubus/capabilities_lights.h" + + #include "ubus/capabilities_shutters.h" #include "ubus/capabilities_sprinklers.h" #include "ubus/speach_command.h" diff --git a/src/prog/domod/src/ubus/capabilities.cpp b/src/prog/domod/src/ubus/capabilities.cpp index 2dc4f50a..18607aac 100644 --- a/src/prog/domod/src/ubus/capabilities.cpp +++ b/src/prog/domod/src/ubus/capabilities.cpp @@ -23,12 +23,11 @@ * */ - /*-------------------------------- INCLUDES ---------------------------------*/ #include #include -#include +#include extern "C" { #include @@ -36,15 +35,14 @@ extern "C" { #include "capabilities.h" -namespace { +namespace +{ using namespace UBus; static ObjectType gCapabilitiesModelUbus_types( "capabilities", - Method("get", UBUS_CPP(CapabilitiesModel, Get)) -); - + Method("get", UBUS_CPP(CapabilitiesModel, get))); } /*! ---------------------------------------------------------------------------- @@ -52,45 +50,41 @@ static ObjectType gCapabilitiesModelUbus_types( * * @brief Constructor of the UBus Mixer Volume. */ -CapabilitiesModel::CapabilitiesModel (void) : - UBusObject (gCapabilitiesModelUbus_types, "domo.capabilities") +CapabilitiesModel::CapabilitiesModel(const std::string &a_capability_file) : UBusObject(gCapabilitiesModelUbus_types, "domo.capabilities"), + m_capability_file(a_capability_file) { } - /*! ---------------------------------------------------------------------------- * @fn ~CapabilitiesModel * * @brief Destructor of the UBus Mixer Volume. */ -CapabilitiesModel::~CapabilitiesModel (void) +CapabilitiesModel::~CapabilitiesModel(void) { - } - /*! ---------------------------------------------------------------------------- - * @fn Get + * @fn get * * @brief Get the List of the Capabilities. */ -int CapabilitiesModel::Get (struct ubus_context *aCtx, struct ubus_request_data *aReq, - struct blob_attr *aMsg) +int CapabilitiesModel::get(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *) { - int theResult; - struct blob_buf theBuf = {0}; + int the_result; + struct blob_buf the_buf = {0}; - std::ifstream theCapFile ("./rsc/capabilities.json"); - std::stringstream theBuffer; - theBuffer << theCapFile.rdbuf(); + std::ifstream the_cap_file(m_capability_file); + std::stringstream the_buffer; + the_buffer << the_cap_file.rdbuf(); - blob_buf_init (&theBuf, 0); - - blobmsg_add_json_from_string (&theBuf, theBuffer.str().c_str()); - - theResult = ubus_send_reply (aCtx, aReq, theBuf.head); - - blob_buf_free (&theBuf); - - return theResult; + blob_buf_init(&the_buf, 0); + + blobmsg_add_json_from_string(&the_buf, the_buffer.str().c_str()); + + the_result = ubus_send_reply(a_ctx, a_req, the_buf.head); + + blob_buf_free(&the_buf); + + return the_result; } diff --git a/src/prog/domod/src/ubus/capabilities.h b/src/prog/domod/src/ubus/capabilities.h index 4b9f0f22..adfb4c6d 100644 --- a/src/prog/domod/src/ubus/capabilities.h +++ b/src/prog/domod/src/ubus/capabilities.h @@ -28,23 +28,25 @@ /*------------------------------- INCLUDES ----------------------------------*/ +#include #include - -#include + +#include /*--------------------------------- Define ----------------------------------*/ /*--------------------------------- CLASS ----------------------------------*/ -class CapabilitiesModel : public UBusObject { +class CapabilitiesModel : public UBusObject +{ + public: + CapabilitiesModel(const std::string &a_capability_file); + ~CapabilitiesModel(void); -public: - CapabilitiesModel (void); - ~CapabilitiesModel (void); - - int Get (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); - -private: + int get(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); + + private: + std::string m_capability_file; }; #endif /* _UBUS_CAPABILITIES_MODEL_H */ diff --git a/src/prog/domod/src/ubus/capabilities_lights.cpp b/src/prog/domod/src/ubus/capabilities_lights.cpp index 1b43ede6..1c5bd7d1 100644 --- a/src/prog/domod/src/ubus/capabilities_lights.cpp +++ b/src/prog/domod/src/ubus/capabilities_lights.cpp @@ -25,30 +25,27 @@ /*-------------------------------- INCLUDES ---------------------------------*/ +#include + extern "C" { #include } - - -#include - -#include "devices/Devices.h" +#include "devices/devices-manager.h" #include "capabilities_lights.h" -namespace { +namespace +{ using namespace UBus; static ObjectType gCapabilitiesLightsUbus_types( "lights", - Method("get", UBUS_CPP(CapabilitiesLightsModel, Get)), - Method("delete", UBUS_CPP(CapabilitiesLightsModel, Delete)), - Method("put", UBUS_CPP(CapabilitiesLightsModel, Put)), - Method("post", UBUS_CPP(CapabilitiesLightsModel, Post)) -); - + Method("get", UBUS_CPP(CapabilitiesLightsModel, get)), + Method("delete", UBUS_CPP(CapabilitiesLightsModel, del)), + Method("put", UBUS_CPP(CapabilitiesLightsModel, put)), + Method("post", UBUS_CPP(CapabilitiesLightsModel, post))); } /*! ---------------------------------------------------------------------------- @@ -56,112 +53,108 @@ static ObjectType gCapabilitiesLightsUbus_types( * * @brief Constructor of the UBus Mixer Volume. */ -CapabilitiesLightsModel::CapabilitiesLightsModel (Devices *aDevice) : - UBusObject (gCapabilitiesLightsUbus_types, "domo.capabilities.lights"), - mDevices (aDevice) +CapabilitiesLightsModel::CapabilitiesLightsModel(DevicesManager *a_device_manager) : + UBusObject(gCapabilitiesLightsUbus_types, "domo.capabilities.lights"), + m_devices_manager(a_device_manager) { } - /*! ---------------------------------------------------------------------------- * @fn ~CapabilitiesLightsModel * * @brief Destructor of the UBus Mixer Volume. */ -CapabilitiesLightsModel::~CapabilitiesLightsModel (void) +CapabilitiesLightsModel::~CapabilitiesLightsModel(void) { - } +/*! ---------------------------------------------------------------------------- + * @fn get + * + * @brief get the List of the Capabilities. + */ +int CapabilitiesLightsModel::get(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 }; + + blob_buf_init(&the_buf, 0); + + blobmsg_add_json_from_string(&the_buf, m_devices_manager->get(kLightEntry).c_str()); + + the_result = ubus_send_reply(a_ctx, a_req, the_buf.head); + + blob_buf_free(&the_buf); + + return the_result; +} /*! ---------------------------------------------------------------------------- - * @fn Get + * @fn del * * @brief Get the List of the Capabilities. */ -int CapabilitiesLightsModel::Get (struct ubus_context *aCtx, struct ubus_request_data *aReq, - struct blob_attr *aMsg) +int CapabilitiesLightsModel::del(struct ubus_context *, struct ubus_request_data *, struct blob_attr *) { - int theResult; - struct blob_buf theBuf = {0}; + int the_result = 0; - blob_buf_init (&theBuf, 0); - - blobmsg_add_json_from_string (&theBuf, mDevices->get("Lights").c_str()); - - theResult = ubus_send_reply (aCtx, aReq, theBuf.head); - - blob_buf_free (&theBuf); - - return theResult; + return the_result; } - /*! ---------------------------------------------------------------------------- - * @fn Delete + * @fn put * * @brief Get the List of the Capabilities. */ -int CapabilitiesLightsModel::Delete (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) +int CapabilitiesLightsModel::put(struct ubus_context *, struct ubus_request_data *, struct blob_attr *) { - int theResult = 0; - - return theResult; + int the_result = 0; + + return the_result; } - /*! ---------------------------------------------------------------------------- - * @fn Put + * @fn post * * @brief Get the List of the Capabilities. */ -int CapabilitiesLightsModel::Put (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) -{ - int theResult = 0; - - return theResult; -} - - -/*! ---------------------------------------------------------------------------- - * @fn Post - * - * @brief Get the List of the Capabilities. - */ -int CapabilitiesLightsModel::Post (struct ubus_context *aCtx, struct ubus_request_data *aReq, - struct blob_attr *aMsg) +int CapabilitiesLightsModel::post(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *a_msg) { +#if 0 int theResult = 0; struct blob_buf theBuf = {0}; - char *theString = blobmsg_format_json (aMsg, true); + char *theString = blobmsg_format_json(aMsg, true); Json::Reader theReader; Json::StyledWriter theWriter; Json::Value theRoot; Json::Value theOutput; Json::Value theElement; - fprintf (stderr,"CapabilitiesLights::Post \n"); - - if (!theReader.parse (theString, theRoot)) { + fprintf(stderr, "CapabilitiesLights::Post \n"); - fprintf (stderr, "Failed parse the parameters.\n"); - return UBUS_STATUS_INVALID_ARGUMENT; - } + if (!theReader.parse(theString, theRoot)) + { - if (mDevices->set ("Lights", theRoot) < 0) { + fprintf(stderr, "Failed parse the parameters.\n"); + return UBUS_STATUS_INVALID_ARGUMENT; + } - fprintf (stderr, "Failed to set the new state.\n"); - return -1; - } + if (mDevices->set("Lights", theRoot) < 0) + { + + fprintf(stderr, "Failed to set the new state.\n"); + return -1; + } theOutput["Lights"] = theElement; - blob_buf_init (&theBuf, 0); + blob_buf_init(&theBuf, 0); + + blobmsg_add_json_from_string(&theBuf, theWriter.write(theOutput).c_str()); + + theResult = ubus_send_reply(aCtx, aReq, theBuf.head); + + blob_buf_free(&theBuf); - blobmsg_add_json_from_string (&theBuf, theWriter.write(theOutput).c_str()); - - theResult = ubus_send_reply (aCtx, aReq, theBuf.head); - - blob_buf_free (&theBuf); - return theResult; +#endif } diff --git a/src/prog/domod/src/ubus/capabilities_lights.h b/src/prog/domod/src/ubus/capabilities_lights.h index 51b290dd..5b8edba9 100644 --- a/src/prog/domod/src/ubus/capabilities_lights.h +++ b/src/prog/domod/src/ubus/capabilities_lights.h @@ -29,31 +29,29 @@ /*------------------------------- INCLUDES ----------------------------------*/ #include - -#include -#include - +#include /*--------------------------------- Define ----------------------------------*/ -class Devices; +class DevicesManager; /*--------------------------------- CLASS ----------------------------------*/ -class CapabilitiesLightsModel : public UBusObject { +class CapabilitiesLightsModel : public UBusObject +{ -public: - CapabilitiesLightsModel (Devices *aDevice); - ~CapabilitiesLightsModel (void); - - int Get (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); - int Delete (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); - int Put (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); - int Post (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); + public: + CapabilitiesLightsModel(DevicesManager *a_device_manager); + ~CapabilitiesLightsModel(void); -private: - Devices *mDevices; + int get(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); + int del(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); + int put(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); + int post(struct ubus_context *, struct ubus_request_data *, struct blob_attr *); + + private: + DevicesManager *m_devices_manager; }; #endif /* _UBUS_CAPABILITIES_LIGHTS_MODEL_H */ diff --git a/src/prog/domod/src/ubus/timers.h b/src/prog/domod/src/ubus/timers.h index 5e1825f1..143480b9 100644 --- a/src/prog/domod/src/ubus/timers.h +++ b/src/prog/domod/src/ubus/timers.h @@ -44,8 +44,8 @@ public: TimersModel (Timers *aTimers); ~TimersModel (void); - int Get (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); - int Delete (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); + int Get (struct ubus_context*, struct ubus_request_data*, struct blob_attr *); + int Delete (struct ubus_context*, struct ubus_request_data*, struct blob_attr *); private: Timers *mTimers;