FreeCalypso > hg > freecalypso-tools
changeset 123:bc23c1cd30ae
fc-tmsh: rftw format consistency check implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 19 Feb 2017 09:07:52 +0000 |
parents | cad9129d0f03 |
children | 8e37317f5de0 |
files | rvinterf/tmsh/Makefile rvinterf/tmsh/l1cmd.c rvinterf/tmsh/rftablechk.c |
diffstat | 3 files changed, 63 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/rvinterf/tmsh/Makefile Sun Feb 19 08:47:10 2017 +0000 +++ b/rvinterf/tmsh/Makefile Sun Feb 19 09:07:52 2017 +0000 @@ -2,7 +2,8 @@ CFLAGS= -O2 -I../include PROG= fc-tmsh OBJS= abb.o audiocmd.o etmbasic.o ffs2.o ffs2resp.o init.o l1cmd.o main.o \ - misc.o omr.o oneshot.o pktsort.o rftablerd.o tmcore.o usercmd.o + misc.o omr.o oneshot.o pktsort.o rftablechk.o rftablerd.o tmcore.o \ + usercmd.o LIBS= ../libasync/libasync.a INSTBIN=/opt/freecalypso/bin
--- a/rvinterf/tmsh/l1cmd.c Sun Feb 19 08:47:10 2017 +0000 +++ b/rvinterf/tmsh/l1cmd.c Sun Feb 19 09:07:52 2017 +0000 @@ -318,6 +318,16 @@ rc = read_rf_table(argv[2], cmdpkt + 3, &format, &size); if (rc) return(rc); + if (argc > 3) { + if (strcmp(argv[3], "force")) { + printf("error: unexpected 3rd argument\n"); + return(ERROR_USAGE); + } + } else { + rc = rftw_index_format_check(index, format); + if (rc) + return(rc); + } send_etm_cmd(cmdpkt, size + 2); return(0); }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rvinterf/tmsh/rftablechk.c Sun Feb 19 09:07:52 2017 +0000 @@ -0,0 +1,51 @@ +/* + * This module contains the function that checks if the table format + * and rftw index match. + */ + +#include <sys/types.h> +#include <stdio.h> +#include <string.h> +#include <strings.h> +#include <stdlib.h> +#include "localtypes.h" +#include "l1tm.h" +#include "exitcodes.h" + +static struct table_match { + int index; + char *format; +} matchlist[] = { + {RX_AGC_TABLE, "agc-table"}, + {AFC_PARAMS, "afcparams"}, + {RX_AGC_GLOBAL_PARAMS, "agc-global-params"}, + {RX_IL_2_AGC_MAX, "il2agc"}, + {RX_IL_2_AGC_PWR, "il2agc"}, + {RX_IL_2_AGC_AV, "il2agc"}, + {TX_LEVELS, "tx-levels"}, + {TX_CAL_CHAN, "tx-calchan"}, + {TX_CAL_TEMP, "tx-caltemp"}, + {RX_CAL_CHAN, "rx-calchan"}, + {RX_CAL_TEMP, "rx-caltemp"}, + {RX_AGC_PARAMS, "rx-agc-params"}, + {0, 0} +}; + +rftw_index_format_check(index, format) + char *format; +{ + struct table_match *tp; + + if (!strcmp(format, "raw")) + return(0); + for (tp = matchlist; tp->index; tp++) { + if (tp->index == index) { + if (!strcmp(format, tp->format)) + return(0); + printf("error: read table of type %s, expected %s\n", + format, tp->format); + return(ERROR_USAGE); + } + } + return(0); +}