# HG changeset patch # User Mychaela Falconia # Date 1487495272 0 # Node ID bc23c1cd30ae1af914cfd1c89c979549ded9c330 # Parent cad9129d0f03c6177f1b761d8a438fdf7502a6ef fc-tmsh: rftw format consistency check implemented diff -r cad9129d0f03 -r bc23c1cd30ae rvinterf/tmsh/Makefile --- 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 diff -r cad9129d0f03 -r bc23c1cd30ae rvinterf/tmsh/l1cmd.c --- 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); } diff -r cad9129d0f03 -r bc23c1cd30ae rvinterf/tmsh/rftablechk.c --- /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 +#include +#include +#include +#include +#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); +}