mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-06 05:34:45 +00:00
File Transfer: add debug logging and allocate memory used.
This commit is contained in:
parent
80d1a993dd
commit
5e66dd0dad
@ -36,6 +36,7 @@ XModemAdapter xModem;
|
|||||||
|
|
||||||
XModemAdapter::XModemAdapter()
|
XModemAdapter::XModemAdapter()
|
||||||
{
|
{
|
||||||
|
xmodemStore = (XModem*)malloc(XModem_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned short XModemAdapter::crc16_ccitt(const pb_byte_t *buffer, int length)
|
unsigned short XModemAdapter::crc16_ccitt(const pb_byte_t *buffer, int length)
|
||||||
@ -66,6 +67,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;
|
||||||
|
LOG_DEBUG("XModem: Notify Sending control %d.\n", c);
|
||||||
packetReady.notifyObservers(packetno);
|
packetReady.notifyObservers(packetno);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,6 +100,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
|
|||||||
isReceiving = false;
|
isReceiving = false;
|
||||||
break;
|
break;
|
||||||
} else { // Transmit this file from Flash
|
} else { // Transmit this file from Flash
|
||||||
|
LOG_INFO("XModem: Transmitting file %s\n", filename);
|
||||||
file = FSCom.open(filename, FILE_O_READ);
|
file = FSCom.open(filename, FILE_O_READ);
|
||||||
if (file) {
|
if (file) {
|
||||||
packetno = 1;
|
packetno = 1;
|
||||||
@ -107,6 +110,11 @@ 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);
|
||||||
|
LOG_DEBUG("XModem: STX Notify Sending packet %d, %d Bytes.\n", packetno, xmodemStore->buffer.size);
|
||||||
|
if (xmodemStore->buffer.size < sizeof(XModem_buffer_t::bytes)) {
|
||||||
|
isEOT = true;
|
||||||
|
// send EOT on next Ack
|
||||||
|
}
|
||||||
packetReady.notifyObservers(packetno);
|
packetReady.notifyObservers(packetno);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -154,6 +162,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
|
|||||||
if (isEOT) {
|
if (isEOT) {
|
||||||
sendControl(XModem_Control_EOT);
|
sendControl(XModem_Control_EOT);
|
||||||
file.close();
|
file.close();
|
||||||
|
LOG_INFO("XModem: Finished sending file %s\n", filename);
|
||||||
isTransmitting = false;
|
isTransmitting = false;
|
||||||
isEOT = false;
|
isEOT = false;
|
||||||
break;
|
break;
|
||||||
@ -165,6 +174,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);
|
||||||
|
LOG_DEBUG("XModem: ACK Notify Sending packet %d, %d Bytes.\n", packetno, xmodemStore->buffer.size);
|
||||||
if (xmodemStore->buffer.size < sizeof(XModem_buffer_t::bytes)) {
|
if (xmodemStore->buffer.size < sizeof(XModem_buffer_t::bytes)) {
|
||||||
isEOT = true;
|
isEOT = true;
|
||||||
// send EOT on next Ack
|
// send EOT on next Ack
|
||||||
@ -181,6 +191,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
|
|||||||
if (--retrans <= 0) {
|
if (--retrans <= 0) {
|
||||||
sendControl(XModem_Control_CAN);
|
sendControl(XModem_Control_CAN);
|
||||||
file.close();
|
file.close();
|
||||||
|
LOG_INFO("XModem: Retransmit timeout, cancelling file %s\n", filename);
|
||||||
isTransmitting = false;
|
isTransmitting = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -190,6 +201,7 @@ void XModemAdapter::handlePacket(XModem xmodemPacket)
|
|||||||
file.seek((packetno-1) * sizeof(XModem_buffer_t::bytes));
|
file.seek((packetno-1) * sizeof(XModem_buffer_t::bytes));
|
||||||
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);
|
||||||
|
LOG_DEBUG("XModem: NAK Notify Sending packet %d, %d Bytes.\n", packetno, xmodemStore->buffer.size);
|
||||||
if (xmodemStore->buffer.size < sizeof(XModem_buffer_t::bytes)) {
|
if (xmodemStore->buffer.size < sizeof(XModem_buffer_t::bytes)) {
|
||||||
isEOT = true;
|
isEOT = true;
|
||||||
// send EOT on next Ack
|
// send EOT on next Ack
|
||||||
|
Loading…
Reference in New Issue
Block a user