mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-16 01:52:04 +00:00
notify phoneAPI about new packages to process
This commit is contained in:
parent
fce52e16e3
commit
3a6e3464e6
@ -33,6 +33,7 @@ void PhoneAPI::handleStartConfig()
|
|||||||
if (!isConnected()) {
|
if (!isConnected()) {
|
||||||
onConnectionChanged(true);
|
onConnectionChanged(true);
|
||||||
observe(&service.fromNumChanged);
|
observe(&service.fromNumChanged);
|
||||||
|
observe(&xModem.packetReady);
|
||||||
}
|
}
|
||||||
|
|
||||||
// even if we were already connected - restart our state machine
|
// even if we were already connected - restart our state machine
|
||||||
@ -50,6 +51,7 @@ void PhoneAPI::close()
|
|||||||
state = STATE_SEND_NOTHING;
|
state = STATE_SEND_NOTHING;
|
||||||
|
|
||||||
unobserve(&service.fromNumChanged);
|
unobserve(&service.fromNumChanged);
|
||||||
|
unobserve(&xModem.packetReady);
|
||||||
releasePhonePacket(); // Don't leak phone packets on shutdown
|
releasePhonePacket(); // Don't leak phone packets on shutdown
|
||||||
releaseQueueStatusPhonePacket();
|
releaseQueueStatusPhonePacket();
|
||||||
|
|
||||||
|
@ -66,6 +66,7 @@ int XModemAdapter::check(const pb_byte_t *buf, int sz, unsigned short tcrc)
|
|||||||
void XModemAdapter::sendControl(XModem_Control c) {
|
void XModemAdapter::sendControl(XModem_Control c) {
|
||||||
memset(xmodemStore, 0, XModem_size);
|
memset(xmodemStore, 0, XModem_size);
|
||||||
xmodemStore->control = c;
|
xmodemStore->control = c;
|
||||||
|
packetReady.notifyObservers(packetno);
|
||||||
}
|
}
|
||||||
|
|
||||||
XModem *XModemAdapter::getForPhone()
|
XModem *XModemAdapter::getForPhone()
|
||||||
@ -106,6 +107,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
|
|||||||
xmodemStore->seq = packetno;
|
xmodemStore->seq = packetno;
|
||||||
xmodemStore->buffer.size = file.read(xmodemStore->buffer.bytes, sizeof(XModem_buffer_t::bytes));
|
xmodemStore->buffer.size = file.read(xmodemStore->buffer.bytes, sizeof(XModem_buffer_t::bytes));
|
||||||
xmodemStore->crc16 = crc16_ccitt(xmodemStore->buffer.bytes, xmodemStore->buffer.size);
|
xmodemStore->crc16 = crc16_ccitt(xmodemStore->buffer.bytes, xmodemStore->buffer.size);
|
||||||
|
packetReady.notifyObservers(packetno);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sendControl(XModem_Control_NAK);
|
sendControl(XModem_Control_NAK);
|
||||||
@ -167,6 +169,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
|
|||||||
isEOT = true;
|
isEOT = true;
|
||||||
// send EOT on next Ack
|
// send EOT on next Ack
|
||||||
}
|
}
|
||||||
|
packetReady.notifyObservers(packetno);
|
||||||
} else {
|
} else {
|
||||||
// just received something weird.
|
// just received something weird.
|
||||||
sendControl(XModem_Control_CAN);
|
sendControl(XModem_Control_CAN);
|
||||||
@ -191,6 +194,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
|
|||||||
isEOT = true;
|
isEOT = true;
|
||||||
// send EOT on next Ack
|
// send EOT on next Ack
|
||||||
}
|
}
|
||||||
|
packetReady.notifyObservers(packetno);
|
||||||
} else {
|
} else {
|
||||||
// just received something weird.
|
// just received something weird.
|
||||||
sendControl(XModem_Control_CAN);
|
sendControl(XModem_Control_CAN);
|
||||||
|
@ -41,6 +41,9 @@
|
|||||||
class XModemAdapter
|
class XModemAdapter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
// Called when we put a fragment in the outgoing memory
|
||||||
|
Observable<uint32_t> packetReady;
|
||||||
|
|
||||||
XModemAdapter();
|
XModemAdapter();
|
||||||
|
|
||||||
void handlePacket(XModem xmodemPacket);
|
void handlePacket(XModem xmodemPacket);
|
||||||
|
Loading…
Reference in New Issue
Block a user