Mercurial > hg > fxanalyse
annotate FXAnalyse.c @ 269:3f395eab72eb
Whitespace
author | Daniele Nicolodi <daniele.nicolodi@obspm.fr> |
---|---|
date | Fri, 10 Jul 2015 13:40:36 +0200 |
parents | ec4462c7f8b7 |
children | a451d4618dbf |
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 | 3 #include <utility.h> |
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> |
269 | 6 #include <cvirte.h> |
0 | 7 #include <userint.h> |
8 #include <formatio.h> | |
166 | 9 #include <inifile.h> |
0 | 10 #include <string.h> |
11 | |
269 | 12 #include "FXAnalyse.h" |
0 | 13 #include "Plot.h" |
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" |
269 | 16 #include "ad9956.h" |
0 | 17 #include "muParserDLL.h" |
144 | 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 | 20 #include "future.h" |
144 | 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 | 25 |
166 | 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 | 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 | 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 |
269 | 58 // see "Pub-Sub Message Envelopes" in chapter 2 "Sockets and Patterns" |
240
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; |
269 | 63 |
240
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(); |
269 | 67 |
240
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 } |
269 | 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 | 82 double Math1, Math2, Math3, Math4, Math5; |
135 | 83 double N1, N2, N3; |
166 | 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 | 86 void *MathParser1, *MathParser2, *MathParser3, *MathParser4, *MathParser5; |
87 | |
0 | 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 | 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 | 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 | 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 | 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 | 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 | 216 |
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; |
269 | 230 |
209
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 } |
269 | 236 |
209
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 } |
269 | 242 |
209
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 } |
269 | 248 |
209
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 |
269 | 255 return 0; |
209
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 | 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 | 287 double f_beat_plus, f_beat_minus; |
269 | 288 |
268
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; |
269 | 291 |
268
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 | 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 |
269 | 302 // |
220
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 |
269 | 304 // |
220
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. |
269 | 311 // |
220
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 |
269 | 316 // |
220
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 |
269 | 318 // |
220
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 |
269 | 320 // |
220
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 | 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 | 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 | 388 |
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"); |
269 | 393 |
245
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) |
269 | 445 { |
245
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"); |
269 | 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; |
269 | 465 |
245
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); |
269 | 468 |
245
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) { |
269 | 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; |
269 | 475 |
245
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); |
269 | 480 |
245
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); |
269 | 486 |
245
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 | 515 |
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; |
269 | 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; |
269 | 534 |
256
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); |
269 | 538 |
256
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) { |
269 | 540 |
256
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 } |
269 | 554 |
256
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 } |
269 | 568 |
256
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 } |
269 | 582 |
256
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 | 603 { \ |
604 .name = __name, \ | |
605 .data = __data, \ | |
606 .nchan = __nchan, \ | |
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 | 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 |
269 | 624 static void write_data(const char *folder, const char *name, const char *id, |
142
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]; |
269 | 630 |
142
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); |
269 | 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 } |
269 | 639 |
183
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]); |
269 | 646 |
183
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'; |
269 | 650 |
183
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); |
269 | 653 |
183
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 | 675 { |
168 | 676 void *parser = mupCreate(); |
269 | 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 "+-*^/?<>=#!$%&|~'_"); |
269 | 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); |
269 | 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", µ, 1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
705 mupDefinePostfixOprt(parser, "µ", µ, 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); |
269 | 709 |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
710 return parser; |
0 | 711 } |
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 | 718 int main (int argc, char *argv[]) |
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 | 725 |
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 | 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); |
269 | 735 |
166 | 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; |
269 | 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 } |
269 | 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 | 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; |
269 | 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); |
269 | 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; |
269 | 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); |
269 | 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); |
269 | 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); |
269 | 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 | 819 |
168 | 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); |
269 | 823 |
168 | 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); |
269 | 828 |
168 | 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); |
269 | 834 |
168 | 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); |
269 | 841 |
168 | 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); |
269 | 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); |
269 | 856 |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
857 DisplayPanel(MainPanel); |
269 | 858 |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
859 RunUserInterface(); |
269 | 860 |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
861 DiscardPanel(MainPanel); |
0 | 862 return 0; |
863 } | |
864 | |
865 int CVICALLBACK QuitCallback (int panel, int control, int event, | |
866 void *callbackData, int eventData1, int eventData2) | |
867 { | |
868 switch (event) | |
40
50544ecfcfc7
Handle application quit just once
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
39
diff
changeset
|
869 { |
0 | 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 | 872 break; |
40
50544ecfcfc7
Handle application quit just once
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
39
diff
changeset
|
873 } |
0 | 874 return 0; |
875 } | |
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 | 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; |
269 | 882 |
161
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 | 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 | 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 | 889 SetCtrlIndex(panel, __STEP, index - 1); \ |
890 GetCtrlVal(panel, __STEP, &step); \ | |
891 SetCtrlAttribute(panel, __DDS, ATTR_INCR_VALUE, step); \ | |
269 | 892 } while (0) |
893 | |
0 | 894 switch (event) { |
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: |
269 | 899 case VAL_LEFT_ARROW_VKEY: |
161
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 | 919 break; |
920 case VAL_F2_VKEY : | |
166 | 921 SetActiveCtrl(panel, PANEL_DDS1); |
0 | 922 break; |
923 case VAL_F3_VKEY : | |
166 | 924 SetActiveCtrl(panel, PANEL_DDS2); |
0 | 925 break; |
926 case VAL_F4_VKEY : | |
166 | 927 SetActiveCtrl(panel, PANEL_DDS3); |
0 | 928 break; |
929 case VAL_F5_VKEY : | |
166 | 930 SetActiveCtrl(panel, PANEL_DDS4); |
0 | 931 break; |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
932 } |
0 | 933 break; |
934 } | |
935 return 0; | |
936 } | |
937 | |
938 int CVICALLBACK CB_OnStart (int panel, int control, int event, | |
939 void *callbackData, int eventData1, int eventData2) | |
940 { | |
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 | 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 | 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; |
269 | 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 | 956 break; |
82
47860259afe2
Implement logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
80
diff
changeset
|
957 } |
0 | 958 return 0; |
959 } | |
960 | |
961 int CVICALLBACK CB_OnStop (int panel, int control, int event, | |
962 void *callbackData, int eventData1, int eventData2) | |
963 { | |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
964 switch (event) { |
0 | 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; |
269 | 968 |
166 | 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 | 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 | 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); |
269 | 980 |
0 | 981 break; |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
982 } |
0 | 983 return 0; |
984 } | |
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 | 988 { |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
989 int read; |
269 | 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) { |
269 | 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; |
269 | 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); |
269 | 1008 SetCtrlVal(MainPanel, PANEL_CH3, Ch3); |
124
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 | 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); |
269 | 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 |
269 | 1019 // with a thousands separator: use string controllers and a |
124
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 | 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 | 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); |
269 | 1035 |
159 | 1036 // N measurement |
1037 | |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1038 switch (n_measurement[LO]) { |
269 | 1039 |
44
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; |
269 | 1043 |
44
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 |
269 | 1046 |
44
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]); |
269 | 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]; |
269 | 1053 |
160
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; |
269 | 1059 |
44
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; |
269 | 1063 |
44
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 |
269 | 1066 |
73
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
1067 stat_accumulate(&stat_math1, Math1); |
269 | 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 | 1070 f_rep_slope = stat_math1.slope; |
269 | 1071 |
44
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]); |
269 | 1075 |
44
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; |
269 | 1078 |
44
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; |
269 | 1083 |
44
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 |
269 | 1087 |
159 | 1088 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1089 break; |
269 | 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]); |
269 | 1094 |
44
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; |
269 | 1097 |
44
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; |
269 | 1100 break; |
1101 | |
44
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 |
269 | 1104 |
159 | 1105 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1106 break; |
269 | 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; |
269 | 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; |
269 | 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; |
269 | 1117 |
44
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]); |
269 | 1121 |
44
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; |
269 | 1124 |
44
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; |
269 | 1129 |
44
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 |
269 | 1132 |
159 | 1133 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1134 break; |
269 | 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; |
269 | 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; |
269 | 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; |
269 | 1145 |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1146 // compute N1 |
159 | 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); |
269 | 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]); |
269 | 1156 |
44
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; |
269 | 1168 |
46
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 |
269 | 1171 |
46
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]); |
269 | 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]; |
269 | 1179 |
160
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; |
269 | 1187 |
46
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; |
269 | 1191 |
46
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 |
269 | 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 | 1199 f_rep_slope = stat_math1.slope; |
1200 f_beat_slope = stat_ch2.slope; | |
269 | 1201 |
46
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]); |
269 | 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]); |
269 | 1212 |
46
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; |
269 | 1215 |
46
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 |
269 | 1224 |
159 | 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; |
269 | 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]); |
269 | 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 | 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; |
269 | 1243 |
46
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 |
269 | 1246 |
159 | 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; |
269 | 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]); |
269 | 1266 |
62
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; |
269 | 1275 |
46
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; |
269 | 1280 |
46
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 |
269 | 1283 |
159 | 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; |
269 | 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; |
269 | 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); |
269 | 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); |
269 | 1309 |
46
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]); |
269 | 1317 |
46
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 } |
269 | 1323 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1324 switch (n_measurement[SR]) { |
269 | 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; |
269 | 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 |
269 | 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]); |
269 | 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]; |
269 | 1340 |
160
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 | 1347 f_beat_plus = f_beat_minus = 0.0; |
269 | 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; |
269 | 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 |
269 | 1355 |
159 | 1356 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1357 break; |
269 | 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); |
269 | 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; |
269 | 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); |
269 | 1369 |
44
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]); |
269 | 1373 |
158
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]); |
269 | 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; |
269 | 1381 |
47
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 | 1391 if (settling-- > 0) |
109
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
1392 break; |
269 | 1393 |
109
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]); |
269 | 1398 |
109
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; |
269 | 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; |
269 | 1404 break; |
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 |
269 | 1408 |
159 | 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; |
269 | 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; |
269 | 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; |
269 | 1423 |
44
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]); |
269 | 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; |
269 | 1435 |
47
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; |
269 | 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 |
269 | 1443 |
159 | 1444 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1445 break; |
269 | 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; |
269 | 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; |
269 | 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; |
269 | 1458 |
111
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; |
269 | 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); |
269 | 1466 |
44
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 | 1469 double delta_f_beat_expected = delta_f_rep * N3; |
269 | 1470 |
161
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 | 1472 delta_f_beat, delta_f_beat_expected, delta_f_beat - delta_f_beat_expected); |
269 | 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); |
269 | 1476 |
223
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
1477 logmsg("measured N3=%.3f", measured); |
269 | 1478 |
44
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]); |
269 | 1486 |
47
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 } |
269 | 1492 |
1493 // beatnote sign determination | |
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 |
269 | 1497 int f_beat_sign, f_rep_sign = 0; |
1498 | |
220
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; |
269 | 1525 |
220
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 |
269 | 1528 // good to check that we get the sign of the comb locking |
220
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 } |
269 | 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); |
269 | 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); |
269 | 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); |
269 | 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); |
269 | 1572 |
119
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); |
269 | 1575 |
240
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)); |
269 | 1580 } |
0 | 1581 break; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1582 } |
0 | 1583 } |
1584 | |
1585 int CVICALLBACK CB_OnFreqPlot (int panel, int control, int event, | |
1586 void *callbackData, int eventData1, int eventData2) | |
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 | 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 | 1594 } |
1595 break; | |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
1596 } |
0 | 1597 return 0; |
1598 } | |
1599 | |
1600 int CVICALLBACK CB_OnAllanPlot (int panel, int control, int event, | |
1601 void *callbackData, int eventData1, int eventData2) | |
1602 { | |
1603 switch (event) | |
134
bd28161e5ac2
Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
133
diff
changeset
|
1604 { |
0 | 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 | 1610 break; |
134
bd28161e5ac2
Major code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
133
diff
changeset
|
1611 } |
0 | 1612 return 0; |
1613 } | |
1614 | |
269 | 1615 int CVICALLBACK CB_ChangeDDSOut (int panel, int control, int event, |
0 | 1616 void *callbackData, int eventData1, int eventData2) |
1617 { | |
28
1e4ecf64b485
Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
27
diff
changeset
|
1618 switch (event) { |
0 | 1619 case EVENT_COMMIT: |
136 | 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 | 1640 break; |
28
1e4ecf64b485
Remove references to unused DDSBes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
27
diff
changeset
|
1641 } |
0 | 1642 return 0; |
1643 } | |
1644 | |
269 | 1645 int CVICALLBACK CB_ChangeDDSStep (int panel, int control, int event, |
0 | 1646 void *callbackData, int eventData1, int eventData2) |
1647 { | |
1648 switch (event) | |
136 | 1649 { |
0 | 1650 case EVENT_COMMIT: |
136 | 1651 double step; |
1652 GetCtrlVal(panel, control, &step); | |
1653 switch (control) | |
1654 { | |
1655 case PANEL_DDS1STEP: | |
1656 SetCtrlAttribute(panel, PANEL_DDS1, ATTR_INCR_VALUE, step); | |
1657 break; | |
1658 case PANEL_DDS2STEP: | |
1659 SetCtrlAttribute(panel, PANEL_DDS2, ATTR_INCR_VALUE, step); | |
1660 break; | |
1661 case PANEL_DDS3STEP: | |
1662 SetCtrlAttribute(panel, PANEL_DDS3, ATTR_INCR_VALUE, step); | |
1663 break; | |
1664 case PANEL_DDS4STEP: | |
1665 SetCtrlAttribute(panel, PANEL_DDS4, ATTR_INCR_VALUE, step); | |
1666 break; | |
1667 } | |
0 | 1668 break; |
136 | 1669 } |
0 | 1670 return 0; |
1671 } | |
1672 | |
1673 int CVICALLBACK CB_ChangeMath (int panel, int control, int event, | |
1674 void *callbackData, int eventData1, int eventData2) | |
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; |
269 | 1678 |
0 | 1679 switch (event) |
1680 { | |
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 | 1703 break; |
1704 } | |
1705 return 0; | |
1706 } | |
1707 | |
1708 int CVICALLBACK CB_ChangeN (int panel, int control, int event, | |
1709 void *callbackData, int eventData1, int eventData2) | |
1710 { | |
1711 switch (event) | |
136 | 1712 { |
0 | 1713 case EVENT_COMMIT: |
136 | 1714 switch (control) |
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 | 1717 GetCtrlVal(panel, control, &N1); |
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 | 1720 GetCtrlVal(panel, control, &N2); |
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 | 1723 GetCtrlVal(panel, control, &N3); |
1724 break; | |
1725 } | |
0 | 1726 break; |
136 | 1727 } |
0 | 1728 return 0; |
1729 } | |
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 | 1732 void *callbackData, int eventData1, int eventData2) |
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 | 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; |
269 | 1754 } |
0 | 1755 break; |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
1756 } |
0 | 1757 return 0; |
1758 } | |
1759 | |
1760 int CVICALLBACK CB_OnNCalculus (int panel, int control, int event, | |
1761 void *callbackData, int eventData1, int eventData2) | |
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; |
269 | 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 | 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); |
269 | 1790 } |
84
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 | 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 | 1807 return 0; |
1808 } | |
1809 | |
1810 int CVICALLBACK CB_OnStartNCalculus (int panel, int control, int event, | |
1811 void *callbackData, int eventData1, int eventData2) | |
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; |
269 | 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 | 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 | 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 | 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 | 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 | 1848 return 0; |
1849 } | |
1850 | |
1851 int CVICALLBACK CB_OnNStop (int panel, int control, int event, | |
1852 void *callbackData, int eventData1, int eventData2) | |
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; |
269 | 1856 |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
1857 switch (event) { |
0 | 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 | 1880 } |
269 | 1881 |
158
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]); |
269 | 1887 |
0 | 1888 break; |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
1889 } |
0 | 1890 return 0; |
1891 } | |
1892 | |
269 | 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 | 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 | 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 | 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 | 1926 break; |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
1927 } |
0 | 1928 return 0; |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
1929 } |
0 | 1930 |
269 | 1931 int CVICALLBACK CB_AdjustDDSFreq (int panel, int control, int event, |
0 | 1932 void *callbackData, int eventData1, int eventData2) |
42 | 1933 { |
1934 double frequency; | |
0 | 1935 switch (event) |
42 | 1936 { |
0 | 1937 case EVENT_COMMIT: |
42 | 1938 switch (control) |
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 | 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 | 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 | 1955 } |
1956 break; | |
1957 } | |
0 | 1958 return 0; |
42 | 1959 } |
0 | 1960 |
269 | 1961 int CVICALLBACK CB_OnChangeNdiv (int panel, int control, int event, |
0 | 1962 void *callbackData, int eventData1, int eventData2) |
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 | 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 | 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 | 1973 return 0; |
1974 } | |
1975 | |
269 | 1976 int CVICALLBACK CB_MeasureSlope (int panel, int control, int event, |
0 | 1977 void *callbackData, int eventData1, int eventData2) |
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 | 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(); |
269 | 1985 break; |
33 | 1986 } |
0 | 1987 return 0; |
1988 } | |
1989 | |
269 | 1990 int CVICALLBACK CB_OnResetSlope (int panel, int control, int event, |
14
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
1991 void *callbackData, int eventData1, int eventData2) |
0 | 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 | 1995 case EVENT_COMMIT: |
269 | 1996 dedrift.applied = 0.0; |
133
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 | 2000 break; |
14
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
2001 } |
0 | 2002 return 0; |
2003 } | |
269 | 2004 |
2005 int CVICALLBACK CB_ChangeSlopeTime (int panel, int control, int event, | |
14
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
2006 void *callbackData, int eventData1, int eventData2) |
0 | 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 | 2010 case EVENT_COMMIT: |
269 | 2011 GetCtrlVal(MainPanel, PANEL_SLOPETIME, &dedrift.interval); |
0 | 2012 break; |
14
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
2013 } |
0 | 2014 return 0; |
2015 } | |
2016 | |
269 | 2017 int CVICALLBACK CB_OnDedriftSettingsChange (int panel, int control, int event, |
0 | 2018 void *callbackData, int eventData1, int eventData2) |
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 | 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 | 2041 } |
2042 break; | |
34
1e4b8ba97faf
Cleanup code handling dedrifing options
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
33
diff
changeset
|
2043 } |
0 | 2044 return 0; |
2045 } | |
2046 | |
269 | 2047 int CVICALLBACK CB_RecenterEnable (int panel, int control, int event, |
0 | 2048 void *callbackData, int eventData1, int eventData2) |
2049 { | |
2050 switch (event) | |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
2051 { |
0 | 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 | 2054 recenter.t0 = utc; |
139 | 2055 rollmean_zero(&rollmean_ch2); |
2056 rollmean_zero(&rollmean_ch3); | |
2057 rollmean_zero(&rollmean_ch4); | |
0 | 2058 break; |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
2059 } |
0 | 2060 return 0; |
2061 } | |
2062 | |
269 | 2063 int CVICALLBACK CB_OnStopSlopeCancellingOnUnlocked (int panel, int control, int event, |
0 | 2064 void *callbackData, int eventData1, int eventData2) |
2065 { | |
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 | 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 | 2072 return 0; |
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: |
269 | 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 | 2211 int CVICALLBACK CB_RecenterInterval (int panel, int control, int event, |
2212 void *callbackData, int eventData1, int eventData2) | |
2213 { | |
2214 switch (event) | |
2215 { | |
2216 case EVENT_COMMIT: | |
2217 GetCtrlVal(panel, control, &recenter.interval); | |
2218 break; | |
2219 } | |
2220 return 0; | |
2221 } | |
2222 | |
2223 int CVICALLBACK CB_RecenterChannel (int panel, int control, int event, | |
2224 void *callbackData, int eventData1, int eventData2) | |
2225 { | |
2226 switch (event) | |
2227 { | |
2228 case EVENT_COMMIT: | |
2229 switch (control) | |
2230 { | |
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 | 2233 break; |
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 | 2236 break; |
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 | 2262 break; |
2263 } | |
2264 break; | |
2265 } | |
2266 return 0; | |
2267 } | |
144 | 2268 |
2269 int CVICALLBACK CB_SrDatalogger (int panel, int control, int event, | |
2270 void *callbackData, int eventData1, int eventData2) | |
2271 { | |
2272 switch (event) | |
2273 { | |
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 | 2276 break; |
2277 } | |
2278 return 0; | |
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 // |
269 | 2296 // N estimate |
227
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; |
269 | 2303 |
227
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); |
269 | 2308 |
227
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; |
269 | 2310 |
227
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; |
269 | 2318 |
227
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); |
269 | 2339 |
227
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 } |
269 | 2360 |
227
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); |
269 | 2365 |
227
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; |
269 | 2377 |
227
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; |
269 | 2394 |
227
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; |
269 | 2423 |
227
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; |
269 | 2441 |
227
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 } |