Skip to content

Commit

Permalink
fix(tla2528): fix use of std::accumulate (#138)
Browse files Browse the repository at this point in the history
* Properly store result of std::accumulate when configuring tla2528 digital i/o and analog inputs
  • Loading branch information
finger563 authored Jan 8, 2024
1 parent bdcab9c commit 7b711fd
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions components/tla2528/include/tla2528.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -587,16 +587,16 @@ 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<uint8_t>(channel));
};

void set_pin_configuration(std::error_code &ec) {
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);
Expand All @@ -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);
}

Expand All @@ -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);
}
}
Expand Down

0 comments on commit 7b711fd

Please sign in to comment.