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++)