annotate FXAnalyse.c @ 268:ec4462c7f8b7

Extensive cleanup of beatnote specific variables Reorganize the beatnote specific variables in arrays indexed by the beatnote enum constants LO, HG, SR. Also reorganize DDS frequency related variables in arrays indexed by the DDS channel number.
author Daniele Nicolodi <daniele.nicolodi@obspm.fr>
date Thu, 09 Jul 2015 23:11:00 +0200
parents 1de805d2d37a
children 3f395eab72eb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
240
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
1 #include <zmq.h>
119
f9fb17fb64cc Add Sr frequency logging to disk and to Sr data logger
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 118
diff changeset
2 #include <tcpsupp.h>
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
3 #include <utility.h>
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
4 #include <ansi_c.h>
183
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
5 #include <lowlvlio.h>
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
6 #include <cvirte.h>
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
7 #include <userint.h>
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
8 #include <formatio.h>
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
9 #include <inifile.h>
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
10 #include <string.h>
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
11
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
12 #include "FXAnalyse.h"
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
13 #include "Plot.h"
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
14 #include "Allan.h"
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
15 #include "ad9912.h"
209
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
16 #include "ad9956.h"
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
17 #include "muParserDLL.h"
144
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
18 #include "utils.h"
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
19 #include "stat.h"
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
20 #include "future.h"
144
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
21 #include "data-provider.h"
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
22 #include "sr-data-logger.h"
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
23 #include "config.h"
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
24 #include "logging.h"
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
25
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
26
109
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
27 #define FREP_STEP_SIZE 50000.0
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
28
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
29 #define SPEED_OF_LIGHT 299792458.0 // m/s
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
30
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
31 #define SR_FREQUENCY 429.228293 // THz
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
32 #define SR_WAVELENGTH (SPEED_OF_LIGHT / SR_FREQUENCY / 1.0e3) // nm
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
33
228
5e69d9abbbf2 Update Hg expected frequency with value of last measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 227
diff changeset
34 #define HG_FREQUENCY 282.143622 // THz
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
35 #define HG_WAVELENGTH (SPEED_OF_LIGHT / HG_FREQUENCY / 1.0e3) // nm
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
36
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
37
170
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
38 // select which data provider to use
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
39 #ifdef NDEBUG
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
40 #define DataProvider KKDataProvider
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
41 #else
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
42 #define DataProvider FakeDataProvider
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
43 #endif
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
44
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
45
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
46 // data acquisition status
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
47 int acquiring;
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
48 // data queue
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
49 CmtTSQHandle dataQueue;
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
50 // data provider thread
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
51 CmtThreadFunctionID dataProviderThread;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
52
240
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
53 // ZMQ
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
54 void *zmqcontext;
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
55 void *zmqsocket;
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
56
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
57 // utility function to send data through ZMQ socket framed by an envelope
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
58 // see "Pub-Sub Message Envelopes" in chapter 2 "Sockets and Patterns"
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
59 // of "ZMQ The Guide" http://zguide.zeromq.org/page:all#toc49
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
60 int zmq_xpub(void *socket, char *envelope, void *data, size_t len)
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
61 {
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
62 int r;
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
63
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
64 r = zmq_send(socket, envelope, strlen(envelope), ZMQ_SNDMORE);
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
65 if (r < 0)
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
66 return zmq_errno();
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
67
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
68 r = zmq_send(socket, data, len, 0);
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
69 if (r < 0)
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
70 return zmq_errno();
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
71
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
72 return 0;
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
73 }
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
74
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
75
238
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
76 struct event ev;
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
77 double utc;
238
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
78 #define Ch1 ev.data[0]
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
79 #define Ch2 ev.data[1]
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
80 #define Ch3 ev.data[2]
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
81 #define Ch4 ev.data[3]
37
5e81800fe354 Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 35
diff changeset
82 double Math1, Math2, Math3, Math4, Math5;
135
77539f2597b1 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 134
diff changeset
83 double N1, N2, N3;
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
84 double Ndiv = 8.0;
230
9e240adb3053 Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 228
diff changeset
85 double Sign1 = 1, Sign2 = 1, Sign3 = 1;
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
86 void *MathParser1, *MathParser2, *MathParser3, *MathParser4, *MathParser5;
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
87
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
88
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
89 // panels
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
90 static int MainPanel;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
91 static int CalcNPanel;
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
92 static int EstimateNPanel;
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
93
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
94
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
95 struct adev {
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
96 Allan_Data allan;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
97 double *data;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
98 const char *title;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
99 double normalization;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
100 int control;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
101 };
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
102
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
103
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
104 #define ADEV(__channel, __normalization) \
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
105 { \
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
106 .data = & ## __channel, \
231
c10236b5a3e9 Show Plot and Allan windows in the taskbar
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 230
diff changeset
107 .title = "Adev " #__channel, \
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
108 .normalization = __normalization, \
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
109 .control = PANEL_ADEV_ ## __channel \
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
110 }
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
111
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
112
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
113 static int adev_toggle(struct adev *adev)
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
114 {
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
115 if (adev->allan.active)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
116 Allan_ClosePanel(&(adev->allan));
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
117 else
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
118 Allan_InitPanel(&(adev->allan), adev->title,
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
119 adev->normalization, MainPanel, adev->control);
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
120 return adev->allan.active;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
121 }
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
122
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
123
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
124 static inline void adev_update(struct adev *adev)
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
125 {
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
126 if (adev->allan.active)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
127 Allan_AddFrequency(&(adev->allan), *(adev->data));
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
128 }
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
129
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
130
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
131 struct adev adevs[] = {
253
10bf2bcdbbd4 Fix Allan deviation normalization for Ch1
Daniele Nicolodi <daniele@grinta.net>
parents: 248
diff changeset
132 ADEV(Ch1, 1.80e12),
234
b0b4b2aea43a Correct normalization for Allan deviation plots
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 232
diff changeset
133 ADEV(Ch2, 282.143e12),
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
134 ADEV(Ch3, 429.228e12),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
135 ADEV(Ch4, 275.0e3),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
136 ADEV(Math1, 250.0e6),
234
b0b4b2aea43a Correct normalization for Allan deviation plots
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 232
diff changeset
137 ADEV(Math2, 194.400e12),
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
138 ADEV(Math3, 282.143e12),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
139 ADEV(Math4, 429.228e12),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
140 ADEV(Math5, 1.0),
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
141 { NULL }
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
142 };
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
143
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
144
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
145 struct plot {
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
146 Plot_Data plot;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
147 double *data;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
148 const char *title;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
149 double min;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
150 double max;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
151 int control;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
152 };
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
153
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
154
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
155 #define PLOT(__channel, __min, __max) \
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
156 { \
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
157 .data = & ## __channel, \
231
c10236b5a3e9 Show Plot and Allan windows in the taskbar
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 230
diff changeset
158 .title = "Plot " #__channel, \
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
159 .min = __min, \
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
160 .max = __max, \
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
161 .control = PANEL_PLOT_ ## __channel \
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
162 }
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
163
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
164
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
165 static int plot_toggle(struct plot *plot)
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
166 {
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
167 if (plot->plot.active)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
168 Plot_ClosePanel(&(plot->plot));
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
169 else
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
170 Plot_InitPanel(&(plot->plot), plot->title,
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
171 plot->min, plot->max, MainPanel, plot->control);
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
172 return plot->plot.active;
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
173 }
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
174
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
175
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
176 static inline void plot_update(struct plot *plot)
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
177 {
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
178 if (plot->plot.active)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
179 Plot_AddFrequency(&(plot->plot), *(plot->data));
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
180 }
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
181
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
182 struct plot plots[] = {
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
183 PLOT(Ch1, 54.999e6, 55.001e6),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
184 PLOT(Ch2, 0.0, 0.0),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
185 PLOT(Ch3, 0.0, 0.0),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
186 PLOT(Ch4, 0.0, 0.0),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
187 PLOT(Math1, 0.0, 0.0),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
188 PLOT(Math2, 0.0, 0.0),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
189 PLOT(Math3, 0.0, 0.0),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
190 PLOT(Math4, 0.0, 0.0),
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
191 PLOT(Math5, 0.0, 0.0),
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
192 { NULL }
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
193 };
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
194
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
195
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
196 struct ad9956 ad9956;
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
197 struct ad9912 ad9912;
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
198
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
199
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
200 static inline int ad9912_set_frequency_w(struct ad9912 *d, unsigned c, double f)
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
201 {
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
202 int r = ad9912_set_frequency(d, c, f);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
203 if (r)
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
204 logmessage(ERROR, "ad9912 set frequency channel=%d error=%d", c, -r);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
205 return r;
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
206 }
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
207
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
208
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
209 static inline int ad9912_ramp_frequency_w(struct ad9912 *d, unsigned c, double f, double s)
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
210 {
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
211 int r = ad9912_ramp_frequency(d, c, f, s);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
212 if (r)
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
213 logmessage(ERROR, "ad9912 ramp frequency channel=%d error=%d", c, -r);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
214 return r;
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
215 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
216
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
217
209
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
218 static inline int ad9956_set_sweep_rate_w(struct ad9956 *d, double s)
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
219 {
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
220 int r = ad9956_set_sweep_rate(d, s);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
221 if (r)
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
222 logmessage(ERROR, "ad9956 set sweep rate error=%d", -r);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
223 return r;
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
224 }
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
225
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
226
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
227 static int ad9956_set_w(struct ad9956 *d, double f, double s)
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
228 {
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
229 int r;
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
230
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
231 r = ad9956_sweep_stop(d);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
232 if (r) {
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
233 logmessage(ERROR, "ad9956 sweep stop error=%d", -r);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
234 return r;
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
235 }
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
236
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
237 r = ad9956_set_frequency(d, f);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
238 if (r) {
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
239 logmessage(ERROR, "ad9956 set frequency error=%d", -r);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
240 return r;
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
241 }
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
242
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
243 r = ad9956_set_sweep_rate(d, s);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
244 if (r) {
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
245 logmessage(ERROR, "ad9956 set sweep rate error=%d", -r);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
246 return r;
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
247 }
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
248
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
249 r = ad9956_sweep_start(d);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
250 if (r) {
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
251 logmessage(ERROR, "ad9956 sweep start error=%d", -r);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
252 return r;
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
253 }
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
254
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
255 return 0;
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
256 }
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
257
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
258
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
259 enum {
266
dfbee05fe464 Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 257
diff changeset
260 NONE = -1,
dfbee05fe464 Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 257
diff changeset
261 LO = 0,
dfbee05fe464 Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 257
diff changeset
262 MICROWAVE = LO,
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
263 HG,
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
264 SR,
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
265 NBEATNOTES,
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
266 };
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
267
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
268
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
269 enum {
26
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
270 N_MEASUREMENT_NONE,
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
271 N_MEASUREMENT_INIT,
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
272 N_MEASUREMENT_SLOPE,
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
273 N_MEASUREMENT_ADJUST_FREQ_PLUS,
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
274 N_MEASUREMENT_FREP_PLUS,
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
275 N_MEASUREMENT_ADJUST_FREQ_MINUS,
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
276 N_MEASUREMENT_FREP_MINUS,
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
277 };
4bb197635664 Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 25
diff changeset
278
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
279 int n_measurement[NBEATNOTES] = { N_MEASUREMENT_NONE, };
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
280 double slop_time[NBEATNOTES] = { 40.0, };
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
281 double integration_time[NBEATNOTES] = { 40.0, };
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
282 double delta_f_lock[NBEATNOTES] = { 500e3, };
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
283
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
284 double t1, t2, t3;
156
4ab8099a18e2 Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 155
diff changeset
285 double f_rep_slope, f_beat_slope;
115
23f8b7b2b63a Use DDS1 to change frep in the measurement of N3. Improve some variable names
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 114
diff changeset
286 double f_rep_plus, f_rep_minus;
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
287 double f_beat_plus, f_beat_minus;
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
288
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
289 double f0_DDS[4] = { 110000000.0, 0.0, 0.0, 0.0 };
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
290 double df_DDS3 = 0.0;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
291
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
292 int nobs = 0;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
293 int settling = 0;
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
294
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
295
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
296 // Beatnote sign determination is done stepping the repetition rate by
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
297 // stepping the comb phase-lock offset frequency f_lock generated by
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
298 // DDS1. A lock frequency step delta_f_lock determines a change in the
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
299 // repetition rate given by:
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
300 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
301 // abs(delta_f_rep) = Ndiv * delta_f_lock / N1
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
302 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
303 // where Ndiv = 8 and N1 ~= 8 x 10^5 obtaining that
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
304 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
305 // abs(delta_f_rep) ~= delta_f_lock / 10^5
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
306 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
307 // For the determination of the comb locking beatnote sign we detect
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
308 // the sign of delta_f_rep caused by a positive delta_f_lock. f_rep is
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
309 // measured should be small enough to do not exceed the 200x PLL
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
310 // bandwidth but still be clearly identified.
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
311 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
312 // For the optical beatnotes we detect the sign of delta_f_beat caused
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
313 // by a positive delta_f_lock thus we need to take into account the
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
314 // sign of the comb locking beatnote. The optical beatnote frequency
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
315 // change is given by
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
316 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
317 // abs(delta_f_beat) = abs(delta_f_rep) * Nx
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
318 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
319 // where Nx ~= 10^6 obtaining that
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
320 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
321 // abs(delta_f_beat) ~= delta_f_lock * 10
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
322 //
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
323 // this need to do not exceed the beatnote filters bandwidth. Given
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
324 // those contraints the following f_lock steps are chosen:
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
325
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
326 double f_lock_step[NBEATNOTES] = {
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
327 [LO] = 10000.0,
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
328 [HG] = 10.0,
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
329 [SR] = 10.0
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
330 };
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
331
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
332 struct beatsign {
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
333 int measure; // which beatnote sign is being measured
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
334 double f0_DDS; // DDS frequency before stepping
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
335 double t0; // measurement start time
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
336 double f_rep_zero; // repetition rate before stepping
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
337 double f_beat_zero; // beatnote frequwncy before stepping
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
338 };
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
339
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
340 struct beatsign beatsign = {
266
dfbee05fe464 Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 257
diff changeset
341 .measure = NONE,
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
342 };
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
343
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
344
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
345 struct stat stat_math1, stat_ch2, stat_ch3;
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
346 struct rollmean rollmean_ch1, rollmean_ch2, rollmean_ch3, rollmean_ch4;
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
347
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
348
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
349 // dedrift
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
350 struct dedrift {
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
351 int enabled; // dedrift enabled
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
352 int proportional; // enable proportional correction
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
353 int reference; // reference frequency
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
354 int sign; // sign of the correction
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
355 int x2; // double the applied correction
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
356 int keep_freq; // keep current frequency value when dedrift is disabled
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
357 int keep_slope; // keep current slope value when dedrift is disabled
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
358 double f0; // target frequency
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
359 double fDDS; // DDS center frequency
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
360 double applied; // currently applied slope
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
361 double interval; // measurement duration
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
362 double t0; // beginning of currrent measurement interval
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
363 double threshold; // maximum allowed frequency change
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
364 int badcount; // number of bad data points encountered consecutively
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
365 int badcountmax; // maximum number of consecutive bad data points
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
366 int safety; // stop slope update when too many consecutive bad data points are detected
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
367 struct stat stat; // frequency mean and slope
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
368 };
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
369
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
370 struct dedrift dedrift = {
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
371 .enabled = FALSE,
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
372 .proportional = FALSE,
267
1de805d2d37a Reuse beatnote enum also for dedrift reference selection
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 266
diff changeset
373 .reference = MICROWAVE,
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
374 .sign = +1,
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
375 .x2 = FALSE,
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
376 .keep_freq = TRUE,
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
377 .keep_slope = TRUE,
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
378 .f0 = 0.0,
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
379 .fDDS = 70e6,
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
380 .applied = 0.0,
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
381 .interval = 30.0,
246
d6a37eca6d92 Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 245
diff changeset
382 .t0 = 0.0,
d6a37eca6d92 Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 245
diff changeset
383 .threshold = 20.0, // corresponding to a relative frequnecy stability of ~1e-13
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
384 .badcount = 0,
246
d6a37eca6d92 Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 245
diff changeset
385 .badcountmax = 10,
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
386 .safety = TRUE,
2
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
387 };
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
388
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
389
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
390 void dedrift_update_enable()
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
391 {
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
392 logmsg("dedrift: automatic slope update enabled");
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
393
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
394 dedrift.enabled = TRUE;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
395 dedrift.t0 = utc;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
396 stat_zero(&dedrift.stat);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
397 dedrift.stat.previous = NaN;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
398 }
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
399
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
400
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
401 void dedrift_update_disable()
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
402 {
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
403 logmsg("dedrift: automatic slope update disabled");
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
404
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
405 dedrift.enabled = FALSE;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
406 stat_zero(&dedrift.stat);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
407
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
408 if (! dedrift.keep_slope) {
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
409 dedrift.applied = 0.0;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
410 ad9956_set_sweep_rate_w(&ad9956, dedrift.applied);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
411 }
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
412 if (! dedrift.keep_freq) {
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
413 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
414 }
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
415
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
416 SetCtrlVal(MainPanel, PANEL_SLOPE_APPLIED, dedrift.applied);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
417 SetCtrlVal(MainPanel, PANEL_SLOPE_MEASURED, dedrift.stat.slope);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
418 SetCtrlVal(MainPanel, PANEL_MEASURE_SLOPE, 0);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
419 }
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
420
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
421
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
422 // Wrapper around stat_accumulate() that updates the statistic only if
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
423 // the new datapoint `v` is within `threshold` from the data point
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
424 // considered in the previous update. If the data point fails this
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
425 // criteria it does not contribute to the collected statistics and the
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
426 // previous data point is used instead and `count` is incremented by
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
427 // one. If the data point is accepted `count` is reset to zero.
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
428 int stat_accumulate_resilient(struct stat *stat, double v, double threshold, int *count)
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
429 {
246
d6a37eca6d92 Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 245
diff changeset
430 if (!isnan(stat->previous) && (fabs(v - stat->previous) > threshold)) {
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
431 // bad data point
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
432 stat_accumulate(stat, stat->previous);
246
d6a37eca6d92 Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 245
diff changeset
433 *count += 1;
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
434 return TRUE;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
435 } else {
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
436 // good data point
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
437 stat_accumulate(stat, v);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
438 *count = 0;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
439 return FALSE;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
440 }
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
441 }
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
442
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
443
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
444 void dedrift_update(double f)
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
445 {
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
446 if (! dedrift.enabled)
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
447 return;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
448
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
449 // update measurement
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
450 stat_accumulate_resilient(&dedrift.stat, f, dedrift.threshold, &dedrift.badcount);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
451 if (dedrift.badcount) {
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
452 // bad data point detected
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
453 logmsg("dedrift: bad data point detected");
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
454
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
455 // too many consecutive bad data points detected
246
d6a37eca6d92 Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 245
diff changeset
456 if (dedrift.safety && (dedrift.badcount > dedrift.badcountmax)) {
d6a37eca6d92 Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 245
diff changeset
457 logmsg("dedrift: maximum number of consecutive bad data points exceeded");
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
458 dedrift_update_disable();
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
459 }
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
460 }
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
461
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
462 // check if the previous check disabled slope update
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
463 if (! dedrift.enabled)
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
464 return;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
465
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
466 // update display
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
467 SetCtrlVal(MainPanel, PANEL_SLOPE_MEASURED, dedrift.stat.slope);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
468
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
469 // update applied slope
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
470 if ((utc - dedrift.t0) > dedrift.interval) {
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
471
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
472 // target frequency
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
473 if (dedrift.f0 == 0.0)
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
474 dedrift.f0 = dedrift.stat.mean;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
475
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
476 // compute correction
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
477 double dt = utc - dedrift.t0;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
478 double corr = dedrift.stat.slope \
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
479 + dedrift.proportional * ((dedrift.stat.mean - dedrift.f0) / dt + 0.5 * dedrift.stat.slope);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
480
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
481 // update
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
482 dedrift.applied += dedrift.sign * corr * (dedrift.x2 ? 2 : 1);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
483 ad9956_set_sweep_rate_w(&ad9956, dedrift.applied);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
484 SetCtrlVal(MainPanel, PANEL_SLOPE_APPLIED, dedrift.applied);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
485 logmsg("dedrift: update correction=%+3e slope=%+3e", corr, dedrift.applied);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
486
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
487 // start over. keep track of the last updated data point to
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
488 // avoid gaps in the detectrion of bad data points based on
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
489 // threshold on the difference between current data point and
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
490 // previous one
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
491 double prev = dedrift.stat.previous;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
492 stat_zero(&dedrift.stat);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
493 dedrift.stat.previous = prev;
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
494 dedrift.t0 = utc;
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
495 }
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
496 }
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
497
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
498
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
499 // recenter
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
500 struct recenter {
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
501 int active; // recenter enabled
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
502 int enabled[NBEATNOTES]; // which beatnotes to recenter
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
503 double threshold[NBEATNOTES]; // maximum frequency correction
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
504 double interval; // interval
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
505 double t0; // beginning of current interval
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
506 };
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
507
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
508 struct recenter recenter = {
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
509 .active = FALSE,
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
510 .enabled = { FALSE, FALSE, FALSE },
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
511 .threshold = { 10.0, 2000.0, 2000.0 },
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
512 .interval = 1800.0,
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
513 .t0 = 0.0
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
514 };
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
515
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
516
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
517 int recenter_enabled()
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
518 {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
519 if (! recenter.active)
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
520 return FALSE;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
521
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
522 for (int i = 0; i < NBEATNOTES; i++)
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
523 if (recenter.enabled[i])
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
524 return TRUE;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
525
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
526 return FALSE;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
527 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
528
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
529
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
530 void recenter_update()
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
531 {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
532 if (! recenter_enabled())
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
533 return;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
534
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
535 rollmean_accumulate(&rollmean_ch2, Ch2);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
536 rollmean_accumulate(&rollmean_ch3, Ch3);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
537 rollmean_accumulate(&rollmean_ch4, Ch4);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
538
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
539 if ((utc - recenter.t0) > recenter.interval) {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
540
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
541 if (recenter.enabled[LO]) {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
542 // adjust DDS2 frequency to keep Ch4 reading at 275 kHz
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
543 double freq = ad9912.frequency[1];
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
544 double adj = 275000.0 - rollmean_ch4.mean;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
545 if (fabs(adj) > recenter.threshold[LO]) {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
546 logmessage(WARNING, "not recenter ch4 to 275 kHz: DDS2 adjustment=%+3e exceeds threshold", adj);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
547 } else {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
548 freq = freq + adj;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
549 ad9912_set_frequency_w(&ad9912, 1, freq);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
550 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
551 logmsg("recenter ch4 to 275 kHz: DDS2 adjustment=%+3e", adj);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
552 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
553 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
554
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
555 if (recenter.enabled[HG]) {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
556 // adjust DDS3 frequency to keep Ch2 reading at 10 kHz
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
557 double freq = ad9912.frequency[2];
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
558 double adj = 10000 - rollmean_ch2.mean;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
559 if (fabs(adj) > recenter.threshold[HG]) {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
560 logmessage(WARNING, "not recenter Hg beatnote (ch2) to 10 kHz: DDS3 adjustment=%+3e exceeds threshold", adj);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
561 } else {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
562 freq = freq + adj;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
563 ad9912_set_frequency_w(&ad9912, 2, freq);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
564 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
565 logmsg("recenter Hg beatnote (ch2) to 10 kHz: DDS3 adjustment=%+3e", adj);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
566 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
567 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
568
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
569 if (recenter.enabled[SR]) {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
570 // adjust DDS4 frequency to keep Ch3 reading at 10 kHz
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
571 double freq = ad9912.frequency[3];
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
572 double adj = 10000 - rollmean_ch3.mean;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
573 if (fabs(adj) > recenter.threshold[SR]) {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
574 logmessage(WARNING, "not recenter Sr beatnote (ch3) to 10 kHz: DDS4 adjustment=%+3e exceeds threshold", adj);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
575 } else {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
576 freq = freq + adj;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
577 ad9912_set_frequency_w(&ad9912, 3, freq);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
578 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
579 logmsg("recenter Sr beatnote (ch3) to 10 kHz: DDS4 adjustment=%+3e", adj);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
580 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
581 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
582
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
583 recenter.t0 = utc;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
584 rollmean_zero(&rollmean_ch2);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
585 rollmean_zero(&rollmean_ch3);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
586 rollmean_zero(&rollmean_ch4);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
587 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
588 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
589
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
590
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
591 // data loggging
170
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
592 static char *datafolder;
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
593
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
594 struct datafile {
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
595 char *name;
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
596 double *data;
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
597 int nchan;
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
598 int control;
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
599 int write;
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
600 };
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
601
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
602 #define DATAFILE(__name, __data, __nchan, __control, __write) \
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
603 { \
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
604 .name = __name, \
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
605 .data = __data, \
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
606 .nchan = __nchan, \
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
607 .control = __control, \
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
608 .write = __write, \
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
609 }
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
610
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
611 struct datafile datafiles[] = {
237
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
612 // set the counter channels number to zero. it will
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
613 // be updated when the configuration file is read
238
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
614 DATAFILE("Raw", ev.data, 0, PANEL_SAVE_RAW, TRUE),
237
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
615 DATAFILE("DDS", ad9912.frequency, 4, PANEL_SAVE_DDS, FALSE),
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
616 DATAFILE("Lo", &Math2, 1, PANEL_SAVE_LO, FALSE),
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
617 DATAFILE("Hg", &Math3, 1, PANEL_SAVE_HG, FALSE),
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
618 DATAFILE("Sr", &Math4, 1, PANEL_SAVE_SR, FALSE),
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
619 DATAFILE("Ex", &Math5, 1, PANEL_SAVE_EXTRA, FALSE),
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
620 { NULL, }
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
621 };
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
622
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
623
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
624 static void write_data(const char *folder, const char *name, const char *id,
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
625 const char *timestr, double utc, double *v, int nchan)
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
626 {
183
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
627 int i, fd, len;
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
628 char line[1024];
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
629 char filename[FILENAME_MAX];
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
630
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
631 // construct filename in the form folder\\id-name.txt
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
632 snprintf(filename, sizeof(filename), "%s\\%s-%s.txt", folder, id, name);
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
633
235
95572be109a4 Fix data files creation permissions
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 234
diff changeset
634 fd = open(filename, O_CREAT|O_WRONLY|O_APPEND, S_IRUSR|S_IWUSR|S_IRGRP);
183
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
635 if (fd < 0) {
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
636 logmessage(ERROR, "open data file %s: %s", filename, strerror(errno));
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
637 return;
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
638 }
183
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
639
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
640 // timestamp
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
641 len = snprintf(line, sizeof(line), "%s\t%.3f", timestr, utc);
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
642
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
643 // data channels
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
644 for (i = 0; i < nchan; i++)
187
a5c70eae1e0b Change data logging to 16 digits precision
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 186
diff changeset
645 len += snprintf(line + len, sizeof(line) - len, "\t%.16e", v[i]);
183
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
646
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
647 // newline
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
648 line[len++] = '\r';
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
649 line[len++] = '\n';
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
650
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
651 // write to file
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
652 write(fd, line, len);
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
653
791ca26fee6a Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 180
diff changeset
654 close(fd);
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
655 }
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
656
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
657
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
658 static inline void datafile_append(struct datafile *d, char *id, char *timestr)
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
659 {
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
660 if (d->write)
170
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
661 write_data(datafolder, d->name, id, timestr, utc, d->data, d->nchan);
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
662 }
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
663
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
664
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
665 static struct datalogger datalogger;
73
1dfaf5ef0352 Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 70
diff changeset
666
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
667
199
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
668 static void onerror(int level, const char *msg)
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
669 {
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
670 SetCtrlVal(MainPanel, PANEL_ERROR, 1);
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
671 }
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
672
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
673
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
674 static void * muParserNew()
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
675 {
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
676 void *parser = mupCreate();
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
677
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
678 mupDefineOprtChars(parser, "abcdefghijklmnopqrstuvwxyzµ"
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
679 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
680 "+-*^/?<>=#!$%&|~'_");
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
681
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
682 mupDefineVar(parser, "Ch1", &Ch1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
683 mupDefineVar(parser, "Ch2", &Ch2);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
684 mupDefineVar(parser, "Ch3", &Ch3);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
685 mupDefineVar(parser, "Ch4", &Ch4);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
686 mupDefineVar(parser, "DDS1", &(ad9912.frequency[0]));
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
687 mupDefineVar(parser, "DDS2", &(ad9912.frequency[1]));
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
688 mupDefineVar(parser, "DDS3", &(ad9912.frequency[2]));
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
689 mupDefineVar(parser, "DDS4", &(ad9912.frequency[3]));
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
690 mupDefineVar(parser, "N1", &N1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
691 mupDefineVar(parser, "N2", &N2);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
692 mupDefineVar(parser, "N3", &N3);
125
37535873ee83 Rename variables from SigneX to SignX
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 124
diff changeset
693 mupDefineVar(parser, "Sign1", &Sign1);
37535873ee83 Rename variables from SigneX to SignX
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 124
diff changeset
694 mupDefineVar(parser, "Sign2", &Sign2);
37535873ee83 Rename variables from SigneX to SignX
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 124
diff changeset
695 mupDefineVar(parser, "Sign3", &Sign3);
109
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
696 mupDefineVar(parser, "Ndiv", &Ndiv);
174
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
697
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
698 mupDefinePostfixOprt(parser, "P", &Peta, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
699 mupDefinePostfixOprt(parser, "T", &Tera, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
700 mupDefinePostfixOprt(parser, "G", &Giga, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
701 mupDefinePostfixOprt(parser, "M", &Mega, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
702 mupDefinePostfixOprt(parser, "k", &kilo, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
703 mupDefinePostfixOprt(parser, "m", &milli, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
704 mupDefinePostfixOprt(parser, "u", &micro, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
705 mupDefinePostfixOprt(parser, "µ", &micro, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
706 mupDefinePostfixOprt(parser, "n", &nano, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
707 mupDefinePostfixOprt(parser, "p", &pico, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
708 mupDefinePostfixOprt(parser, "f", &femto, 1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
709
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
710 return parser;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
711 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
712
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
713
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
714 void CVICALLBACK DataAvailableCB (CmtTSQHandle queueHandle, unsigned int event,
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
715 int value, void *callbackData);
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
716
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
717
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
718 int main (int argc, char *argv[])
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
719 {
257
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
720 int i, rv, nchan;
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
721 double frequency, clock;
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
722 char expr[1024];
174
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
723 char host[256];
257
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
724 int PANEL_DDS[4] = { PANEL_DDS1, PANEL_DDS2, PANEL_DDS3, PANEL_DDS4 };
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
725
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
726 if ((MainPanel = LoadPanel (0, "FXAnalyse.uir", PANEL)) < 0)
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
727 return -1;
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
728 if ((CalcNPanel = LoadPanel (MainPanel, "FXAnalyse.uir", CALCN)) < 0)
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
729 return -1;
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
730 if ((EstimateNPanel = LoadPanel (MainPanel, "FXAnalyse.uir", ESTIMATEN)) < 0)
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
731 return -1;
164
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
732
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
733 // logging
199
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
734 logger_init(&onerror);
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
735
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
736 // load configuration file
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
737 char path[MAX_PATHNAME_LEN];
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
738 GetIniFilePath(path);
164
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
739 IniText configuration = Ini_New(TRUE);
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
740 Ini_ReadFromFile(configuration, path);
164
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
741
237
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
742 // KK counter channel number
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
743 rv = Ini_GetInt(configuration, "KK", "nchan", &nchan);
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
744 if (rv < 1)
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
745 nchan = 4;
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
746 // update number of channels to save to disk
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
747 datafiles[0].nchan = nchan;
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
748
170
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
749 // data folder
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
750 rv = Ini_GetStringCopy(configuration, "data", "folder", &datafolder);
174
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
751 if (rv > 0) {
248
eaac96094640 Minor style improvements
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 246
diff changeset
752 logmessage(INFO, "writing data files in '%s'", datafolder);
174
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
753 } else {
170
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
754 logmessage(ERROR, "data folder not configured in %s", path);
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
755 // do not allow to start the acquisition
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
756 SetCtrlAttribute(MainPanel, PANEL_STARTBUTTON, ATTR_DIMMED, TRUE);
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
757 }
a4fcebb5941b Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 169
diff changeset
758
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
759 // ad9956 configuration parameters
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
760 rv = Ini_GetStringIntoBuffer(configuration, "AD9956", "host", host, sizeof(host));
164
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
761 if (! rv)
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
762 return -1;
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
763 rv = Ini_GetDouble(configuration, "AD9956", "clock", &clock);
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
764 if (! rv)
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
765 return -1;
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
766
209
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
767 // initialize AD9956 dedrift DDS
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
768 rv = ad9956_init(&ad9956, host, clock);
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
769 if (rv)
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
770 logmessage(ERROR, "ad9956 init erorr=%d", -rv);
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
771 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied);
164
211ea3950310 Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 162
diff changeset
772
237
a41c872bce48 Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 235
diff changeset
773 // AD9912 configuration parameters
174
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
774 rv = Ini_GetStringIntoBuffer(configuration, "AD9912", "host", host, sizeof(host));
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
775 if (! rv)
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
776 return -1;
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
777 rv = Ini_GetDouble(configuration, "AD9912", "clock", &clock);
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
778 if (! rv)
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
779 return -1;
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
780
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
781 // initialize AD9912 DDS box
199
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
782 rv = ad9912_init(&ad9912, host, clock);
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
783 if (rv)
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
784 logmessage(ERROR, "ad9912 init erorr=%d", -rv);
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
785
257
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
786 // try to read back current frequency from DDS
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
787 for (i = 0; i < 4; i++) {
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
788 rv = ad9912_get_frequency(&ad9912, i, &frequency);
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
789 if ((rv) || (frequency == 0.0)) {
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
790 logmessage(WARNING, "reset DDS%d frequency to default value", i + 1);
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
791 GetCtrlVal(MainPanel, PANEL_DDS[i], &frequency);
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
792 ad9912_set_frequency_w(&ad9912, i, frequency);
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
793 }
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
794 SetCtrlVal(MainPanel, PANEL_DDS[i], frequency);
8cbfce046d41 Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 256
diff changeset
795 }
240
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
796
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
797 // setup ZMQ pub socket
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
798 char *socket;
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
799 rv = Ini_GetStringCopy(configuration, "ZMQ", "socket", &socket);
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
800 if (! rv)
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
801 socket = strdup("tcp://127.0.0.1:3456");
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
802 logmessage(INFO, "data sent to ZMQ socket '%s'", socket);
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
803 zmqcontext = zmq_ctx_new();
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
804 zmqsocket = zmq_socket(zmqcontext, ZMQ_PUB);
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
805 rv = zmq_bind(zmqsocket, socket);
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
806 if (rv)
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
807 logmessage(ERROR, "cannot bind ZMQ socket '%s': %s", socket, zmq_strerror(zmq_errno()));
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
808 free(socket);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
809
174
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
810 // dispose configuration
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
811 Ini_Dispose(configuration);
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
812
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
813 // Sr data logger
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
814 sr_datalogger_init(&datalogger);
d96f0b04f7fe Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 170
diff changeset
815
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
816 GetCtrlVal(MainPanel, PANEL_N1, &N1);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
817 GetCtrlVal(MainPanel, PANEL_N2, &N2);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
818 GetCtrlVal(MainPanel, PANEL_N3, &N3);
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
819
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
820 MathParser1 = muParserNew();
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
821 GetCtrlVal(MainPanel, PANEL_MATHSTRING1, expr);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
822 mupSetExpr(MathParser1, expr);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
823
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
824 MathParser2 = muParserNew();
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
825 mupDefineVar(MathParser2, "Math1", &Math1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
826 GetCtrlVal(MainPanel, PANEL_MATHSTRING2, expr);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
827 mupSetExpr(MathParser2, expr);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
828
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
829 MathParser3 = muParserNew();
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
830 mupDefineVar(MathParser3, "Math1", &Math1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
831 mupDefineVar(MathParser3, "Math2", &Math2);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
832 GetCtrlVal(MainPanel, PANEL_MATHSTRING3, expr);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
833 mupSetExpr(MathParser3, expr);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
834
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
835 MathParser4 = muParserNew();
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
836 mupDefineVar(MathParser4, "Math1", &Math1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
837 mupDefineVar(MathParser4, "Math2", &Math2);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
838 mupDefineVar(MathParser4, "Math3", &Math3);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
839 GetCtrlVal(MainPanel, PANEL_MATHSTRING4, expr);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
840 mupSetExpr(MathParser4, expr);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
841
168
4de7f2c9f328 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 166
diff changeset
842 MathParser5 = muParserNew();
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
843 mupDefineVar(MathParser5, "Math1", &Math1);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
844 mupDefineVar(MathParser5, "Math2", &Math2);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
845 mupDefineVar(MathParser5, "Math3", &Math3);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
846 mupDefineVar(MathParser5, "Math4", &Math4);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
847 GetCtrlVal(MainPanel, PANEL_MATHSTRING5, expr);
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
848 mupSetExpr(MathParser5, expr);
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
849
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
850 // data queue
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
851 CmtNewTSQ(128, sizeof(struct event), 0, &dataQueue);
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
852
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
853 // register callback to execute when data will be in the data queue
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
854 CmtInstallTSQCallback(dataQueue, EVENT_TSQ_ITEMS_IN_QUEUE, 1,
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
855 DataAvailableCB, NULL, CmtGetCurrentThreadID(), NULL);
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
856
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
857 DisplayPanel(MainPanel);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
858
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
859 RunUserInterface();
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
860
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
861 DiscardPanel(MainPanel);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
862 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
863 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
864
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
865 int CVICALLBACK QuitCallback (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
866 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
867 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
868 switch (event)
40
50544ecfcfc7 Handle application quit just once
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 39
diff changeset
869 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
870 case EVENT_COMMIT:
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
871 QuitUserInterface(0);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
872 break;
40
50544ecfcfc7 Handle application quit just once
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 39
diff changeset
873 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
874 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
875 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
876
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
877 int CVICALLBACK CB_OnEventMain(int panel, int event,
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
878 void *callbackData, int eventData1, int eventData2)
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
879 {
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
880 int control, index;
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
881 double step;
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
882
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
883 #define do_arrow(__DDS, __STEP) \
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
884 do { \
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
885 GetCtrlIndex(panel, __STEP, &index); \
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
886 if ((eventData1 == VAL_RIGHT_ARROW_VKEY) && (index < 14)) \
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
887 SetCtrlIndex(panel, __STEP, index + 1); \
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
888 if ((eventData1 == VAL_LEFT_ARROW_VKEY) && (index > 0)) \
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
889 SetCtrlIndex(panel, __STEP, index - 1); \
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
890 GetCtrlVal(panel, __STEP, &step); \
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
891 SetCtrlAttribute(panel, __DDS, ATTR_INCR_VALUE, step); \
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
892 } while (0)
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
893
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
894 switch (event) {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
895 case EVENT_KEYPRESS:
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
896 /* key code */
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
897 switch (eventData1) {
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
898 case VAL_RIGHT_ARROW_VKEY:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
899 case VAL_LEFT_ARROW_VKEY:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
900 control = GetActiveCtrl(panel);
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
901 switch (control) {
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
902 case PANEL_DDS1:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
903 case PANEL_DDS1STEP:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
904 do_arrow(PANEL_DDS1, PANEL_DDS1STEP);
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
905 break;
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
906 case PANEL_DDS2:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
907 case PANEL_DDS2STEP:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
908 do_arrow(PANEL_DDS2, PANEL_DDS2STEP);
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
909 break;
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
910 case PANEL_DDS3:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
911 case PANEL_DDS3STEP:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
912 do_arrow(PANEL_DDS3, PANEL_DDS3STEP);
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
913 break;
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
914 case PANEL_DDS4:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
915 case PANEL_DDS4STEP:
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
916 do_arrow(PANEL_DDS4, PANEL_DDS4STEP);
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
917 break;
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
918 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
919 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
920 case VAL_F2_VKEY :
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
921 SetActiveCtrl(panel, PANEL_DDS1);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
922 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
923 case VAL_F3_VKEY :
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
924 SetActiveCtrl(panel, PANEL_DDS2);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
925 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
926 case VAL_F4_VKEY :
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
927 SetActiveCtrl(panel, PANEL_DDS3);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
928 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
929 case VAL_F5_VKEY :
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
930 SetActiveCtrl(panel, PANEL_DDS4);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
931 break;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
932 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
933 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
934 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
935 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
936 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
937
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
938 int CVICALLBACK CB_OnStart (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
939 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
940 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
941 switch (event)
20
3a7f088d4960 Get rid of unused variables. Some minor coding style improvements
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 17
diff changeset
942 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
943 case EVENT_COMMIT:
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
944 if (acquiring)
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
945 break;
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
946
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
947 logmsg("start");
105
29b1aa89a34c Disable the Start button when data acquisition thread is running
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 97
diff changeset
948 SetCtrlAttribute(panel, PANEL_STARTBUTTON, ATTR_DIMMED, TRUE);
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
949 acquiring = 1;
82
47860259afe2 Implement logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 80
diff changeset
950
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
951 // start data provider thread
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
952 CmtScheduleThreadPoolFunctionAdv(
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
953 DEFAULT_THREAD_POOL_HANDLE, DataProvider, NULL,
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
954 THREAD_PRIORITY_HIGHEST, NULL, 0, NULL, 0, &dataProviderThread);
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
955
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
956 break;
82
47860259afe2 Implement logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 80
diff changeset
957 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
958 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
959 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
960
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
961 int CVICALLBACK CB_OnStop (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
962 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
963 {
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
964 switch (event) {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
965 case EVENT_COMMIT:
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
966 if (! acquiring)
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
967 break;
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
968
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
969 logmsg("stop");
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
970 acquiring = 0;
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
971
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
972 // wait for data provider thread to terminate
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
973 CmtWaitForThreadPoolFunctionCompletion(
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
974 DEFAULT_THREAD_POOL_HANDLE, dataProviderThread,
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
975 OPT_TP_PROCESS_EVENTS_WHILE_WAITING);
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
976 CmtReleaseThreadPoolFunctionID(
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
977 DEFAULT_THREAD_POOL_HANDLE, dataProviderThread);
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
978
105
29b1aa89a34c Disable the Start button when data acquisition thread is running
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 97
diff changeset
979 SetCtrlAttribute(panel, PANEL_STARTBUTTON, ATTR_DIMMED, FALSE);
29b1aa89a34c Disable the Start button when data acquisition thread is running
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 97
diff changeset
980
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
981 break;
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
982 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
983 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
984 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
985
238
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
986 void CVICALLBACK DataAvailableCB (CmtTSQHandle queueHandle, unsigned int event,
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
987 int value, void *callbackData)
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
988 {
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
989 int read;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
990
238
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
991 switch (event) {
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
992 case EVENT_TSQ_ITEMS_IN_QUEUE:
124
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
993 // read data from the data queue
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
994 while (value > 0) {
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
995
238
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
996 read = CmtReadTSQData(queueHandle, &ev, 1, TSQ_INFINITE_TIMEOUT, 0);
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
997 if (read != 1)
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
998 logmsg("Error!");
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
999 value = value - read;
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
1000
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1001 // unpack event
238
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
1002 utc = ev.time.tv_sec + ev.time.tv_usec * 1e-6;
124
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1003
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1004 // update display
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1005 SetCtrlVal(MainPanel, PANEL_UTC, utc);
124
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1006 SetCtrlVal(MainPanel, PANEL_CH1, Ch1);
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1007 SetCtrlVal(MainPanel, PANEL_CH2, Ch2);
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1008 SetCtrlVal(MainPanel, PANEL_CH3, Ch3);
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1009 SetCtrlVal(MainPanel, PANEL_CH4, Ch4);
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
1010
124
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1011 // compute
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1012 Math1 = mupEval(MathParser1);
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1013 Math2 = mupEval(MathParser2);
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1014 Math3 = mupEval(MathParser3);
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1015 Math4 = mupEval(MathParser4);
124
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1016 Math5 = mupEval(MathParser5);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1017
124
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1018 // update display. numeric controllers do not format values
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1019 // with a thousands separator: use string controllers and a
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1020 // custom formatting function
bdfc61a8ebee Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 123
diff changeset
1021 char buffer[256];
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1022 SetCtrlVal(MainPanel, PANEL_MATH1, thousands(buffer, sizeof(buffer), "%.6f", Math1));
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1023 SetCtrlVal(MainPanel, PANEL_MATH2, thousands(buffer, sizeof(buffer), "%.3f", Math2));
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1024 SetCtrlVal(MainPanel, PANEL_MATH3, thousands(buffer, sizeof(buffer), "%.3f", Math3));
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1025 SetCtrlVal(MainPanel, PANEL_MATH4, thousands(buffer, sizeof(buffer), "%.3f", Math4));
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1026 SetCtrlVal(MainPanel, PANEL_MATH5, thousands(buffer, sizeof(buffer), "%.3f", Math5));
166
fdd2f8fd7714 Minor cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 164
diff changeset
1027
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1028 // update timeseries plots
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1029 for (struct plot *plot = plots; plot->data; plot++)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1030 plot_update(plot);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1031
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1032 // update allan deviation plots
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1033 for (struct adev *adev = adevs; adev->data; adev++)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1034 adev_update(adev);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1035
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1036 // N measurement
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1037
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1038 switch (n_measurement[LO]) {
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1039
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1040 case N_MEASUREMENT_NONE:
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1041 // not measuring
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1042 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1043
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1044 case N_MEASUREMENT_INIT:
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1045 // initialization step
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1046
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1047 // set DDS1 to nominal frequency
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1048 ad9912_set_frequency_w(&ad9912, 0, f0_DDS[0]);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1049 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1050
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1051 // record current DDS frequencies
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1052 f0_DDS[1] = ad9912.frequency[1];
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1053
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1054 t1 = utc;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1055 t2 = t3 = 0.0;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1056 nobs = 0;
73
1dfaf5ef0352 Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 70
diff changeset
1057 stat_zero(&stat_math1);
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1058 f_rep_plus = f_rep_minus = 0.0;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1059
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1060 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1061 n_measurement[LO] += 1;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1062 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1063
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1064 case N_MEASUREMENT_SLOPE:
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1065 // slope measurement
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1066
73
1dfaf5ef0352 Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 70
diff changeset
1067 stat_accumulate(&stat_math1, Math1);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1068
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1069 if ((utc - t1) > slope_time[LO]) {
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1070 f_rep_slope = stat_math1.slope;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1071
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1072 // frep positive step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1073 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0] + delta_f_lock[LO], FREP_STEP_SIZE);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1074 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1075
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1076 // allow counter to settle
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1077 settling = 3;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1078
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1079 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1080 n_measurement[LO] += 1;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1081 }
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1082 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1083
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1084 case N_MEASUREMENT_ADJUST_FREQ_PLUS:
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1085 case N_MEASUREMENT_ADJUST_FREQ_MINUS:
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1086 // adjust DDS frequency to keep beatnote within the bandpass filter
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1087
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1088 if (settling-- > 0)
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1089 break;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1090
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1091 double fDDS2 = ad9912.frequency[1];
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1092 ad9912_set_frequency_w(&ad9912, 1, fDDS2 + 275000 - Ch4);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1093 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1094
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1095 // allow counter to settle
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1096 settling = 3;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1097
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1098 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1099 n_measurement[LO] += 1;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1100 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1101
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1102 case N_MEASUREMENT_FREP_PLUS:
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1103 // frep positive step
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1104
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1105 if (settling-- > 0)
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1106 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1107
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1108 if (t2 == 0.0)
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1109 t2 = utc;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1110
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1111 f_rep_plus += Math1 - f_rep_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1112 nobs += 1;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1113
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1114 if ((utc - t2) > integration_time[LO]) {
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1115 f_rep_plus = f_rep_plus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1116 nobs = 0;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1117
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1118 // frep negative step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1119 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0] - delta_f_lock[LO], FREP_STEP_SIZE);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1120 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1121
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1122 // allow counter to settle
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1123 settling = 3;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1124
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1125 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1126 n_measurement[LO] += 1;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1127 }
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1128 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1129
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1130 case N_MEASUREMENT_FREP_MINUS:
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1131 // frep negative step
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1132
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1133 if (settling-- > 0)
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1134 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1135
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1136 if (t3 == 0.0)
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1137 t3 = utc;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1138
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1139 f_rep_minus += Math1 - f_rep_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1140 nobs += 1;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1141
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1142 if ((utc - t3) > integration_time[LO]) {
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1143 f_rep_minus = f_rep_minus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1144 nobs = 0;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1145
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1146 // compute N1
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1147 double delta_f_rep = f_rep_minus - f_rep_plus;
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1148 double measured = Sign1 * 2 * Ndiv * delta_f_lock[LO] / delta_f_rep;
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1149 SetCtrlVal(CalcNPanel, CALCN_N, measured);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1150
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1151 // back to nominal frep
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1152 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1153 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1154 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1155 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1156
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1157 // done
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1158 n_measurement[LO] = N_MEASUREMENT_NONE;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1159 }
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1160 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1161 }
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1162
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1163 switch (n_measurement[HG]) {
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1164
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1165 case N_MEASUREMENT_NONE:
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1166 // not measuring
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1167 break;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1168
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1169 case N_MEASUREMENT_INIT:
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1170 // initialization step
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1171
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1172 // set DDS1 to nominal frequency
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1173 ad9912_set_frequency_w(&ad9912, 0, f0_DDS[0]);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1174 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1175
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1176 // record current DDS frequencies
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1177 f0_DDS[1] = ad9912.frequency[1];
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1178 f0_DDS[2] = ad9912.frequency[2];
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1179
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1180 t1 = utc;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1181 t2 = t3 = 0.0;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1182 nobs = 0;
73
1dfaf5ef0352 Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 70
diff changeset
1183 stat_zero(&stat_math1);
1dfaf5ef0352 Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 70
diff changeset
1184 stat_zero(&stat_ch2);
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1185 f_rep_plus = f_rep_minus = 0.0;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1186 f_beat_plus = f_beat_minus = 0.0;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1187
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1188 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1189 n_measurement[HG] += 1;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1190 break;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1191
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1192 case N_MEASUREMENT_SLOPE:
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1193 // slope measurement
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1194
73
1dfaf5ef0352 Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 70
diff changeset
1195 stat_accumulate(&stat_math1, Math1);
1dfaf5ef0352 Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 70
diff changeset
1196 stat_accumulate(&stat_ch2, Ch2);
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1197
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1198 if ((utc - t1) > slope_time[HG]) {
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1199 f_rep_slope = stat_math1.slope;
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1200 f_beat_slope = stat_ch2.slope;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1201
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1202 // frep positive step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1203 double fDDS1 = f0_DDS[0] + delta_f_lock[HG];
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1204 ad9912_ramp_frequency_w(&ad9912, 0, fDDS1, FREP_STEP_SIZE);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1205 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
62
53dbce5f0745 Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 61
diff changeset
1206
61
37075b60408b Fix N2 measurement after cleanup. Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 60
diff changeset
1207 // adjust DDS3 to keep beatnote within the bandpass filter. prediction
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1208 double fDDS3 = f0_DDS[2] + Sign1 * Sign2 * N2/N1 * Ndiv * delta_f_lock[HG];
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1209 df_DDS3 = fDDS3 - ad9912.frequency[2];
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1210 ad9912_set_frequency_w(&ad9912, 2, fDDS3);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1211 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]);
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1212
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1213 // allow counter to settle
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1214 settling = 3;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1215
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1216 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1217 n_measurement[HG] += 1;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1218 }
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1219 break;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1220
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1221 case N_MEASUREMENT_ADJUST_FREQ_PLUS:
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1222 case N_MEASUREMENT_ADJUST_FREQ_MINUS:
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1223 // adjust DDS frequency to keep beatnote within the bandpass filter
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1224
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1225 if (settling-- > 0)
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1226 break;
61
37075b60408b Fix N2 measurement after cleanup. Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 60
diff changeset
1227
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1228 double fDDS2 = ad9912.frequency[1] + 275000 - Ch4;
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1229 ad9912_set_frequency_w(&ad9912, 1, fDDS2);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1230 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1231
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1232 double fDDS3 = ad9912.frequency[2] + 10000 - Ch2;
162
1517a56163de Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 161
diff changeset
1233 df_DDS3 = df_DDS3 + 10000 - Ch2;
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1234 ad9912_set_frequency_w(&ad9912, 2, fDDS3);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1235 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]);
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1236
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1237 // allow counter to settle
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1238 settling = 3;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1239
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1240 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1241 n_measurement[HG] += 1;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1242 break;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1243
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1244 case N_MEASUREMENT_FREP_PLUS:
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1245 // frep positive step
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1246
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1247 if (settling-- > 0)
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1248 break;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1249
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1250 if (t2 == 0.0)
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1251 t2 = utc;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1252
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1253 f_rep_plus += Math1 + 250000000 - f_rep_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1254 f_beat_plus += Ch2 - f_beat_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1255 nobs += 1;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1256
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1257 if ((utc - t2) > integration_time[HG]) {
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1258 f_rep_plus = f_rep_plus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1259 f_beat_plus = f_beat_plus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1260 nobs = 0;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1261
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1262 // negative frequency step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1263 double fDDS1 = f0_DDS[0] - delta_f_lock[HG];
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1264 ad9912_ramp_frequency_w(&ad9912, 0, fDDS1, FREP_STEP_SIZE);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1265 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
62
53dbce5f0745 Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 61
diff changeset
1266
53dbce5f0745 Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 61
diff changeset
1267 // adjust DDS3 to keep beatnote within the bandpass filter. prediction
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1268 double fDDS3 = f0_DDS[2] - Sign1 * Sign2 * N2/N1 * Ndiv * delta_f_lock[HG];
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1269 df_DDS3 = fDDS3 - ad9912.frequency[2];
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1270 ad9912_set_frequency_w(&ad9912, 2, fDDS3);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1271 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]);
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1272
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1273 // allow counter to settle
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1274 settling = 3;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1275
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1276 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1277 n_measurement[HG] += 1;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1278 }
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1279 break;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1280
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1281 case N_MEASUREMENT_FREP_MINUS:
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1282 // frep negative step
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1283
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1284 if (settling-- > 0)
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1285 break;
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1286
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1287 if (t3 == 0.0)
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1288 t3 = utc;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1289
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1290 f_rep_minus += Math1 + 250000000 - f_rep_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1291 f_beat_minus += Ch2 + f_beat_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1292 nobs += 1;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1293
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1294 if ((utc -t3) > integration_time[HG]) {
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1295 f_rep_minus = f_rep_minus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1296 f_beat_minus = f_beat_minus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1297 nobs = 0;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1298
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1299 // compute N2
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1300 double delta_f_rep_m = f_rep_minus - f_rep_plus;
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1301 double delta_f_rep = Sign1 * Ndiv * 2.0 * delta_f_lock[HG] / N1;
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1302 double delta = delta_f_rep_m - delta_f_rep;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1303
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1304 logmsg("delta frep: measured=%e expected=%e difference=%e rel=%e",
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1305 delta_f_rep_m, delta_f_rep, delta, delta / delta_f_rep);
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1306
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1307 double measured = -Sign2 * (df_DDS3 + f_beat_minus - f_beat_plus) / delta_f_rep;
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1308 SetCtrlVal(CalcNPanel, CALCN_N, measured);
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1309
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1310 // back to nominal frequency
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1311 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1312 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1313 ad9912_set_frequency_w(&ad9912, 2, f0_DDS[2]);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1314 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1315 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1316 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]);
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1317
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1318 // done
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1319 n_measurement[HG] = N_MEASUREMENT_NONE;
46
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1320 }
6503feae1809 Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 44
diff changeset
1321 break;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1322 }
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1323
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1324 switch (n_measurement[SR]) {
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1325
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1326 case N_MEASUREMENT_NONE:
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1327 // not measuring N3
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1328 break;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1329
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1330 case N_MEASUREMENT_INIT:
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1331 // init
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1332
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1333 // set DDS1 to nominal frequency
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1334 ad9912_set_frequency_w(&ad9912, 0, f0_DDS[0]);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1335 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1336
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1337 // record current DDS frequencies
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1338 f0_DDS[1] = ad9912.frequency[1];
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1339 f0_DDS[3] = ad9912.frequency[3];
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1340
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1341 t1 = utc;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1342 t2 = t3 = 0.0;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1343 nobs = 0;
118
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 117
diff changeset
1344 stat_zero(&stat_math1);
156
4ab8099a18e2 Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 155
diff changeset
1345 stat_zero(&stat_ch3);
115
23f8b7b2b63a Use DDS1 to change frep in the measurement of N3. Improve some variable names
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 114
diff changeset
1346 f_rep_plus = f_rep_minus = 0.0;
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1347 f_beat_plus = f_beat_minus = 0.0;
73
1dfaf5ef0352 Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 70
diff changeset
1348
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1349 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1350 n_measurement[SR] += 1;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1351 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1352
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1353 case N_MEASUREMENT_SLOPE:
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1354 // slope measurement
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1355
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1356 if (settling-- > 0)
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1357 break;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1358
118
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 117
diff changeset
1359 stat_accumulate(&stat_math1, Math1);
156
4ab8099a18e2 Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 155
diff changeset
1360 stat_accumulate(&stat_ch3, Ch3);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1361
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1362 if (utc - t1 > slope_time[SR]) {
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1363 // slope measurement
118
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 117
diff changeset
1364 f_rep_slope = stat_math1.slope;
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1365 f_beat_slope = stat_ch3.slope;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1366
156
4ab8099a18e2 Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 155
diff changeset
1367 logmsg("f_rep_slope=%e Hz/s", f_rep_slope);
4ab8099a18e2 Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 155
diff changeset
1368 logmsg("f_beat_slope=%e Hz/s", f_rep_slope);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1369
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1370 // frep positive step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1371 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0] + delta_f_lock[SR], FREP_STEP_SIZE);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1372 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1373
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1374 // adjust DDS3 to keep beatnote within the bandpass filter
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1375 double fDDS4 = f0_DDS[3] + Sign1 * Sign3 * N3/N1 * Ndiv * delta_f_lock[SR];
217
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1376 ad9912_set_frequency_w(&ad9912, 3, fDDS4);
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1377 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]);
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1378
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1379 // allow counter to settle
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1380 settling = 3;
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1381
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1382 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1383 n_measurement[SR] += 1;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1384 }
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1385 break;
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1386
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1387 case N_MEASUREMENT_ADJUST_FREQ_PLUS:
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1388 case N_MEASUREMENT_ADJUST_FREQ_MINUS:
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1389 // adjust DDS frequency to keep beatnote within the bandpass filter
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1390
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1391 if (settling-- > 0)
109
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
1392 break;
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
1393
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
1394 // adjust DDS frequency to keep 55 MHz tracker oscillator locked
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1395 double fDDS2 = ad9912.frequency[1] + 275000 - Ch4;
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1396 ad9912_set_frequency_w(&ad9912, 1, fDDS2);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1397 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
109
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
1398
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
1399 // allow counter to settle
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
1400 settling = 3;
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
1401
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1402 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1403 n_measurement[SR] += 1;
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1404 break;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1405
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1406 case N_MEASUREMENT_FREP_PLUS:
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1407 // frep positive step
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1408
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1409 if (settling-- > 0)
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1410 break;
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1411
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1412 if (t2 == 0.0)
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1413 t2 = utc;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1414
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1415 f_rep_plus += Math1 + 250000000 - f_rep_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1416 f_beat_plus += Ch3 - f_beat_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1417 nobs += 1;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1418
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1419 if (utc - t2 > integration_time[SR]) {
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1420 f_rep_plus = f_rep_plus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1421 f_beat_plus = f_beat_plus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1422 nobs = 0;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1423
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1424 // frep negative step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1425 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0] - delta_f_lock[SR], FREP_STEP_SIZE);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1426 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1427
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1428 // adjust DDS3 to keep beatnote within the bandpass filter
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1429 double fDDS4 = f0_DDS[3] - Sign1 * Sign3 * N3/N1 * Ndiv * delta_f_lock[SR];
217
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1430 ad9912_set_frequency_w(&ad9912, 3, fDDS4);
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1431 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]);
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1432
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1433 // allow counter to settle
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1434 settling = 3;
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1435
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1436 // next step
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1437 n_measurement[SR] += 1;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1438 }
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1439 break;
118
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 117
diff changeset
1440
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1441 case N_MEASUREMENT_FREP_MINUS:
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1442 // frep negative step
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1443
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1444 if (settling-- > 0)
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1445 break;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1446
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1447 if (t3 == 0.0)
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1448 t3 = utc;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1449
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1450 f_rep_minus += Math1 + 250000000 - f_rep_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1451 f_beat_minus += Ch3 - f_beat_slope * (utc - t2);
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1452 nobs += 1;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1453
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1454 if (utc - t3 > integration_time[SR]) {
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1455 f_rep_minus = f_rep_minus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1456 f_beat_minus = f_beat_minus / nobs;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1457 nobs = 0;
111
8bdd7e38715f Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 109
diff changeset
1458
8bdd7e38715f Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 109
diff changeset
1459 // check delta frep
221
c14f5a95850d Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 220
diff changeset
1460 double delta_f_rep_m = f_rep_minus - f_rep_plus;
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1461 double delta_f_rep = Sign1 * Ndiv * 2.0 * delta_f_lock[SR] / N1;
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1462 double delta = delta_f_rep_m - delta_f_rep;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1463
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1464 logmsg("delta frep: measured=%e expected=%e difference=%e rel=%e",
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1465 delta_f_rep_m, delta_f_rep, delta, delta / delta_f_rep);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1466
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1467 // compute N3
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1468 double delta_f_beat = f_beat_minus - f_beat_plus + 2.0 * Sign1 * Sign3 * N3/N1 * Ndiv * delta_f_lock[SR];
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1469 double delta_f_beat_expected = delta_f_rep * N3;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1470
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1471 logmsg("delta fbeat: measured=%e expected=%e difference=%e",
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1472 delta_f_beat, delta_f_beat_expected, delta_f_beat - delta_f_beat_expected);
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1473
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1474 double measured = delta_f_beat / delta_f_rep;
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1475 SetCtrlVal(CalcNPanel, CALCN_N, measured);
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1476
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1477 logmsg("measured N3=%.3f", measured);
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1478
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1479 // back to nominal frep
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1480 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1481 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1482 ad9912_set_frequency_w(&ad9912, 3, f0_DDS[3]);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1483 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1484 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
217
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1485 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]);
47
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1486
1d3cd8260cbb Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 46
diff changeset
1487 // done
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1488 n_measurement[SR] = N_MEASUREMENT_NONE;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1489 }
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1490 break;
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1491 }
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1492
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1493 // beatnote sign determination
266
dfbee05fe464 Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 257
diff changeset
1494 if ((beatsign.measure != NONE) &&
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1495 (utc > beatsign.t0 + 2.0)) {
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1496
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1497 int f_beat_sign, f_rep_sign = 0;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1498
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1499 switch (beatsign.measure) {
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1500 case LO:
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1501 f_rep_sign = (Math1 > beatsign.f_rep_zero) ? -1 : 1;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1502 Sign1 = f_rep_sign;
125
37535873ee83 Rename variables from SigneX to SignX
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 124
diff changeset
1503 SetCtrlVal(MainPanel, PANEL_SIGN1, Sign1);
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1504 break;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1505 case HG:
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1506 f_rep_sign = (Math1 > beatsign.f_rep_zero) ? -1 : 1;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1507 f_beat_sign = (Ch2 > beatsign.f_beat_zero) ? -1 : 1;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1508 Sign2 = f_rep_sign * f_beat_sign;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1509 SetCtrlVal(MainPanel, PANEL_SIGN2, Sign2);
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1510 break;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1511 case SR:
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1512 f_rep_sign = (Math1 > beatsign.f_rep_zero) ? -1 : 1;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1513 f_beat_sign = (Ch3 > beatsign.f_beat_zero) ? -1 : 1;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1514 Sign3 = f_rep_sign * f_beat_sign;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1515 SetCtrlVal(MainPanel, PANEL_SIGN3, Sign3);
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1516 break;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1517 }
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1518
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1519 // back to original repetition rate
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1520 ad9912_set_frequency_w(&ad9912, 0, beatsign.f0_DDS);
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1521 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1522
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1523 // measurement done
266
dfbee05fe464 Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 257
diff changeset
1524 beatsign.measure = NONE;
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1525
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1526 // in the case of the optical beatnotes sign measurement
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1527 // we induce fairly small steps in f_rep therefore it is
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1528 // good to check that we get the sign of the comb locking
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1529 // beatnote right in those cases
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1530 if (f_rep_sign != Sign1)
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1531 logmessage(ERROR, "merasured f_rep_sign does not agree with previous determination!");
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1532 }
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1533
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
1534 // select dedrift reference
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1535 double f = 0.0;
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1536 switch (dedrift.reference) {
267
1de805d2d37a Reuse beatnote enum also for dedrift reference selection
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 266
diff changeset
1537 case MICROWAVE:
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1538 f = Math2;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1539 break;
267
1de805d2d37a Reuse beatnote enum also for dedrift reference selection
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 266
diff changeset
1540 case HG:
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1541 f = Ch2 * 1062.5 / 1542.2;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1542 break;
70
a945f2b7bef6 Fix slope measurement again
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 69
diff changeset
1543 }
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
1544
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
1545 // dedrift
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
1546 dedrift_update(f);
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
1547
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1548 // recenter
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
1549 recenter_update();
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1550
254
67c8ace9d5f6 Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents: 253
diff changeset
1551 struct tm *time = gmtime(&ev.time.tv_sec);
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
1552 // round to milliseconds
238
78fdba868884 Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 237
diff changeset
1553 int msec = round(ev.time.tv_usec / 1000.0);
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
1554 while (msec >= 1000) {
254
67c8ace9d5f6 Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents: 253
diff changeset
1555 time->tm_sec += 1;
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
1556 msec -= 1000;
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
1557 }
254
67c8ace9d5f6 Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents: 253
diff changeset
1558 // format time
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
1559 char timestr[24];
254
67c8ace9d5f6 Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents: 253
diff changeset
1560 int len = strftime(timestr, sizeof(timestr), "%d/%m/%Y %H:%M:%S", time);
91
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
1561 snprintf(timestr + len, sizeof(timestr) - len, ".%03d", msec);
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
1562 // display local time
4102fe614df2 Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 89
diff changeset
1563 SetCtrlVal(MainPanel, PANEL_TIME, timestr);
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
1564
254
67c8ace9d5f6 Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents: 253
diff changeset
1565 // run id derived from current date in the form YYMMDD
76
5e0c314528bf Refactor data writing to disk. Implement dayly chunking to separate files
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 75
diff changeset
1566 char id[7];
254
67c8ace9d5f6 Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents: 253
diff changeset
1567 strftime(id, sizeof(id), "%y%m%d", time);
88
9b7588cd4013 Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 87
diff changeset
1568
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
1569 // write datafiles
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
1570 for (struct datafile *d = datafiles; d->data; d++)
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
1571 datafile_append(d, id, timestr);
119
f9fb17fb64cc Add Sr frequency logging to disk and to Sr data logger
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 118
diff changeset
1572
f9fb17fb64cc Add Sr frequency logging to disk and to Sr data logger
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 118
diff changeset
1573 // send Sr frequency (Math4) to Sr data logger
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
1574 sr_datalogger_send(&datalogger, utc, Math4);
240
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
1575
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
1576 // publish data through ZMQ
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
1577 int r = zmq_xpub(zmqsocket, "RAW", &ev, sizeof(ev));
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
1578 if (r)
7fd5cb857d07 Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 238
diff changeset
1579 logmessage(ERROR, "cannot send data through ZMQ socket: %s", zmq_strerror(r));
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1580 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1581 break;
44
2e37910b28bc Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 43
diff changeset
1582 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1583 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1584
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1585 int CVICALLBACK CB_OnFreqPlot (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1586 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1587 {
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1588 switch (event)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1589 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1590 case EVENT_COMMIT:
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1591 for (struct plot *plot = plots; plot->data; plot++) {
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1592 if (plot->control == control)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1593 plot_toggle(plot);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1594 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1595 break;
52
30146cc6cd77 Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 51
diff changeset
1596 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1597 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1598 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1599
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1600 int CVICALLBACK CB_OnAllanPlot (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1601 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1602 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1603 switch (event)
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1604 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1605 case EVENT_COMMIT:
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1606 for (struct adev *adev = adevs; adev->data; adev++) {
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1607 if (adev->control == control)
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1608 adev_toggle(adev);
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1609 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1610 break;
134
bd28161e5ac2 Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 133
diff changeset
1611 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1612 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1613 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1614
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1615 int CVICALLBACK CB_ChangeDDSOut (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1616 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1617 {
28
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1618 switch (event) {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1619 case EVENT_COMMIT:
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1620 double frequency;
28
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1621 GetCtrlVal(MainPanel, control, &frequency);
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1622 switch (control) {
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1623 case PANEL_DDS1:
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1624 ad9912_set_frequency_w(&ad9912, 0, frequency);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1625 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
28
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1626 break;
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1627 case PANEL_DDS2:
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1628 ad9912_set_frequency_w(&ad9912, 1, frequency);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1629 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
28
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1630 break;
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1631 case PANEL_DDS3:
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1632 ad9912_set_frequency_w(&ad9912, 2, frequency);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1633 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]);
28
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1634 break;
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1635 case PANEL_DDS4:
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1636 ad9912_set_frequency_w(&ad9912, 3, frequency);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1637 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]);
28
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1638 break;
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1639 }
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1640 break;
28
1e4ecf64b485 Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 27
diff changeset
1641 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1642 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1643 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1644
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1645 int CVICALLBACK CB_ChangeDDSStep (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1646 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1647 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1648 switch (event)
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1649 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1650 case EVENT_COMMIT:
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1651 double step;
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1652 GetCtrlVal(panel, control, &step);
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1653 switch (control)
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1654 {
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1655 case PANEL_DDS1STEP:
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1656 SetCtrlAttribute(panel, PANEL_DDS1, ATTR_INCR_VALUE, step);
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1657 break;
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1658 case PANEL_DDS2STEP:
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1659 SetCtrlAttribute(panel, PANEL_DDS2, ATTR_INCR_VALUE, step);
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1660 break;
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1661 case PANEL_DDS3STEP:
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1662 SetCtrlAttribute(panel, PANEL_DDS3, ATTR_INCR_VALUE, step);
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1663 break;
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1664 case PANEL_DDS4STEP:
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1665 SetCtrlAttribute(panel, PANEL_DDS4, ATTR_INCR_VALUE, step);
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1666 break;
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1667 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1668 break;
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1669 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1670 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1671 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1672
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1673 int CVICALLBACK CB_ChangeMath (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1674 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1675 {
24
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1676 int len;
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1677 char *string;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1678
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1679 switch (event)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1680 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1681 case EVENT_COMMIT:
24
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1682 GetCtrlAttribute(panel, control, ATTR_STRING_TEXT_LENGTH, &len);
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1683 string = (char *)malloc(sizeof(char) * (len + 1));
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1684 GetCtrlVal(panel, control, string);
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1685 switch (control) {
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1686 case PANEL_MATHSTRING1:
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1687 mupSetExpr(MathParser1, string);
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1688 break;
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1689 case PANEL_MATHSTRING2:
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1690 mupSetExpr(MathParser2, string);
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1691 break;
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1692 case PANEL_MATHSTRING3:
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1693 mupSetExpr(MathParser3, string);
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1694 break;
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1695 case PANEL_MATHSTRING4:
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1696 mupSetExpr(MathParser4, string);
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1697 break;
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1698 case PANEL_MATHSTRING5:
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1699 mupSetExpr(MathParser5, string);
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1700 break;
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1701 }
b838371c7a91 Code cleanup and dead code removal
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 23
diff changeset
1702 free(string);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1703 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1704 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1705 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1706 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1707
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1708 int CVICALLBACK CB_ChangeN (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1709 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1710 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1711 switch (event)
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1712 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1713 case EVENT_COMMIT:
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1714 switch (control)
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1715 {
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1716 case PANEL_N1:
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1717 GetCtrlVal(panel, control, &N1);
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1718 break;
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1719 case PANEL_N2:
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1720 GetCtrlVal(panel, control, &N2);
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1721 break;
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1722 case PANEL_N3:
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1723 GetCtrlVal(panel, control, &N3);
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1724 break;
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1725 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1726 break;
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
1727 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1728 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1729 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1730
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1731 int CVICALLBACK CB_OnAcceptN (int panel, int control, int event,
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1732 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1733 {
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1734 int measure;
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1735 double measured;
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1736
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1737 switch (event) {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1738 case EVENT_COMMIT:
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1739 GetPanelAttribute(panel, ATTR_CALLBACK_DATA, &measure);
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1740 GetCtrlVal(panel, CALCN_N, &measured);
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1741 switch (measure) {
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1742 case LO:
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1743 N1 = round(measured);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1744 SetCtrlVal(MainPanel, PANEL_N1, N1);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1745 break;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1746 case HG:
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1747 N2 = round(measured);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1748 SetCtrlVal(MainPanel, PANEL_N2, N2);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1749 break;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1750 case SR:
223
7875436125dd Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 222
diff changeset
1751 N3 = round(measured);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1752 SetCtrlVal(MainPanel, PANEL_N3, N3);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1753 break;
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1754 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1755 break;
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1756 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1757 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1758 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1759
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1760 int CVICALLBACK CB_OnNCalculus (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1761 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1762 {
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1763 int visible;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1764
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1765 switch (event) {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1766 case EVENT_COMMIT:
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1767 switch (control) {
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1768 case PANEL_N1CALCULUS:
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1769 GetPanelAttribute(CalcNPanel, ATTR_VISIBLE, &visible);
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1770 if (! visible) {
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1771 SetPanelAttribute(CalcNPanel, ATTR_CALLBACK_DATA, INT_TO_PTR(LO));
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1772 SetPanelAttribute(CalcNPanel, ATTR_TITLE, "Measure N_Lo");
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1773 SetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, integration_time[LO]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1774 SetCtrlVal(CalcNPanel, CALCN_SLOPETIME, slope_time[LO]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1775 SetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, delta_f_lock[LO] / 1000.0);
132
fbd72d87b4dc Support graceful intrerruption of N3 measurement. Minor user interface fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 130
diff changeset
1776 SetCtrlVal(CalcNPanel, CALCN_N, 0.0);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1777 DisplayPanel(CalcNPanel);
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1778 }
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1779 break;
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1780 case PANEL_N2CALCULUS:
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1781 GetPanelAttribute(CalcNPanel, ATTR_VISIBLE, &visible);
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1782 if (! visible) {
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1783 SetPanelAttribute(CalcNPanel, ATTR_CALLBACK_DATA, INT_TO_PTR(HG));
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1784 SetPanelAttribute(CalcNPanel, ATTR_TITLE, "Measure N_Hg");
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1785 SetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, integration_time[HG]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1786 SetCtrlVal(CalcNPanel, CALCN_SLOPETIME, slope_time[HG]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1787 SetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, delta_f_lock[HG] / 1000.0);
132
fbd72d87b4dc Support graceful intrerruption of N3 measurement. Minor user interface fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 130
diff changeset
1788 SetCtrlVal(CalcNPanel, CALCN_N, 0.0);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1789 DisplayPanel(CalcNPanel);
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1790 }
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1791 break;
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1792 case PANEL_N3CALCULUS:
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1793 GetPanelAttribute(CalcNPanel, ATTR_VISIBLE, &visible);
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1794 if (! visible) {
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1795 SetPanelAttribute(CalcNPanel, ATTR_CALLBACK_DATA, INT_TO_PTR(SR));
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1796 SetPanelAttribute(CalcNPanel, ATTR_TITLE, "Measure N_Sr");
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1797 SetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, integration_time[SR]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1798 SetCtrlVal(CalcNPanel, CALCN_SLOPETIME, slope_time[SR]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1799 SetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, delta_f_lock[SR] / 1000.0);
132
fbd72d87b4dc Support graceful intrerruption of N3 measurement. Minor user interface fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 130
diff changeset
1800 SetCtrlVal(CalcNPanel, CALCN_N, 0.0);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1801 DisplayPanel(CalcNPanel);
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1802 }
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1803 break;
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1804 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1805 break;
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1806 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1807 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1808 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1809
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1810 int CVICALLBACK CB_OnStartNCalculus (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1811 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1812 {
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1813 void *v;
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1814 int measuring;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1815
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1816 switch (event) {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1817 case EVENT_COMMIT:
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1818 GetPanelAttribute(panel, ATTR_CALLBACK_DATA, &v);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1819 measuring = PTR_TO_INT(v);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1820 switch (measuring) {
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1821 case LO:
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1822 GetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, &integration_time[LO]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1823 GetCtrlVal(CalcNPanel, CALCN_SLOPETIME, &slope_time[LO]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1824 GetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, &delta_f_lock[LO]);
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1825 // convert from kHz to Hz
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1826 delta_f_lock[LO] = delta_f_lock[LO] * 1000.0;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1827 n_measurement[LO] = TRUE;
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1828 break;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1829 case HG:
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1830 GetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, &integration_time[HG]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1831 GetCtrlVal(CalcNPanel, CALCN_SLOPETIME, &slope_time[HG]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1832 GetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, &delta_f_lock[HG]);
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1833 // convert from kHz to Hz
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1834 delta_f_lock[HG] = delta_f_lock[HG] * 1000.0;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1835 n_measurement[HG] = TRUE;
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1836 break;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1837 case SR:
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1838 GetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, &integration_time[SR]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1839 GetCtrlVal(CalcNPanel, CALCN_SLOPETIME, &slope_time[SR]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1840 GetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, &delta_f_lock[SR]);
159
07153c41ba16 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 158
diff changeset
1841 // convert from kHz to Hz
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1842 delta_f_lock[SR] = delta_f_lock[SR] * 1000.0;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1843 n_measurement[SR] = TRUE;
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1844 break;
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1845 }
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1846 break;
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1847 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1848 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1849 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1850
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1851 int CVICALLBACK CB_OnNStop (int panel, int control, int event,
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1852 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1853 {
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1854 void *v;
160
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1855 int measuring;
f609fb29536b Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 159
diff changeset
1856
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1857 switch (event) {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1858 case EVENT_COMMIT:
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1859 HidePanel(CalcNPanel);
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1860 GetPanelAttribute(panel, ATTR_CALLBACK_DATA, &v);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
1861 measuring = PTR_TO_INT(v);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1862 switch (measuring) {
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1863 case LO:
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1864 n_measurement[LO] = FALSE;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1865 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1866 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1867 break;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1868 case HG:
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1869 n_measurement[HG] = FALSE;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1870 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1871 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1872 ad9912_set_frequency_w(&ad9912, 2, f0_DDS[2]);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1873 break;
161
6ee23cb3d6bb Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 160
diff changeset
1874 case SR:
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1875 n_measurement[SR] = FALSE;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1876 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1877 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]);
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1878 ad9912_set_frequency_w(&ad9912, 3, f0_DDS[3]);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1879 break;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1880 }
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1881
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1882 // update DDS frequencies display
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1883 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1884 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1885 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1886 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]);
158
9154291658ef Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 156
diff changeset
1887
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1888 break;
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1889 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1890 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1891 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1892
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1893 int CVICALLBACK CB_OnFindSign (int panel, int control, int event,
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1894 void *callbackData, int eventData1, int eventData2)
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1895 {
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1896 double step = 0.0;
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1897 switch (event)
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1898 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1899 case EVENT_COMMIT:
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1900 switch (control) {
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1901 case PANEL_FINDSIGN1:
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1902 beatsign.measure = LO;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1903 beatsign.f_beat_zero = 0.0;
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1904 step = f_lock_step[LO];
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1905 break;
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1906 case PANEL_FINDSIGN2:
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1907 beatsign.measure = HG;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1908 beatsign.f_beat_zero = Ch2;
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1909 step = f_lock_step[HG];
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1910 break;
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1911 case PANEL_FINDSIGN3:
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1912 beatsign.measure = SR;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1913 beatsign.f_beat_zero = Ch3;
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1914 step = f_lock_step[SR];
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1915 break;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1916 }
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1917
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1918 beatsign.t0 = utc;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1919 beatsign.f_rep_zero = Math1;
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1920
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1921 // step the repetition rate
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1922 beatsign.f0_DDS = ad9912.frequency[0];
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1923 ad9912_set_frequency_w(&ad9912, 0, beatsign.f0_DDS + step);
220
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1924 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
28a4ff70fe48 Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 217
diff changeset
1925
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1926 break;
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1927 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1928 return 0;
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
1929 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1930
217
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1931 int CVICALLBACK CB_AdjustDDSFreq (int panel, int control, int event,
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1932 void *callbackData, int eventData1, int eventData2)
42
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1933 {
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1934 double frequency;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1935 switch (event)
42
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1936 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1937 case EVENT_COMMIT:
42
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1938 switch (control)
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1939 {
217
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1940 case PANEL_ADJUST_DDS2:
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1941 frequency = ad9912.frequency[1] + 275000 - Ch4;
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1942 ad9912_set_frequency_w(&ad9912, 1, frequency);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1943 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]);
42
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1944 break;
217
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1945 case PANEL_ADJUST_DDS3:
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1946 frequency = ad9912.frequency[2] + 10000 - Ch2;
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1947 ad9912_set_frequency_w(&ad9912, 2, frequency);
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1948 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]);
42
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1949 break;
217
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1950 case PANEL_ADJUST_DDS4:
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1951 frequency = ad9912.frequency[3] + 10000 - Ch3;
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1952 ad9912_set_frequency_w(&ad9912, 3, frequency);
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1953 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]);
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
1954 break;
42
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1955 }
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1956 break;
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1957 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1958 return 0;
42
dcc305411dcc Cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 40
diff changeset
1959 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1960
144
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
1961 int CVICALLBACK CB_OnChangeNdiv (int panel, int control, int event,
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1962 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1963 {
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1964 switch (event)
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1965 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1966 case EVENT_COMMIT:
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1967 GetCtrlVal(MainPanel, PANEL_CHANGENDIV, &Ndiv);
268
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1968 f0_DDS[0] = 880000000.0 / Ndiv;
ec4462c7f8b7 Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 267
diff changeset
1969 ad9912_set_frequency_w(&ad9912, 0, f0_DDS[0]);
196
87dae6d62a61 New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 187
diff changeset
1970 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1971 break;
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
1972 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1973 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1974 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1975
144
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
1976 int CVICALLBACK CB_MeasureSlope (int panel, int control, int event,
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1977 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1978 {
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
1979 int enable;
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1980 switch (event)
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1981 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1982 case EVENT_COMMIT:
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
1983 GetCtrlVal(panel, control, &enable);
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
1984 enable ? dedrift_update_enable() : dedrift_update_disable();
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
1985 break;
33
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 32
diff changeset
1986 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1987 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1988 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1989
14
783407954cdf Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 10
diff changeset
1990 int CVICALLBACK CB_OnResetSlope (int panel, int control, int event,
783407954cdf Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 10
diff changeset
1991 void *callbackData, int eventData1, int eventData2)
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1992 {
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1993 switch (event)
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1994 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1995 case EVENT_COMMIT:
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1996 dedrift.applied = 0.0;
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
1997 SetCtrlVal(panel, PANEL_SLOPE_APPLIED, dedrift.applied);
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
1998 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied);
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
1999 logmsg("dedrift: reset");
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2000 break;
14
783407954cdf Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 10
diff changeset
2001 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2002 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2003 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2004
14
783407954cdf Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 10
diff changeset
2005 int CVICALLBACK CB_ChangeSlopeTime (int panel, int control, int event,
783407954cdf Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 10
diff changeset
2006 void *callbackData, int eventData1, int eventData2)
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2007 {
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2008 switch (event)
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2009 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2010 case EVENT_COMMIT:
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2011 GetCtrlVal(MainPanel, PANEL_SLOPETIME, &dedrift.interval);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2012 break;
14
783407954cdf Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 10
diff changeset
2013 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2014 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2015 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2016
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2017 int CVICALLBACK CB_OnDedriftSettingsChange (int panel, int control, int event,
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2018 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2019 {
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2020 switch (event)
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2021 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2022 case EVENT_COMMIT:
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2023 switch (control)
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2024 {
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2025 case PANEL_DEDRIFT_PROPORTIONAL:
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2026 // include correction proportional to frequency
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2027 GetCtrlVal(panel, control, &dedrift.proportional);
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2028 break;
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2029 case PANEL_DEDRIFT_DOUBLE_CORR:
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2030 // double slope correction
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2031 GetCtrlVal(panel, control, &dedrift.x2);
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2032 break;
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2033 case PANEL_DEDRIFT_KEEP_FREQ:
34
1e4b8ba97faf Cleanup code handling dedrifing options
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 33
diff changeset
2034 // keep current dedrifting frequency when dedrifting is disabled
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2035 GetCtrlVal(panel, control, &dedrift.keep_freq);
34
1e4b8ba97faf Cleanup code handling dedrifing options
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 33
diff changeset
2036 break;
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2037 case PANEL_DEDRIFT_KEEP_SLOPE:
34
1e4b8ba97faf Cleanup code handling dedrifing options
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 33
diff changeset
2038 // keep current dedrifting slope when dedrifting is disabled
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2039 GetCtrlVal(panel, control, &dedrift.keep_slope);
34
1e4b8ba97faf Cleanup code handling dedrifing options
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 33
diff changeset
2040 break;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2041 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2042 break;
34
1e4b8ba97faf Cleanup code handling dedrifing options
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 33
diff changeset
2043 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2044 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2045 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2046
139
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2047 int CVICALLBACK CB_RecenterEnable (int panel, int control, int event,
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2048 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2049 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2050 switch (event)
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2051 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2052 case EVENT_COMMIT:
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2053 GetCtrlVal(panel, control, &recenter.active);
136
7b9cf3d4346e Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 135
diff changeset
2054 recenter.t0 = utc;
139
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2055 rollmean_zero(&rollmean_ch2);
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2056 rollmean_zero(&rollmean_ch3);
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2057 rollmean_zero(&rollmean_ch4);
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2058 break;
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2059 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2060 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2061 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2062
56
6e73fb3d94fa Simplyfy slope measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 55
diff changeset
2063 int CVICALLBACK CB_OnStopSlopeCancellingOnUnlocked (int panel, int control, int event,
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2064 void *callbackData, int eventData1, int eventData2)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2065 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2066 switch (event)
20
3a7f088d4960 Get rid of unused variables. Some minor coding style improvements
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 17
diff changeset
2067 {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2068 case EVENT_COMMIT:
245
b1dc2ba9a315 Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents: 240
diff changeset
2069 GetCtrlVal(panel, control, &dedrift.safety);
20
3a7f088d4960 Get rid of unused variables. Some minor coding style improvements
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 17
diff changeset
2070 break;
3a7f088d4960 Get rid of unused variables. Some minor coding style improvements
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 17
diff changeset
2071 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2072 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2073 }
2
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2074
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
2075 int CVICALLBACK CB_OnSlopeReference (int panel, int control, int event,
2
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2076 void *callbackData, int eventData1, int eventData2)
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2077 {
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2078 switch (event)
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2079 {
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2080 case EVENT_COMMIT:
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2081 GetCtrlVal(panel, control, &dedrift.reference);
2
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2082 break;
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2083 }
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2084 return 0;
bd7501b65f56 Implement reference selection (microwave or Hg cavity) for slope cancelling
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 1
diff changeset
2085 }
17
9cadd12e7722 Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 14
diff changeset
2086
30
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2087 int CVICALLBACK CB_SetSlope (int panel, int control, int event,
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2088 void *callbackData, int eventData1, int eventData2)
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2089 {
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2090 switch (event)
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2091 {
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2092 case EVENT_COMMIT:
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2093 GetCtrlVal(panel, control, &dedrift.applied);
209
11a88d389705 Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 205
diff changeset
2094 ad9956_set_sweep_rate_w(&ad9956, dedrift.applied);
30
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2095 break;
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2096 }
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2097 return 0;
56095062acd4 Allow manual setting of frequency dedrifting rate
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 29
diff changeset
2098 }
39
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2099
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2100 int CVICALLBACK CB_InvertSlopeSign (int panel, int control, int event,
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2101 void *callbackData, int eventData1, int eventData2)
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2102 {
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2103 int invert;
39
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2104 switch (event)
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2105 {
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2106 case EVENT_COMMIT:
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2107 GetCtrlVal(panel, control, &invert);
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2108 dedrift.sign = invert ? -1 : +1;
39
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2109 break;
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2110 }
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2111 return 0;
2e1b3148d6e6 Add setting to invert the sign of the measured slope on dedrifting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 37
diff changeset
2112 }
48
70980f27e1a4 Simplify dedrifting interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 47
diff changeset
2113
80
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2114 int CVICALLBACK CB_ResetDedriftDDS (int panel, int control, int event,
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2115 void *callbackData, int eventData1, int eventData2)
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2116 {
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2117 switch (event)
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2118 {
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2119 case EVENT_COMMIT:
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2120 // stop slope measurement and reset slope
133
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2121 dedrift.enabled = FALSE;
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2122 SetCtrlVal(panel, PANEL_MEASURE_SLOPE, 0);
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2123 dedrift.applied = 0.0;
7540703b8473 Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 132
diff changeset
2124 SetCtrlVal(panel, PANEL_SLOPE_APPLIED, dedrift.applied);
80
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2125 // reset DDS
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2126 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied);
80
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2127 break;
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2128 }
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2129 return 0;
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2130 }
46fe62febcd0 Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 79
diff changeset
2131
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2132 int CVICALLBACK CB_ShowLog (int panel, int control, int event,
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2133 void *callbackData, int eventData1, int eventData2)
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2134 {
122
bdd3ec3c212e Improve user interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 121
diff changeset
2135 int visible;
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2136 switch (event)
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2137 {
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2138 case EVENT_COMMIT:
199
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2139 GetCtrlVal(panel, control, &visible);
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
2140 logger_panel_visible(visible);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2141 break;
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2142 }
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2143 return 0;
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2144 }
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2145
199
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2146 int CVICALLBACK CB_ShowError (int panel, int control, int event,
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2147 void *callbackData, int eventData1, int eventData2)
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2148 {
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2149 switch (event)
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2150 {
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2151 case EVENT_COMMIT:
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2152 logger_panel_visible(TRUE);
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2153 SetCtrlVal(panel, control, FALSE);
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2154 SetCtrlVal(panel, PANEL_SHOWLOG, TRUE);
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2155 break;
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2156 }
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2157 return 0;
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2158 }
111610d871af Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 198
diff changeset
2159
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2160 int CVICALLBACK CB_OnLoggingPanelEvent(int panel, int event,
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2161 void *callbackData, int eventData1, int eventData2)
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2162 {
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2163 switch (event)
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2164 {
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2165 case EVENT_CLOSE:
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
2166 logger_panel_visible(0);
122
bdd3ec3c212e Improve user interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 121
diff changeset
2167 SetCtrlVal(MainPanel, PANEL_SHOWLOG, 0);
84
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2168 break;
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2169 }
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2170 return 0;
c03263186dd7 Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 82
diff changeset
2171 }
109
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2172
198
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2173 int CVICALLBACK CB_BeatnoteSign (int panel, int control, int event,
109
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2174 void *callbackData, int eventData1, int eventData2)
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2175 {
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2176 switch (event)
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2177 {
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2178 case EVENT_COMMIT:
198
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2179 switch(control) {
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2180 case PANEL_SIGN1:
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2181 GetCtrlVal(panel, control, &Sign1);
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2182 break;
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2183 case PANEL_SIGN2:
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2184 GetCtrlVal(panel, control, &Sign2);
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2185 break;
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2186 case PANEL_SIGN3:
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2187 GetCtrlVal(panel, control, &Sign3);
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2188 break;
5cac684eb12e Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 196
diff changeset
2189 }
109
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2190 break;
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2191 }
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2192 return 0;
2a9f8a811d87 Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 105
diff changeset
2193 }
123
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2194
142
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2195 int CVICALLBACK CB_SaveData (int panel, int control, int event,
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2196 void *callbackData, int eventData1, int eventData2)
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2197 {
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2198 switch (event)
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2199 {
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2200 case EVENT_COMMIT:
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2201 for (struct datafile *d = datafiles; d->data; d++) {
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2202 if (d->control == control)
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2203 GetCtrlVal(panel, control, &(d->write));
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2204 }
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2205 break;
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2206 }
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2207 return 0;
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2208 }
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2209
fd085d61e4ca Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 140
diff changeset
2210
139
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2211 int CVICALLBACK CB_RecenterInterval (int panel, int control, int event,
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2212 void *callbackData, int eventData1, int eventData2)
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2213 {
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2214 switch (event)
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2215 {
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2216 case EVENT_COMMIT:
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2217 GetCtrlVal(panel, control, &recenter.interval);
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2218 break;
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2219 }
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2220 return 0;
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2221 }
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2222
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2223 int CVICALLBACK CB_RecenterChannel (int panel, int control, int event,
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2224 void *callbackData, int eventData1, int eventData2)
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2225 {
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2226 switch (event)
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2227 {
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2228 case EVENT_COMMIT:
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2229 switch (control)
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2230 {
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2231 case PANEL_RECENTER_LO:
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2232 GetCtrlVal(panel, control, &recenter.enabled[LO]);
139
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2233 break;
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2234 case PANEL_RECENTER_HG:
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2235 GetCtrlVal(panel, control, &recenter.enabled[HG]);
139
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2236 break;
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2237 case PANEL_RECENTER_SR:
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2238 GetCtrlVal(panel, control, &recenter.enabled[SR]);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2239 break;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2240 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2241 break;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2242 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2243 return 0;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2244 }
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2245
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2246 int CVICALLBACK CB_RecenterThreshold (int panel, int control, int event,
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2247 void *callbackData, int eventData1, int eventData2)
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2248 {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2249 switch (event)
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2250 {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2251 case EVENT_COMMIT:
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2252 switch (control)
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2253 {
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2254 case PANEL_RECENTER_THRESHOLD_LO:
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2255 GetCtrlVal(panel, control, &recenter.threshold[LO]);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2256 break;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2257 case PANEL_RECENTER_THRESHOLD_HG:
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2258 GetCtrlVal(panel, control, &recenter.threshold[HG]);
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2259 break;
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2260 case PANEL_RECENTER_THRESHOLD_SR:
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2261 GetCtrlVal(panel, control, &recenter.threshold[SR]);
139
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2262 break;
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2263 }
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2264 break;
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2265 }
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2266 return 0;
e04123ab79ef Fix recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 136
diff changeset
2267 }
144
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2268
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2269 int CVICALLBACK CB_SrDatalogger (int panel, int control, int event,
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2270 void *callbackData, int eventData1, int eventData2)
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2271 {
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2272 switch (event)
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2273 {
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2274 case EVENT_COMMIT:
169
97112b45b838 Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 168
diff changeset
2275 GetCtrlVal(panel, control, &datalogger.enabled);
144
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2276 break;
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2277 }
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2278 return 0;
be87c8e78266 Code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 143
diff changeset
2279 }
217
fefe921a9784 Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 216
diff changeset
2280
123
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2281 int CVICALLBACK CB_DedriftDDSFreq (int panel, int control, int event,
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2282 void *callbackData, int eventData1, int eventData2)
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2283 {
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2284 switch (event)
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2285 {
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2286 case EVENT_COMMIT:
232
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2287 GetCtrlVal(panel, control, &dedrift.fDDS);
52f882f39c16 Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 231
diff changeset
2288 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied);
123
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2289 break;
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2290 }
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2291 return 0;
35861fe64d14 Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 122
diff changeset
2292 }
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2293
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2294
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2295 //
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2296 // N estimate
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2297 //
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2298
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2299 static void estimateN (void)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2300 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2301 double nu, fbeat, frep, N;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2302 int sign;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2303
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2304 GetCtrlVal(EstimateNPanel, ESTIMATEN_FREQUENCY, &nu);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2305 GetCtrlVal(EstimateNPanel, ESTIMATEN_FREP, &frep);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2306 GetCtrlVal(EstimateNPanel, ESTIMATEN_FBEAT, &fbeat);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2307 GetCtrlVal(EstimateNPanel, ESTIMATEN_SIGN, &sign);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2308
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2309 N = (nu * 1.0e12 - sign * fbeat) / frep;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2310
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2311 SetCtrlVal(EstimateNPanel, ESTIMATEN_N, N);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2312 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2313
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2314 int CVICALLBACK cb_onEstimateN (int panel, int control, int event,
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2315 void *callbackData, int eventData1, int eventData2)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2316 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2317 int visible;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2318
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2319 switch (event)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2320 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2321 case EVENT_COMMIT:
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2322 // reset N estimate
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2323 SetCtrlVal(EstimateNPanel, ESTIMATEN_N, 0.0);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2324 // set current frep
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2325 SetCtrlVal(EstimateNPanel, ESTIMATEN_FREP, 250e6 + Math1);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2326 switch (control) {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2327 case PANEL_ESTIMATE_N2:
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2328 // expected frequency
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2329 SetCtrlVal(EstimateNPanel, ESTIMATEN_FREQUENCY, HG_FREQUENCY);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2330 SetCtrlVal(EstimateNPanel, ESTIMATEN_WAVELENGTH, HG_WAVELENGTH);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2331 // sign
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2332 SetCtrlVal(EstimateNPanel, ESTIMATEN_SIGN, (int)Sign2);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2333 // f_DDS
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2334 SetCtrlVal(EstimateNPanel, ESTIMATEN_FDDS, ad9912.frequency[2]);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2335 // f_counter
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2336 SetCtrlVal(EstimateNPanel, ESTIMATEN_FDDS, Ch2);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2337 // f_beat
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2338 SetCtrlVal(EstimateNPanel, ESTIMATEN_FBEAT, ad9912.frequency[2] - Ch2);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2339
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2340 SetPanelAttribute(EstimateNPanel, ATTR_TITLE, "Estimate N_Hg");
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2341 SetPanelAttribute(EstimateNPanel, ATTR_CALLBACK_DATA, INT_TO_PTR(HG));
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2342 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2343 case PANEL_ESTIMATE_N3:
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2344 // expected frequency
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2345 SetCtrlVal(EstimateNPanel, ESTIMATEN_FREQUENCY, SR_FREQUENCY);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2346 SetCtrlVal(EstimateNPanel, ESTIMATEN_WAVELENGTH, SR_WAVELENGTH);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2347 // sign
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2348 SetCtrlVal(EstimateNPanel, ESTIMATEN_SIGN, (int)Sign3);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2349 // f_DDS
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2350 SetCtrlVal(EstimateNPanel, ESTIMATEN_FDDS, ad9912.frequency[3]);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2351 // f_counter
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2352 SetCtrlVal(EstimateNPanel, ESTIMATEN_FDDS, Ch3);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2353 // f_beat
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2354 SetCtrlVal(EstimateNPanel, ESTIMATEN_FBEAT, ad9912.frequency[3] - Ch3);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2355
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2356 SetPanelAttribute(EstimateNPanel, ATTR_TITLE, "Estimate N_Sr");
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2357 SetPanelAttribute(EstimateNPanel, ATTR_CALLBACK_DATA, INT_TO_PTR(SR));
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2358 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2359 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2360
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2361 // display dialog
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2362 GetPanelAttribute(EstimateNPanel, ATTR_VISIBLE , &visible);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2363 if (! visible)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2364 DisplayPanel(EstimateNPanel);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2365
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2366 // compute
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2367 estimateN();
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2368 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2369 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2370 return 0;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2371 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2372
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2373 int CVICALLBACK cb_onEstimateNWaveleght (int panel, int control, int event,
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2374 void *callbackData, int eventData1, int eventData2)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2375 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2376 double wavelenght, frequency;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2377
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2378 switch (event)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2379 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2380 case EVENT_COMMIT:
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2381 GetCtrlVal(panel, control, &wavelenght);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2382 frequency = SPEED_OF_LIGHT / (wavelenght * 1.0e-9) / 1.0e12;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2383 SetCtrlVal(panel, ESTIMATEN_FREQUENCY, frequency);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2384 estimateN();
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2385 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2386 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2387 return 0;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2388 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2389
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2390 int CVICALLBACK cb_onEstimateNFrequency (int panel, int control, int event,
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2391 void *callbackData, int eventData1, int eventData2)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2392 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2393 double wavelenght, frequency;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2394
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2395 switch (event)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2396 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2397 case EVENT_COMMIT:
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2398 GetCtrlVal(panel, control, &frequency);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2399 wavelenght = SPEED_OF_LIGHT / (frequency * 1.0e12) / 1.0e-9;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2400 SetCtrlVal(panel, ESTIMATEN_WAVELENGTH, wavelenght);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2401 estimateN();
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2402 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2403 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2404 return 0;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2405 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2406
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2407 int CVICALLBACK cb_onEstimateNChange (int panel, int control, int event,
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2408 void *callbackData, int eventData1, int eventData2)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2409 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2410 switch (event)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2411 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2412 case EVENT_COMMIT:
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2413 estimateN();
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2414 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2415 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2416 return 0;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2417 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2418
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2419 int CVICALLBACK cb_onEstimateNClose (int panel, int control, int event,
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2420 void *callbackData, int eventData1, int eventData2)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2421 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2422 int visible;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2423
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2424 switch (event)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2425 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2426 case EVENT_COMMIT:
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2427 GetPanelAttribute(panel, ATTR_VISIBLE, &visible);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2428 if (visible)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2429 HidePanel(panel);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2430 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2431 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2432 return 0;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2433 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2434
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2435 int CVICALLBACK cb_onEstimateNSet (int panel, int control, int event,
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2436 void *callbackData, int eventData1, int eventData2)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2437 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2438 void *v;
230
9e240adb3053 Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 228
diff changeset
2439 double n;
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2440 int estimate = 0;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2441
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2442 switch (event)
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2443 {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2444 case EVENT_COMMIT:
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2445 GetPanelAttribute(panel, ATTR_CALLBACK_DATA, &v);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2446 estimate = PTR_TO_INT(v);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2447 switch (estimate) {
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2448 case HG:
230
9e240adb3053 Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 228
diff changeset
2449 GetCtrlVal(panel, ESTIMATEN_N, &n);
9e240adb3053 Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 228
diff changeset
2450 N2 = round(n);
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2451 SetCtrlVal(MainPanel, PANEL_N2, N2);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2452 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2453 case SR:
230
9e240adb3053 Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 228
diff changeset
2454 GetCtrlVal(panel, ESTIMATEN_N, &n);
9e240adb3053 Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 228
diff changeset
2455 N3 = round(n);
227
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2456 SetCtrlVal(MainPanel, PANEL_N3, N3);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2457 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2458 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2459 HidePanel(panel);
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2460 break;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2461 }
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2462 return 0;
a2f99632a80c Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 226
diff changeset
2463 }
256
708de02ef948 Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 254
diff changeset
2464