Device as Object WIP.

This commit is contained in:
2016-05-21 22:51:02 +02:00
parent 8881bb03a3
commit 111c608361
15 changed files with 335 additions and 4 deletions

View File

@@ -22,6 +22,9 @@ file(
../../src/devices/LightDevice.cpp
../../src/devices/ShutterDevice.cpp
../../src/devices/SprinklerDevice.cpp
../../src/devices/Light.cpp
../../src/devices/Shutter.cpp
../../src/devices/Sprinkler.cpp
../../src/ubus/capabilities.cpp
../../src/ubus/capabilities_lights.cpp
../../src/ubus/capabilities_shutters.cpp

View File

@@ -26,6 +26,9 @@
/*------------------------------- INCLUDES ----------------------------------*/
#include <cstdio>
#include <fstream>
#include <jsoncpp/json.h>
#include "devices/Devices.h"
@@ -58,6 +61,18 @@ Devices::~Devices (void)
*/
int Devices::load (void)
{
Json::Reader theReader;
Json::Value theRoot;
std::ifstream theDevicesFile (mFilePath.c_str());
/* Load and Parse the Json File. */
if (!theReader.parse (theDevicesFile, theRoot)) {
fprintf (stderr, "Failed to parse the Devices File (%s).\n",
mFilePath.c_str());
return -1;
}
//TODO
return 0;
}
@@ -107,5 +122,14 @@ int Devices::load (void)
*/
int Devices::save (void)
{
Json::StyledStreamWriter theWriter;
Json::Value theRoot(Json::objectValue);
/* Save to the File. */
//std::ofstream theOutput (mTimersPath.c_str());
std::ofstream theOutput ("/tmp/toto.json");
theWriter.write (theOutput, theRoot);
return 0;
}

View File

@@ -33,8 +33,6 @@
#include "devices/Device.h"
#include <jsoncpp/json.h>
/*---------------------------------- Deps -----------------------------------*/
@@ -45,10 +43,10 @@ class Devices {
public:
Devices (std::string aPath);
~Devices (void);
int load (void);
int save (void);
private:
std::string mFilePath;
std::map<std::string, Device> mDevices;

View File

@@ -0,0 +1,90 @@
/*!
* Light.cpp
*
* Copyright (c) 2016, NADAL Jean-Baptiste. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*
* @Author: NADAL Jean-Baptiste
* @Date: 21/05/2016
*
*/
/*------------------------------- INCLUDES ----------------------------------*/
#include <cstdio>
#include "devices/Light.h"
/*! ----------------------------------------------------------------------------
* @fn Light
*
* @brief Constructor of the Light Object.
*/
Light::Light (void)
{
}
/*! ----------------------------------------------------------------------------
* @fn ~Light
*
* @brief Destructor of the Light Object.
*/
Light::~Light (void)
{
}
/*! ----------------------------------------------------------------------------
* @fn load_from_json
*
* @brief Load a Light Element from a Json Entry.
*/
int Light::load_from_json (Json::Value anElem)
{
mID = anElem["id"].asInt();
mName = anElem["name"].asString();
mSpeach_name = anElem["speach_name"].asString();
mZone = anElem["zone"].asString();
mState = anElem["state"].asBool();
mSender = anElem["sender"].asInt();
mInterruptor = anElem["interruptor"].asInt();
}
/*! ----------------------------------------------------------------------------
* @fn to_json
*
* @brief Return Light Object as a Json Object.
*/
Json::Value Light::to_json (void) const
{
Json::Value aResult(Json::objectValue);
aResult["id"] = mID;
aResult["name"] = mName;
aResult["speach_name"] = mSpeach_name;
aResult["zone"] = mZone;
aResult["state"] = mState;
aResult["sender"] = mSender;
aResult["interruptor"] = mInterruptor;
return aResult;
}

View File

@@ -0,0 +1,62 @@
/*!
* Light.h
*
* Copyright (c) 2016, NADAL Jean-Baptiste. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*
* @Author: NADAL Jean-Baptiste
* @Date: 21/05/2016
*
*/
#ifndef _LIGHT_H
#define _LIGHT_H
/*------------------------------- INCLUDES ----------------------------------*/
#include <stdint.h>
#include <string>
#include <jsoncpp/json.h>
/*---------------------------------- Deps -----------------------------------*/
/*--------------------------------- CLASS ----------------------------------*/
class Light {
public:
Light (void);
~Light (void);
int load_from_json (Json::Value anElem);
Json::Value to_json (void) const;
private:
uint16_t mID;
std::string mName;
std::string mSpeach_name;
std::string mZone;
bool mState;
uint32_t mSender;
uint8_t mInterruptor;
};
#endif /* _LIGHT_H */

View File

@@ -28,6 +28,10 @@
/*------------------------------- INCLUDES ----------------------------------*/
#include <string>
#include <vector>
#include "devices/Light.h"
#include "devices/Device.h"
/*---------------------------------- Deps -----------------------------------*/
@@ -40,6 +44,10 @@ class LightDevice : public Device {
public:
LightDevice (void);
~LightDevice (void);
private:
std::string mspeach_name;
std::vector <Light> mLights;
};

View File

View File

@@ -0,0 +1,63 @@
/*!
* Shutter.h
*
* Copyright (c) 2016, NADAL Jean-Baptiste. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*
* @Author: NADAL Jean-Baptiste
* @Date: 21/05/2016
*
*/
#ifndef _SHUTTER_H
#define _SHUTTER_H
/*------------------------------- INCLUDES ----------------------------------*/
#include <stdint.h>
#include <string>
#include <jsoncpp/json.h>
/*---------------------------------- Deps -----------------------------------*/
/*--------------------------------- CLASS ----------------------------------*/
class Shutter {
public:
Shutter (void);
~Shutter (void);
int load_from_json (Json::Value anElem);
Json::Value to_json (void) const;
private:
uint16_t mID;
std::string mName;
std::string mSpeach_name;
std::string mZone;
bool mState;
uint32_t mSender;
uint8_t mInterruptor;
uint8_t mSpeed_up;
uint8_t mSpeed_down;
};
#endif /* _SHUTTER_H */

View File

View File

@@ -0,0 +1,58 @@
/*!
* Sprinkler.h
*
* Copyright (c) 2016, NADAL Jean-Baptiste. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*
* @Author: NADAL Jean-Baptiste
* @Date: 21/05/2016
*
*/
#ifndef _SPRINKLER_H
#define _SPRINKLER_H
/*------------------------------- INCLUDES ----------------------------------*/
#include <stdint.h>
#include <string>
#include <jsoncpp/json.h>
/*---------------------------------- Deps -----------------------------------*/
/*--------------------------------- CLASS ----------------------------------*/
class Sprinkler {
public:
Sprinkler (void);
~Sprinkler (void);
int load_from_json (Json::Value anElem);
Json::Value to_json (void) const;
private:
uint16_t mID;
std::string mName;
std::string mSpeach_name;
bool mState;
};
#endif /* _SPRINKLER_H */

View File

@@ -113,6 +113,8 @@ int main (void)
return -1;
}
theDevices.save();
Capabilities theCapabilities;
CapabilitiesLights theCapLights (&theDevices);

View File

@@ -31,6 +31,8 @@ extern "C" {
#include <ubuscpp/UBusCall.h>
#include <jsoncpp/json.h>
#include "devices/Devices.h"
#include "capabilities_lights.h"

View File

@@ -29,6 +29,8 @@ extern "C" {
#include <libubox/blobmsg_json.h>
}
#include <jsoncpp/json.h>
#include "devices/Devices.h"
#include "capabilities_shutters.h"

View File

@@ -31,6 +31,8 @@ extern "C" {
#include <ubuscpp/UBusCall.h>
#include <jsoncpp/json.h>
#include "devices/Devices.h"
#include "capabilities_sprinklers.h"