comparison autocal/gmagicstand.c @ 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 autocal/gmagicmain.c@fe39aac56cde
children
comparison
equal deleted inserted replaced
72:2db97ef5e169 73:c9bd1f75029f
1 /*
2 * fc-rfcal-gmagic is a debug utility implementing just one part
3 * of the fc-rfcal-rxband process in a standalone manner;
4 * this module contains the main() function for this standalone utlity.
5 */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <strings.h>
11 #include <rvinterf/l1tm.h>
12 #include <rvinterf/exitcodes.h>
13 #include "rxcaldefs.h"
14 #include "stdband.h"
15
16 static struct band {
17 char *name;
18 unsigned rfpw_std_band;
19 unsigned default_arfcn;
20 } bands[] = {
21 {"850", RFPW_STD_BAND_850, 189},
22 {"900", RFPW_STD_BAND_900, 37},
23 {"1800", RFPW_STD_BAND_1800, 698},
24 {"1900", RFPW_STD_BAND_1900, 661},
25 {0, 0, 0}
26 };
27 static struct band *selected_band;
28 static unsigned arfcn;
29
30 finish_cmdline(argc, argv)
31 char **argv;
32 {
33 extern int optind;
34 struct band *band;
35
36 if (argc - optind < 1 || argc - optind > 2) {
37 fprintf(stderr, "usage: %s band [arfcn]\n", argv[0]);
38 exit(ERROR_USAGE);
39 }
40 for (band = bands; band->name; band++)
41 if (!strcmp(band->name, argv[optind]))
42 break;
43 if (!band->name) {
44 fprintf(stderr, "error: \"%s\" is not a known band\n",
45 argv[optind]);
46 exit(ERROR_USAGE);
47 }
48 selected_band = band;
49 if (argv[optind+1])
50 arfcn = atoi(argv[optind+1]);
51 else
52 arfcn = band->default_arfcn;
53 return(0);
54 }
55
56 prepare_rf_test_system()
57 {
58 char cmd[80];
59
60 printf("Preparing RF test system for %s MHz Rx calibration\n",
61 selected_band->name);
62 sprintf(cmd, "signal-gen-setup %s\n", selected_band->name);
63 tsid_command(cmd);
64 return(0);
65 }
66
67 main(argc, argv)
68 char **argv;
69 {
70 int pm, Gmagic;
71 char Gmagic_db[64];
72
73 socket_pathname_options(argc, argv);
74 finish_cmdline(argc, argv);
75 connect_rvinterf_socket();
76 connect_tsid_socket();
77 setlinebuf(stdout); /* to allow logging with tee */
78 prepare_rf_test_system();
79
80 printf("Putting the DUT into Test Mode\n");
81 do_tms(1);
82 do_rfpw(STD_BAND_FLAG, selected_band->rfpw_std_band);
83 l1tm_setup_for_rxcal();
84 pm = rx_measure(arfcn);
85 Gmagic = pm - RXCAL_SIGGEN_LEVEL - RXCAL_AGC_DB * 2;
86 halfdb_to_string(Gmagic, Gmagic_db);
87 printf("GMagic=%d (%s dB)\n", Gmagic, Gmagic_db);
88 exit(0);
89 }