FreeCalypso > hg > freecalypso-sw
changeset 874:72d64c172d85
fc-shell: Rx control implemented
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Sat, 30 May 2015 07:20:50 +0000 |
parents | 3be5a1b4c91a |
children | dab341e172de |
files | rvinterf/asyncshell/Makefile rvinterf/asyncshell/init.c rvinterf/asyncshell/rxctl.c rvinterf/asyncshell/usercmd.c |
diffstat | 4 files changed, 95 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/rvinterf/asyncshell/Makefile Sat May 30 06:45:21 2015 +0000 +++ b/rvinterf/asyncshell/Makefile Sat May 30 07:20:50 2015 +0000 @@ -1,7 +1,7 @@ CC= gcc CFLAGS= -O2 -I../include PROG= fc-shell -OBJS= init.o main.o pktsort.o usercmd.o +OBJS= init.o main.o pktsort.o rxctl.o usercmd.o LIBS= ../libasync/libasync.a ../libg23/libg23.a INSTBIN=/usr/local/bin
--- a/rvinterf/asyncshell/init.c Sat May 30 06:45:21 2015 +0000 +++ b/rvinterf/asyncshell/init.c Sat May 30 07:20:50 2015 +0000 @@ -10,8 +10,6 @@ #include "pktmux.h" #include "localsock.h" -extern int sock; - init() { static u_char want_rvt_lost[9] = {CLI2RVI_WANT_RVTRACE,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rvinterf/asyncshell/rxctl.c Sat May 30 07:20:50 2015 +0000 @@ -0,0 +1,89 @@ +/* + * This module contains the code for enabling and disabling the receiving + * of various packet types via rvinterf. + */ + +#include <sys/types.h> +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include <strings.h> +#include <stdlib.h> +#include "pktmux.h" +#include "localsock.h" + +void +send_rxctl_cmd(channel, enable) +{ + u_char cmdbuf[2]; + + cmdbuf[0] = enable ? CLI2RVI_WANT_MUXPROTO : CLI2RVI_DROP_MUXPROTO; + cmdbuf[1] = channel; + send_init_command(cmdbuf, 2); +} + +void +ati_rx_control(newstate) +{ + static int state = 0; + + if (state == newstate) + return; + send_rxctl_cmd(RVT_AT_HEADER, newstate); + state = newstate; +} + +void +gpf_rx_control(newstate) +{ + static int state = 0; + + if (state == newstate) + return; + send_rxctl_cmd(RVT_L23_HEADER, newstate); + state = newstate; +} + +void +rxctl_user_cmd(args, enable) + char *args; +{ + char *cp, *np; + int gotsome = 0; + + for (cp = args; ; ) { + while (isspace(*cp)) + cp++; + if (!*cp) { + if (!gotsome) + printf("error: argument required\n"); + return; + } + for (np = cp; *cp && !isspace(*cp); cp++) + ; + if (*cp) + *cp++ = '\0'; + if (!strcmp(np, "ati")) + ati_rx_control(enable); + else if (!strcmp(np, "gpf")) + gpf_rx_control(enable); + else { + printf("error: unknown channel \"%s\"\n", np); + return; + } + } +} + +void +cmd_enable(args) + char *args; +{ + rxctl_user_cmd(args, 1); +} + +void +cmd_disable(args) + char *args; +{ + rxctl_user_cmd(args, 0); +}
--- a/rvinterf/asyncshell/usercmd.c Sat May 30 06:45:21 2015 +0000 +++ b/rvinterf/asyncshell/usercmd.c Sat May 30 07:20:50 2015 +0000 @@ -11,6 +11,9 @@ extern char usercmd[]; +extern void cmd_disable(); +extern void cmd_enable(); + void cmd_exit() { @@ -22,6 +25,8 @@ char *cmd; void (*func)(); } cmdtab[] = { + {"disable", cmd_disable}, + {"enable", cmd_enable}, {"exit", cmd_exit}, {"quit", cmd_exit}, {0, 0}