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,6 +5,7 @@ AnalogIoT::AnalogIoT() : adc_conversion_callbacks() {
|
|||
adc_publish_enabled[i] = false;
|
||||
adc_conversion_interval[i] = 1000;
|
||||
}
|
||||
this->adc_conversion_callback_index = 0;
|
||||
}
|
||||
|
||||
AnalogIoT::~AnalogIoT() {
|
||||
|
@ -49,8 +50,8 @@ void AnalogIoT::publishADC(uint8_t pin) {
|
|||
delete[] topic;
|
||||
delete[] payload;
|
||||
// Call all callbacks
|
||||
for (int i = 0; i < this->adc_conversion_callbacks.size(); i++) {
|
||||
this->adc_conversion_callbacks[i](pin, value);
|
||||
for (auto& callback : this->adc_conversion_callbacks) {
|
||||
callback.second(pin, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,16 +66,11 @@ void AnalogIoT::setADCsPublishEnabled(bool enabled) {
|
|||
}
|
||||
}
|
||||
void AnalogIoT::registerADCConversionCallback(std::function<void(uint8_t, uint16_t)> callback) {
|
||||
this->adc_conversion_callbacks.push_back(callback);
|
||||
this->adc_conversion_callbacks[this->adc_conversion_callback_index++] = callback;
|
||||
}
|
||||
void AnalogIoT::deregisterADCConversionCallback(uint8_t handler) {
|
||||
this->adc_conversion_callbacks.erase(handler);
|
||||
}
|
||||
// void AnalogIoT::deregisterADCConversionCallback(std::function<void(uint8_t, uint16_t)> callback) {
|
||||
// for (int i = 0; i < this->adc_conversion_callbacks.size(); i++) {
|
||||
// if (this->adc_conversion_callbacks[i].target<void(uint8_t, uint16_t)>() == callback.target<void(uint8_t, uint16_t)>()) {
|
||||
// this->adc_conversion_callbacks.erase(this->adc_conversion_callbacks.begin() + i);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
void AnalogIoT::setADCConversionInterval(uint8_t pin, uint16_t interval) {
|
||||
adc_conversion_interval[pin] = interval;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue