changeset 139:b5e3899b1265

fc-tmsh: save-rf-table command implemented
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 26 Feb 2017 23:13:52 +0000
parents 3803f838e1f3
children e6c265bf5a6d
files rvinterf/tmsh/Makefile rvinterf/tmsh/saverftab.c rvinterf/tmsh/usercmd.c
diffstat 3 files changed, 84 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/rvinterf/tmsh/Makefile	Sun Feb 26 22:37:47 2017 +0000
+++ b/rvinterf/tmsh/Makefile	Sun Feb 26 23:13:52 2017 +0000
@@ -3,7 +3,7 @@
 PROG=	fc-tmsh
 OBJS=	abb.o audiocmd.o etmbasic.o ffs2.o ffs2resp.o init.o l1cmd.o l1resp.o \
 	main.o misc.o omr.o oneshot.o pktsort.o rftablechk.o rftablerd.o \
-	rftablewr.o tmcore.o usercmd.o
+	rftablewr.o saverftab.o tmcore.o usercmd.o
 LIBS=	../libasync/libasync.a
 INSTBIN=/opt/freecalypso/bin
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rvinterf/tmsh/saverftab.c	Sun Feb 26 23:13:52 2017 +0000
@@ -0,0 +1,81 @@
+/*
+ * Here we implement fc-tmsh operator commands which save the RF table data
+ * received via rftr and ttr commands into files.
+ */
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <stdlib.h>
+#include "l1tm.h"
+#include "exitcodes.h"
+
+extern unsigned rftr_table_index, rftr_table_size;
+extern u_char rftr_table_data[];
+extern u_char ttr_ramp_data[];
+
+extern void write_afcparams_table();
+extern void write_agcwords_table();
+extern void write_agcglobals_table();
+extern void write_il2agc_table();
+extern void write_tx_levels_table();
+extern void write_tx_calchan_table();
+extern void write_tx_caltemp_table();
+extern void write_rx_calchan_table();
+extern void write_rx_caltemp_table();
+extern void write_rx_agcparams_table();
+
+static struct table_map {
+	int	index;
+	int	size;
+	void	(*func)();
+} table_map[] = {
+	{RX_AGC_TABLE,		40,	write_agcwords_table},
+	{AFC_PARAMS,		24,	write_afcparams_table},
+	{RX_AGC_GLOBAL_PARAMS,	8,	write_agcglobals_table},
+	{RX_IL_2_AGC_MAX,	121,	write_il2agc_table},
+	{RX_IL_2_AGC_PWR,	121,	write_il2agc_table},
+	{RX_IL_2_AGC_AV,	121,	write_il2agc_table},
+	{TX_LEVELS,		128,	write_tx_levels_table},
+	{TX_CAL_CHAN,		128,	write_tx_calchan_table},
+	{TX_CAL_TEMP,		40,	write_tx_caltemp_table},
+	{RX_CAL_CHAN,		40,	write_rx_calchan_table},
+	{RX_CAL_TEMP,		44,	write_rx_caltemp_table},
+	{RX_AGC_PARAMS,		8,	write_rx_agcparams_table},
+	{0,			0,	0}
+};
+
+cmd_save_rf_table(argc, argv)
+	char **argv;
+{
+	struct table_map *tp;
+	FILE *outf;
+
+	if (!rftr_table_size) {
+		printf("error: no RF table has been received\n");
+		return(ERROR_TARGET);
+	}
+	for (tp = table_map; tp->index; tp++) {
+		if (tp->index == rftr_table_index)
+			break;
+	}
+	if (!tp->index) {
+		printf("error: received table index %u not known\n",
+			rftr_table_index);
+		return(ERROR_TARGET);
+	}
+	if (rftr_table_size != tp->size &&
+	    (rftr_table_index != RX_AGC_PARAMS || rftr_table_size != 10)) {
+		printf("error: received table index and size don't match\n");
+		return(ERROR_TARGET);
+	}
+	outf = fopen(argv[1], "w");
+	if (!outf) {
+		perror(argv[1]);
+		return(ERROR_UNIX);
+	}
+	tp->func(rftr_table_data, outf);
+	fclose(outf);
+	return(0);
+}
--- a/rvinterf/tmsh/usercmd.c	Sun Feb 26 22:37:47 2017 +0000
+++ b/rvinterf/tmsh/usercmd.c	Sun Feb 26 23:13:52 2017 +0000
@@ -33,6 +33,7 @@
 extern int cmd_rftw();
 extern int cmd_rxpr();
 extern int cmd_rxpw();
+extern int cmd_save_rf_table();
 extern int cmd_scr();
 extern int cmd_scw();
 extern int cmd_sr();
@@ -86,6 +87,7 @@
 	{"rftw", 2, 3, cmd_rftw},
 	{"rxpr", 1, 1, cmd_rxpr},
 	{"rxpw", 2, 2, cmd_rxpw},
+	{"save-rf-table", 1, 1, cmd_save_rf_table},
 	{"scr", 1, 1, cmd_scr},
 	{"scw", 2, 2, cmd_scw},
 	{"sr", 2, 2, cmd_sr},