working on outputgpiointerface.cpp
This commit is contained in:
13
FlippR-Driver/contrib/uml/OutputItem_SequenceDiagram.puml
Normal file
13
FlippR-Driver/contrib/uml/OutputItem_SequenceDiagram.puml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
@startuml
|
||||||
|
Sound -> GPIOInterface:activate()
|
||||||
|
GPIOInterface --> GPIOInterface:setAddress()
|
||||||
|
GPIOInterface --> GPIOInterface:setDataPin(1)
|
||||||
|
GPIOInterface -> Sound:done
|
||||||
|
Sound --> Sound:sleep_for()
|
||||||
|
Sound -> GPIOInterface:deactivate()
|
||||||
|
GPIOInterface --> GPIOInterface:setAddress()
|
||||||
|
GPIOInterface --> GPIOInterface:setDataPin(0)
|
||||||
|
GPIOInterface -> Sound:done
|
||||||
|
|
||||||
|
|
||||||
|
@enduml
|
||||||
@@ -16,10 +16,10 @@ namespace output
|
|||||||
namespace items
|
namespace items
|
||||||
{
|
{
|
||||||
|
|
||||||
class IOutputItem
|
class IItem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~IOutputItem();
|
virtual ~IItem();
|
||||||
virtual void activate() = 0;
|
virtual void activate() = 0;
|
||||||
virtual void deactivate() = 0;
|
virtual void deactivate() = 0;
|
||||||
};
|
};
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
// Created by rhetenor on 21.11.18.
|
// Created by rhetenor on 21.11.18.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "OutputItem.h"
|
#include "Item.h"
|
||||||
|
|
||||||
namespace flippR_driver
|
namespace flippR_driver
|
||||||
{
|
{
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
#ifndef _SRC_OUTPUT_CABINETITEM_H_
|
#ifndef _SRC_OUTPUT_CABINETITEM_H_
|
||||||
#define _SRC_OUTPUT_CABINETITEM_H_
|
#define _SRC_OUTPUT_CABINETITEM_H_
|
||||||
|
|
||||||
#include "IOutputItem.h"
|
#include "IItem.h"
|
||||||
|
|
||||||
#include "utility/IOutputGPIOInterface.h"
|
#include "utility/IOutputGPIOInterface.h"
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
#ifndef _SRC_OUTPUT_LAMP_H_
|
#ifndef _SRC_OUTPUT_LAMP_H_
|
||||||
#define _SRC_OUTPUT_LAMP_H_
|
#define _SRC_OUTPUT_LAMP_H_
|
||||||
|
|
||||||
#include "OutputItem.h"
|
#include "Item.h"
|
||||||
#include "output/items/ILamp.h"
|
#include "output/items/ILamp.h"
|
||||||
|
|
||||||
namespace flippR_driver
|
namespace flippR_driver
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#define _SRC_OUTPUT_SOLENOID_H_
|
#define _SRC_OUTPUT_SOLENOID_H_
|
||||||
|
|
||||||
#include "output/items/ISolenoid.h"
|
#include "output/items/ISolenoid.h"
|
||||||
#include "OutputItem.h"
|
#include "Item.h"
|
||||||
|
|
||||||
#include <future>
|
#include <future>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#define _SRC_OUTPUT_SOUND_H_
|
#define _SRC_OUTPUT_SOUND_H_
|
||||||
|
|
||||||
#include "output/items/ISound.h"
|
#include "output/items/ISound.h"
|
||||||
#include "OutputItem.h"
|
#include "Item.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public:
|
|||||||
GPIOInterface();
|
GPIOInterface();
|
||||||
virtual ~GPIOInterface() {};
|
virtual ~GPIOInterface() {};
|
||||||
|
|
||||||
/* todo ???? */
|
protected:
|
||||||
static void initialize_input_pin(char address);
|
static void initialize_input_pin(char address);
|
||||||
|
|
||||||
static void initialize_output_pin(char address);
|
static void initialize_output_pin(char address);
|
||||||
@@ -37,6 +37,9 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
static std::once_flag GPIO_LIB_INITIALIZED;
|
static std::once_flag GPIO_LIB_INITIALIZED;
|
||||||
|
|
||||||
|
private:
|
||||||
|
unsigned int pin_base;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#include "IOutputGPIOInterface.h"
|
#include "IOutputGPIOInterface.h"
|
||||||
|
|
||||||
#include "output/items/IOutputItem.h"
|
#include "output/items/IItem.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@ public:
|
|||||||
void activate_pin(int i2c_address, int pin);
|
void activate_pin(int i2c_address, int pin);
|
||||||
void deactivate_pin(int i2c_address, int pin);
|
void deactivate_pin(int i2c_address, int pin);
|
||||||
|
|
||||||
void activate_output_item(output::items::IOutputItem *item);
|
void activate_output_item(output::items::IItem *item);
|
||||||
void deactivate_output_item(output::items::IOutputItem *item);
|
void deactivate_output_item(output::items::IItem *item);
|
||||||
|
|
||||||
//Display gpio interface!
|
//Display gpio interface!
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ namespace utility
|
|||||||
|
|
||||||
using namespace nlohmann;
|
using namespace nlohmann;
|
||||||
|
|
||||||
InputGPIOInterface::InputGPIOInterface(std::istream &input_config_stream)
|
InputGPIOInterface::InputGPIOInterface(std::istream &input_config)
|
||||||
{
|
{
|
||||||
init_members(input_config_stream);
|
init_members(input_config);
|
||||||
|
|
||||||
init_pins();
|
init_pins();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace utility
|
|||||||
class InputGPIOInterface : public IInputGPIOInterface, GPIOInterface
|
class InputGPIOInterface : public IInputGPIOInterface, GPIOInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
InputGPIOInterface(std::istream &input_config_stream);
|
InputGPIOInterface(std::istream &input_config);
|
||||||
bool read_data(char pin);
|
bool read_data(char pin);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -13,6 +13,25 @@ namespace utility
|
|||||||
{
|
{
|
||||||
using namespace output::items;
|
using namespace output::items;
|
||||||
|
|
||||||
|
OutputGPIOInterface::OutputGPIOInterface(std::istream &output_config_stream)
|
||||||
|
{
|
||||||
|
json output_config;
|
||||||
|
output_config_stream >> output_config;
|
||||||
|
|
||||||
|
parse_pin_bases(output_config);
|
||||||
|
|
||||||
|
initialize_i2c_addresses(output_config);
|
||||||
|
|
||||||
|
initialize_pins();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OutputGPIOInterface::initialize_i2c_addresses(json &output_config)
|
||||||
|
{
|
||||||
|
mcp23017Setup(i2c_address_driver_board, parse_i2c_address_driver_board(output_config));
|
||||||
|
mcp23017Setup(i2c_address_sounds, parse_i2c_address_sound_board(output_config));
|
||||||
|
mcp23017Setup(pin_base_displays, parse_i2c_address_display_board(output_config));
|
||||||
|
}
|
||||||
|
|
||||||
void OutputGPIOInterface::activate_output_item(IOutputItem *item)
|
void OutputGPIOInterface::activate_output_item(IOutputItem *item)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> guard(output_item_mutex);
|
std::lock_guard<std::mutex> guard(output_item_mutex);
|
||||||
@@ -25,6 +25,8 @@ class OutputGPIOInterface : public GPIOInterface
|
|||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
OutputGPIOInterface(std::istream &output_config_stream);
|
||||||
|
|
||||||
virtual ~OutputGPIOInterface() = default;
|
virtual ~OutputGPIOInterface() = default;
|
||||||
|
|
||||||
void activate(output::items::ISound *sound);
|
void activate(output::items::ISound *sound);
|
||||||
@@ -37,9 +39,28 @@ public:
|
|||||||
|
|
||||||
void write_display(output::items::IDisplay &display);
|
void write_display(output::items::IDisplay &display);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void parse_pin_bases(json &output_config_stream);
|
||||||
|
void initialize_i2c_addresses(json &output_config);
|
||||||
|
|
||||||
|
char parse_i2c_address_driver_board(json &output_config_stream);
|
||||||
|
char parse_i2c_address_sound_board(json &output_config_stream);
|
||||||
|
char parse_i2c_address_display_board(json &output_config_stream);
|
||||||
|
|
||||||
|
void initialize_pins();
|
||||||
|
|
||||||
|
void activate(output::items::IOutputItem outputItem);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::mutex output_item_mutex;
|
std::mutex output_item_mutex;
|
||||||
|
|
||||||
|
unsigned int pin_base_driver_board;
|
||||||
|
unsigned int pin_base_sounds;
|
||||||
|
unsigned int pin_base_displays;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user