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 }