FreeCalypso > hg > freecalypso-tools
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},