# HG changeset patch # User Mychaela Falconia # Date 1489739301 0 # Node ID ce7479d28b02783b43e60d5ba02db014e0311dc6 # Parent da6950e936bf00c628c26f23d1746db99ffb8a65 fc-tmsh: aur response handling implemented diff -r da6950e936bf -r ce7479d28b02 rvinterf/tmsh/audioresp.c --- a/rvinterf/tmsh/audioresp.c Fri Mar 17 08:00:19 2017 +0000 +++ b/rvinterf/tmsh/audioresp.c Fri Mar 17 08:28:21 2017 +0000 @@ -37,7 +37,43 @@ static void aur_response() { - print_etm_pkt_raw("aur response"); + char buf[80], *dp; + unsigned i, j, l, size; + + if (rvi_msg_len < 7) { +tooshort: print_etm_pkt_raw("aur response too short"); + return; + } + if (rvi_msg[3]) { + if (rvi_msg_len == 7) { + sprintf(buf, "aur %u error %u (0x%02X)", rvi_msg[5], + rvi_msg[3], rvi_msg[3]); + async_msg_output(buf); + } else + print_etm_pkt_raw("aur long error response"); + return; + } + if (rvi_msg_len < 8) + goto tooshort; + size = rvi_msg_len - 7; + sprintf(buf, "aur %u: %u byte%s", rvi_msg[5], size, + size != 1 ? "s" : ""); + async_msg_output(buf); + for (i = 0; i < size; ) { + l = size - i; + if (l > 16) + l = 16; + sprintf(buf, "offset %02X:", i); + dp = index(buf, '\0'); + for (j = 0; j < l; j++) { + if (j == 0 || j == 8) + *dp++ = ' '; + sprintf(dp, " %02X", rvi_msg[i + 6]); + i++; + dp += 3; + } + async_msg_output(buf); + } } static void