diff --git a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp index 6312dd3..62a62a5 100644 --- a/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp +++ b/FlippR-Driver/src/output/detail/DriverBoardPinController.cpp @@ -23,9 +23,10 @@ DriverBoardPinController::DriverBoardPinController(std::shared_ptr o void DriverBoardPinController::activate(items::DriverBoardItem &driver_board_item) { - this->deselect_all_muxes(); std::lock_guard guard(*output_item_mutex); + this->deselect_all_muxes(); + uint8_t address = driver_board_item.get_address(); this->select_adress(address); @@ -38,9 +39,10 @@ void DriverBoardPinController::activate(items::DriverBoardItem &driver_board_ite void DriverBoardPinController::deactivate(items::DriverBoardItem &driver_board_item) { - this->deselect_all_muxes(); std::lock_guard guard(*output_item_mutex); + this->deselect_all_muxes(); + uint8_t address = driver_board_item.get_address(); this->select_adress(address); @@ -77,13 +79,14 @@ void DriverBoardPinController::clear() write_pin(data_pin, 0); for(auto mux : mux_enable_pins) { - for(uint8_t i = 0; i<8; i++) - { - this->deselect_all_muxes(); - select_mux(mux); - select_adress(i); - } + select_mux(mux); + } + for(uint8_t i = 0; i<8; i++) + { + select_adress(i); + } + this->deselect_all_muxes(); } void DriverBoardPinController::set_address_pins(std::array address_pins)