comparison autocal/txstandbas.c @ 118:6a7f8d201859

fc-rfcal-txbasis: added -l option to show slope (check linearity)
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 13 Feb 2018 07:17:31 +0000
parents c9bd1f75029f
children
comparison
equal deleted inserted replaced
117:4c3f4231a021 118:6a7f8d201859
10 #include <strings.h> 10 #include <strings.h>
11 #include <unistd.h> 11 #include <unistd.h>
12 #include <rvinterf/l1tm.h> 12 #include <rvinterf/l1tm.h>
13 #include <rvinterf/exitcodes.h> 13 #include <rvinterf/exitcodes.h>
14 #include "stdband.h" 14 #include "stdband.h"
15 #include "txvout.h"
15 16
16 extern char *rvif_socket_pathname, *tsid_socket_pathname; 17 extern char *rvif_socket_pathname, *tsid_socket_pathname;
17 18
18 extern double tx_power_meas(); 19 extern double tx_power_meas();
20 extern vout_t dbm_to_vout();
19 21
20 static struct band { 22 static struct band {
21 char *name; 23 char *name;
22 unsigned rfpw_std_band; 24 unsigned rfpw_std_band;
23 unsigned default_arfcn; 25 unsigned default_arfcn;
28 {"1900", RFPW_STD_BAND_1900, 660}, 30 {"1900", RFPW_STD_BAND_1900, 660},
29 {0, 0, 0} 31 {0, 0, 0}
30 }; 32 };
31 static struct band *selected_band; 33 static struct band *selected_band;
32 static unsigned arfcn, arfcn_set; 34 static unsigned arfcn, arfcn_set;
35 static int do_slope;
33 36
34 cmdline_options(argc, argv) 37 cmdline_options(argc, argv)
35 char **argv; 38 char **argv;
36 { 39 {
37 extern char *optarg; 40 extern char *optarg;
38 int c; 41 int c;
39 42
40 while ((c = getopt(argc, argv, "a:s:t:")) != EOF) { 43 while ((c = getopt(argc, argv, "a:ls:t:")) != EOF) {
41 switch (c) { 44 switch (c) {
42 case 'a': 45 case 'a':
43 arfcn = atoi(optarg); 46 arfcn = atoi(optarg);
44 arfcn_set = 1; 47 arfcn_set = 1;
48 continue;
49 case 'l':
50 do_slope = 1;
45 continue; 51 continue;
46 case 's': 52 case 's':
47 rvif_socket_pathname = optarg; 53 rvif_socket_pathname = optarg;
48 continue; 54 continue;
49 case 't': 55 case 't':
79 85
80 main(argc, argv) 86 main(argc, argv)
81 char **argv; 87 char **argv;
82 { 88 {
83 extern int optind; 89 extern int optind;
84 int apc; 90 int apc, apc_prev;
85 double meas; 91 double meas;
92 vout_t vout, vout_prev;
93 int nanflag = 0, first;
86 94
87 cmdline_options(argc, argv); 95 cmdline_options(argc, argv);
88 if (argc - optind < 2) { 96 if (argc - optind < 2) {
89 fprintf(stderr, "usage: %s band apc...\n", argv[0]); 97 fprintf(stderr, "usage: %s band apc...\n", argv[0]);
90 exit(ERROR_USAGE); 98 exit(ERROR_USAGE);
104 do_rfpw(TCH_ARFCN, arfcn); 112 do_rfpw(TCH_ARFCN, arfcn);
105 do_rfpw(AFC_ENA_FLAG, 0); 113 do_rfpw(AFC_ENA_FLAG, 0);
106 printf("Starting RF Tx on the DUT\n"); 114 printf("Starting RF Tx on the DUT\n");
107 do_rfe(RX_TX_TCH); 115 do_rfe(RX_TX_TCH);
108 116
109 for (; optind < argc; optind++) { 117 for (first = 1; optind < argc; optind++) {
110 apc = atoi(argv[optind]); 118 apc = atoi(argv[optind]);
111 do_txpw(TX_APC_DAC, apc); 119 do_txpw(TX_APC_DAC, apc);
112 usleep(20000); 120 usleep(20000);
113 meas = tx_power_meas(); 121 meas = tx_power_meas();
114 printf("APC DAC=%d: %.2f dBm\n", apc, meas); 122 printf("APC DAC=%d: %.2f dBm\n", apc, meas);
123 if (isnan(meas))
124 nanflag = 1;
125 if (do_slope && !nanflag) {
126 vout = dbm_to_vout(meas);
127 if (!first)
128 printf("slope=%f\n",
129 (vout - vout_prev) / (apc - apc_prev));
130 apc_prev = apc;
131 vout_prev = vout;
132 }
133 first = 0;
115 } 134 }
116 135
117 printf("Stopping RF Tx on the DUT\n"); 136 printf("Stopping RF Tx on the DUT\n");
118 do_rfe(STOP_ALL); 137 do_rfe(STOP_ALL);
119 exit(0); 138 exit(0);