change callbacks to vector
This commit is contained in:
parent
71475ef2f1
commit
011710fe82
19 changed files with 207 additions and 109 deletions
|
@ -96,8 +96,8 @@ void DigitalInputCard::handlePinChange(int pin, uint8_t ¤tBuffer, uint8_t
|
|||
{
|
||||
lastDebounceTime[pin] = millis();
|
||||
previousBuffer ^= (-((currentBuffer >> (7 - pin)) & 1) ^ previousBuffer) & (1UL << (7 - pin));
|
||||
if (callback != NULL)
|
||||
callback(virtualPin, ((currentBuffer >> (7 - pin)) & 1));
|
||||
for (int i = 0; i < callbacks.size(); i++)
|
||||
callbacks[i](virtualPin, ((currentBuffer >> (7 - pin)) & 1));
|
||||
}
|
||||
}
|
||||
// Handle Bank B
|
||||
|
@ -107,12 +107,13 @@ void DigitalInputCard::handlePinChange(int pin, uint8_t ¤tBuffer, uint8_t
|
|||
{
|
||||
lastDebounceTime[pin] = millis();
|
||||
previousBuffer ^= (-((currentBuffer >> (15 - pin)) & 1) ^ previousBuffer) & (1UL << (15 - pin));
|
||||
if (callback != NULL)
|
||||
callback(virtualPin, ((currentBuffer >> (15 - pin)) & 1));
|
||||
for (int i = 0; i < callbacks.size(); i++)
|
||||
callbacks[i](virtualPin, ((currentBuffer >> (15 - pin)) & 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Preform a loop to refresh the input buffers
|
||||
void DigitalInputCard::loop()
|
||||
{
|
||||
|
@ -158,7 +159,7 @@ uint8_t DigitalInputCard::getInputBufferB()
|
|||
// Register a callback function to be called when a pin changes
|
||||
void DigitalInputCard::registerCallback(std::function<void(uint8_t, bool)> callback)
|
||||
{
|
||||
this->callback = callback;
|
||||
callbacks.push_back(callback);
|
||||
}
|
||||
|
||||
// Refresh the input buffer for bank A
|
||||
|
@ -178,10 +179,17 @@ void DigitalInputCard::setDebounceTime(uint8_t pin, uint32_t debounceTime)
|
|||
this->debounceTime[pin] = debounceTime;
|
||||
}
|
||||
|
||||
void DigitalInputCard::unregisterCallback()
|
||||
{
|
||||
this->callback = NULL;
|
||||
}
|
||||
// void DigitalInputCard::unregisterCallback(std::function<void(uint8_t, bool)> callback)
|
||||
// {
|
||||
// for (int i = 0; i < callbacks.size(); i++)
|
||||
// {
|
||||
// if (callbacks[i].target<void(uint8_t, bool)>() == callback.target<void(uint8_t, bool)>())
|
||||
// {
|
||||
// callbacks.erase(callbacks.begin() + i);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
void DigitalInputCard::loadPinMap(uint8_t pinMap[16])
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue