added ItemVarHolder

This commit is contained in:
Johannes Wendel
2019-08-29 22:19:21 +02:00
parent 4aa6a68a2f
commit 2b5fb960b8
7 changed files with 62 additions and 7 deletions

View File

@@ -11,6 +11,7 @@ set(LIB_DIR lib)
set(DEFAULT_BUILD_TYPE DEBUG) set(DEFAULT_BUILD_TYPE DEBUG)
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 14)
SET(DBoost_NO_BOOST_CMAKE=ON)
IF(NOT_PI) IF(NOT_PI)
add_definitions(-DNOT_PI) add_definitions(-DNOT_PI)

View File

@@ -35,7 +35,7 @@ public:
std::map<std::string, std::shared_ptr<items::Lamp>> lamps, std::map<std::string, std::shared_ptr<items::Sound>> sounds, std::map<std::string, std::shared_ptr<items::Lamp>> lamps, std::map<std::string, std::shared_ptr<items::Sound>> sounds,
std::map<std::string, std::shared_ptr<items::Flipper>> flippers, std::map<uint8_t, std::shared_ptr<output::items::Display>> displays); std::map<std::string, std::shared_ptr<items::Flipper>> flippers, std::map<uint8_t, std::shared_ptr<output::items::Display>> displays);
~OutputDriver() = default; ~OutputDriver() = default;//TODO aufräumen
void activate_displays() const; void activate_displays() const;
void deactivate_displays() const; void deactivate_displays() const;

View File

@@ -9,6 +9,8 @@
#define _SRC_OUTPUT_ICABINETITEM_H_ #define _SRC_OUTPUT_ICABINETITEM_H_
#include <string> #include <string>
#include <Poco/RefCountedObject.h>
#include <Poco/JSON/Object.h>
namespace flippR_driver namespace flippR_driver
{ {

View File

@@ -7,7 +7,8 @@ set(SOURCES
output/OutputRequestHandler.cpp output/OutputRequestHandler.cpp
output/OutputRequestHandlerFactory.cpp output/OutputRequestHandlerFactory.cpp
FlippRServer.cpp FlippRServer.cpp
input/InputSocketHandlerFactory.cpp) input/InputSocketHandlerFactory.cpp
output/ItemVarHolder.h)
add_executable(${PROJECT_NAME} ${SOURCES}) add_executable(${PROJECT_NAME} ${SOURCES})

View File

@@ -0,0 +1,48 @@
//
// Created by johannes on 29.08.19.
//
#ifndef FLIPPR_DRIVER_ITEMVARHOLDER_H
#define FLIPPR_DRIVER_ITEMVARHOLDER_H
#include <Poco/Dynamic/VarHolder.h>
#include <memory>
#include "output/items/Item.h"
template <>
class Poco::Dynamic::VarHolderImpl<std::shared_ptr<flippR_driver::output::items::Item>> : public Poco::Dynamic::VarHolder
{
public:
VarHolderImpl(const std::shared_ptr<flippR_driver::output::items::Item> & 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<flippR_driver::output::items::Item> & value() const
{
return item;
}
private:
std::shared_ptr<flippR_driver::output::items::Item> item;
};
#endif //FLIPPR_DRIVER_ITEMVARHOLDER_H

View File

@@ -29,7 +29,6 @@ public:
~Item() override = default; ~Item() override = default;
std::string get_name() const override; std::string get_name() const override;
protected: protected:
const std::string name; const std::string name;

View File

@@ -2,13 +2,12 @@ import requests_unixsocket as req
import socket import socket
class Networking: 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): def __init__(self, output_server_address, input_socket_address):
self.server_address = "http+unix://" + output_server_address.replace("/", "%2F") self.server_address = "http+unix://" + output_server_address.replace("/", "%2F")
self.input_socket.connect(input_socket_address) 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) print("Connected to " + input_socket_address + " and started server " + self.server_address)
def get(self, path): def get(self, path):
@@ -18,10 +17,13 @@ class Networking:
def getSolenoids(self): def getSolenoids(self):
return self.get("/solenoids").json() return self.get("/solenoids").json()
def getSounds(self): def getSounds(self):
return self.get("/sounds").json() return self.get("/sounds").json()
def getLamps(self): def getLamps(self):
return self.get("/lamps").json() return self.get("/lamps").json()
def getDisplays(self): def getDisplays(self):
return self.get("/displays").json() return self.get("/displays").json()
@@ -33,8 +35,10 @@ class Networking:
def activateLamp(self, lamp): def activateLamp(self, lamp):
self.get("/lamps/" + lamp + "/activate") self.get("/lamps/" + lamp + "/activate")
def deactivateLamp(self, lamp): def deactivateLamp(self, lamp):
self.get("/lamps/" + lamp + "/deactivate") self.get("/lamps/" + lamp + "/deactivate")
def lampStatus(self, lamp): def lampStatus(self, lamp):
return self.get("/lamps/" + lamp + "/status").json() return self.get("/lamps/" + lamp + "/status").json()