annotate cmu200/vcxocal.c @ 39:34c6fbe38daa

fc-cmu200d: implemented RF1/RF2 port selection
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 27 May 2017 02:17:00 +0000
parents aeffe53e110d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This module implements the VCXO calibration support functionality.
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <stdio.h>
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <stdlib.h>
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <string.h>
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <strings.h>
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include "mode.h"
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include "band.h"
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
39
34c6fbe38daa fc-cmu200d: implemented RF1/RF2 port selection
Mychaela Falconia <falcon@freecalypso.org>
parents: 11
diff changeset
12 extern int cmu200_rf_port;
34c6fbe38daa fc-cmu200d: implemented RF1/RF2 port selection
Mychaela Falconia <falcon@freecalypso.org>
parents: 11
diff changeset
13
7
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 extern char *client_cmd_fields[];
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 extern int client_cmd_nfields;
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 extern int current_mode;
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 extern struct band *current_band;
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19
8
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
20 extern char instrument_response[];
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
21
7
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 cmd_vcxo_cal_setup()
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 {
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 int rc;
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 unsigned arfcn;
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 char cmdstr[32];
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 if (client_cmd_nfields != 3) {
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 send_socket_response("-Wrong number of arguments\n");
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 return(0);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 }
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 stop_signal_gen();
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 current_mode = OP_MODE_UNDEF;
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 rc = find_named_band(client_cmd_fields[1]);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 if (rc < 0) {
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 send_socket_response("-Invalid band argument\n");
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 return(0);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 }
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 arfcn = atoi(client_cmd_fields[2]);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 if (verify_arfcn(arfcn, 0, 0) < 0) {
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 send_socket_response("-Invalid ARFCN\n");
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 return(0);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 }
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 sprintf(cmdstr, "*SEC %d\n", current_band->secaddr);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 send_scpi_cmd(cmdstr);
39
34c6fbe38daa fc-cmu200d: implemented RF1/RF2 port selection
Mychaela Falconia <falcon@freecalypso.org>
parents: 11
diff changeset
46 sprintf(cmdstr, "INP RF%d\n", cmu200_rf_port);
34c6fbe38daa fc-cmu200d: implemented RF1/RF2 port selection
Mychaela Falconia <falcon@freecalypso.org>
parents: 11
diff changeset
47 send_scpi_cmd(cmdstr);
7
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 sprintf(cmdstr, "RFAN:CHAN %uCH\n", arfcn);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 send_scpi_cmd(cmdstr);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 send_scpi_cmd("RFAN:TSEQ GSM5\n");
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 current_mode = OP_MODE_VCXO_CAL;
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 send_socket_response("+OK\n");
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 return(0);
948031e6de50 fc-cmu200d: vcxo-cal-setup implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 }
8
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
55
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
56 cmd_freq_meas()
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
57 {
11
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
58 char *resp_fields[11];
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
59 char client_resp[128];
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
60
8
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
61 if (current_mode != OP_MODE_VCXO_CAL) {
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
62 send_socket_response("-Wrong mode\n");
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
63 return(0);
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
64 }
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
65 send_scpi_cmd("READ:MOD?\n");
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
66 collect_instr_response();
11
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
67 if (parse_commasep_response(resp_fields, 11) < 0) {
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
68 send_socket_response
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
69 ("-CMU200 response has wrong number of fields\n");
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
70 return(0);
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
71 }
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
72 sprintf(client_resp, "+ %s\n", resp_fields[7]);
aeffe53e110d fc-cmu200d: freq-meas works
Mychaela Falconia <falcon@freecalypso.org>
parents: 8
diff changeset
73 send_socket_response(client_resp);
8
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
74 return(0);
c873a36a16e6 fc-cmu200d: freq-meas implemented without response parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 7
diff changeset
75 }