FreeCalypso > hg > fc-rfcal-tools
comparison cmu200/rfanalyzer.c @ 40:2fb9768fc1e2
fc-cmu200d: VCXO calibration mode generalized into RF analyzer mode
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 27 May 2017 02:38:28 +0000 |
parents | cmu200/vcxocal.c@34c6fbe38daa |
children | 3f4221ef916a |
comparison
equal
deleted
inserted
replaced
39:34c6fbe38daa | 40:2fb9768fc1e2 |
---|---|
1 /* | |
2 * This module implements the RF analyzer functionality | |
3 * for VCXO and Tx power level calibration support. | |
4 */ | |
5 | |
6 #include <stdio.h> | |
7 #include <stdlib.h> | |
8 #include <string.h> | |
9 #include <strings.h> | |
10 #include "mode.h" | |
11 #include "band.h" | |
12 | |
13 extern int cmu200_rf_port; | |
14 | |
15 extern char *client_cmd_fields[]; | |
16 extern int client_cmd_nfields; | |
17 | |
18 extern int current_mode; | |
19 extern struct band *current_band; | |
20 | |
21 extern char instrument_response[]; | |
22 | |
23 cmd_rfan_setup() | |
24 { | |
25 int rc; | |
26 unsigned arfcn; | |
27 char cmdstr[32]; | |
28 | |
29 if (client_cmd_nfields != 3) { | |
30 send_socket_response("-Wrong number of arguments\n"); | |
31 return(0); | |
32 } | |
33 stop_signal_gen(); | |
34 current_mode = OP_MODE_UNDEF; | |
35 rc = find_named_band(client_cmd_fields[1]); | |
36 if (rc < 0) { | |
37 send_socket_response("-Invalid band argument\n"); | |
38 return(0); | |
39 } | |
40 arfcn = atoi(client_cmd_fields[2]); | |
41 if (verify_arfcn(arfcn, 0, 0) < 0) { | |
42 send_socket_response("-Invalid ARFCN\n"); | |
43 return(0); | |
44 } | |
45 sprintf(cmdstr, "*SEC %d\n", current_band->secaddr); | |
46 send_scpi_cmd(cmdstr); | |
47 sprintf(cmdstr, "INP RF%d\n", cmu200_rf_port); | |
48 send_scpi_cmd(cmdstr); | |
49 sprintf(cmdstr, "RFAN:CHAN %uCH\n", arfcn); | |
50 send_scpi_cmd(cmdstr); | |
51 send_scpi_cmd("RFAN:TSEQ GSM5\n"); | |
52 current_mode = OP_MODE_GSM_RFAN; | |
53 send_socket_response("+OK\n"); | |
54 return(0); | |
55 } | |
56 | |
57 cmd_freq_meas() | |
58 { | |
59 char *resp_fields[11]; | |
60 char client_resp[128]; | |
61 | |
62 if (current_mode != OP_MODE_GSM_RFAN) { | |
63 send_socket_response("-Wrong mode\n"); | |
64 return(0); | |
65 } | |
66 send_scpi_cmd("READ:MOD?\n"); | |
67 collect_instr_response(); | |
68 if (parse_commasep_response(resp_fields, 11) < 0) { | |
69 send_socket_response | |
70 ("-CMU200 response has wrong number of fields\n"); | |
71 return(0); | |
72 } | |
73 sprintf(client_resp, "+ %s\n", resp_fields[7]); | |
74 send_socket_response(client_resp); | |
75 return(0); | |
76 } |