Add shutter capability ubus.

This commit is contained in:
jbnadal
2018-04-05 20:10:33 +02:00
parent 4f76e2485e
commit e482ca9d71
4 changed files with 111 additions and 122 deletions

View File

@@ -27,13 +27,13 @@ file(
# ubus models # ubus models
${workspaceRoot}/src/prog/domod/src/ubus/capabilities.cpp ${workspaceRoot}/src/prog/domod/src/ubus/capabilities.cpp
${workspaceRoot}/src/prog/domod/src/ubus/capabilities_lights.cpp ${workspaceRoot}/src/prog/domod/src/ubus/capabilities_lights.cpp
${workspaceRoot}/src/prog/domod/src/ubus/capabilities_shutters.cpp
#${workspaceRoot}/src/prog/domod/src/timers/event.cpp #${workspaceRoot}/src/prog/domod/src/timers/event.cpp
#${workspaceRoot}/src/prog/domod/src/ubus/timers.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/Timers.cpp
# $ENV{SRC_DIR}/src/prog/domod/src/timers/Clock.cpp # $ENV{SRC_DIR}/src/prog/domod/src/timers/Clock.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/capabilities_sprinklers.cpp
# $ENV{SRC_DIR}/src/prog/domod/src/ubus/speach_command.cpp # $ENV{SRC_DIR}/src/prog/domod/src/ubus/speach_command.cpp
# $ENV{SRC_DIR}/src/prog/domod/src/helpers/Tokenizer.cpp # $ENV{SRC_DIR}/src/prog/domod/src/helpers/Tokenizer.cpp

View File

@@ -42,10 +42,11 @@ extern "C" {
#include "ubus/capabilities.h" #include "ubus/capabilities.h"
#include "ubus/capabilities_lights.h" #include "ubus/capabilities_lights.h"
#include "ubus/capabilities_shutters.h"
/*-------------------------------- DEFINES ---------------------------------*/ /*-------------------------------- DEFINES ---------------------------------*/
#define k_dir_sep '/' #define k_dir_sep '/'
#define k_config_dir "share/domo/" #define k_config_dir "share/domo/"
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
@@ -82,8 +83,6 @@ static struct ubus_context *setup_ubus(void)
} }
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn get_config_path * @fn get_config_path
* *
@@ -98,10 +97,11 @@ const std::string get_config_path(char *an_exec_path)
the_pos = the_exec_path.rfind(k_dir_sep); the_pos = the_exec_path.rfind(k_dir_sep);
// get exec path. // get exec path.
the_config_path = the_exec_path.substr(0, the_pos + 1); the_config_path = the_exec_path.substr(0, the_pos + 1);
// remove last / is necessary. // remove last / is necessary.
if (the_config_path[the_config_path.size()-1] == k_dir_sep) { if (the_config_path[the_config_path.size() - 1] == k_dir_sep)
{
the_config_path = the_exec_path.substr(0, the_config_path.size() - 1); the_config_path = the_exec_path.substr(0, the_config_path.size() - 1);
} }
@@ -128,16 +128,17 @@ int main(int argc, char *argv[])
/* Get the Path of the binary to load configs. */ /* Get the Path of the binary to load configs. */
the_config_path = get_config_path(argv[0]); the_config_path = get_config_path(argv[0]);
printf ("config path: %s\n", the_config_path.c_str()); printf("config path: %s\n", the_config_path.c_str());
/* Setup the devices. */ /* Setup the devices. */
DevicesManager the_devices_manager(the_config_path + "/Devices.json"); DevicesManager the_devices_manager(the_config_path + "/Devices.json");
if (the_devices_manager.load() != 0) { if (the_devices_manager.load() != 0)
{
fprintf(stderr, "Failed to load devices.\n"); fprintf(stderr, "Failed to load devices.\n");
return -1; return -1;
} }
/* Setup the Timers. */ /* Setup the Timers. */
#if 0 #if 0
Timers the_timers(the_config_path + "/Timers.json", &the_devices_manager); Timers the_timers(the_config_path + "/Timers.json", &the_devices_manager);
if (the_timers.load() != 0) { if (the_timers.load() != 0) {
@@ -145,11 +146,11 @@ int main(int argc, char *argv[])
return -2; return -2;
} }
#endif #endif
/* Setup the UBus Models. */ /* Setup the UBus Models. */
CapabilitiesModel the_capabilities(the_config_path + "./capabilities.json"); CapabilitiesModel the_capabilities(the_config_path + "./capabilities.json");
CapabilitiesLightsModel the_cap_lights(&the_devices_manager); CapabilitiesLightsModel the_cap_lights(&the_devices_manager);
CapabilitiesShuttersModel the_cap_shutters(&the_devices_manager);
return 0; return 0;
/* Setup the Ubus context. */ /* Setup the Ubus context. */
@@ -162,6 +163,7 @@ int main(int argc, char *argv[])
/* Add the UBus to the model exposed. */ /* Add the UBus to the model exposed. */
ubus_add_object(the_ctx, &the_capabilities); ubus_add_object(the_ctx, &the_capabilities);
ubus_add_object(the_ctx, &the_cap_lights); ubus_add_object(the_ctx, &the_cap_lights);
ubus_add_object(the_ctx, &the_cap_shutters);
/* Main Event Loop. */ /* Main Event Loop. */
uloop_run(); uloop_run();
@@ -174,8 +176,6 @@ int main(int argc, char *argv[])
#if 0 #if 0
#include "ubus/capabilities_shutters.h"
#include "ubus/capabilities_sprinklers.h" #include "ubus/capabilities_sprinklers.h"
#include "ubus/speach_command.h" #include "ubus/speach_command.h"
#include "ubus/timers.h" #include "ubus/timers.h"
@@ -229,7 +229,7 @@ int main (void)
/* Setup the UBus Models. */ /* Setup the UBus Models. */
CapabilitiesModel theCapabilities; CapabilitiesModel theCapabilities;
CapabilitiesLightsModel theCapLights (&theDevices); CapabilitiesLightsModel theCapLights (&theDevices);
CapabilitiesShuttersModel theCapShutters (&theDevices);
CapabilitiesSprinklersModel theCapSprinklers (&theDevices); CapabilitiesSprinklersModel theCapSprinklers (&theDevices);
SpeachCommandModel theSpeachCommand (&theDevices); SpeachCommandModel theSpeachCommand (&theDevices);
TimersModel theTimersModel (&theTimers); TimersModel theTimersModel (&theTimers);
@@ -246,7 +246,7 @@ int main (void)
/* Add the UBus to the model exposed. */ /* Add the UBus to the model exposed. */
ubus_add_object (theCtx, &theCapabilities); ubus_add_object (theCtx, &theCapabilities);
ubus_add_object (theCtx, &theCapLights); ubus_add_object (theCtx, &theCapLights);
ubus_add_object (theCtx, &theCapShutters);
ubus_add_object (theCtx, &theCapSprinklers); ubus_add_object (theCtx, &theCapSprinklers);
ubus_add_object (theCtx, &theSpeachCommand); ubus_add_object (theCtx, &theSpeachCommand);
ubus_add_object (theCtx, &theTimersModel); ubus_add_object (theCtx, &theTimersModel);

