diff --git a/src/domod/src/devices/Devices.cpp b/src/domod/src/devices/Devices.cpp index 98250b8c..26d25616 100644 --- a/src/domod/src/devices/Devices.cpp +++ b/src/domod/src/devices/Devices.cpp @@ -109,3 +109,80 @@ int Devices::save (void) return 0; } + + +/*! ---------------------------------------------------------------------------- + * @fn get + * + * @brief get the list of devices of a specific capabilities. + */ +std::string Devices::get (const std::string &aCapability) +{ + Json::StyledWriter theWriter; + Json::Value theOutput; + fprintf (stderr, "Devices::get...\n"); + + if (aCapability == "Lights") { + + theOutput[aCapability] = mLights.to_json(true); + } + else if (aCapability == "Shutters") { + + } + else if (aCapability == "Sprinklers") { + + } + + return theWriter.write (theOutput).c_str(); +} + + +/*! ---------------------------------------------------------------------------- + * @fn get + * + * @brief get the device of a specific capabilities, with the ID. + */ +Json::Value Devices::get (const std::string &aCapability, int anId) +{ + +} + +#if 0 + +/*! ---------------------------------------------------------------------------- + * @fn get + * + * @brief get the list of devices of a specific capabilities. + */ +std::string Devices::get (const std::string &aCapability) +{ + Json::StyledWriter theWriter; + Json::Value theOutput; + + printf ("Get aCapability: %s\n", aCapability.c_str()); + + theOutput[aCapability] = mRoot[aCapability]["data"]; + return theWriter.write (theOutput).c_str(); +} + + +/*! ---------------------------------------------------------------------------- + * @fn get + * + * @brief get the device of a specific capabilities, with the ID. + */ +Json::Value Devices::get (const std::string &aCapability, int anId) +{ + Json::Value theResult; + for (const Json::Value& theElement : mRoot[aCapability]["data"]) { + + if (theElement["id"].asInt() == anId) { + + theResult = theElement; + } + } + + return theResult; +} + +#endif \ No newline at end of file diff --git a/src/domod/src/devices/Devices.h b/src/domod/src/devices/Devices.h index 6c070981..2765bf6f 100644 --- a/src/domod/src/devices/Devices.h +++ b/src/domod/src/devices/Devices.h @@ -50,6 +50,9 @@ public: int load (void); int save (void); + std::string get (const std::string &aCapability); + Json::Value get (const std::string &aCapability, int anId); + private: std::string mFilePath; diff --git a/src/domod/src/devices/LightDevice.cpp b/src/domod/src/devices/LightDevice.cpp index 56ddea40..0a6ceefb 100644 --- a/src/domod/src/devices/LightDevice.cpp +++ b/src/domod/src/devices/LightDevice.cpp @@ -82,7 +82,7 @@ int LightDevice::load_from_json (Json::Value anElem) * * @brief Export LightDevice Object as JSON Object. */ -Json::Value LightDevice::to_json (void) +Json::Value LightDevice::to_json (bool bDataOnly) { Json::Value theResult; Json::Value data_json(Json::arrayValue); @@ -98,5 +98,8 @@ Json::Value LightDevice::to_json (void) theResult["speach_name"] = mspeach_name; theResult["data"] = data_json; + if (bDataOnly == true) + return data_json; + return theResult; } diff --git a/src/domod/src/devices/LightDevice.h b/src/domod/src/devices/LightDevice.h index 00728f8a..1a2f4943 100644 --- a/src/domod/src/devices/LightDevice.h +++ b/src/domod/src/devices/LightDevice.h @@ -46,7 +46,7 @@ public: ~LightDevice (void); int load_from_json (Json::Value anElem); - Json::Value to_json (void); + Json::Value to_json (bool bDataOnly = false); private: std::vector mLights; diff --git a/src/domod/src/main.cpp b/src/domod/src/main.cpp index 5a98e205..145c752a 100644 --- a/src/domod/src/main.cpp +++ b/src/domod/src/main.cpp @@ -114,8 +114,6 @@ int main (void) return -1; } - theDevices.save(); - Capabilities theCapabilities; CapabilitiesLights theCapLights (&theDevices); CapabilitiesShutters theCapShutters (&theDevices); diff --git a/src/domod/src/ubus/capabilities_lights.cpp b/src/domod/src/ubus/capabilities_lights.cpp index 1f5b76d2..3566d016 100644 --- a/src/domod/src/ubus/capabilities_lights.cpp +++ b/src/domod/src/ubus/capabilities_lights.cpp @@ -86,11 +86,11 @@ int CapabilitiesLights::Get (struct ubus_context *aCtx, struct ubus_request_data struct blob_buf theBuf = {0}; blob_buf_init (&theBuf, 0); -/* TODO + 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; diff --git a/src/domod/src/ubus/capabilities_shutters.cpp b/src/domod/src/ubus/capabilities_shutters.cpp index e0645845..76831efa 100644 --- a/src/domod/src/ubus/capabilities_shutters.cpp +++ b/src/domod/src/ubus/capabilities_shutters.cpp @@ -92,9 +92,9 @@ int CapabilitiesShutters::Get (struct ubus_context *aCtx, struct ubus_request_da struct blob_buf theBuf = {0}; blob_buf_init (&theBuf, 0); - /* TODO + blobmsg_add_json_from_string (&theBuf, mDevices->get("Shutters").c_str()); - */ + theResult = ubus_send_reply (aCtx, aReq, theBuf.head); blob_buf_free (&theBuf); diff --git a/src/domod/src/ubus/capabilities_sprinklers.cpp b/src/domod/src/ubus/capabilities_sprinklers.cpp index 69bb94a2..54cd9aa4 100644 --- a/src/domod/src/ubus/capabilities_sprinklers.cpp +++ b/src/domod/src/ubus/capabilities_sprinklers.cpp @@ -70,7 +70,6 @@ CapabilitiesSprinklers::CapabilitiesSprinklers (Devices *aDevice) : */ CapabilitiesSprinklers::~CapabilitiesSprinklers (void) { - } @@ -86,9 +85,9 @@ int CapabilitiesSprinklers::Get (struct ubus_context *aCtx, struct ubus_request_ struct blob_buf theBuf = {0}; blob_buf_init (&theBuf, 0); -/*TODO + blobmsg_add_json_from_string (&theBuf, mDevices->get("Sprinklers").c_str()); -*/ + theResult = ubus_send_reply (aCtx, aReq, theBuf.head); blob_buf_free (&theBuf);