diff --git a/FlippR-Driver/src/input/EventHandler.cpp b/FlippR-Driver/src/input/EventHandler.cpp index 4e274ba..9002bdd 100644 --- a/FlippR-Driver/src/input/EventHandler.cpp +++ b/FlippR-Driver/src/input/EventHandler.cpp @@ -23,7 +23,6 @@ EventHandler::EventHandler(std::shared_ptr input_driver) : EventHandler::~EventHandler() { this->input_driver->unregister_event_handler(this); - this->input_driver = nullptr; } // This function is intended to be non pure, if it is called when the derived class doesn't exist anymore diff --git a/FlippR-Driver/src/input/EventNotifier.h b/FlippR-Driver/src/input/EventNotifier.h index 5245011..97eb2ac 100644 --- a/FlippR-Driver/src/input/EventNotifier.h +++ b/FlippR-Driver/src/input/EventNotifier.h @@ -42,7 +42,7 @@ private: void notify(); private: - const utility::IBlockingQueue* event_queue; + utility::IBlockingQueue* event_queue; std::set event_handlers; bool is_running; diff --git a/FlippR-Driver/src/output/OutputDriver.cpp b/FlippR-Driver/src/output/OutputDriver.cpp index 8f83ad3..cb9e5e8 100644 --- a/FlippR-Driver/src/output/OutputDriver.cpp +++ b/FlippR-Driver/src/output/OutputDriver.cpp @@ -58,25 +58,26 @@ std::vector> OutputDriver::get_solenoids() return solenoids; } -std::shared_ptr OutputDriver::get_sound(std::string name) +boost::optional> OutputDriver::get_lamp(std::string name) { - return this->sounds.find(name)->second; +return this->lamps.find(name)->second; } -std::shared_ptr OutputDriver::get_display(char number) -{ - return this->displays.find(number)->second; -} - -std::shared_ptr OutputDriver::get_lamp(std::string name) -{ - return this->lamps.find(name)->second; -} - -std::shared_ptr OutputDriver::get_solenoid(std::string name) +boost::optional> OutputDriver::get_solenoid(std::string name) { return this->solenoids.find(name)->second; } +boost::optional> OutputDriver::get_sound(std::string name) +{ + return this->sounds.find(name)->second; +} + +boost::optional> OutputDriver::get_display(char number) +{ + return this->displays.find(number)->second; +} + + } /* namespace output */ } diff --git a/FlippR-Driver/src/output/OutputGPIOInterface.cpp b/FlippR-Driver/src/output/OutputGPIOInterface.cpp index f0b3485..f07ea43 100644 --- a/FlippR-Driver/src/output/OutputGPIOInterface.cpp +++ b/FlippR-Driver/src/output/OutputGPIOInterface.cpp @@ -25,9 +25,9 @@ OutputGPIOInterface::OutputGPIOInterface(std::map pins_dri void OutputGPIOInterface::initialize_pins() { // Since this are all outputs we just initialize everything as output conveniently - initialize_all_pins(pins_driver_board["pin_base"]); - initialize_all_pins(pins_sound["pin_base"]); - initialize_all_pins(pins_display["pin_base"]); + initialize_all_pins(pins_driver_board.at("pin_base")); + initialize_all_pins(pins_sound.at("pin_base")); + initialize_all_pins(pins_display.at("pin_base")); } void OutputGPIOInterface::initialize_all_pins(uint8_t pin_base) @@ -40,9 +40,9 @@ void OutputGPIOInterface::initialize_all_pins(uint8_t pin_base) void OutputGPIOInterface::initialize_i2c_addresses() { - mcp23017Setup(pins_driver_board["pin_base"], pins_driver_board["i2c_address"]); - mcp23017Setup(pins_sound["pin_base"], pins_sound["i2c_address"]); - mcp23017Setup(pins_display["pin_base"], pins_display["i2c_address"]); + mcp23017Setup(pins_driver_board.at("pin_base"), pins_driver_board.at("i2c_address")); + mcp23017Setup(pins_sound.at("pin_base"), pins_sound.at("i2c_address")); + mcp23017Setup(pins_display.at("pin_base"), pins_display.at("i2c_address")); } void OutputGPIOInterface::activate(output::items::ISoundItem *sound) @@ -97,8 +97,8 @@ void OutputGPIOInterface::select_mux(uint8_t latch) { bool mux1 = latch / 8; - write_pin(pins_driver_board["mux1"], mux1); - write_pin(pins_driver_board["mux2"], !mux1); + write_pin(pins_driver_board.at("mux1"), mux1); + write_pin(pins_driver_board.at("mux2"), !mux1); } void OutputGPIOInterface::select_latch(uint8_t latch) @@ -107,38 +107,38 @@ void OutputGPIOInterface::select_latch(uint8_t latch) if(latch > 8) latch -= 8; - write_pin(pins_driver_board["latch-select-A"], latch & 0b001); - write_pin(pins_driver_board["latch-select-B"], latch & 0b010); - write_pin(pins_driver_board["latch-select-C"], latch & 0b100); + write_pin(pins_driver_board.at("latch-select-A"), latch & 0b001); + write_pin(pins_driver_board.at("latch-select-B"), latch & 0b010); + write_pin(pins_driver_board.at("latch-select-C"), latch & 0b100); } void OutputGPIOInterface::write_data(bool data) { - write_pin(pins_driver_board["data"], data); + write_pin(pins_driver_board.at("data"), data); } void OutputGPIOInterface::select_pin(uint8_t pin) { - write_pin(pins_driver_board["pin-select-A"], pin & 0b001); - write_pin(pins_driver_board["pin-select-B"], pin & 0b010); - write_pin(pins_driver_board["pin-select-C"], pin & 0b100); + write_pin(pins_driver_board.at("pin-select-A"), pin & 0b001); + write_pin(pins_driver_board.at("pin-select-B"), pin & 0b010); + write_pin(pins_driver_board.at("pin-select-C"), pin & 0b100); } void OutputGPIOInterface::write_sound_address(uint8_t address) { - write_pin(pins_sound["A"], address & 0b0000001); - write_pin(pins_sound["B"], address & 0b0000010); - write_pin(pins_sound["C"], address & 0b0000100); - write_pin(pins_sound["D"], address & 0b0001000); - write_pin(pins_sound["E"], address & 0b0010000); - write_pin(pins_sound["F"], address & 0b0100000); - write_pin(pins_sound["G"], address & 0b1000000); + write_pin(pins_sound.at("A"), address & 0b0000001); + write_pin(pins_sound.at("B"), address & 0b0000010); + write_pin(pins_sound.at("C"), address & 0b0000100); + write_pin(pins_sound.at("D"), address & 0b0001000); + write_pin(pins_sound.at("E"), address & 0b0010000); + write_pin(pins_sound.at("F"), address & 0b0100000); + write_pin(pins_sound.at("G"), address & 0b1000000); } void OutputGPIOInterface::fire_sound(bool fire) { - GPIOInterface::write_pin(pins_sound["fire"], fire); + GPIOInterface::write_pin(pins_sound.at("fire"), fire); } void OutputGPIOInterface::write_display(std::shared_ptr display) diff --git a/FlippR-Driver/src/output/OutputGPIOInterface.h b/FlippR-Driver/src/output/OutputGPIOInterface.h index fc76847..6dbf4db 100644 --- a/FlippR-Driver/src/output/OutputGPIOInterface.h +++ b/FlippR-Driver/src/output/OutputGPIOInterface.h @@ -57,9 +57,9 @@ private: private: std::mutex output_item_mutex; - std::map 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 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 pins_display;// {{"i2c_address", 0}, {"pin_base", 0}, {"fire", 0}, {"A", 0}, {"B", "0"}, {"C", "0"}, {"D", 0}, {"E", 0}, {"F", 0}, {"G", 0}}; + const std::map pins_driver_board; + const std::map pins_sound; + const std::map pins_display; }; }