From 919f75b238b1b02691391c1f4996e53e7995fe13 Mon Sep 17 00:00:00 2001 From: Johannes Wendel Date: Thu, 29 Aug 2019 22:19:21 +0200 Subject: [PATCH] added ItemVarHolder --- FlippR-Driver/CMakeLists.txt | 1 + FlippR-Driver/include/output/OutputDriver.h | 2 +- FlippR-Driver/include/output/items/Item.h | 2 + FlippR-Driver/networking/CMakeLists.txt | 3 +- .../networking/output/ItemVarHolder.h | 48 +++++++++++++++++++ FlippR-Driver/src/output/items/detail/Item.h | 1 - cli/FlippR_Networking.py | 12 +++-- 7 files changed, 62 insertions(+), 7 deletions(-) create mode 100644 FlippR-Driver/networking/output/ItemVarHolder.h diff --git a/FlippR-Driver/CMakeLists.txt b/FlippR-Driver/CMakeLists.txt index 7069264..922538c 100644 --- a/FlippR-Driver/CMakeLists.txt +++ b/FlippR-Driver/CMakeLists.txt @@ -11,6 +11,7 @@ set(LIB_DIR lib) set(DEFAULT_BUILD_TYPE DEBUG) set(CMAKE_CXX_STANDARD 14) +SET(DBoost_NO_BOOST_CMAKE=ON) IF(NOT_PI) add_definitions(-DNOT_PI) diff --git a/FlippR-Driver/include/output/OutputDriver.h b/FlippR-Driver/include/output/OutputDriver.h index 0d96ccc..e80a72d 100644 --- a/FlippR-Driver/include/output/OutputDriver.h +++ b/FlippR-Driver/include/output/OutputDriver.h @@ -35,7 +35,7 @@ public: std::map> lamps, std::map> sounds, std::map> flippers, std::map> displays); - ~OutputDriver() = default; + ~OutputDriver() = default;//TODO aufräumen void activate_displays() const; void deactivate_displays() const; diff --git a/FlippR-Driver/include/output/items/Item.h b/FlippR-Driver/include/output/items/Item.h index 01dd0d1..7b34fe7 100644 --- a/FlippR-Driver/include/output/items/Item.h +++ b/FlippR-Driver/include/output/items/Item.h @@ -9,6 +9,8 @@ #define _SRC_OUTPUT_ICABINETITEM_H_ #include +#include +#include namespace flippR_driver { diff --git a/FlippR-Driver/networking/CMakeLists.txt b/FlippR-Driver/networking/CMakeLists.txt index a67d5cb..06159c7 100644 --- a/FlippR-Driver/networking/CMakeLists.txt +++ b/FlippR-Driver/networking/CMakeLists.txt @@ -7,7 +7,8 @@ set(SOURCES output/OutputRequestHandler.cpp output/OutputRequestHandlerFactory.cpp FlippRServer.cpp - input/InputSocketHandlerFactory.cpp) + input/InputSocketHandlerFactory.cpp + output/ItemVarHolder.h) add_executable(${PROJECT_NAME} ${SOURCES}) diff --git a/FlippR-Driver/networking/output/ItemVarHolder.h b/FlippR-Driver/networking/output/ItemVarHolder.h new file mode 100644 index 0000000..e951931 --- /dev/null +++ b/FlippR-Driver/networking/output/ItemVarHolder.h @@ -0,0 +1,48 @@ +// +// Created by johannes on 29.08.19. +// + +#ifndef FLIPPR_DRIVER_ITEMVARHOLDER_H +#define FLIPPR_DRIVER_ITEMVARHOLDER_H + +#include +#include + +#include "output/items/Item.h" + + +template <> +class Poco::Dynamic::VarHolderImpl> : public Poco::Dynamic::VarHolder +{ +public: + VarHolderImpl(const std::shared_ptr & item) : + item(item) + {} + + void convert(std::string & val) const override + { + val = this->item->get_name(); + } + + VarHolder * clone(Placeholder < VarHolder > * pHolder = 0) const override + { + return cloneHolder(pHolder, item); + } + + const std::type_info & type() const override + { + return typeid(item); + } + + const std::shared_ptr & value() const + { + return item; + } + +private: + std::shared_ptr item; + +}; + + +#endif //FLIPPR_DRIVER_ITEMVARHOLDER_H diff --git a/FlippR-Driver/src/output/items/detail/Item.h b/FlippR-Driver/src/output/items/detail/Item.h index 85426cf..e896e36 100644 --- a/FlippR-Driver/src/output/items/detail/Item.h +++ b/FlippR-Driver/src/output/items/detail/Item.h @@ -29,7 +29,6 @@ public: ~Item() override = default; std::string get_name() const override; - protected: const std::string name; diff --git a/cli/FlippR_Networking.py b/cli/FlippR_Networking.py index e2e1a96..1aec8b0 100644 --- a/cli/FlippR_Networking.py +++ b/cli/FlippR_Networking.py @@ -2,13 +2,12 @@ import requests_unixsocket as req import socket class Networking: - output_session = req.Session() - input_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - server_address = "" - def __init__(self, output_server_address, input_socket_address): self.server_address = "http+unix://" + output_server_address.replace("/", "%2F") self.input_socket.connect(input_socket_address) + self.output_session = req.Session() + self.input_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + self.server_address = "" print("Connected to " + input_socket_address + " and started server " + self.server_address) def get(self, path): @@ -18,10 +17,13 @@ class Networking: def getSolenoids(self): return self.get("/solenoids").json() + def getSounds(self): return self.get("/sounds").json() + def getLamps(self): return self.get("/lamps").json() + def getDisplays(self): return self.get("/displays").json() @@ -33,8 +35,10 @@ class Networking: def activateLamp(self, lamp): self.get("/lamps/" + lamp + "/activate") + def deactivateLamp(self, lamp): self.get("/lamps/" + lamp + "/deactivate") + def lampStatus(self, lamp): return self.get("/lamps/" + lamp + "/status").json()