change callbacks to vector
This commit is contained in:
parent
71475ef2f1
commit
011710fe82
19 changed files with 207 additions and 109 deletions
|
@ -36,8 +36,8 @@ void DigitalOutputCard::digitalWrite(uint8_t pin, bool state) {
|
|||
this->saveStateToFRAM();
|
||||
this->savePinValueToFRAM(pin);
|
||||
}
|
||||
if(change_callback != NULL) {
|
||||
change_callback(pin, state, state ? 4095 : 0);
|
||||
for (int i = 0; i < change_callbacks.size(); i++) {
|
||||
change_callbacks[i](pin, state, state ? 4095 : 0);
|
||||
}
|
||||
}
|
||||
// Set the output to the specified pwm value
|
||||
|
@ -52,8 +52,8 @@ void DigitalOutputCard::analogWrite(uint8_t pin, uint16_t value) {
|
|||
}
|
||||
this->state_buffer[pin] = value > 0;
|
||||
this->value_buffer[pin] = value;
|
||||
if(change_callback != NULL) {
|
||||
change_callback(pin, value > 0, value);
|
||||
for (int i = 0; i < change_callbacks.size(); i++) {
|
||||
change_callbacks[i](pin, value > 0, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -82,8 +82,8 @@ void DigitalOutputCard::setState(uint8_t pin, bool state) {
|
|||
if(this->framAutoSave) {
|
||||
this->saveStateToFRAM();
|
||||
}
|
||||
if (change_callback != NULL) {
|
||||
change_callback(pin, state, value_buffer[pin]);
|
||||
for(int i = 0; i < change_callbacks.size(); i++) {
|
||||
change_callbacks[i](pin, state, value_buffer[pin]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -95,18 +95,23 @@ void DigitalOutputCard::setValue(uint8_t pin, uint16_t value) {
|
|||
if (this->framAutoSave) {
|
||||
this->savePinValueToFRAM(pin);
|
||||
}
|
||||
if (change_callback != NULL) {
|
||||
change_callback(pin, state_buffer[pin], value);
|
||||
for (int i = 0; i < change_callbacks.size(); i++) {
|
||||
change_callbacks[i](pin, state_buffer[pin], value);
|
||||
}
|
||||
}
|
||||
|
||||
void DigitalOutputCard::registerChangeCallback(std::function<void(uint8_t, bool, uint16_t)> callback) {
|
||||
this->change_callback = callback;
|
||||
this->change_callbacks.push_back(callback);
|
||||
}
|
||||
|
||||
void DigitalOutputCard::deregisterChangeCallback() {
|
||||
this->change_callback = NULL;
|
||||
}
|
||||
// void DigitalOutputCard::deregisterChangeCallback(std::function<void(uint8_t, bool, uint16_t)> callback) {
|
||||
// for(int i = 0; i < change_callbacks.size(); i++) {
|
||||
// if(change_callbacks[i].target<void(uint8_t, bool, uint16_t)>() == callback.target<void(uint8_t, bool, uint16_t)>()) {
|
||||
// change_callbacks.erase(change_callbacks.begin()+i);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
void DigitalOutputCard::loadPinMap(uint8_t pinMap[16]) {
|
||||
for(int i = 0; i < 16; i++) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue