FreeCalypso > hg > freecalypso-sw
comparison rvinterf/trdump.c @ 127:f4f0c8738dcb
rvtdump: satisfactory handling of output from Pirelli's fw
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Thu, 31 Oct 2013 23:08:59 +0000 |
parents | 811b138f1bed |
children | 56b53c289785 |
comparison
equal
deleted
inserted
replaced
126:811b138f1bed | 127:f4f0c8738dcb |
---|---|
14 u_char *str; | 14 u_char *str; |
15 size_t len; | 15 size_t len; |
16 { | 16 { |
17 int i, c; | 17 int i, c; |
18 | 18 |
19 if (len >= 3 && | |
20 (str[len-2] == '\r' && str[len-1] == '\n' || | |
21 str[len-2] == '\n' && str[len-1] == '\r')) | |
22 len -= 2; | |
19 for (i = 0; i < len; i++) { | 23 for (i = 0; i < len; i++) { |
20 c = str[i]; | 24 c = str[i]; |
21 if (c & 0x80) { | 25 if (c & 0x80) { |
22 putchar('M'); | 26 putchar('M'); |
23 putchar('-'); | 27 putchar('-'); |
37 void | 41 void |
38 print_rv_trace() | 42 print_rv_trace() |
39 { | 43 { |
40 int i; | 44 int i; |
41 | 45 |
46 fputs("RV ", stdout); | |
42 /* the SWE static ID is sent MSB first */ | 47 /* the SWE static ID is sent MSB first */ |
43 for (i = 1; i <= 4; i++) | 48 for (i = 1; i <= 4; i++) |
44 printf("%02X", rxpkt[i]); | 49 printf("%02X", rxpkt[i]); |
45 /* severity level */ | 50 /* severity level */ |
46 printf(" %d ", rxpkt[5]); | 51 printf(" %d ", rxpkt[5]); |
55 print_presumed_string(rxpkt + 1, rxpkt_len - 1); | 60 print_presumed_string(rxpkt + 1, rxpkt_len - 1); |
56 putchar('\n'); | 61 putchar('\n'); |
57 } | 62 } |
58 | 63 |
59 void | 64 void |
65 print_g23_trace() | |
66 { | |
67 int i; | |
68 | |
69 fputs("G23:", stdout); | |
70 for (i = 1; i < rxpkt_len; i++) | |
71 printf(" %02X", rxpkt[i]); | |
72 putchar('\n'); | |
73 } | |
74 | |
75 void | |
60 print_rx_packet() | 76 print_rx_packet() |
61 { | 77 { |
62 int i; | 78 int i; |
63 | 79 |
64 switch (rxpkt[0]) { | 80 switch (rxpkt[0]) { |
65 case RVT_RV_HEADER: | 81 case RVT_RV_HEADER: |
82 if (rxpkt_len < 6) | |
83 break; | |
66 print_rv_trace(); | 84 print_rv_trace(); |
67 return; | 85 return; |
68 case RVT_L1_HEADER: | 86 case RVT_L1_HEADER: |
69 print_l1_trace(); | 87 print_l1_trace(); |
88 return; | |
89 case RVT_L23_HEADER: | |
90 print_g23_trace(); | |
70 return; | 91 return; |
71 } | 92 } |
72 /* default case: print the whole packet in hex as an unknown */ | 93 /* default case: print the whole packet in hex as an unknown */ |
73 fputs("UNK:", stdout); | 94 fputs("UNK:", stdout); |
74 for (i = 0; i < rxpkt_len; i++) | 95 for (i = 0; i < rxpkt_len; i++) |