refactored outpugpiointerface
This commit is contained in:
68
FlippR-Driver/src/output/OutputGPIOInterface.h
Normal file
68
FlippR-Driver/src/output/OutputGPIOInterface.h
Normal 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
|
||||
Reference in New Issue
Block a user