Copying outgoingState on serial IRQ

This commit is contained in:
Rodrigo Alfonso
2023-02-10 19:33:29 -03:00
parent 510871854b
commit b1196edfa6
2 changed files with 13 additions and 3 deletions

View File

@@ -480,6 +480,7 @@ class LinkWireless {
return;
linkSPI->_onSerial(true);
copyOutgoingState();
bool hasNewData = linkSPI->getAsyncState() == LinkSPI::AsyncState::READY;
if (hasNewData)
@@ -1107,6 +1108,11 @@ class LinkWireless {
}
void copyState() { // (irq only)
copyOutgoingState();
copyIncomingState();
}
void copyOutgoingState() { // (irq only)
if (!isAddingMessage) {
while (!sessionState.tmpMessagesToSend.isEmpty()) {
if (isSessionActive() && !canSend())
@@ -1125,7 +1131,9 @@ class LinkWireless {
isPendingClearActive = false;
}
}
}
void copyIncomingState() { // (irq only)
if (!isReadingMessages) {
while (!sessionState.tmpMessagesToReceive.isEmpty()) {
auto message = sessionState.tmpMessagesToReceive.pop();