View File

@@ -29,32 +29,31 @@ extern "C" {
#include <libubox/blobmsg_json.h> #include <libubox/blobmsg_json.h>
} }
#include <jsoncpp/json.h> #include <json-c/json.h>
#include "devices/Devices.h" #include "devices/devices-manager.h"
#include "capabilities_shutters.h" #include "capabilities_shutters.h"
namespace { namespace
{
using namespace UBus; using namespace UBus;
static ObjectType gCapabilitiesShuttersModelUbus_types( static ObjectType gCapabilitiesShuttersModelUbus_types(
"shutters", "shutters",
Method("get", UBUS_CPP(CapabilitiesShuttersModel, Get)), Method("get", UBUS_CPP(CapabilitiesShuttersModel, get)),
Method("delete", UBUS_CPP(CapabilitiesShuttersModel, Delete)), Method("delete", UBUS_CPP(CapabilitiesShuttersModel, del)),
Method("put", UBUS_CPP(CapabilitiesShuttersModel, Put)), Method("put", UBUS_CPP(CapabilitiesShuttersModel, put)),
Method("post", UBUS_CPP(CapabilitiesShuttersModel, Post)), Method("post", UBUS_CPP(CapabilitiesShuttersModel, post)),
Method("open", UBUS_CPP(CapabilitiesShuttersModel, Open)), Method("open", UBUS_CPP(CapabilitiesShuttersModel, open)),
Method("close", UBUS_CPP(CapabilitiesShuttersModel, Close)), Method("close", UBUS_CPP(CapabilitiesShuttersModel, close)),
Method("up", UBUS_CPP(CapabilitiesShuttersModel, Up)), Method("up", UBUS_CPP(CapabilitiesShuttersModel, up)),
Method("down", UBUS_CPP(CapabilitiesShuttersModel, Down)), Method("down", UBUS_CPP(CapabilitiesShuttersModel, down)),
Method("position", UBUS_CPP(CapabilitiesShuttersModel, Position))
);
Method("position", UBUS_CPP(CapabilitiesShuttersModel, position)));
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
@@ -62,143 +61,133 @@ static ObjectType gCapabilitiesShuttersModelUbus_types(
* *
* @brief Constructor of the UBus Mixer Volume. * @brief Constructor of the UBus Mixer Volume.
*/ */
CapabilitiesShuttersModel::CapabilitiesShuttersModel (Devices *aDevice) : CapabilitiesShuttersModel::CapabilitiesShuttersModel(DevicesManager *a_device_manager) : UBusObject(gCapabilitiesShuttersModelUbus_types, "domo.capabilities.shutters"),
UBusObject (gCapabilitiesShuttersModelUbus_types, "domo.capabilities.shutters"), m_devices_manager(a_device_manager)
mDevices (aDevice)
{ {
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn ~CapabilitiesShuttersModel * @fn ~CapabilitiesShuttersModel
* *
* @brief Destructor of the UBus Mixer Volume. * @brief Destructor of the UBus Mixer Volume.
*/ */
CapabilitiesShuttersModel::~CapabilitiesShuttersModel (void) CapabilitiesShuttersModel::~CapabilitiesShuttersModel(void)
{ {
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn Get * @fn get
* *
* @brief Get the List of the Capabilities. * @brief Get the List of the Capabilities.
*/ */
int CapabilitiesShuttersModel::Get (struct ubus_context *aCtx, struct ubus_request_data *aReq, int CapabilitiesShuttersModel::get(struct ubus_context *a_ctx, struct ubus_request_data *a_req, struct blob_attr *)
struct blob_attr *aMsg)
{ {
int theResult; int the_result;
struct blob_buf theBuf = {0}; struct blob_buf the_buf = {0};
blob_buf_init (&theBuf, 0); blob_buf_init(&the_buf, 0);
blobmsg_add_json_from_string (&theBuf, mDevices->get("Shutters").c_str()); blobmsg_add_json_from_string(&the_buf, m_devices_manager->get(kShutterEntry).c_str());
theResult = ubus_send_reply (aCtx, aReq, theBuf.head); the_result = ubus_send_reply(a_ctx, a_req, the_buf.head);
blob_buf_free (&theBuf); blob_buf_free(&the_buf);
return theResult; return the_result;
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn Delete * @fn del
* *
* @brief Get the List of the Capabilities. * @brief Get the List of the Capabilities.
*/ */
int CapabilitiesShuttersModel::Delete (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) int CapabilitiesShuttersModel::del(struct ubus_context *, struct ubus_request_data *, struct blob_attr *)
{ {
int theResult = 0; int the_result = 0;
return theResult; return the_result;
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn Put * @fn put
* *
* @brief Get the List of the Capabilities. * @brief Get the List of the Capabilities.
*/ */
int CapabilitiesShuttersModel::Put (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) int CapabilitiesShuttersModel::put(struct ubus_context *, struct ubus_request_data *, struct blob_attr *)
{ {
int theResult = 0; int the_result = 0;
return theResult; return the_result;
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn Post * @fn post
* *
* @brief Get the List of the Capabilities. * @brief Get the List of the Capabilities.
*/ */
int CapabilitiesShuttersModel::Post (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) int CapabilitiesShuttersModel::post(struct ubus_context *, struct ubus_request_data *, struct blob_attr *)
{ {
int theResult = 0; int the_result = 0;
return theResult; return the_result;
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn Open * @fn open
* *
* @brief Open the Shutter * @brief Open the Shutter
*/ */
int CapabilitiesShuttersModel::Open (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) int CapabilitiesShuttersModel::open(struct ubus_context *, struct ubus_request_data *, struct blob_attr *)
{ {
int theResult = 0; int the_result = 0;
printf ("Open the Shutter\n"); printf("Open the Shutter\n");
return theResult; return the_result;
}
/*! ----------------------------------------------------------------------------
* @fn Close
*
* @brief Get the List of the Capabilities.
*/
int CapabilitiesShuttersModel::Close (struct ubus_context*, struct ubus_request_data*, struct blob_attr*)
{
int theResult = 0;
printf ("Close the Shutter\n");
return theResult;
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn Up * @fn close
* *
* @brief Get the List of the Capabilities. * @brief Get the List of the Capabilities.
*/ */
int CapabilitiesShuttersModel::Up (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) int CapabilitiesShuttersModel::close(struct ubus_context *, struct ubus_request_data *, struct blob_attr *)
{ {
int theResult = 0; int the_result = 0;
printf ("Up the Shutter\n"); printf("Close the Shutter\n");
return theResult; return the_result;
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn Down * @fn up
* *
* @brief Get the List of the Capabilities. * @brief Get the List of the Capabilities.
*/ */
int CapabilitiesShuttersModel::Down (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) int CapabilitiesShuttersModel::up(struct ubus_context *, struct ubus_request_data *, struct blob_attr *)
{ {
int theResult = 0; int the_result = 0;
printf ("Down the Shutter\n"); printf("Up the Shutter\n");
return theResult; return the_result;
} }
/*! ---------------------------------------------------------------------------- /*! ----------------------------------------------------------------------------
* @fn Position * @fn down
* *
* @brief Get the List of the Capabilities. * @brief Get the List of the Capabilities.
*/ */
int CapabilitiesShuttersModel::Position (struct ubus_context*, struct ubus_request_data*, struct blob_attr*) int CapabilitiesShuttersModel::down(struct ubus_context *, struct ubus_request_data *, struct blob_attr *)
{ {
int theResult = 0; int the_result = 0;
printf ("Position the Shutter\n"); printf("Down the Shutter\n");
return theResult; return the_result;
}
/*! ----------------------------------------------------------------------------
* @fn position
*
* @brief Get the List of the Capabilities.
*/
int CapabilitiesShuttersModel::position(struct ubus_context *, struct ubus_request_data *, struct blob_attr *)
{
int the_result = 0;
printf("Position the Shutter\n");
return the_result;
} }

View File

@@ -1,5 +1,5 @@
/*! /*!
* capabilities_shutters.h * capabilities_shutters
* *
* Copyright (c) 2015-2018, NADAL Jean-Baptiste. All rights reserved. * Copyright (c) 2015-2018, NADAL Jean-Baptiste. All rights reserved.
* *
@@ -29,36 +29,36 @@
/*------------------------------- INCLUDES ----------------------------------*/ /*------------------------------- INCLUDES ----------------------------------*/
#include <stdint.h> #include <stdint.h>
#include <ubus-cpp/UBusObject.h> #include <ubus-cpp/ubus-object.h>
/*--------------------------------- Define ----------------------------------*/ /*--------------------------------- Define ----------------------------------*/
class Devices; class DevicesManager;
/*--------------------------------- CLASS ----------------------------------*/ /*--------------------------------- CLASS ----------------------------------*/
class CapabilitiesShuttersModel : public UBusObject { class CapabilitiesShuttersModel : public UBusObject
{
public:
CapabilitiesShuttersModel(DevicesManager *a_device_manager);
~CapabilitiesShuttersModel(void);
public: int get(struct ubus_context *, struct ubus_request_data *, struct blob_attr *);
CapabilitiesShuttersModel (Devices *aDevice); int del(struct ubus_context *, struct ubus_request_data *, struct blob_attr *);
~CapabilitiesShuttersModel (void); int put(struct ubus_context *, struct ubus_request_data *, struct blob_attr *);
int post(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*);
int Put (struct ubus_context*, struct ubus_request_data*, struct blob_attr*);
int Post (struct ubus_context*, struct ubus_request_data*, struct blob_attr*);
int Open (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*); int close(struct ubus_context *, struct ubus_request_data *, struct blob_attr *);
int Up (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); int up(struct ubus_context *, struct ubus_request_data *, struct blob_attr *);
int Down (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); int down(struct ubus_context *, struct ubus_request_data *, struct blob_attr *);
int Position (struct ubus_context*, struct ubus_request_data*, struct blob_attr*); int position(struct ubus_context *, struct ubus_request_data *, struct blob_attr *);
private: private:
Devices *mDevices; DevicesManager *m_devices_manager;
}; };
#endif /* _UBUS_CAPABILITIES_SHUTTERS_MODEL_H */ #endif /* _UBUS_CAPABILITIES_SHUTTERS_MODEL_H */