FreeCalypso > hg > freecalypso-sw
diff rvinterf/packetrx.c @ 133:56b53c289785
rvtdump: some restructuring
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sat, 02 Nov 2013 22:24:14 +0000 |
parents | 811b138f1bed |
children |
line wrap: on
line diff
--- a/rvinterf/packetrx.c Sat Nov 02 01:48:11 2013 +0000 +++ b/rvinterf/packetrx.c Sat Nov 02 22:24:14 2013 +0000 @@ -14,6 +14,8 @@ u_char rxpkt[MAXPKT]; size_t rxpkt_len; +extern char pr_item[]; + static int in_pkt, dle_state, toobig; static void @@ -21,19 +23,29 @@ { if (!in_pkt) { if (inb != STX || dle_state) { + rxpkt_len++; dle_state = (inb == DLE); return; } + if (rxpkt_len) { + sprintf(pr_item, + "Warning: Rx %u byte%s outside of a packet", + (unsigned)rxpkt_len, rxpkt_len != 1 ? "s" : ""); + print_item(); + rxpkt_len = 0; + } in_pkt = 1; - rxpkt_len = 0; toobig = 0; return; } if (dle_state) { dle_state = 0; if (inb != STX && inb != DLE) { - printf("Rx framing error: %02X after DLE\n", inb); + sprintf(pr_item, + "Rx framing error: %02X after DLE\n", inb); + print_item(); in_pkt = 0; + rxpkt_len = 0; return; } goto data; @@ -46,11 +58,13 @@ return; in_pkt = 0; handle_rx_packet(); + rxpkt_len = 0; return; } data: if (rxpkt_len >= MAXPKT) { if (!toobig) { - printf("Rx packet too big!\n"); + sprintf(pr_item, "Error: Rx packet too big!\n"); + print_item(); toobig = 1; } return;