working on outputgpiointerface.cpp

This commit is contained in:
Jonas Zeunert
2018-11-23 01:24:07 +01:00
parent 86f5408263
commit 972f16b0f7
13 changed files with 70 additions and 14 deletions

View File

@@ -26,7 +26,7 @@ public:
GPIOInterface();
virtual ~GPIOInterface() {};
/* todo ???? */
protected:
static void initialize_input_pin(char address);
static void initialize_output_pin(char address);
@@ -37,6 +37,9 @@ public:
public:
static std::once_flag GPIO_LIB_INITIALIZED;
private:
unsigned int pin_base;
};
}

View File

@@ -7,7 +7,7 @@
#include "IOutputGPIOInterface.h"
#include "output/items/IOutputItem.h"
#include "output/items/IItem.h"
#include <memory>
@@ -24,8 +24,8 @@ public:
void activate_pin(int i2c_address, int pin);
void deactivate_pin(int i2c_address, int pin);
void activate_output_item(output::items::IOutputItem *item);
void deactivate_output_item(output::items::IOutputItem *item);
void activate_output_item(output::items::IItem *item);
void deactivate_output_item(output::items::IItem *item);
//Display gpio interface!
};

View File

@@ -20,9 +20,9 @@ namespace utility
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();
}

View File

@@ -20,7 +20,7 @@ namespace utility
class InputGPIOInterface : public IInputGPIOInterface, GPIOInterface
{
public:
InputGPIOInterface(std::istream &input_config_stream);
InputGPIOInterface(std::istream &input_config);
bool read_data(char pin);
private:

View File

@@ -13,6 +13,25 @@ namespace utility
{
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)
{
std::lock_guard<std::mutex> guard(output_item_mutex);

View File

@@ -25,6 +25,8 @@ class OutputGPIOInterface : public GPIOInterface
{
public:
OutputGPIOInterface(std::istream &output_config_stream);
virtual ~OutputGPIOInterface() = default;
void activate(output::items::ISound *sound);
@@ -37,9 +39,28 @@ public:
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:
std::mutex output_item_mutex;
unsigned int pin_base_driver_board;
unsigned int pin_base_sounds;
unsigned int pin_base_displays;
};
}