migrate callbacks from std::vector to std::map
This commit is contained in:
parent
c635427d64
commit
5f6e586945
11 changed files with 143 additions and 178 deletions
|
@ -5,10 +5,11 @@ AnalogCard::AnalogCard() : dac0(DAC0_ADDRESS),
|
|||
dac1(DAC1_ADDRESS),
|
||||
dac2(DAC2_ADDRESS),
|
||||
dac3(DAC3_ADDRESS),
|
||||
analogInputBankA(),
|
||||
analogInputBankB(),
|
||||
dac_change_callbacks()
|
||||
analogInputBankA(),
|
||||
analogInputBankB(),
|
||||
dac_change_callbacks()
|
||||
{
|
||||
this->handler_count = 0;
|
||||
}
|
||||
|
||||
void AnalogCard::dacWrite(uint8_t pin, uint16_t value)
|
||||
|
@ -22,10 +23,10 @@ void AnalogCard::setDACState(uint8_t pin, bool state)
|
|||
{
|
||||
ESP_LOGD("AnalogCard", "Setting DAC state: %d, %d", pin, state);
|
||||
this->dac_state[pin] = state;
|
||||
this->sendDataToDAC(pin, this->dac_value[pin]*state);
|
||||
for (int i = 0; i < this->dac_change_callbacks.size(); i++)
|
||||
this->sendDataToDAC(pin, this->dac_value[pin] * state);
|
||||
for (const auto& callback : this->dac_change_callbacks)
|
||||
{
|
||||
this->dac_change_callbacks[i](pin, state, this->dac_value[pin]);
|
||||
callback.second(pin, state, this->dac_value[pin]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,12 +34,13 @@ void AnalogCard::setDACValue(uint8_t pin, uint16_t value)
|
|||
{
|
||||
ESP_LOGD("AnalogCard", "Setting DAC value: %d, %d", pin, value);
|
||||
this->dac_value[pin] = value;
|
||||
this->sendDataToDAC(pin, value*this->dac_state[pin]);
|
||||
for (int i = 0; i < this->dac_change_callbacks.size(); i++)
|
||||
this->sendDataToDAC(pin, value * this->dac_state[pin]);
|
||||
for (const auto& callback : this->dac_change_callbacks)
|
||||
{
|
||||
this->dac_change_callbacks[i](pin, this->dac_state[pin], value);
|
||||
callback.second(pin, this->dac_state[pin], value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uint16_t AnalogCard::getDACValue(uint8_t pin)
|
||||
{
|
||||
|
@ -124,20 +126,13 @@ uint8_t AnalogCard::getType()
|
|||
return CARD_TYPE_ANALOG;
|
||||
}
|
||||
|
||||
void AnalogCard::registerDACChangeCallback(std::function<void(uint8_t, bool, uint16_t)> callback)
|
||||
uint8_t AnalogCard::registerDACChangeCallback(std::function<void(uint8_t, bool, uint16_t)> callback)
|
||||
{
|
||||
this->dac_change_callbacks.push_back(callback);
|
||||
this->dac_change_callbacks[this->handler_count] = callback;
|
||||
return this->handler_count++;
|
||||
}
|
||||
|
||||
// void AnalogCard::deregisterDACChangeCallback(std::function<void(uint8_t, bool, uint16_t)> callback)
|
||||
// {
|
||||
// for (int i = 0; i < this->dac_change_callbacks.size(); i++)
|
||||
// {
|
||||
// if (this->dac_change_callbacks[i].target<void(uint8_t, bool, uint16_t)>() == callback.target<void(uint8_t, bool, uint16_t)>())
|
||||
// {
|
||||
// this->dac_change_callbacks.erase(this->dac_change_callbacks.begin() + i);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
void AnalogCard::deregisterDACChangeCallback(uint8_t handler)
|
||||
{
|
||||
this->dac_change_callbacks.erase(handler);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue