FreeCalypso > hg > freecalypso-sw
view rvinterf/asyncshell/rxctl.c @ 992:a7b0b426f9ca
target-utils: boot ROM UART autodetection revamped
The new implementation should work with both the familiar Calypso C035
boot ROM version found in our regular targets as well as the older
Calypso F741979B version found on the vintage D-Sample board.
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Wed, 30 Dec 2015 21:28:41 +0000 |
parents | c9f353b5d70c |
children | 820d34f3f3d7 |
line wrap: on
line source
/* * 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; } gotsome++; } } void cmd_enable(args) char *args; { rxctl_user_cmd(args, 1); } void cmd_disable(args) char *args; { rxctl_user_cmd(args, 0); }