notify phoneAPI about new packages to process

This commit is contained in:
Thomas Göttgens 2023-01-09 20:06:11 +01:00
parent fce52e16e3
commit 3a6e3464e6
3 changed files with 9 additions and 0 deletions

View File

@ -33,6 +33,7 @@ void PhoneAPI::handleStartConfig()
if (!isConnected()) {
onConnectionChanged(true);
observe(&service.fromNumChanged);
observe(&xModem.packetReady);
}
// even if we were already connected - restart our state machine
@ -50,6 +51,7 @@ void PhoneAPI::close()
state = STATE_SEND_NOTHING;
unobserve(&service.fromNumChanged);
unobserve(&xModem.packetReady);
releasePhonePacket(); // Don't leak phone packets on shutdown
releaseQueueStatusPhonePacket();

View File

@ -66,6 +66,7 @@ int XModemAdapter::check(const pb_byte_t *buf, int sz, unsigned short tcrc)
void XModemAdapter::sendControl(XModem_Control c) {
memset(xmodemStore, 0, XModem_size);
xmodemStore->control = c;
packetReady.notifyObservers(packetno);
}
XModem *XModemAdapter::getForPhone()
@ -106,6 +107,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
xmodemStore->seq = packetno;
xmodemStore->buffer.size = file.read(xmodemStore->buffer.bytes, sizeof(XModem_buffer_t::bytes));
xmodemStore->crc16 = crc16_ccitt(xmodemStore->buffer.bytes, xmodemStore->buffer.size);
packetReady.notifyObservers(packetno);
break;
}
sendControl(XModem_Control_NAK);
@ -167,6 +169,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
isEOT = true;
// send EOT on next Ack
}
packetReady.notifyObservers(packetno);
} else {
// just received something weird.
sendControl(XModem_Control_CAN);
@ -191,6 +194,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
isEOT = true;
// send EOT on next Ack
}
packetReady.notifyObservers(packetno);
} else {
// just received something weird.
sendControl(XModem_Control_CAN);

View File

@ -41,6 +41,9 @@
class XModemAdapter
{
public:
// Called when we put a fragment in the outgoing memory
Observable<uint32_t> packetReady;
XModemAdapter();
void handlePacket(XModem xmodemPacket);