FreeCalypso > hg > fc-rfcal-tools
changeset 73:c9bd1f75029f
autocal: C main modules for standalone programs renamed more sensibly
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 15 Jul 2017 18:14:49 +0000 |
parents | 2db97ef5e169 |
children | d388732c2f73 |
files | autocal/Makefile autocal/gmagicmain.c autocal/gmagicstand.c autocal/txbasis.c autocal/txchkmain.c autocal/txstandbas.c autocal/txstandchk.c |
diffstat | 7 files changed, 312 insertions(+), 306 deletions(-) [+] |
line wrap: on
line diff
--- a/autocal/Makefile Sat Jul 15 17:58:14 2017 +0000 +++ b/autocal/Makefile Sat Jul 15 18:14:49 2017 +0000 @@ -4,16 +4,16 @@ fc-rfcal-vcxo INSTBIN=/opt/freecalypso/bin -GMAGIC_OBJS= gmagicmain.o l1meas.o l1tmops.o rvinterf.o rxcommon.o \ +GMAGIC_OBJS= gmagicstand.o l1meas.o l1tmops.o rvinterf.o rxcommon.o \ sockopts.o tsidsock.o RXBAND_OBJS= l1meas.o l1tmops.o rvinterf.o rxband.o rxcommon.o rxupload.o \ sockopts.o tsidsock.o -TXBASIS_OBJS= l1tmops.o rvinterf.o tsidsock.o txbasis.o txpwrmeas.o +TXBASIS_OBJS= l1tmops.o rvinterf.o tsidsock.o txpwrmeas.o txstandbas.o -TXCHECK_OBJS= l1tmops.o rvinterf.o sockopts.o tsidsock.o txchkmain.o \ - txpwrmeas.o +TXCHECK_OBJS= l1tmops.o rvinterf.o sockopts.o tsidsock.o txpwrmeas.o \ + txstandchk.o VCXO_OBJS= l1tmops.o rvinterf.o sockopts.o tsidsock.o vcxomain.o vcxomeas.o
--- a/autocal/gmagicmain.c Sat Jul 15 17:58:14 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* - * This module contains the main() function for fc-rfcal-gmagic. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <strings.h> -#include <rvinterf/l1tm.h> -#include <rvinterf/exitcodes.h> -#include "rxcaldefs.h" -#include "stdband.h" - -static struct band { - char *name; - unsigned rfpw_std_band; - unsigned default_arfcn; -} bands[] = { - {"850", RFPW_STD_BAND_850, 189}, - {"900", RFPW_STD_BAND_900, 37}, - {"1800", RFPW_STD_BAND_1800, 698}, - {"1900", RFPW_STD_BAND_1900, 661}, - {0, 0, 0} -}; -static struct band *selected_band; -static unsigned arfcn; - -finish_cmdline(argc, argv) - char **argv; -{ - extern int optind; - struct band *band; - - if (argc - optind < 1 || argc - optind > 2) { - fprintf(stderr, "usage: %s band [arfcn]\n", argv[0]); - exit(ERROR_USAGE); - } - for (band = bands; band->name; band++) - if (!strcmp(band->name, argv[optind])) - break; - if (!band->name) { - fprintf(stderr, "error: \"%s\" is not a known band\n", - argv[optind]); - exit(ERROR_USAGE); - } - selected_band = band; - if (argv[optind+1]) - arfcn = atoi(argv[optind+1]); - else - arfcn = band->default_arfcn; - return(0); -} - -prepare_rf_test_system() -{ - char cmd[80]; - - printf("Preparing RF test system for %s MHz Rx calibration\n", - selected_band->name); - sprintf(cmd, "signal-gen-setup %s\n", selected_band->name); - tsid_command(cmd); - return(0); -} - -main(argc, argv) - char **argv; -{ - int pm, Gmagic; - char Gmagic_db[64]; - - socket_pathname_options(argc, argv); - finish_cmdline(argc, argv); - connect_rvinterf_socket(); - connect_tsid_socket(); - setlinebuf(stdout); /* to allow logging with tee */ - prepare_rf_test_system(); - - printf("Putting the DUT into Test Mode\n"); - do_tms(1); - do_rfpw(STD_BAND_FLAG, selected_band->rfpw_std_band); - l1tm_setup_for_rxcal(); - pm = rx_measure(arfcn); - Gmagic = pm - RXCAL_SIGGEN_LEVEL - RXCAL_AGC_DB * 2; - halfdb_to_string(Gmagic, Gmagic_db); - printf("GMagic=%d (%s dB)\n", Gmagic, Gmagic_db); - exit(0); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/autocal/gmagicstand.c Sat Jul 15 18:14:49 2017 +0000 @@ -0,0 +1,89 @@ +/* + * fc-rfcal-gmagic is a debug utility implementing just one part + * of the fc-rfcal-rxband process in a standalone manner; + * this module contains the main() function for this standalone utlity. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> +#include <rvinterf/l1tm.h> +#include <rvinterf/exitcodes.h> +#include "rxcaldefs.h" +#include "stdband.h" + +static struct band { + char *name; + unsigned rfpw_std_band; + unsigned default_arfcn; +} bands[] = { + {"850", RFPW_STD_BAND_850, 189}, + {"900", RFPW_STD_BAND_900, 37}, + {"1800", RFPW_STD_BAND_1800, 698}, + {"1900", RFPW_STD_BAND_1900, 661}, + {0, 0, 0} +}; +static struct band *selected_band; +static unsigned arfcn; + +finish_cmdline(argc, argv) + char **argv; +{ + extern int optind; + struct band *band; + + if (argc - optind < 1 || argc - optind > 2) { + fprintf(stderr, "usage: %s band [arfcn]\n", argv[0]); + exit(ERROR_USAGE); + } + for (band = bands; band->name; band++) + if (!strcmp(band->name, argv[optind])) + break; + if (!band->name) { + fprintf(stderr, "error: \"%s\" is not a known band\n", + argv[optind]); + exit(ERROR_USAGE); + } + selected_band = band; + if (argv[optind+1]) + arfcn = atoi(argv[optind+1]); + else + arfcn = band->default_arfcn; + return(0); +} + +prepare_rf_test_system() +{ + char cmd[80]; + + printf("Preparing RF test system for %s MHz Rx calibration\n", + selected_band->name); + sprintf(cmd, "signal-gen-setup %s\n", selected_band->name); + tsid_command(cmd); + return(0); +} + +main(argc, argv) + char **argv; +{ + int pm, Gmagic; + char Gmagic_db[64]; + + socket_pathname_options(argc, argv); + finish_cmdline(argc, argv); + connect_rvinterf_socket(); + connect_tsid_socket(); + setlinebuf(stdout); /* to allow logging with tee */ + prepare_rf_test_system(); + + printf("Putting the DUT into Test Mode\n"); + do_tms(1); + do_rfpw(STD_BAND_FLAG, selected_band->rfpw_std_band); + l1tm_setup_for_rxcal(); + pm = rx_measure(arfcn); + Gmagic = pm - RXCAL_SIGGEN_LEVEL - RXCAL_AGC_DB * 2; + halfdb_to_string(Gmagic, Gmagic_db); + printf("GMagic=%d (%s dB)\n", Gmagic, Gmagic_db); + exit(0); +}
--- a/autocal/txbasis.c Sat Jul 15 17:58:14 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -/* - * This module contains the main() function for fc-rfcal-txbasis. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <strings.h> -#include <unistd.h> -#include <rvinterf/l1tm.h> -#include <rvinterf/exitcodes.h> -#include "stdband.h" - -extern char *rvif_socket_pathname, *tsid_socket_pathname; - -extern double tx_power_meas(); - -static struct band { - char *name; - unsigned rfpw_std_band; - unsigned default_arfcn; -} bands[] = { - {"850", RFPW_STD_BAND_850, 190}, - {"900", RFPW_STD_BAND_900, 40}, - {"1800", RFPW_STD_BAND_1800, 700}, - {"1900", RFPW_STD_BAND_1900, 660}, - {0, 0, 0} -}; -static struct band *selected_band; -static unsigned arfcn, arfcn_set; - -cmdline_options(argc, argv) - char **argv; -{ - extern char *optarg; - int c; - - while ((c = getopt(argc, argv, "a:s:t:")) != EOF) { - switch (c) { - case 'a': - arfcn = atoi(optarg); - arfcn_set = 1; - continue; - case 's': - rvif_socket_pathname = optarg; - continue; - case 't': - tsid_socket_pathname = optarg; - continue; - case '?': - default: - /* error msg already printed */ - exit(ERROR_USAGE); - } - } - return(0); -} - -select_band(bandname) - char *bandname; -{ - struct band *band; - - for (band = bands; band->name; band++) - if (!strcmp(band->name, bandname)) - break; - if (!band->name) { - fprintf(stderr, "error: \"%s\" is not a known band\n", - bandname); - exit(ERROR_USAGE); - } - selected_band = band; - if (!arfcn_set) - arfcn = band->default_arfcn; - return(0); -} - -main(argc, argv) - char **argv; -{ - extern int optind; - int apc; - double meas; - - cmdline_options(argc, argv); - if (argc - optind < 2) { - fprintf(stderr, "usage: %s band apc...\n", argv[0]); - exit(ERROR_USAGE); - } - select_band(argv[optind++]); - - connect_rvinterf_socket(); - connect_tsid_socket(); - setlinebuf(stdout); /* to allow logging with tee */ - printf("Preparing RF test system for %s MHz Tx calibration\n", - selected_band->name); - do_txpwr_cal_setup(selected_band->name, arfcn); - - printf("Putting the DUT into Test Mode\n"); - do_tms(1); - do_rfpw(STD_BAND_FLAG, selected_band->rfpw_std_band); - do_rfpw(TCH_ARFCN, arfcn); - do_rfpw(AFC_ENA_FLAG, 0); - printf("Starting RF Tx on the DUT\n"); - do_rfe(RX_TX_TCH); - - for (; optind < argc; optind++) { - apc = atoi(argv[optind]); - do_txpw(TX_APC_DAC, apc); - usleep(20000); - meas = tx_power_meas(); - printf("APC DAC=%d: %.2f dBm\n", apc, meas); - } - - printf("Stopping RF Tx on the DUT\n"); - do_rfe(STOP_ALL); - exit(0); -}
--- a/autocal/txchkmain.c Sat Jul 15 17:58:14 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* - * This module contains the main() function for fc-rfcal-txcheck. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <strings.h> -#include <unistd.h> -#include <rvinterf/l1tm.h> -#include <rvinterf/exitcodes.h> -#include "stdband.h" - -extern double tx_power_meas(); - -static struct band { - char *name; - unsigned rfpw_std_band; - unsigned default_arfcn; - unsigned start_plnum; - unsigned end_plnum; - int spec_max_dbm; -} bands[] = { - {"850", RFPW_STD_BAND_850, 190, 5, 19, 33}, - {"900", RFPW_STD_BAND_900, 40, 5, 19, 33}, - {"1800", RFPW_STD_BAND_1800, 700, 0, 15, 30}, - {"1900", RFPW_STD_BAND_1900, 660, 0, 15, 30}, - {0, 0, 0} -}; -static struct band *selected_band; -static unsigned arfcn; - -finish_cmdline(argc, argv) - char **argv; -{ - extern int optind; - struct band *band; - - if (argc - optind < 1 || argc - optind > 2) { - fprintf(stderr, "usage: %s band [arfcn]\n", argv[0]); - exit(ERROR_USAGE); - } - for (band = bands; band->name; band++) - if (!strcmp(band->name, argv[optind])) - break; - if (!band->name) { - fprintf(stderr, "error: \"%s\" is not a known band\n", - argv[optind]); - exit(ERROR_USAGE); - } - selected_band = band; - if (argv[optind+1]) - arfcn = atoi(argv[optind+1]); - else - arfcn = band->default_arfcn; - return(0); -} - -main(argc, argv) - char **argv; -{ - unsigned plnum; - double meas; - int spec_dbm; - - socket_pathname_options(argc, argv); - finish_cmdline(argc, argv); - connect_rvinterf_socket(); - connect_tsid_socket(); - setlinebuf(stdout); /* to allow logging with tee */ - printf("Preparing RF test system for %s MHz Tx calibration\n", - selected_band->name); - do_txpwr_cal_setup(selected_band->name, arfcn); - - printf("Putting the DUT into Test Mode\n"); - do_tms(1); - do_rfpw(STD_BAND_FLAG, selected_band->rfpw_std_band); - do_rfpw(TCH_ARFCN, arfcn); - do_rfpw(AFC_ENA_FLAG, 0); - printf("Starting RF Tx on the DUT\n"); - do_rfe(RX_TX_TCH); - - spec_dbm = selected_band->spec_max_dbm; - for (plnum = selected_band->start_plnum; - plnum <= selected_band->end_plnum; plnum++, spec_dbm -= 2) { - do_txpw(TX_PWR_LEVEL, plnum); - usleep(20000); - meas = tx_power_meas(); - printf( - "Tx power level #%u: spec %d dBm, meas %.2f dBm (%+.2f)\n", - plnum, spec_dbm, meas, meas - spec_dbm); - } - - printf("Stopping RF Tx on the DUT\n"); - do_rfe(STOP_ALL); - exit(0); -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/autocal/txstandbas.c Sat Jul 15 18:14:49 2017 +0000 @@ -0,0 +1,120 @@ +/* + * fc-rfcal-txbasis is a debug utility implementing just one part + * of the fc-rfcal-txband process in a standalone manner; + * this module contains the main() function for this standalone utlity. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> +#include <unistd.h> +#include <rvinterf/l1tm.h> +#include <rvinterf/exitcodes.h> +#include "stdband.h" + +extern char *rvif_socket_pathname, *tsid_socket_pathname; + +extern double tx_power_meas(); + +static struct band { + char *name; + unsigned rfpw_std_band; + unsigned default_arfcn; +} bands[] = { + {"850", RFPW_STD_BAND_850, 190}, + {"900", RFPW_STD_BAND_900, 40}, + {"1800", RFPW_STD_BAND_1800, 700}, + {"1900", RFPW_STD_BAND_1900, 660}, + {0, 0, 0} +}; +static struct band *selected_band; +static unsigned arfcn, arfcn_set; + +cmdline_options(argc, argv) + char **argv; +{ + extern char *optarg; + int c; + + while ((c = getopt(argc, argv, "a:s:t:")) != EOF) { + switch (c) { + case 'a': + arfcn = atoi(optarg); + arfcn_set = 1; + continue; + case 's': + rvif_socket_pathname = optarg; + continue; + case 't': + tsid_socket_pathname = optarg; + continue; + case '?': + default: + /* error msg already printed */ + exit(ERROR_USAGE); + } + } + return(0); +} + +select_band(bandname) + char *bandname; +{ + struct band *band; + + for (band = bands; band->name; band++) + if (!strcmp(band->name, bandname)) + break; + if (!band->name) { + fprintf(stderr, "error: \"%s\" is not a known band\n", + bandname); + exit(ERROR_USAGE); + } + selected_band = band; + if (!arfcn_set) + arfcn = band->default_arfcn; + return(0); +} + +main(argc, argv) + char **argv; +{ + extern int optind; + int apc; + double meas; + + cmdline_options(argc, argv); + if (argc - optind < 2) { + fprintf(stderr, "usage: %s band apc...\n", argv[0]); + exit(ERROR_USAGE); + } + select_band(argv[optind++]); + + connect_rvinterf_socket(); + connect_tsid_socket(); + setlinebuf(stdout); /* to allow logging with tee */ + printf("Preparing RF test system for %s MHz Tx calibration\n", + selected_band->name); + do_txpwr_cal_setup(selected_band->name, arfcn); + + printf("Putting the DUT into Test Mode\n"); + do_tms(1); + do_rfpw(STD_BAND_FLAG, selected_band->rfpw_std_band); + do_rfpw(TCH_ARFCN, arfcn); + do_rfpw(AFC_ENA_FLAG, 0); + printf("Starting RF Tx on the DUT\n"); + do_rfe(RX_TX_TCH); + + for (; optind < argc; optind++) { + apc = atoi(argv[optind]); + do_txpw(TX_APC_DAC, apc); + usleep(20000); + meas = tx_power_meas(); + printf("APC DAC=%d: %.2f dBm\n", apc, meas); + } + + printf("Stopping RF Tx on the DUT\n"); + do_rfe(STOP_ALL); + exit(0); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/autocal/txstandchk.c Sat Jul 15 18:14:49 2017 +0000 @@ -0,0 +1,99 @@ +/* + * fc-rfcal-txcheck is a debug utility implementing just one part + * of the fc-rfcal-txband process in a standalone manner; + * this module contains the main() function for this standalone utlity. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> +#include <unistd.h> +#include <rvinterf/l1tm.h> +#include <rvinterf/exitcodes.h> +#include "stdband.h" + +extern double tx_power_meas(); + +static struct band { + char *name; + unsigned rfpw_std_band; + unsigned default_arfcn; + unsigned start_plnum; + unsigned end_plnum; + int spec_max_dbm; +} bands[] = { + {"850", RFPW_STD_BAND_850, 190, 5, 19, 33}, + {"900", RFPW_STD_BAND_900, 40, 5, 19, 33}, + {"1800", RFPW_STD_BAND_1800, 700, 0, 15, 30}, + {"1900", RFPW_STD_BAND_1900, 660, 0, 15, 30}, + {0, 0, 0} +}; +static struct band *selected_band; +static unsigned arfcn; + +finish_cmdline(argc, argv) + char **argv; +{ + extern int optind; + struct band *band; + + if (argc - optind < 1 || argc - optind > 2) { + fprintf(stderr, "usage: %s band [arfcn]\n", argv[0]); + exit(ERROR_USAGE); + } + for (band = bands; band->name; band++) + if (!strcmp(band->name, argv[optind])) + break; + if (!band->name) { + fprintf(stderr, "error: \"%s\" is not a known band\n", + argv[optind]); + exit(ERROR_USAGE); + } + selected_band = band; + if (argv[optind+1]) + arfcn = atoi(argv[optind+1]); + else + arfcn = band->default_arfcn; + return(0); +} + +main(argc, argv) + char **argv; +{ + unsigned plnum; + double meas; + int spec_dbm; + + socket_pathname_options(argc, argv); + finish_cmdline(argc, argv); + connect_rvinterf_socket(); + connect_tsid_socket(); + setlinebuf(stdout); /* to allow logging with tee */ + printf("Preparing RF test system for %s MHz Tx calibration\n", + selected_band->name); + do_txpwr_cal_setup(selected_band->name, arfcn); + + printf("Putting the DUT into Test Mode\n"); + do_tms(1); + do_rfpw(STD_BAND_FLAG, selected_band->rfpw_std_band); + do_rfpw(TCH_ARFCN, arfcn); + do_rfpw(AFC_ENA_FLAG, 0); + printf("Starting RF Tx on the DUT\n"); + do_rfe(RX_TX_TCH); + + spec_dbm = selected_band->spec_max_dbm; + for (plnum = selected_band->start_plnum; + plnum <= selected_band->end_plnum; plnum++, spec_dbm -= 2) { + do_txpw(TX_PWR_LEVEL, plnum); + usleep(20000); + meas = tx_power_meas(); + printf( + "Tx power level #%u: spec %d dBm, meas %.2f dBm (%+.2f)\n", + plnum, spec_dbm, meas, meas - spec_dbm); + } + + printf("Stopping RF Tx on the DUT\n"); + do_rfe(STOP_ALL); + exit(0); +}