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);
+}