diff --git a/components/tla2528/include/tla2528.hpp b/components/tla2528/include/tla2528.hpp index d9450d78b..c661803a0 100644 --- a/components/tla2528/include/tla2528.hpp +++ b/components/tla2528/include/tla2528.hpp @@ -587,7 +587,7 @@ class Tla2528 { write_one_(Register::OSR_CFG, data, ec); } - static uint8_t bit_pred(uint8_t value, Channel channel) { + static uint8_t bit_pred(uint8_t value, const Channel channel) { return value | (1 << static_cast(channel)); }; @@ -595,8 +595,8 @@ class Tla2528 { logger_.info("Setting digital mode for outputs {} and inputs {}", digital_outputs_, digital_inputs_); uint8_t data = 0; - std::accumulate(digital_inputs_.begin(), digital_inputs_.end(), data, bit_pred); - std::accumulate(digital_outputs_.begin(), digital_outputs_.end(), data, bit_pred); + data = std::accumulate(digital_inputs_.begin(), digital_inputs_.end(), data, bit_pred); + data = std::accumulate(digital_outputs_.begin(), digital_outputs_.end(), data, bit_pred); // don't have to do anything for analog inputs since they are the default // state (0) write_one_(Register::PIN_CFG, data, ec); @@ -605,8 +605,7 @@ class Tla2528 { void set_digital_io_direction(std::error_code &ec) { logger_.info("Setting digital output for pins {}", digital_outputs_); // default direction is input (0) - uint8_t data = 0; - std::accumulate(digital_outputs_.begin(), digital_outputs_.end(), data, bit_pred); + uint8_t data = std::accumulate(digital_outputs_.begin(), digital_outputs_.end(), 0, bit_pred); write_one_(Register::GPIO_CFG, data, ec); } @@ -615,8 +614,7 @@ class Tla2528 { if (mode_ == Mode::AUTO_SEQ) { logger_.info("Setting analog inputs for autonomous mode"); // configure the analog inputs for autonomous conversion sequence - uint8_t data = 0; - std::accumulate(analog_inputs_.begin(), analog_inputs_.end(), data, bit_pred); + uint8_t data = std::accumulate(analog_inputs_.begin(), analog_inputs_.end(), 0, bit_pred); write_one_(Register::AUTO_SEQ_CH_SEL, data, ec); } }