Add ack failure count to XModem status

This commit is contained in:
Aaron Cook 2023-07-17 16:08:40 -05:00
commit 8182b384ba
3 changed files with 9 additions and 6 deletions

View file

@ -216,17 +216,18 @@ cheerios_insert(const char *buf, size_t len)
static void static void
__xmodem_callback(size_t sent, size_t total) __xmodem_callback(size_t sent, size_t total, int ack_fails)
{ {
char status_str[1024]; char status_str[1024];
snprintf( snprintf(
status_str, sizeof(status_str), status_str, sizeof(status_str),
"\r %.02f/%.02fKB (%.01f%%)", "\r %.02f/%.02fKB (%.01f%%, %d ACK fails)",
(sent / 1024.0), (sent / 1024.0),
(total / 1024.0), (total / 1024.0),
(sent * 100.0 / total) (sent * 100.0 / total),
ack_fails
); );
cheerios_insert(status_str, strlen(status_str)); cheerios_insert(status_str, strlen(status_str));

View file

@ -20,7 +20,7 @@ xmodem_send(
int in_fd, int in_fd,
size_t sz, size_t sz,
int block_sz, int block_sz,
void (*status_cb)(size_t sent, size_t total) void (*status_cb)(size_t sent, size_t total, int ack_fails)
) )
{ {
uint8_t start_byte; uint8_t start_byte;
@ -30,6 +30,7 @@ xmodem_send(
uint8_t packet_num; uint8_t packet_num;
int retries; int retries;
int ret = 0; int ret = 0;
int ack_fails = 0;
if (block_sz != 128 && block_sz != 1024) { if (block_sz != 128 && block_sz != 1024) {
return -1; return -1;
@ -120,11 +121,12 @@ xmodem_send(
} }
retries++; retries++;
ack_fails++;
} }
sent += read_len; sent += read_len;
packet_num++; /* expect overflow */ packet_num++; /* expect overflow */
status_cb(sent, sz); status_cb(sent, sz, ack_fails);
} }
end_of_transmission: end_of_transmission:

View file

@ -34,7 +34,7 @@ int xmodem_send(
int in_fd, int in_fd,
size_t sz, size_t sz,
int block_sz, int block_sz,
void (*status_cb)(size_t sent, size_t total) void (*status_cb)(size_t sent, size_t total, int ack_fails)
); );
#if 0 #if 0