initialize output pins

This commit is contained in:
Jonas Zeunert
2020-01-15 17:35:50 +01:00
parent d0806af54b
commit 4da36b7849
5 changed files with 25 additions and 13 deletions

View File

@@ -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<std::string, uint8_t>::iterator begin, std::map<std::string, uint8_t>::iterator end)
{
for(; begin != end; begin++)
{
initialize_output_pin(pin_base + begin->second);
}
}
}

View File

@@ -33,8 +33,6 @@ protected:
static bool read_pin(uint8_t address);
static void initialize_pins_output(const uint8_t pin_base, std::map<std::string, uint8_t>::iterator begin, std::map<std::string, uint8_t>::iterator end);
public:
static std::once_flag GPIO_LIB_INITIALIZED;

View File

@@ -18,7 +18,7 @@ namespace detail
DisplayBoardPinController::DisplayBoardPinController(std::map<std::string, uint8_t> & 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<std::string, uint8_t> & 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);
}
}
}
}

View File

@@ -33,6 +33,7 @@ public:
void set_pin_map(std::map<std::string, uint8_t> & 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;

View File

@@ -56,18 +56,32 @@ void DriverBoardPinController::select_adress(uint8_t address)
void DriverBoardPinController::set_address_pins(std::array<uint8_t, 3> address_pins)
{
this->address_pins = address_pins;
for(auto pin : address_pins)
{
initialize_output_pin(pin);
}
}
void DriverBoardPinController::set_mux_pins(std::array<uint8_t, 13> 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)