# HG changeset patch # User Mychaela Falconia # Date 1464648348 0 # Node ID f511bbac0efa9adf2edb88008e8fc41abfbda288 # Parent 4c80a6e6723f33083c8b466fd5b9f1cebc19b3d5 fc-shell: beginning of TCH code expansion diff -r 4c80a6e6723f -r f511bbac0efa rvinterf/asyncshell/pktsort.c --- a/rvinterf/asyncshell/pktsort.c Tue May 03 23:46:54 2016 +0000 +++ b/rvinterf/asyncshell/pktsort.c Mon May 30 22:45:48 2016 +0000 @@ -58,24 +58,6 @@ async_msg_output(buf); } -static void -dump_tch() -{ - char buf[MAX_PKT_FROM_TARGET*3+5], *dp; - u_char *cp, *endp; - - cp = rvi_msg + 2; - endp = rvi_msg + rvi_msg_len; - strcpy(buf, "TCH:"); - dp = buf + 4; - while (cp < endp) { - sprintf(dp, " %02X", *cp++); - dp += 3; - } - *dp = '\0'; - async_msg_output(buf); -} - void process_pkt_from_target() { @@ -90,7 +72,7 @@ response_from_ati(); return; case RVT_TCH_HEADER: - dump_tch(); + tch_packet_rx(); return; default: tty_cleanup(); diff -r 4c80a6e6723f -r f511bbac0efa rvinterf/asyncshell/tchcmd.c --- a/rvinterf/asyncshell/tchcmd.c Tue May 03 23:46:54 2016 +0000 +++ b/rvinterf/asyncshell/tchcmd.c Mon May 30 22:45:48 2016 +0000 @@ -9,8 +9,14 @@ #include #include #include "pktmux.h" +#include "limits.h" #include "tch_feature.h" +extern u_char rvi_msg[]; +extern int rvi_msg_len; + +static int tch_rawdump_mode; + send_tch_config_req(config) { u_char sendpkt[3]; @@ -60,3 +66,55 @@ { return cmd_tchdl_common(argc - 1, argv + 1); } + +static void +tch_rawdump() +{ + char buf[MAX_PKT_FROM_TARGET*3+5], *dp; + u_char *cp, *endp; + + cp = rvi_msg + 2; + endp = rvi_msg + rvi_msg_len; + strcpy(buf, "TCH:"); + dp = buf + 4; + while (cp < endp) { + sprintf(dp, " %02X", *cp++); + dp += 3; + } + *dp = '\0'; + async_msg_output(buf); +} + +void +tch_packet_rx() +{ + char buf[128]; + + if (tch_rawdump_mode) { + tch_rawdump(); + return; + } + if (rvi_msg_len < 3) { +inv: async_msg_output("Error: invalid TCH packet received"); + return; + } + switch (rvi_msg[2]) { + case TCH_CONFIG_CONF: + if (rvi_msg_len != 4) + goto inv; + if (rvi_msg[3] & 0xFE) + goto inv; + sprintf(buf, "TCH_CONFIG_CONF: DL forwarding is %s", + rvi_msg[3] ? "enabled" : "disabled"); + async_msg_output(buf); + return; + case TCH_ULBITS_CONF: + /* TCH UL play code will hook in here */ + return; + case TCH_DLBITS_IND: + /* TCH DL record code will hook in here */ + return; + default: + goto inv; + } +}