change callbacks to vector

This commit is contained in:
Siwat Sirichai 2023-12-30 00:49:09 +07:00
parent 71475ef2f1
commit 011710fe82
19 changed files with 207 additions and 109 deletions

View file

@ -19,9 +19,9 @@ void AnalogCard::setDACState(uint8_t pin, bool state)
{
this->dac_state[pin] = state;
this->sendDataToDAC(pin, this->dac_value[pin]*state);
if (this->dac_change_callback != NULL)
for (int i = 0; i < this->dac_change_callbacks.size(); i++)
{
this->dac_change_callback(pin, state, this->dac_value[pin]);
this->dac_change_callbacks[i](pin, state, this->dac_value[pin]);
}
}
@ -29,9 +29,9 @@ void AnalogCard::setDACValue(uint8_t pin, uint16_t value)
{
this->dac_value[pin] = value;
this->sendDataToDAC(pin, value*this->dac_state[pin]);
if (this->dac_change_callback != NULL)
for (int i = 0; i < this->dac_change_callbacks.size(); i++)
{
this->dac_change_callback(pin, this->dac_state[pin], value);
this->dac_change_callbacks[i](pin, this->dac_state[pin], value);
}
}
@ -121,10 +121,18 @@ uint8_t AnalogCard::getType()
void AnalogCard::registerDACChangeCallback(std::function<void(uint8_t, bool, uint16_t)> callback)
{
this->dac_change_callback = callback;
this->dac_change_callbacks.push_back(callback);
}
void AnalogCard::deregisterDACChangeCallback()
{
this->dac_change_callback = NULL;
}
// 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;
// }
// }
// }