refactored outpugpiointerface

This commit is contained in:
Jonas Zeunert
2018-12-04 16:28:51 +01:00
parent 6b6b185f8e
commit a60fa8bee5
17 changed files with 97 additions and 131 deletions

View File

@@ -0,0 +1,68 @@
/*
* OutputGPIOInterface.h
*
* Created on: May 31, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert
*/
#ifndef SRC_UTILITIES_OUTPUTGPIOINTERFACE_H_
#define SRC_UTILITIES_OUTPUTGPIOINTERFACE_H_
#include "IOutputGPIOInterface.h"
#include "GPIOInterface.h"
#include "output/items/IItem.h"
#include "json/json.hpp"
#include <mcp23017.h>
#include <mutex>
#include <map>
namespace flippR_driver
{
namespace output
{
class OutputGPIOInterface : public GPIOInterface, IOutputGPIOInterface
{
public:
OutputGPIOInterface(std::map<std::string, uint8_t> pins_driver_board, std::map<std::string, uint8_t> pins_sound, std::map<std::string, uint8_t> pins_display);
virtual ~OutputGPIOInterface() = default;
virtual void activate(output::items::IDriverBoardItem *driver_board_item);
virtual void activate(output::items::ISoundItem *sound);
virtual void deactivate(output::items::IDriverBoardItem *driver_board_item);
virtual void deactivate(output::items::ISoundItem *sound);
virtual void write_display(output::items::IDisplay *display);
private:
void initialize_i2c_addresses();
void initialize_pins();
void initialize_all_pins(uint8_t pin_base);
void write_driver_board_address(uint8_t address);
void select_mux(uint8_t latch);
void select_latch(uint8_t latch);
void select_pin(uint8_t pin);
void write_data(bool data);
void write_sound_address(uint8_t address);
void fire_sound(bool fire);
private:
std::mutex output_item_mutex;
std::map<std::string, uint8_t> pins_driver_board;// {{"i2c_address", 0}, {"pin_base", 0}, {"data", 0}, {"CL", 0}, {"latch-select-A", "0"}, {"latch-select-B", "0"}, {"latch-select-C", 0}, {"mux1", 0}, {"mux2", 0}, {"pin-select-A", 0}, {"pin-select-B", 0}, {"pin-select-C", 0}};
std::map<std::string, uint8_t> pins_sound;// {{"i2c_address", 0}, {"pin_base", 0}, {"fire", 0}, {"A", 0}, {"B", "0"}, {"C", "0"}, {"D", 0}, {"E", 0}, {"F", 0}, {"G", 0}};
std::map<std::string, uint8_t> pins_display;// {{"i2c_address", 0}, {"pin_base", 0}, {"fire", 0}, {"A", 0}, {"B", "0"}, {"C", "0"}, {"D", 0}, {"E", 0}, {"F", 0}, {"G", 0}};
};
}
}
#endif