FreeCalypso > hg > freecalypso-tools
comparison rvinterf/tmsh/l1resp.c @ 135:40807eb35ffe
fc-tmsh: rftr response handling implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 20 Feb 2017 02:04:27 +0000 |
parents | 4c78649101f1 |
children | da4d4af80fdd |
comparison
equal
deleted
inserted
replaced
134:4c78649101f1 | 135:40807eb35ffe |
---|---|
2 * Handling of TM3 responses from L1TM | 2 * Handling of TM3 responses from L1TM |
3 */ | 3 */ |
4 | 4 |
5 #include <sys/types.h> | 5 #include <sys/types.h> |
6 #include <stdio.h> | 6 #include <stdio.h> |
7 #include <string.h> | |
8 #include <strings.h> | |
7 #include "l1tm.h" | 9 #include "l1tm.h" |
8 | 10 |
9 extern u_char rvi_msg[]; | 11 extern u_char rvi_msg[]; |
10 extern int rvi_msg_len; | 12 extern int rvi_msg_len; |
13 | |
14 unsigned rftr_table_index, rftr_table_size; | |
15 u_char rftr_table_data[MAX_RF_TABLE_SIZE]; | |
11 | 16 |
12 void | 17 void |
13 l1tm_response_nodata(op) | 18 l1tm_response_nodata(op) |
14 char *op; | 19 char *op; |
15 { | 20 { |
260 offset += 2; | 265 offset += 2; |
261 sprintf(buf, "BSIC: %u (0x%04X)", val, val); | 266 sprintf(buf, "BSIC: %u (0x%04X)", val, val); |
262 async_msg_output(buf); | 267 async_msg_output(buf); |
263 } | 268 } |
264 } | 269 } |
270 | |
271 void | |
272 l1tm_rftr_response() | |
273 { | |
274 char buf[80], *dp; | |
275 unsigned i, j, l; | |
276 | |
277 if (rvi_msg[3]) { | |
278 if (rvi_msg_len == 5) { | |
279 sprintf(buf, "rftr error %u (0x%02X)", | |
280 rvi_msg[3], rvi_msg[3]); | |
281 async_msg_output(buf); | |
282 } else | |
283 print_etm_pkt_raw("rftr long error response"); | |
284 return; | |
285 } | |
286 if (rvi_msg_len < 7 || rvi_msg_len > MAX_RF_TABLE_SIZE + 6) { | |
287 print_etm_pkt_raw("rftr response wrong length"); | |
288 return; | |
289 } | |
290 rftr_table_index = rvi_msg[4]; | |
291 rftr_table_size = rvi_msg_len - 6; | |
292 bcopy(rvi_msg + 5, rftr_table_data, rftr_table_size); | |
293 sprintf(buf, "rftr index %u (0x%02X): %u bytes", | |
294 rftr_table_index, rftr_table_index, rftr_table_size); | |
295 async_msg_output(buf); | |
296 for (i = 0; i < rftr_table_size; ) { | |
297 l = rftr_table_size - i; | |
298 if (l > 16) | |
299 l = 16; | |
300 sprintf(buf, "offset %02X:", i); | |
301 dp = index(buf, '\0'); | |
302 for (j = 0; j < l; j++) { | |
303 if (j == 0 || j == 8) | |
304 *dp++ = ' '; | |
305 sprintf(dp, " %02X", rftr_table_data[i++]); | |
306 } | |
307 async_msg_output(buf); | |
308 } | |
309 } |