From 4da36b78497fadf04c992fa87c45b494035c9962 Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Wed, 15 Jan 2020 17:35:50 +0100 Subject: [PATCH] initialize output pins --- FlippR-Driver/src/PinController.cpp | 9 --------- FlippR-Driver/src/PinController.h | 2 -- .../output/detail/DisplayBoardPinController.cpp | 12 ++++++++++-- .../src/output/detail/DisplayBoardPinController.h | 1 + .../src/output/detail/DriverBoardPinController.cpp | 14 ++++++++++++++ 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/FlippR-Driver/src/PinController.cpp b/FlippR-Driver/src/PinController.cpp index 7bff902..2f5fc67 100644 --- a/FlippR-Driver/src/PinController.cpp +++ b/FlippR-Driver/src/PinController.cpp @@ -69,13 +69,4 @@ void PinController::initialize_port_expander(const uint8_t i2c_address, const ui CLOG(INFO, OUTPUT_LOGGER) << "MCP23017 initialized with i2c-address 0x" << hex_string << " and pin-base " << int(pin_base) << "."; } - -void PinController::initialize_pins_output(const uint8_t pin_base, std::map::iterator begin, std::map::iterator end) -{ - for(; begin != end; begin++) - { - initialize_output_pin(pin_base + begin->second); - } -} - } diff --git a/FlippR-Driver/src/PinController.h b/FlippR-Driver/src/PinController.h index f1aa4cc..e85941f 100644 --- a/FlippR-Driver/src/PinController.h +++ b/FlippR-Driver/src/PinController.h @@ -33,8 +33,6 @@ protected: static bool read_pin(uint8_t address); - static void initialize_pins_output(const uint8_t pin_base, std::map::iterator begin, std::map::iterator end); - public: static std::once_flag GPIO_LIB_INITIALIZED; diff --git a/FlippR-Driver/src/output/detail/DisplayBoardPinController.cpp b/FlippR-Driver/src/output/detail/DisplayBoardPinController.cpp index b6580a7..455565e 100644 --- a/FlippR-Driver/src/output/detail/DisplayBoardPinController.cpp +++ b/FlippR-Driver/src/output/detail/DisplayBoardPinController.cpp @@ -18,7 +18,7 @@ namespace detail DisplayBoardPinController::DisplayBoardPinController(std::map & pins_display) : pins_display_board{std::move(pins_display)} { - initialize_pins_output(0, pins_display.begin(), pins_display.end()); + initialize_pins_output(pins_display.begin(), pins_display.end()); clear(); @@ -98,9 +98,17 @@ void DisplayBoardPinController::run_display(uint8_t address) const void DisplayBoardPinController::set_pin_map(std::map & pins_display) { this->pins_display_board.insert(pins_display.begin(), pins_display.end()); - initialize_pins_output(0, pins_display.begin(), pins_display.end()); + + this->initialize_pins_output(); + clear(); } +void DisplayBoardPinController::initialize_pins_output() +{ + for(auto& pin : this->pins_display_board) { + initialize_output_pin(pin.second); + } +} } } diff --git a/FlippR-Driver/src/output/detail/DisplayBoardPinController.h b/FlippR-Driver/src/output/detail/DisplayBoardPinController.h index ae87120..7dcaf84 100644 --- a/FlippR-Driver/src/output/detail/DisplayBoardPinController.h +++ b/FlippR-Driver/src/output/detail/DisplayBoardPinController.h @@ -33,6 +33,7 @@ public: void set_pin_map(std::map & pins_display); private: + void initialize_pins_output(); void clear(); void write_display_digit(uint8_t display_address, uint8_t content, uint8_t position) const; void select_display_segment(uint8_t digit) const; diff --git a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp index 8d0f677..30bf7ad 100644 --- a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp +++ b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp @@ -56,18 +56,32 @@ void DriverBoardPinController::select_adress(uint8_t address) void DriverBoardPinController::set_address_pins(std::array address_pins) { this->address_pins = address_pins; + + for(auto pin : address_pins) + { + initialize_output_pin(pin); + } } void DriverBoardPinController::set_mux_pins(std::array mux_enable_pins) { this->mux_enable_pins = mux_enable_pins; + + for(auto pin : mux_enable_pins) + { + initialize_output_pin(pin); + } } void DriverBoardPinController::set_data_pin(uint8_t data_pin) { this->data_pin = data_pin; + + initialize_output_pin(data_pin); } void DriverBoardPinController::set_run_pin(uint8_t run_pin) { this->run_pin = run_pin; + + initialize_output_pin(run_pin); } void DriverBoardPinController::select_mux(uint8_t mux)