written output item logic

This commit is contained in:
Jonas Zeunert
2018-11-23 15:17:33 +01:00
parent 89b76ccc37
commit f0e51441b8
14 changed files with 160 additions and 77 deletions

View File

@@ -10,9 +10,13 @@
#include "GPIOInterface.h"
#include "output/items/IOutputItem.h"
#include "output/items/IItem.h"
#include "output/items/IDriverBoardItem.h"
#include "output/items/ISound.h"
#include "output/items/IDisplay.h"
#include "json/json.hpp"
#include <mcp23017.h>
#include <mutex>
#include <map>
@@ -23,7 +27,6 @@ namespace utility
class OutputGPIOInterface : public GPIOInterface
{
using namespace nlohmann;
public:
OutputGPIOInterface(std::istream &output_config_stream);
@@ -31,26 +34,29 @@ public:
virtual ~OutputGPIOInterface() = default;
void activate(output::items::ISound *sound);
void activate(output::items::ILamp *lamp);
void activate(output::items::ISolenoid *solenoid);
void activate(output::items::IDriverBoardItem *driver_board_item);
void deactivate(output::items::ISound *sound);
void deactivate(output::items::ILamp *lamp);
void deactivate(output::items::ISolenoid *solenoid);
void deactivate(output::items::IDriverBoardItem *driver_board_item);
void write_display(output::items::IDisplay &display);
private:
void parse_output_config(json &output_config);
void parse_pins_driver_board(json &driver_board_config);
void parse_pins_sound(json &sound_board_config);
void parse_pins_display(json &display_board_config);
void parse_output_config(nlohmann::json &output_config);
void parse_pins_driver_board(nlohmann::json &driver_board_config);
void parse_pins_sound(nlohmann::json &sound_board_config);
void parse_pins_display(nlohmann::json &display_board_config);
void initialize_i2c_addresses();
void initialize_pins();
void initialize_all_pins(u_int8_t pin_base);
void write_sound_address(u_int8_t address);
void write_driver_board_address(u_int8_t address);
void write_data(bool data);
private:
std::mutex output_item_mutex;