Mercurial > hg > fxanalyse
annotate FXAnalyse.c @ 268:ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Reorganize the beatnote specific variables in arrays indexed by the
beatnote enum constants LO, HG, SR. Also reorganize DDS frequency
related variables in arrays indexed by the DDS channel number.
author | Daniele Nicolodi <daniele.nicolodi@obspm.fr> |
---|---|
date | Thu, 09 Jul 2015 23:11:00 +0200 |
parents | 1de805d2d37a |
children | 3f395eab72eb |
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> |
0 | 6 #include <cvirte.h> |
7 #include <userint.h> | |
8 #include <formatio.h> | |
166 | 9 #include <inifile.h> |
0 | 10 #include <string.h> |
11 | |
12 #include "FXAnalyse.h" | |
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" |
209
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
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 |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
58 // see "Pub-Sub Message Envelopes" in chapter 2 "Sockets and Patterns" |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
59 // of "ZMQ The Guide" http://zguide.zeromq.org/page:all#toc49 |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
60 int zmq_xpub(void *socket, char *envelope, void *data, size_t len) |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
61 { |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
62 int r; |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
63 |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
64 r = zmq_send(socket, envelope, strlen(envelope), ZMQ_SNDMORE); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
65 if (r < 0) |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
66 return zmq_errno(); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
67 |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
68 r = zmq_send(socket, data, len, 0); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
69 if (r < 0) |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
70 return zmq_errno(); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
71 |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
72 return 0; |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
73 } |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
74 |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
75 |
238
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
76 struct event ev; |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
77 double utc; |
238
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
78 #define Ch1 ev.data[0] |
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
79 #define Ch2 ev.data[1] |
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
80 #define Ch3 ev.data[2] |
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
81 #define Ch4 ev.data[3] |
37 | 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; |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
230 |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
231 r = ad9956_sweep_stop(d); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
232 if (r) { |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
233 logmessage(ERROR, "ad9956 sweep stop error=%d", -r); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
234 return r; |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
235 } |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
236 |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
237 r = ad9956_set_frequency(d, f); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
238 if (r) { |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
239 logmessage(ERROR, "ad9956 set frequency error=%d", -r); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
240 return r; |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
241 } |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
242 |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
243 r = ad9956_set_sweep_rate(d, s); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
244 if (r) { |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
245 logmessage(ERROR, "ad9956 set sweep rate error=%d", -r); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
246 return r; |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
247 } |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
248 |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
249 r = ad9956_sweep_start(d); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
250 if (r) { |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
251 logmessage(ERROR, "ad9956 sweep start error=%d", -r); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
252 return r; |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
253 } |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
254 |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
255 return 0; |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
256 } |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
257 |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
258 |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
259 enum { |
266
dfbee05fe464
Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
257
diff
changeset
|
260 NONE = -1, |
dfbee05fe464
Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
257
diff
changeset
|
261 LO = 0, |
dfbee05fe464
Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
257
diff
changeset
|
262 MICROWAVE = LO, |
256
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
263 HG, |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
264 SR, |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
265 NBEATNOTES, |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
266 }; |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
267 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
268 |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
269 enum { |
26
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
270 N_MEASUREMENT_NONE, |
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
271 N_MEASUREMENT_INIT, |
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
272 N_MEASUREMENT_SLOPE, |
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
273 N_MEASUREMENT_ADJUST_FREQ_PLUS, |
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
274 N_MEASUREMENT_FREP_PLUS, |
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
275 N_MEASUREMENT_ADJUST_FREQ_MINUS, |
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
276 N_MEASUREMENT_FREP_MINUS, |
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
277 }; |
4bb197635664
Cleanup N1 measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
25
diff
changeset
|
278 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
279 int n_measurement[NBEATNOTES] = { N_MEASUREMENT_NONE, }; |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
280 double slop_time[NBEATNOTES] = { 40.0, }; |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
281 double integration_time[NBEATNOTES] = { 40.0, }; |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
282 double delta_f_lock[NBEATNOTES] = { 500e3, }; |
0 | 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; |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
288 |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
289 double f0_DDS[4] = { 110000000.0, 0.0, 0.0, 0.0 }; |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
290 double df_DDS3 = 0.0; |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
291 |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
292 int nobs = 0; |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
293 int settling = 0; |
223
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
294 |
0 | 295 |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
296 // Beatnote sign determination is done stepping the repetition rate by |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
297 // stepping the comb phase-lock offset frequency f_lock generated by |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
298 // DDS1. A lock frequency step delta_f_lock determines a change in the |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
299 // repetition rate given by: |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
300 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
301 // abs(delta_f_rep) = Ndiv * delta_f_lock / N1 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
302 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
303 // where Ndiv = 8 and N1 ~= 8 x 10^5 obtaining that |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
304 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
305 // abs(delta_f_rep) ~= delta_f_lock / 10^5 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
306 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
307 // For the determination of the comb locking beatnote sign we detect |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
308 // the sign of delta_f_rep caused by a positive delta_f_lock. f_rep is |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
309 // measured should be small enough to do not exceed the 200x PLL |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
310 // bandwidth but still be clearly identified. |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
311 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
312 // For the optical beatnotes we detect the sign of delta_f_beat caused |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
313 // by a positive delta_f_lock thus we need to take into account the |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
314 // sign of the comb locking beatnote. The optical beatnote frequency |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
315 // change is given by |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
316 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
317 // abs(delta_f_beat) = abs(delta_f_rep) * Nx |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
318 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
319 // where Nx ~= 10^6 obtaining that |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
320 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
321 // abs(delta_f_beat) ~= delta_f_lock * 10 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
322 // |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
323 // this need to do not exceed the beatnote filters bandwidth. Given |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
324 // those contraints the following f_lock steps are chosen: |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
325 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
326 double f_lock_step[NBEATNOTES] = { |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
327 [LO] = 10000.0, |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
328 [HG] = 10.0, |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
329 [SR] = 10.0 |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
330 }; |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
331 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
332 struct beatsign { |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
333 int measure; // which beatnote sign is being measured |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
334 double f0_DDS; // DDS frequency before stepping |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
335 double t0; // measurement start time |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
336 double f_rep_zero; // repetition rate before stepping |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
337 double f_beat_zero; // beatnote frequwncy before stepping |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
338 }; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
339 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
340 struct beatsign beatsign = { |
266
dfbee05fe464
Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
257
diff
changeset
|
341 .measure = NONE, |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
342 }; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
343 |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
344 |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
345 struct stat stat_math1, stat_ch2, stat_ch3; |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
346 struct rollmean rollmean_ch1, rollmean_ch2, rollmean_ch3, rollmean_ch4; |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
347 |
0 | 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"); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
393 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
394 dedrift.enabled = TRUE; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
395 dedrift.t0 = utc; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
396 stat_zero(&dedrift.stat); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
397 dedrift.stat.previous = NaN; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
398 } |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
399 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
400 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
401 void dedrift_update_disable() |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
402 { |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
403 logmsg("dedrift: automatic slope update disabled"); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
404 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
405 dedrift.enabled = FALSE; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
406 stat_zero(&dedrift.stat); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
407 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
408 if (! dedrift.keep_slope) { |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
409 dedrift.applied = 0.0; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
410 ad9956_set_sweep_rate_w(&ad9956, dedrift.applied); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
411 } |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
412 if (! dedrift.keep_freq) { |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
413 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
414 } |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
415 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
416 SetCtrlVal(MainPanel, PANEL_SLOPE_APPLIED, dedrift.applied); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
417 SetCtrlVal(MainPanel, PANEL_SLOPE_MEASURED, dedrift.stat.slope); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
418 SetCtrlVal(MainPanel, PANEL_MEASURE_SLOPE, 0); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
419 } |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
420 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
421 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
422 // Wrapper around stat_accumulate() that updates the statistic only if |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
423 // the new datapoint `v` is within `threshold` from the data point |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
424 // considered in the previous update. If the data point fails this |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
425 // criteria it does not contribute to the collected statistics and the |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
426 // previous data point is used instead and `count` is incremented by |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
427 // one. If the data point is accepted `count` is reset to zero. |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
428 int stat_accumulate_resilient(struct stat *stat, double v, double threshold, int *count) |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
429 { |
246
d6a37eca6d92
Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
245
diff
changeset
|
430 if (!isnan(stat->previous) && (fabs(v - stat->previous) > threshold)) { |
245
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
431 // bad data point |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
432 stat_accumulate(stat, stat->previous); |
246
d6a37eca6d92
Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
245
diff
changeset
|
433 *count += 1; |
245
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
434 return TRUE; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
435 } else { |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
436 // good data point |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
437 stat_accumulate(stat, v); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
438 *count = 0; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
439 return FALSE; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
440 } |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
441 } |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
442 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
443 |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
444 void dedrift_update(double f) |
245
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
445 { |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
446 if (! dedrift.enabled) |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
447 return; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
448 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
449 // update measurement |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
450 stat_accumulate_resilient(&dedrift.stat, f, dedrift.threshold, &dedrift.badcount); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
451 if (dedrift.badcount) { |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
452 // bad data point detected |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
453 logmsg("dedrift: bad data point detected"); |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
454 |
245
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
455 // too many consecutive bad data points detected |
246
d6a37eca6d92
Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
245
diff
changeset
|
456 if (dedrift.safety && (dedrift.badcount > dedrift.badcountmax)) { |
d6a37eca6d92
Fix errors in previous commit
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
245
diff
changeset
|
457 logmsg("dedrift: maximum number of consecutive bad data points exceeded"); |
245
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
458 dedrift_update_disable(); |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
459 } |
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
460 } |
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
461 |
245
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
462 // check if the previous check disabled slope update |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
463 if (! dedrift.enabled) |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
464 return; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
465 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
466 // update display |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
467 SetCtrlVal(MainPanel, PANEL_SLOPE_MEASURED, dedrift.stat.slope); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
468 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
469 // update applied slope |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
470 if ((utc - dedrift.t0) > dedrift.interval) { |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
471 |
245
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
472 // target frequency |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
473 if (dedrift.f0 == 0.0) |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
474 dedrift.f0 = dedrift.stat.mean; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
475 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
476 // compute correction |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
477 double dt = utc - dedrift.t0; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
478 double corr = dedrift.stat.slope \ |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
479 + dedrift.proportional * ((dedrift.stat.mean - dedrift.f0) / dt + 0.5 * dedrift.stat.slope); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
480 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
481 // update |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
482 dedrift.applied += dedrift.sign * corr * (dedrift.x2 ? 2 : 1); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
483 ad9956_set_sweep_rate_w(&ad9956, dedrift.applied); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
484 SetCtrlVal(MainPanel, PANEL_SLOPE_APPLIED, dedrift.applied); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
485 logmsg("dedrift: update correction=%+3e slope=%+3e", corr, dedrift.applied); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
486 |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
487 // start over. keep track of the last updated data point to |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
488 // avoid gaps in the detectrion of bad data points based on |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
489 // threshold on the difference between current data point and |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
490 // previous one |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
491 double prev = dedrift.stat.previous; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
492 stat_zero(&dedrift.stat); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
493 dedrift.stat.previous = prev; |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
494 dedrift.t0 = utc; |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
495 } |
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
496 } |
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
497 |
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
498 |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
499 // recenter |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
500 struct recenter { |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
501 int active; // recenter enabled |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
502 int enabled[NBEATNOTES]; // which beatnotes to recenter |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
503 double threshold[NBEATNOTES]; // maximum frequency correction |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
504 double interval; // interval |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
505 double t0; // beginning of current interval |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
506 }; |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
507 |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
508 struct recenter recenter = { |
256
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
509 .active = FALSE, |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
510 .enabled = { FALSE, FALSE, FALSE }, |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
511 .threshold = { 10.0, 2000.0, 2000.0 }, |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
512 .interval = 1800.0, |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
513 .t0 = 0.0 |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
514 }; |
0 | 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; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
521 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
522 for (int i = 0; i < NBEATNOTES; i++) |
256
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
523 if (recenter.enabled[i]) |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
524 return TRUE; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
525 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
526 return FALSE; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
527 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
528 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
529 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
530 void recenter_update() |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
531 { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
532 if (! recenter_enabled()) |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
533 return; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
534 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
535 rollmean_accumulate(&rollmean_ch2, Ch2); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
536 rollmean_accumulate(&rollmean_ch3, Ch3); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
537 rollmean_accumulate(&rollmean_ch4, Ch4); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
538 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
539 if ((utc - recenter.t0) > recenter.interval) { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
540 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
541 if (recenter.enabled[LO]) { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
542 // adjust DDS2 frequency to keep Ch4 reading at 275 kHz |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
543 double freq = ad9912.frequency[1]; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
544 double adj = 275000.0 - rollmean_ch4.mean; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
545 if (fabs(adj) > recenter.threshold[LO]) { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
546 logmessage(WARNING, "not recenter ch4 to 275 kHz: DDS2 adjustment=%+3e exceeds threshold", adj); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
547 } else { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
548 freq = freq + adj; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
549 ad9912_set_frequency_w(&ad9912, 1, freq); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
550 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
551 logmsg("recenter ch4 to 275 kHz: DDS2 adjustment=%+3e", adj); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
552 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
553 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
554 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
555 if (recenter.enabled[HG]) { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
556 // adjust DDS3 frequency to keep Ch2 reading at 10 kHz |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
557 double freq = ad9912.frequency[2]; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
558 double adj = 10000 - rollmean_ch2.mean; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
559 if (fabs(adj) > recenter.threshold[HG]) { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
560 logmessage(WARNING, "not recenter Hg beatnote (ch2) to 10 kHz: DDS3 adjustment=%+3e exceeds threshold", adj); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
561 } else { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
562 freq = freq + adj; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
563 ad9912_set_frequency_w(&ad9912, 2, freq); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
564 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
565 logmsg("recenter Hg beatnote (ch2) to 10 kHz: DDS3 adjustment=%+3e", adj); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
566 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
567 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
568 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
569 if (recenter.enabled[SR]) { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
570 // adjust DDS4 frequency to keep Ch3 reading at 10 kHz |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
571 double freq = ad9912.frequency[3]; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
572 double adj = 10000 - rollmean_ch3.mean; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
573 if (fabs(adj) > recenter.threshold[SR]) { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
574 logmessage(WARNING, "not recenter Sr beatnote (ch3) to 10 kHz: DDS4 adjustment=%+3e exceeds threshold", adj); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
575 } else { |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
576 freq = freq + adj; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
577 ad9912_set_frequency_w(&ad9912, 3, freq); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
578 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
579 logmsg("recenter Sr beatnote (ch3) to 10 kHz: DDS4 adjustment=%+3e", adj); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
580 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
581 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
582 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
583 recenter.t0 = utc; |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
584 rollmean_zero(&rollmean_ch2); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
585 rollmean_zero(&rollmean_ch3); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
586 rollmean_zero(&rollmean_ch4); |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
587 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
588 } |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
589 |
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
590 |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
591 // data loggging |
170
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
592 static char *datafolder; |
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
593 |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
594 struct datafile { |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
595 char *name; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
596 double *data; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
597 int nchan; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
598 int control; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
599 int write; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
600 }; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
601 |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
602 #define DATAFILE(__name, __data, __nchan, __control, __write) \ |
168 | 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 |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
624 static void write_data(const char *folder, const char *name, const char *id, |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
625 const char *timestr, double utc, double *v, int nchan) |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
626 { |
183
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
627 int i, fd, len; |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
628 char line[1024]; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
629 char filename[FILENAME_MAX]; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
630 |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
631 // construct filename in the form folder\\id-name.txt |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
632 snprintf(filename, sizeof(filename), "%s\\%s-%s.txt", folder, id, name); |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
633 |
235
95572be109a4
Fix data files creation permissions
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
234
diff
changeset
|
634 fd = open(filename, O_CREAT|O_WRONLY|O_APPEND, S_IRUSR|S_IWUSR|S_IRGRP); |
183
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
635 if (fd < 0) { |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
636 logmessage(ERROR, "open data file %s: %s", filename, strerror(errno)); |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
637 return; |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
638 } |
183
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
639 |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
640 // timestamp |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
641 len = snprintf(line, sizeof(line), "%s\t%.3f", timestr, utc); |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
642 |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
643 // data channels |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
644 for (i = 0; i < nchan; i++) |
187
a5c70eae1e0b
Change data logging to 16 digits precision
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
186
diff
changeset
|
645 len += snprintf(line + len, sizeof(line) - len, "\t%.16e", v[i]); |
183
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
646 |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
647 // newline |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
648 line[len++] = '\r'; |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
649 line[len++] = '\n'; |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
650 |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
651 // write to file |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
652 write(fd, line, len); |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
653 |
791ca26fee6a
Rewrite data writing to file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
180
diff
changeset
|
654 close(fd); |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
655 } |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
656 |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
657 |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
658 static inline void datafile_append(struct datafile *d, char *id, char *timestr) |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
659 { |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
660 if (d->write) |
170
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
661 write_data(datafolder, d->name, id, timestr, utc, d->data, d->nchan); |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
662 } |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
663 |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
664 |
169
97112b45b838
Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
168
diff
changeset
|
665 static struct datalogger datalogger; |
73
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
666 |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
667 |
199
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
668 static void onerror(int level, const char *msg) |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
669 { |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
670 SetCtrlVal(MainPanel, PANEL_ERROR, 1); |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
671 } |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
672 |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
673 |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
674 static void * muParserNew() |
0 | 675 { |
168 | 676 void *parser = mupCreate(); |
166 | 677 |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
678 mupDefineOprtChars(parser, "abcdefghijklmnopqrstuvwxyzµ" |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
679 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
680 "+-*^/?<>=#!$%&|~'_"); |
166 | 681 |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
682 mupDefineVar(parser, "Ch1", &Ch1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
683 mupDefineVar(parser, "Ch2", &Ch2); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
684 mupDefineVar(parser, "Ch3", &Ch3); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
685 mupDefineVar(parser, "Ch4", &Ch4); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
686 mupDefineVar(parser, "DDS1", &(ad9912.frequency[0])); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
687 mupDefineVar(parser, "DDS2", &(ad9912.frequency[1])); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
688 mupDefineVar(parser, "DDS3", &(ad9912.frequency[2])); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
689 mupDefineVar(parser, "DDS4", &(ad9912.frequency[3])); |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
690 mupDefineVar(parser, "N1", &N1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
691 mupDefineVar(parser, "N2", &N2); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
692 mupDefineVar(parser, "N3", &N3); |
125
37535873ee83
Rename variables from SigneX to SignX
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
124
diff
changeset
|
693 mupDefineVar(parser, "Sign1", &Sign1); |
37535873ee83
Rename variables from SigneX to SignX
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
124
diff
changeset
|
694 mupDefineVar(parser, "Sign2", &Sign2); |
37535873ee83
Rename variables from SigneX to SignX
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
124
diff
changeset
|
695 mupDefineVar(parser, "Sign3", &Sign3); |
109
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
696 mupDefineVar(parser, "Ndiv", &Ndiv); |
174
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
697 |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
698 mupDefinePostfixOprt(parser, "P", &Peta, 1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
699 mupDefinePostfixOprt(parser, "T", &Tera, 1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
700 mupDefinePostfixOprt(parser, "G", &Giga, 1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
701 mupDefinePostfixOprt(parser, "M", &Mega, 1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
702 mupDefinePostfixOprt(parser, "k", &kilo, 1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
703 mupDefinePostfixOprt(parser, "m", &milli, 1); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
704 mupDefinePostfixOprt(parser, "u", µ, 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); |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
709 |
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
710 return parser; |
0 | 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); |
169
97112b45b838
Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
168
diff
changeset
|
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; |
a41c872bce48
Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
235
diff
changeset
|
748 |
170
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
749 // data folder |
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
750 rv = Ini_GetStringCopy(configuration, "data", "folder", &datafolder); |
174
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
751 if (rv > 0) { |
248
eaac96094640
Minor style improvements
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
246
diff
changeset
|
752 logmessage(INFO, "writing data files in '%s'", datafolder); |
174
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
753 } else { |
170
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
754 logmessage(ERROR, "data folder not configured in %s", path); |
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
755 // do not allow to start the acquisition |
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
756 SetCtrlAttribute(MainPanel, PANEL_STARTBUTTON, ATTR_DIMMED, TRUE); |
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
757 } |
a4fcebb5941b
Make data folder configurable in configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
169
diff
changeset
|
758 |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
759 // ad9956 configuration parameters |
166 | 760 rv = Ini_GetStringIntoBuffer(configuration, "AD9956", "host", host, sizeof(host)); |
164
211ea3950310
Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
162
diff
changeset
|
761 if (! rv) |
211ea3950310
Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
162
diff
changeset
|
762 return -1; |
211ea3950310
Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
162
diff
changeset
|
763 rv = Ini_GetDouble(configuration, "AD9956", "clock", &clock); |
211ea3950310
Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
162
diff
changeset
|
764 if (! rv) |
211ea3950310
Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
162
diff
changeset
|
765 return -1; |
211ea3950310
Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
162
diff
changeset
|
766 |
209
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
767 // initialize AD9956 dedrift DDS |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
768 rv = ad9956_init(&ad9956, host, clock); |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
769 if (rv) |
11a88d389705
Adapt to new AD9956 interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
205
diff
changeset
|
770 logmessage(ERROR, "ad9956 init erorr=%d", -rv); |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
771 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied); |
164
211ea3950310
Read AD9956 configuration from configuration file
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
162
diff
changeset
|
772 |
237
a41c872bce48
Enforce the number of counter channels when writing data to disk
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
235
diff
changeset
|
773 // AD9912 configuration parameters |
174
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
774 rv = Ini_GetStringIntoBuffer(configuration, "AD9912", "host", host, sizeof(host)); |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
775 if (! rv) |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
776 return -1; |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
777 rv = Ini_GetDouble(configuration, "AD9912", "clock", &clock); |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
778 if (! rv) |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
779 return -1; |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
780 |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
781 // initialize AD9912 DDS box |
199
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
782 rv = ad9912_init(&ad9912, host, clock); |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
783 if (rv) |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
784 logmessage(ERROR, "ad9912 init erorr=%d", -rv); |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
785 |
257
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
786 // try to read back current frequency from DDS |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
787 for (i = 0; i < 4; i++) { |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
788 rv = ad9912_get_frequency(&ad9912, i, &frequency); |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
789 if ((rv) || (frequency == 0.0)) { |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
790 logmessage(WARNING, "reset DDS%d frequency to default value", i + 1); |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
791 GetCtrlVal(MainPanel, PANEL_DDS[i], &frequency); |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
792 ad9912_set_frequency_w(&ad9912, i, frequency); |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
793 } |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
794 SetCtrlVal(MainPanel, PANEL_DDS[i], frequency); |
8cbfce046d41
Try to read back the frequency values from AD9912 at startup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
256
diff
changeset
|
795 } |
240
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
796 |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
797 // setup ZMQ pub socket |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
798 char *socket; |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
799 rv = Ini_GetStringCopy(configuration, "ZMQ", "socket", &socket); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
800 if (! rv) |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
801 socket = strdup("tcp://127.0.0.1:3456"); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
802 logmessage(INFO, "data sent to ZMQ socket '%s'", socket); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
803 zmqcontext = zmq_ctx_new(); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
804 zmqsocket = zmq_socket(zmqcontext, ZMQ_PUB); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
805 rv = zmq_bind(zmqsocket, socket); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
806 if (rv) |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
807 logmessage(ERROR, "cannot bind ZMQ socket '%s': %s", socket, zmq_strerror(zmq_errno())); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
808 free(socket); |
0 | 809 |
174
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
810 // dispose configuration |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
811 Ini_Dispose(configuration); |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
812 |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
813 // Sr data logger |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
814 sr_datalogger_init(&datalogger); |
d96f0b04f7fe
Make DDS addres configurable in configuration file. Modernize AD9912 driver.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
170
diff
changeset
|
815 |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
816 GetCtrlVal(MainPanel, PANEL_N1, &N1); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
817 GetCtrlVal(MainPanel, PANEL_N2, &N2); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
818 GetCtrlVal(MainPanel, PANEL_N3, &N3); |
166 | 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); |
0 | 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); |
0 | 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); |
0 | 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); |
0 | 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); |
166 | 849 |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
850 // data queue |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
851 CmtNewTSQ(128, sizeof(struct event), 0, &dataQueue); |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
852 |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
853 // register callback to execute when data will be in the data queue |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
854 CmtInstallTSQCallback(dataQueue, EVENT_TSQ_ITEMS_IN_QUEUE, 1, |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
855 DataAvailableCB, NULL, CmtGetCurrentThreadID(), NULL); |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
856 |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
857 DisplayPanel(MainPanel); |
0 | 858 |
52
30146cc6cd77
Cleanup. Remove some C abominations
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
51
diff
changeset
|
859 RunUserInterface(); |
0 | 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; |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
882 |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
883 #define do_arrow(__DDS, __STEP) \ |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
884 do { \ |
166 | 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); \ | |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
892 } while (0) |
0 | 893 |
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: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
899 case VAL_LEFT_ARROW_VKEY: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
900 control = GetActiveCtrl(panel); |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
901 switch (control) { |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
902 case PANEL_DDS1: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
903 case PANEL_DDS1STEP: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
904 do_arrow(PANEL_DDS1, PANEL_DDS1STEP); |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
905 break; |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
906 case PANEL_DDS2: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
907 case PANEL_DDS2STEP: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
908 do_arrow(PANEL_DDS2, PANEL_DDS2STEP); |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
909 break; |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
910 case PANEL_DDS3: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
911 case PANEL_DDS3STEP: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
912 do_arrow(PANEL_DDS3, PANEL_DDS3STEP); |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
913 break; |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
914 case PANEL_DDS4: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
915 case PANEL_DDS4STEP: |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
916 do_arrow(PANEL_DDS4, PANEL_DDS4STEP); |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
917 break; |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
918 } |
0 | 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; |
82
47860259afe2
Implement logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
80
diff
changeset
|
950 |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
951 // start data provider thread |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
952 CmtScheduleThreadPoolFunctionAdv( |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
953 DEFAULT_THREAD_POOL_HANDLE, DataProvider, NULL, |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
954 THREAD_PRIORITY_HIGHEST, NULL, 0, NULL, 0, &dataProviderThread); |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
955 |
0 | 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; |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
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); |
29b1aa89a34c
Disable the Start button when data acquisition thread is running
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
97
diff
changeset
|
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; |
0 | 990 |
238
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
991 switch (event) { |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
992 case EVENT_TSQ_ITEMS_IN_QUEUE: |
124
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
993 // read data from the data queue |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
994 while (value > 0) { |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
995 |
238
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
996 read = CmtReadTSQData(queueHandle, &ev, 1, TSQ_INFINITE_TIMEOUT, 0); |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
997 if (read != 1) |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
998 logmsg("Error!"); |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
999 value = value - read; |
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
1000 |
223
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
1001 // unpack event |
238
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
1002 utc = ev.time.tv_sec + ev.time.tv_usec * 1e-6; |
124
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1003 |
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1004 // update display |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1005 SetCtrlVal(MainPanel, PANEL_UTC, utc); |
124
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1006 SetCtrlVal(MainPanel, PANEL_CH1, Ch1); |
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1007 SetCtrlVal(MainPanel, PANEL_CH2, Ch2); |
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1008 SetCtrlVal(MainPanel, PANEL_CH3, Ch3); |
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1009 SetCtrlVal(MainPanel, PANEL_CH4, Ch4); |
166 | 1010 |
124
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1011 // compute |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1012 Math1 = mupEval(MathParser1); |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1013 Math2 = mupEval(MathParser2); |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1014 Math3 = mupEval(MathParser3); |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1015 Math4 = mupEval(MathParser4); |
124
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1016 Math5 = mupEval(MathParser5); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1017 |
124
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1018 // update display. numeric controllers do not format values |
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1019 // with a thousands separator: use string controllers and a |
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1020 // custom formatting function |
bdfc61a8ebee
Add thousands separator to important numeric displays
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
123
diff
changeset
|
1021 char buffer[256]; |
158
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1022 SetCtrlVal(MainPanel, PANEL_MATH1, thousands(buffer, sizeof(buffer), "%.6f", Math1)); |
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1023 SetCtrlVal(MainPanel, PANEL_MATH2, thousands(buffer, sizeof(buffer), "%.3f", Math2)); |
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1024 SetCtrlVal(MainPanel, PANEL_MATH3, thousands(buffer, sizeof(buffer), "%.3f", Math3)); |
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1025 SetCtrlVal(MainPanel, PANEL_MATH4, thousands(buffer, sizeof(buffer), "%.3f", Math4)); |
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1026 SetCtrlVal(MainPanel, PANEL_MATH5, thousands(buffer, sizeof(buffer), "%.3f", Math5)); |
166 | 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); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
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]) { |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1039 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1040 case N_MEASUREMENT_NONE: |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1041 // not measuring |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1042 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1043 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1044 case N_MEASUREMENT_INIT: |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1045 // initialization step |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1046 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1047 // set DDS1 to nominal frequency |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1048 ad9912_set_frequency_w(&ad9912, 0, f0_DDS[0]); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1049 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1050 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1051 // record current DDS frequencies |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1052 f0_DDS[1] = ad9912.frequency[1]; |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1053 |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1054 t1 = utc; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1055 t2 = t3 = 0.0; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1056 nobs = 0; |
73
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
1057 stat_zero(&stat_math1); |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1058 f_rep_plus = f_rep_minus = 0.0; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1059 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1060 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1061 n_measurement[LO] += 1; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1062 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1063 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1064 case N_MEASUREMENT_SLOPE: |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1065 // slope measurement |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1066 |
73
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
1067 stat_accumulate(&stat_math1, Math1); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1068 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1069 if ((utc - t1) > slope_time[LO]) { |
159 | 1070 f_rep_slope = stat_math1.slope; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1071 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1072 // frep positive step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1073 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0] + delta_f_lock[LO], FREP_STEP_SIZE); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1074 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1075 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1076 // allow counter to settle |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1077 settling = 3; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1078 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1079 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1080 n_measurement[LO] += 1; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1081 } |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1082 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1083 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1084 case N_MEASUREMENT_ADJUST_FREQ_PLUS: |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1085 case N_MEASUREMENT_ADJUST_FREQ_MINUS: |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1086 // adjust DDS frequency to keep beatnote within the bandpass filter |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1087 |
159 | 1088 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1089 break; |
0 | 1090 |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1091 double fDDS2 = ad9912.frequency[1]; |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1092 ad9912_set_frequency_w(&ad9912, 1, fDDS2 + 275000 - Ch4); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1093 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1094 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1095 // allow counter to settle |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1096 settling = 3; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1097 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1098 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1099 n_measurement[LO] += 1; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1100 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1101 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1102 case N_MEASUREMENT_FREP_PLUS: |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1103 // frep positive step |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1104 |
159 | 1105 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1106 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1107 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1108 if (t2 == 0.0) |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1109 t2 = utc; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1110 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1111 f_rep_plus += Math1 - f_rep_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1112 nobs += 1; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1113 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1114 if ((utc - t2) > integration_time[LO]) { |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1115 f_rep_plus = f_rep_plus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1116 nobs = 0; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1117 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1118 // frep negative step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1119 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0] - delta_f_lock[LO], FREP_STEP_SIZE); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1120 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1121 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1122 // allow counter to settle |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1123 settling = 3; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1124 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1125 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1126 n_measurement[LO] += 1; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1127 } |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1128 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1129 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1130 case N_MEASUREMENT_FREP_MINUS: |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1131 // frep negative step |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1132 |
159 | 1133 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1134 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1135 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1136 if (t3 == 0.0) |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1137 t3 = utc; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1138 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1139 f_rep_minus += Math1 - f_rep_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1140 nobs += 1; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1141 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1142 if ((utc - t3) > integration_time[LO]) { |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1143 f_rep_minus = f_rep_minus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1144 nobs = 0; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1145 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1146 // compute N1 |
159 | 1147 double delta_f_rep = f_rep_minus - f_rep_plus; |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1148 double measured = Sign1 * 2 * Ndiv * delta_f_lock[LO] / delta_f_rep; |
223
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
1149 SetCtrlVal(CalcNPanel, CALCN_N, measured); |
0 | 1150 |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1151 // back to nominal frep |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1152 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE); |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1153 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1154 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1155 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1156 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1157 // done |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1158 n_measurement[LO] = N_MEASUREMENT_NONE; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1159 } |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1160 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1161 } |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1162 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1163 switch (n_measurement[HG]) { |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1164 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1165 case N_MEASUREMENT_NONE: |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1166 // not measuring |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1167 break; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1168 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1169 case N_MEASUREMENT_INIT: |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1170 // initialization step |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1171 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1172 // set DDS1 to nominal frequency |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1173 ad9912_set_frequency_w(&ad9912, 0, f0_DDS[0]); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1174 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
0 | 1175 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1176 // record current DDS frequencies |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1177 f0_DDS[1] = ad9912.frequency[1]; |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1178 f0_DDS[2] = ad9912.frequency[2]; |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1179 |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1180 t1 = utc; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1181 t2 = t3 = 0.0; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1182 nobs = 0; |
73
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
1183 stat_zero(&stat_math1); |
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
1184 stat_zero(&stat_ch2); |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1185 f_rep_plus = f_rep_minus = 0.0; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1186 f_beat_plus = f_beat_minus = 0.0; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1187 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1188 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1189 n_measurement[HG] += 1; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1190 break; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1191 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1192 case N_MEASUREMENT_SLOPE: |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1193 // slope measurement |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1194 |
73
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
1195 stat_accumulate(&stat_math1, Math1); |
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
1196 stat_accumulate(&stat_ch2, Ch2); |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1197 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1198 if ((utc - t1) > slope_time[HG]) { |
159 | 1199 f_rep_slope = stat_math1.slope; |
1200 f_beat_slope = stat_ch2.slope; | |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1201 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1202 // frep positive step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1203 double fDDS1 = f0_DDS[0] + delta_f_lock[HG]; |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1204 ad9912_ramp_frequency_w(&ad9912, 0, fDDS1, FREP_STEP_SIZE); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1205 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
62
53dbce5f0745
Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
61
diff
changeset
|
1206 |
61
37075b60408b
Fix N2 measurement after cleanup. Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
60
diff
changeset
|
1207 // adjust DDS3 to keep beatnote within the bandpass filter. prediction |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1208 double fDDS3 = f0_DDS[2] + Sign1 * Sign2 * N2/N1 * Ndiv * delta_f_lock[HG]; |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1209 df_DDS3 = fDDS3 - ad9912.frequency[2]; |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1210 ad9912_set_frequency_w(&ad9912, 2, fDDS3); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1211 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]); |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1212 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1213 // allow counter to settle |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1214 settling = 3; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1215 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1216 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1217 n_measurement[HG] += 1; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1218 } |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1219 break; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1220 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1221 case N_MEASUREMENT_ADJUST_FREQ_PLUS: |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1222 case N_MEASUREMENT_ADJUST_FREQ_MINUS: |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1223 // adjust DDS frequency to keep beatnote within the bandpass filter |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1224 |
159 | 1225 if (settling-- > 0) |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1226 break; |
61
37075b60408b
Fix N2 measurement after cleanup. Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
60
diff
changeset
|
1227 |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1228 double fDDS2 = ad9912.frequency[1] + 275000 - Ch4; |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1229 ad9912_set_frequency_w(&ad9912, 1, fDDS2); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1230 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]); |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1231 |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1232 double fDDS3 = ad9912.frequency[2] + 10000 - Ch2; |
162 | 1233 df_DDS3 = df_DDS3 + 10000 - Ch2; |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1234 ad9912_set_frequency_w(&ad9912, 2, fDDS3); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1235 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]); |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1236 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1237 // allow counter to settle |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1238 settling = 3; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1239 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1240 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1241 n_measurement[HG] += 1; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1242 break; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1243 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1244 case N_MEASUREMENT_FREP_PLUS: |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1245 // frep positive step |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1246 |
159 | 1247 if (settling-- > 0) |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1248 break; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1249 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1250 if (t2 == 0.0) |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1251 t2 = utc; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1252 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1253 f_rep_plus += Math1 + 250000000 - f_rep_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1254 f_beat_plus += Ch2 - f_beat_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1255 nobs += 1; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1256 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1257 if ((utc - t2) > integration_time[HG]) { |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1258 f_rep_plus = f_rep_plus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1259 f_beat_plus = f_beat_plus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1260 nobs = 0; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1261 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1262 // negative frequency step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1263 double fDDS1 = f0_DDS[0] - delta_f_lock[HG]; |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1264 ad9912_ramp_frequency_w(&ad9912, 0, fDDS1, FREP_STEP_SIZE); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1265 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
62
53dbce5f0745
Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
61
diff
changeset
|
1266 |
53dbce5f0745
Further simplification
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
61
diff
changeset
|
1267 // adjust DDS3 to keep beatnote within the bandpass filter. prediction |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1268 double fDDS3 = f0_DDS[2] - Sign1 * Sign2 * N2/N1 * Ndiv * delta_f_lock[HG]; |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1269 df_DDS3 = fDDS3 - ad9912.frequency[2]; |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1270 ad9912_set_frequency_w(&ad9912, 2, fDDS3); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1271 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]); |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
1272 |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1273 // allow counter to settle |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1274 settling = 3; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1275 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1276 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1277 n_measurement[HG] += 1; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1278 } |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1279 break; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1280 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1281 case N_MEASUREMENT_FREP_MINUS: |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1282 // frep negative step |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1283 |
159 | 1284 if (settling-- > 0) |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1285 break; |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1286 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1287 if (t3 == 0.0) |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1288 t3 = utc; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1289 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1290 f_rep_minus += Math1 + 250000000 - f_rep_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1291 f_beat_minus += Ch2 + f_beat_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1292 nobs += 1; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1293 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1294 if ((utc -t3) > integration_time[HG]) { |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1295 f_rep_minus = f_rep_minus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1296 f_beat_minus = f_beat_minus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1297 nobs = 0; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1298 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1299 // compute N2 |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
1300 double delta_f_rep_m = f_rep_minus - f_rep_plus; |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1301 double delta_f_rep = Sign1 * Ndiv * 2.0 * delta_f_lock[HG] / N1; |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1302 double delta = delta_f_rep_m - delta_f_rep; |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
1303 |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1304 logmsg("delta frep: measured=%e expected=%e difference=%e rel=%e", |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1305 delta_f_rep_m, delta_f_rep, delta, delta / delta_f_rep); |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
1306 |
223
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
1307 double measured = -Sign2 * (df_DDS3 + f_beat_minus - f_beat_plus) / delta_f_rep; |
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
1308 SetCtrlVal(CalcNPanel, CALCN_N, measured); |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1309 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1310 // back to nominal frequency |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1311 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE); |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1312 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]); |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1313 ad9912_set_frequency_w(&ad9912, 2, f0_DDS[2]); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1314 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1315 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1316 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]); |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1317 |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1318 // done |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1319 n_measurement[HG] = N_MEASUREMENT_NONE; |
46
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1320 } |
6503feae1809
Cleanup. Convert N2 measurement logic to state machine like structure
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
44
diff
changeset
|
1321 break; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1322 } |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1323 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1324 switch (n_measurement[SR]) { |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1325 |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1326 case N_MEASUREMENT_NONE: |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1327 // not measuring N3 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1328 break; |
0 | 1329 |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1330 case N_MEASUREMENT_INIT: |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1331 // init |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1332 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1333 // set DDS1 to nominal frequency |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1334 ad9912_set_frequency_w(&ad9912, 0, f0_DDS[0]); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1335 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1336 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1337 // record current DDS frequencies |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1338 f0_DDS[1] = ad9912.frequency[1]; |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1339 f0_DDS[3] = ad9912.frequency[3]; |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1340 |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1341 t1 = utc; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1342 t2 = t3 = 0.0; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1343 nobs = 0; |
118
43b35f4aae78
Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
117
diff
changeset
|
1344 stat_zero(&stat_math1); |
156
4ab8099a18e2
Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
155
diff
changeset
|
1345 stat_zero(&stat_ch3); |
115
23f8b7b2b63a
Use DDS1 to change frep in the measurement of N3. Improve some variable names
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
114
diff
changeset
|
1346 f_rep_plus = f_rep_minus = 0.0; |
159 | 1347 f_beat_plus = f_beat_minus = 0.0; |
73
1dfaf5ef0352
Refactor mean and slope measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
70
diff
changeset
|
1348 |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1349 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1350 n_measurement[SR] += 1; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1351 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1352 |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1353 case N_MEASUREMENT_SLOPE: |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1354 // slope measurement |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1355 |
159 | 1356 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1357 break; |
0 | 1358 |
118
43b35f4aae78
Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
117
diff
changeset
|
1359 stat_accumulate(&stat_math1, Math1); |
156
4ab8099a18e2
Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
155
diff
changeset
|
1360 stat_accumulate(&stat_ch3, Ch3); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1361 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1362 if (utc - t1 > slope_time[SR]) { |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1363 // slope measurement |
118
43b35f4aae78
Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
117
diff
changeset
|
1364 f_rep_slope = stat_math1.slope; |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1365 f_beat_slope = stat_ch3.slope; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1366 |
156
4ab8099a18e2
Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
155
diff
changeset
|
1367 logmsg("f_rep_slope=%e Hz/s", f_rep_slope); |
4ab8099a18e2
Add beatnote frequency drift correction to N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
155
diff
changeset
|
1368 logmsg("f_beat_slope=%e Hz/s", f_rep_slope); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1369 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1370 // frep positive step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1371 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0] + delta_f_lock[SR], FREP_STEP_SIZE); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1372 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
158
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1373 |
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1374 // adjust DDS3 to keep beatnote within the bandpass filter |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1375 double fDDS4 = f0_DDS[3] + Sign1 * Sign3 * N3/N1 * Ndiv * delta_f_lock[SR]; |
217
fefe921a9784
Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
216
diff
changeset
|
1376 ad9912_set_frequency_w(&ad9912, 3, fDDS4); |
fefe921a9784
Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
216
diff
changeset
|
1377 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]); |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1378 |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1379 // allow counter to settle |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1380 settling = 3; |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1381 |
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1382 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1383 n_measurement[SR] += 1; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1384 } |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1385 break; |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1386 |
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1387 case N_MEASUREMENT_ADJUST_FREQ_PLUS: |
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1388 case N_MEASUREMENT_ADJUST_FREQ_MINUS: |
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1389 // adjust DDS frequency to keep beatnote within the bandpass filter |
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1390 |
159 | 1391 if (settling-- > 0) |
109
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
1392 break; |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
1393 |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
1394 // adjust DDS frequency to keep 55 MHz tracker oscillator locked |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1395 double fDDS2 = ad9912.frequency[1] + 275000 - Ch4; |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1396 ad9912_set_frequency_w(&ad9912, 1, fDDS2); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1397 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]); |
109
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
1398 |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
1399 // allow counter to settle |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
1400 settling = 3; |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
1401 |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1402 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1403 n_measurement[SR] += 1; |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1404 break; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1405 |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1406 case N_MEASUREMENT_FREP_PLUS: |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1407 // frep positive step |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1408 |
159 | 1409 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1410 break; |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1411 |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1412 if (t2 == 0.0) |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1413 t2 = utc; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1414 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1415 f_rep_plus += Math1 + 250000000 - f_rep_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1416 f_beat_plus += Ch3 - f_beat_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1417 nobs += 1; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1418 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1419 if (utc - t2 > integration_time[SR]) { |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1420 f_rep_plus = f_rep_plus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1421 f_beat_plus = f_beat_plus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1422 nobs = 0; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1423 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1424 // frep negative step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1425 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0] - delta_f_lock[SR], FREP_STEP_SIZE); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1426 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
158
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1427 |
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1428 // adjust DDS3 to keep beatnote within the bandpass filter |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1429 double fDDS4 = f0_DDS[3] - Sign1 * Sign3 * N3/N1 * Ndiv * delta_f_lock[SR]; |
217
fefe921a9784
Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
216
diff
changeset
|
1430 ad9912_set_frequency_w(&ad9912, 3, fDDS4); |
fefe921a9784
Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
216
diff
changeset
|
1431 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]); |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1432 |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1433 // allow counter to settle |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1434 settling = 3; |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1435 |
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1436 // next step |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1437 n_measurement[SR] += 1; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1438 } |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1439 break; |
118
43b35f4aae78
Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
117
diff
changeset
|
1440 |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1441 case N_MEASUREMENT_FREP_MINUS: |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1442 // frep negative step |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1443 |
159 | 1444 if (settling-- > 0) |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1445 break; |
0 | 1446 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1447 if (t3 == 0.0) |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1448 t3 = utc; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1449 |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1450 f_rep_minus += Math1 + 250000000 - f_rep_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1451 f_beat_minus += Ch3 - f_beat_slope * (utc - t2); |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1452 nobs += 1; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1453 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1454 if (utc - t3 > integration_time[SR]) { |
160
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1455 f_rep_minus = f_rep_minus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1456 f_beat_minus = f_beat_minus / nobs; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1457 nobs = 0; |
111
8bdd7e38715f
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
109
diff
changeset
|
1458 |
8bdd7e38715f
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
109
diff
changeset
|
1459 // check delta frep |
221
c14f5a95850d
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
220
diff
changeset
|
1460 double delta_f_rep_m = f_rep_minus - f_rep_plus; |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1461 double delta_f_rep = Sign1 * Ndiv * 2.0 * delta_f_lock[SR] / N1; |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1462 double delta = delta_f_rep_m - delta_f_rep; |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
1463 |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1464 logmsg("delta frep: measured=%e expected=%e difference=%e rel=%e", |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1465 delta_f_rep_m, delta_f_rep, delta, delta / delta_f_rep); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1466 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1467 // compute N3 |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1468 double delta_f_beat = f_beat_minus - f_beat_plus + 2.0 * Sign1 * Sign3 * N3/N1 * Ndiv * delta_f_lock[SR]; |
159 | 1469 double delta_f_beat_expected = delta_f_rep * N3; |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
1470 |
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
1471 logmsg("delta fbeat: measured=%e expected=%e difference=%e", |
159 | 1472 delta_f_beat, delta_f_beat_expected, delta_f_beat - delta_f_beat_expected); |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
1473 |
223
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
1474 double measured = delta_f_beat / delta_f_rep; |
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
1475 SetCtrlVal(CalcNPanel, CALCN_N, measured); |
161
6ee23cb3d6bb
Coding style fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
160
diff
changeset
|
1476 |
223
7875436125dd
Variable names clarification and cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
222
diff
changeset
|
1477 logmsg("measured N3=%.3f", measured); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1478 |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1479 // back to nominal frep |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1480 ad9912_ramp_frequency_w(&ad9912, 0, f0_DDS[0], FREP_STEP_SIZE); |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1481 ad9912_set_frequency_w(&ad9912, 1, f0_DDS[1]); |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1482 ad9912_set_frequency_w(&ad9912, 3, f0_DDS[3]); |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1483 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1484 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]); |
217
fefe921a9784
Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
216
diff
changeset
|
1485 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]); |
47
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1486 |
1d3cd8260cbb
Uniform N3 measurement code to N1 and N2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
46
diff
changeset
|
1487 // done |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1488 n_measurement[SR] = N_MEASUREMENT_NONE; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1489 } |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1490 break; |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1491 } |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1492 |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1493 // beatnote sign determination |
266
dfbee05fe464
Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
257
diff
changeset
|
1494 if ((beatsign.measure != NONE) && |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1495 (utc > beatsign.t0 + 2.0)) { |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1496 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1497 int f_beat_sign, f_rep_sign = 0; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1498 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1499 switch (beatsign.measure) { |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1500 case LO: |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1501 f_rep_sign = (Math1 > beatsign.f_rep_zero) ? -1 : 1; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1502 Sign1 = f_rep_sign; |
125
37535873ee83
Rename variables from SigneX to SignX
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
124
diff
changeset
|
1503 SetCtrlVal(MainPanel, PANEL_SIGN1, Sign1); |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1504 break; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1505 case HG: |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1506 f_rep_sign = (Math1 > beatsign.f_rep_zero) ? -1 : 1; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1507 f_beat_sign = (Ch2 > beatsign.f_beat_zero) ? -1 : 1; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1508 Sign2 = f_rep_sign * f_beat_sign; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1509 SetCtrlVal(MainPanel, PANEL_SIGN2, Sign2); |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1510 break; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1511 case SR: |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1512 f_rep_sign = (Math1 > beatsign.f_rep_zero) ? -1 : 1; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1513 f_beat_sign = (Ch3 > beatsign.f_beat_zero) ? -1 : 1; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1514 Sign3 = f_rep_sign * f_beat_sign; |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1515 SetCtrlVal(MainPanel, PANEL_SIGN3, Sign3); |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1516 break; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1517 } |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1518 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1519 // back to original repetition rate |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1520 ad9912_set_frequency_w(&ad9912, 0, beatsign.f0_DDS); |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1521 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1522 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1523 // measurement done |
266
dfbee05fe464
Fix beatnote sign measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
257
diff
changeset
|
1524 beatsign.measure = NONE; |
220
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1525 |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1526 // in the case of the optical beatnotes sign measurement |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1527 // we induce fairly small steps in f_rep therefore it is |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1528 // good to check that we get the sign of the comb locking |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1529 // beatnote right in those cases |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1530 if (f_rep_sign != Sign1) |
28a4ff70fe48
Rework beatnote sign determination. Fix Sign3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
217
diff
changeset
|
1531 logmessage(ERROR, "merasured f_rep_sign does not agree with previous determination!"); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1532 } |
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1533 |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
1534 // select dedrift reference |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
1535 double f = 0.0; |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
1536 switch (dedrift.reference) { |
267
1de805d2d37a
Reuse beatnote enum also for dedrift reference selection
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
266
diff
changeset
|
1537 case MICROWAVE: |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
1538 f = Math2; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1539 break; |
267
1de805d2d37a
Reuse beatnote enum also for dedrift reference selection
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
266
diff
changeset
|
1540 case HG: |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
1541 f = Ch2 * 1062.5 / 1542.2; |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1542 break; |
70
a945f2b7bef6
Fix slope measurement again
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
69
diff
changeset
|
1543 } |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
1544 |
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
1545 // dedrift |
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
1546 dedrift_update(f); |
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
1547 |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
1548 // recenter |
256
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
1549 recenter_update(); |
158
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1550 |
254
67c8ace9d5f6
Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents:
253
diff
changeset
|
1551 struct tm *time = gmtime(&ev.time.tv_sec); |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
1552 // round to milliseconds |
238
78fdba868884
Drop ChX global variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
237
diff
changeset
|
1553 int msec = round(ev.time.tv_usec / 1000.0); |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
1554 while (msec >= 1000) { |
254
67c8ace9d5f6
Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents:
253
diff
changeset
|
1555 time->tm_sec += 1; |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
1556 msec -= 1000; |
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
1557 } |
254
67c8ace9d5f6
Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents:
253
diff
changeset
|
1558 // format time |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
1559 char timestr[24]; |
254
67c8ace9d5f6
Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents:
253
diff
changeset
|
1560 int len = strftime(timestr, sizeof(timestr), "%d/%m/%Y %H:%M:%S", time); |
91
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
1561 snprintf(timestr + len, sizeof(timestr) - len, ".%03d", msec); |
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
1562 // display local time |
4102fe614df2
Fix timestamping. Cleanup data providers
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
89
diff
changeset
|
1563 SetCtrlVal(MainPanel, PANEL_TIME, timestr); |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
1564 |
254
67c8ace9d5f6
Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents:
253
diff
changeset
|
1565 // run id derived from current date in the form YYMMDD |
76
5e0c314528bf
Refactor data writing to disk. Implement dayly chunking to separate files
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
75
diff
changeset
|
1566 char id[7]; |
254
67c8ace9d5f6
Save time strings in UTC time and rotate datafiles at midnight UTC
Daniele Nicolodi <daniele@grinta.net>
parents:
253
diff
changeset
|
1567 strftime(id, sizeof(id), "%y%m%d", time); |
88
9b7588cd4013
Move data acquisition into separate thread
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
87
diff
changeset
|
1568 |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
1569 // write datafiles |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
1570 for (struct datafile *d = datafiles; d->data; d++) |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
1571 datafile_append(d, id, timestr); |
119
f9fb17fb64cc
Add Sr frequency logging to disk and to Sr data logger
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
118
diff
changeset
|
1572 |
f9fb17fb64cc
Add Sr frequency logging to disk and to Sr data logger
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
118
diff
changeset
|
1573 // send Sr frequency (Math4) to Sr data logger |
169
97112b45b838
Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
168
diff
changeset
|
1574 sr_datalogger_send(&datalogger, utc, Math4); |
240
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
1575 |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
1576 // publish data through ZMQ |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
1577 int r = zmq_xpub(zmqsocket, "RAW", &ev, sizeof(ev)); |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
1578 if (r) |
7fd5cb857d07
Add data pubblication through ZMQ socket
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
238
diff
changeset
|
1579 logmessage(ERROR, "cannot send data through ZMQ socket: %s", zmq_strerror(r)); |
44
2e37910b28bc
Simplify logic and reindent
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
43
diff
changeset
|
1580 } |
0 | 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 | |
1615 int CVICALLBACK CB_ChangeDDSOut (int panel, int control, int event, | |
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 | |
1645 int CVICALLBACK CB_ChangeDDSStep (int panel, int control, int event, | |
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; |
0 | 1678 |
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; |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
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; |
0 | 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); |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1790 } |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1791 break; |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1792 case PANEL_N3CALCULUS: |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1793 GetPanelAttribute(CalcNPanel, ATTR_VISIBLE, &visible); |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1794 if (! visible) { |
227
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
1795 SetPanelAttribute(CalcNPanel, ATTR_CALLBACK_DATA, INT_TO_PTR(SR)); |
158
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1796 SetPanelAttribute(CalcNPanel, ATTR_TITLE, "Measure N_Sr"); |
268
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1797 SetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, integration_time[SR]); |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1798 SetCtrlVal(CalcNPanel, CALCN_SLOPETIME, slope_time[SR]); |
ec4462c7f8b7
Extensive cleanup of beatnote specific variables
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
267
diff
changeset
|
1799 SetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, delta_f_lock[SR] / 1000.0); |
132
fbd72d87b4dc
Support graceful intrerruption of N3 measurement. Minor user interface fixes
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
130
diff
changeset
|
1800 SetCtrlVal(CalcNPanel, CALCN_N, 0.0); |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1801 DisplayPanel(CalcNPanel); |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1802 } |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1803 break; |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1804 } |
0 | 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; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1815 |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
1816 switch (event) { |
0 | 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; |
f609fb29536b
Simplification and code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
159
diff
changeset
|
1856 |
17
9cadd12e7722
Implement N3 measurement. Large code cleanup.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
14
diff
changeset
|
1857 switch (event) { |
0 | 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 } |
158
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1881 |
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1882 // update DDS frequencies display |
196
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1883 SetCtrlVal(MainPanel, PANEL_DDS1, ad9912.frequency[0]); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1884 SetCtrlVal(MainPanel, PANEL_DDS2, ad9912.frequency[1]); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1885 SetCtrlVal(MainPanel, PANEL_DDS3, ad9912.frequency[2]); |
87dae6d62a61
New AD9912 client code to communicate with improved server code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
187
diff
changeset
|
1886 SetCtrlVal(MainPanel, PANEL_DDS4, ad9912.frequency[3]); |
158
9154291658ef
Simplify DDS frequency juggling in N measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
156
diff
changeset
|
1887 |
0 | 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 | |
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 |
217
fefe921a9784
Use DDS4 for shifting Sr beatnote frequency to 10 kHz
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
216
diff
changeset
|
1931 int CVICALLBACK CB_AdjustDDSFreq (int panel, int control, int event, |
0 | 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 |
144 | 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 | |
144 | 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(); |
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
1985 break; |
33 | 1986 } |
0 | 1987 return 0; |
1988 } | |
1989 | |
14
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
1990 int CVICALLBACK CB_OnResetSlope (int panel, int control, int event, |
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
1991 void *callbackData, int eventData1, int eventData2) |
0 | 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: |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
1996 dedrift.applied = 0.0; |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
1997 SetCtrlVal(panel, PANEL_SLOPE_APPLIED, dedrift.applied); |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
1998 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied); |
245
b1dc2ba9a315
Revise dedrift automatic slope update disable logic
Daniele Nicolodi <daniele@grinta.net>
parents:
240
diff
changeset
|
1999 logmsg("dedrift: reset"); |
0 | 2000 break; |
14
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
2001 } |
0 | 2002 return 0; |
2003 } | |
2004 | |
14
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
2005 int CVICALLBACK CB_ChangeSlopeTime (int panel, int control, int event, |
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
2006 void *callbackData, int eventData1, int eventData2) |
0 | 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: |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
2011 GetCtrlVal(MainPanel, PANEL_SLOPETIME, &dedrift.interval); |
0 | 2012 break; |
14
783407954cdf
Minor code cleanup
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
10
diff
changeset
|
2013 } |
0 | 2014 return 0; |
2015 } | |
2016 | |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
2017 int CVICALLBACK CB_OnDedriftSettingsChange (int panel, int control, int event, |
0 | 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 | |
139 | 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 | |
56
6e73fb3d94fa
Simplyfy slope measurement code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
55
diff
changeset
|
2063 int CVICALLBACK CB_OnStopSlopeCancellingOnUnlocked (int panel, int control, int event, |
0 | 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: |
46fe62febcd0
Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
79
diff
changeset
|
2120 // stop slope measurement and reset slope |
133
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
2121 dedrift.enabled = FALSE; |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
2122 SetCtrlVal(panel, PANEL_MEASURE_SLOPE, 0); |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
2123 dedrift.applied = 0.0; |
7540703b8473
Major code cleanup. Implement beatnote recentering.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
132
diff
changeset
|
2124 SetCtrlVal(panel, PANEL_SLOPE_APPLIED, dedrift.applied); |
80
46fe62febcd0
Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
79
diff
changeset
|
2125 // reset DDS |
232
52f882f39c16
Implement correction proportional to frequency in dedrift code
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
231
diff
changeset
|
2126 ad9956_set_w(&ad9956, dedrift.fDDS, dedrift.applied); |
80
46fe62febcd0
Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
79
diff
changeset
|
2127 break; |
46fe62febcd0
Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
79
diff
changeset
|
2128 } |
46fe62febcd0
Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
79
diff
changeset
|
2129 return 0; |
46fe62febcd0
Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
79
diff
changeset
|
2130 } |
46fe62febcd0
Add dedrifting DDS reset functionality
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
79
diff
changeset
|
2131 |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2132 int CVICALLBACK CB_ShowLog (int panel, int control, int event, |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2133 void *callbackData, int eventData1, int eventData2) |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2134 { |
122
bdd3ec3c212e
Improve user interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
121
diff
changeset
|
2135 int visible; |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2136 switch (event) |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2137 { |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2138 case EVENT_COMMIT: |
199
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2139 GetCtrlVal(panel, control, &visible); |
169
97112b45b838
Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
168
diff
changeset
|
2140 logger_panel_visible(visible); |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2141 break; |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2142 } |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2143 return 0; |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2144 } |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2145 |
199
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2146 int CVICALLBACK CB_ShowError (int panel, int control, int event, |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2147 void *callbackData, int eventData1, int eventData2) |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2148 { |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2149 switch (event) |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2150 { |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2151 case EVENT_COMMIT: |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2152 logger_panel_visible(TRUE); |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2153 SetCtrlVal(panel, control, FALSE); |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2154 SetCtrlVal(panel, PANEL_SHOWLOG, TRUE); |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2155 break; |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2156 } |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2157 return 0; |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2158 } |
111610d871af
Show error state in main user inteface panel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
198
diff
changeset
|
2159 |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2160 int CVICALLBACK CB_OnLoggingPanelEvent(int panel, int event, |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2161 void *callbackData, int eventData1, int eventData2) |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2162 { |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2163 switch (event) |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2164 { |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2165 case EVENT_CLOSE: |
169
97112b45b838
Get Sr data logger parameters from configuration file. Code reorganization.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
168
diff
changeset
|
2166 logger_panel_visible(0); |
122
bdd3ec3c212e
Improve user interface
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
121
diff
changeset
|
2167 SetCtrlVal(MainPanel, PANEL_SHOWLOG, 0); |
84
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2168 break; |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2169 } |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2170 return 0; |
c03263186dd7
Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
82
diff
changeset
|
2171 } |
109
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2172 |
198
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2173 int CVICALLBACK CB_BeatnoteSign (int panel, int control, int event, |
109
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2174 void *callbackData, int eventData1, int eventData2) |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2175 { |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2176 switch (event) |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2177 { |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2178 case EVENT_COMMIT: |
198
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2179 switch(control) { |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2180 case PANEL_SIGN1: |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2181 GetCtrlVal(panel, control, &Sign1); |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2182 break; |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2183 case PANEL_SIGN2: |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2184 GetCtrlVal(panel, control, &Sign2); |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2185 break; |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2186 case PANEL_SIGN3: |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2187 GetCtrlVal(panel, control, &Sign3); |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2188 break; |
5cac684eb12e
Fix manual beatnote sign setting
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
196
diff
changeset
|
2189 } |
109
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2190 break; |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2191 } |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2192 return 0; |
2a9f8a811d87
Fix N3 measurement
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
105
diff
changeset
|
2193 } |
123
35861fe64d14
Allow to set dedrift DDS central frequency. Add option to double applied slope.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
122
diff
changeset
|
2194 |
142
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2195 int CVICALLBACK CB_SaveData (int panel, int control, int event, |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2196 void *callbackData, int eventData1, int eventData2) |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2197 { |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2198 switch (event) |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2199 { |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2200 case EVENT_COMMIT: |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2201 for (struct datafile *d = datafiles; d->data; d++) { |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2202 if (d->control == control) |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2203 GetCtrlVal(panel, control, &(d->write)); |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2204 } |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2205 break; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2206 } |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2207 return 0; |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2208 } |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2209 |
fd085d61e4ca
Rework data logging
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
140
diff
changeset
|
2210 |
139 | 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 // |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2296 // N estimate |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2297 // |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2298 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2299 static void estimateN (void) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2300 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2301 double nu, fbeat, frep, N; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2302 int sign; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2303 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2304 GetCtrlVal(EstimateNPanel, ESTIMATEN_FREQUENCY, &nu); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2305 GetCtrlVal(EstimateNPanel, ESTIMATEN_FREP, &frep); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2306 GetCtrlVal(EstimateNPanel, ESTIMATEN_FBEAT, &fbeat); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2307 GetCtrlVal(EstimateNPanel, ESTIMATEN_SIGN, &sign); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2308 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2309 N = (nu * 1.0e12 - sign * fbeat) / frep; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2310 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2311 SetCtrlVal(EstimateNPanel, ESTIMATEN_N, N); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2312 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2313 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2314 int CVICALLBACK cb_onEstimateN (int panel, int control, int event, |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2315 void *callbackData, int eventData1, int eventData2) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2316 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2317 int visible; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2318 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2319 switch (event) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2320 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2321 case EVENT_COMMIT: |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2322 // reset N estimate |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2323 SetCtrlVal(EstimateNPanel, ESTIMATEN_N, 0.0); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2324 // set current frep |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2325 SetCtrlVal(EstimateNPanel, ESTIMATEN_FREP, 250e6 + Math1); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2326 switch (control) { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2327 case PANEL_ESTIMATE_N2: |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2328 // expected frequency |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2329 SetCtrlVal(EstimateNPanel, ESTIMATEN_FREQUENCY, HG_FREQUENCY); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2330 SetCtrlVal(EstimateNPanel, ESTIMATEN_WAVELENGTH, HG_WAVELENGTH); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2331 // sign |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2332 SetCtrlVal(EstimateNPanel, ESTIMATEN_SIGN, (int)Sign2); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2333 // f_DDS |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2334 SetCtrlVal(EstimateNPanel, ESTIMATEN_FDDS, ad9912.frequency[2]); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2335 // f_counter |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2336 SetCtrlVal(EstimateNPanel, ESTIMATEN_FDDS, Ch2); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2337 // f_beat |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2338 SetCtrlVal(EstimateNPanel, ESTIMATEN_FBEAT, ad9912.frequency[2] - Ch2); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2339 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2340 SetPanelAttribute(EstimateNPanel, ATTR_TITLE, "Estimate N_Hg"); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2341 SetPanelAttribute(EstimateNPanel, ATTR_CALLBACK_DATA, INT_TO_PTR(HG)); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2342 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2343 case PANEL_ESTIMATE_N3: |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2344 // expected frequency |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2345 SetCtrlVal(EstimateNPanel, ESTIMATEN_FREQUENCY, SR_FREQUENCY); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2346 SetCtrlVal(EstimateNPanel, ESTIMATEN_WAVELENGTH, SR_WAVELENGTH); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2347 // sign |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2348 SetCtrlVal(EstimateNPanel, ESTIMATEN_SIGN, (int)Sign3); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2349 // f_DDS |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2350 SetCtrlVal(EstimateNPanel, ESTIMATEN_FDDS, ad9912.frequency[3]); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2351 // f_counter |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2352 SetCtrlVal(EstimateNPanel, ESTIMATEN_FDDS, Ch3); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2353 // f_beat |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2354 SetCtrlVal(EstimateNPanel, ESTIMATEN_FBEAT, ad9912.frequency[3] - Ch3); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2355 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2356 SetPanelAttribute(EstimateNPanel, ATTR_TITLE, "Estimate N_Sr"); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2357 SetPanelAttribute(EstimateNPanel, ATTR_CALLBACK_DATA, INT_TO_PTR(SR)); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2358 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2359 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2360 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2361 // display dialog |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2362 GetPanelAttribute(EstimateNPanel, ATTR_VISIBLE , &visible); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2363 if (! visible) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2364 DisplayPanel(EstimateNPanel); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2365 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2366 // compute |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2367 estimateN(); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2368 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2369 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2370 return 0; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2371 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2372 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2373 int CVICALLBACK cb_onEstimateNWaveleght (int panel, int control, int event, |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2374 void *callbackData, int eventData1, int eventData2) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2375 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2376 double wavelenght, frequency; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2377 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2378 switch (event) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2379 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2380 case EVENT_COMMIT: |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2381 GetCtrlVal(panel, control, &wavelenght); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2382 frequency = SPEED_OF_LIGHT / (wavelenght * 1.0e-9) / 1.0e12; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2383 SetCtrlVal(panel, ESTIMATEN_FREQUENCY, frequency); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2384 estimateN(); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2385 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2386 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2387 return 0; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2388 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2389 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2390 int CVICALLBACK cb_onEstimateNFrequency (int panel, int control, int event, |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2391 void *callbackData, int eventData1, int eventData2) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2392 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2393 double wavelenght, frequency; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2394 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2395 switch (event) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2396 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2397 case EVENT_COMMIT: |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2398 GetCtrlVal(panel, control, &frequency); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2399 wavelenght = SPEED_OF_LIGHT / (frequency * 1.0e12) / 1.0e-9; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2400 SetCtrlVal(panel, ESTIMATEN_WAVELENGTH, wavelenght); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2401 estimateN(); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2402 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2403 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2404 return 0; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2405 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2406 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2407 int CVICALLBACK cb_onEstimateNChange (int panel, int control, int event, |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2408 void *callbackData, int eventData1, int eventData2) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2409 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2410 switch (event) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2411 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2412 case EVENT_COMMIT: |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2413 estimateN(); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2414 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2415 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2416 return 0; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2417 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2418 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2419 int CVICALLBACK cb_onEstimateNClose (int panel, int control, int event, |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2420 void *callbackData, int eventData1, int eventData2) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2421 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2422 int visible; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2423 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2424 switch (event) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2425 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2426 case EVENT_COMMIT: |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2427 GetPanelAttribute(panel, ATTR_VISIBLE, &visible); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2428 if (visible) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2429 HidePanel(panel); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2430 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2431 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2432 return 0; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2433 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2434 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2435 int CVICALLBACK cb_onEstimateNSet (int panel, int control, int event, |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2436 void *callbackData, int eventData1, int eventData2) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2437 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2438 void *v; |
230
9e240adb3053
Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
228
diff
changeset
|
2439 double n; |
227
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2440 int estimate = 0; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2441 |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2442 switch (event) |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2443 { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2444 case EVENT_COMMIT: |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2445 GetPanelAttribute(panel, ATTR_CALLBACK_DATA, &v); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2446 estimate = PTR_TO_INT(v); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2447 switch (estimate) { |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2448 case HG: |
230
9e240adb3053
Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
228
diff
changeset
|
2449 GetCtrlVal(panel, ESTIMATEN_N, &n); |
9e240adb3053
Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
228
diff
changeset
|
2450 N2 = round(n); |
227
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2451 SetCtrlVal(MainPanel, PANEL_N2, N2); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2452 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2453 case SR: |
230
9e240adb3053
Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
228
diff
changeset
|
2454 GetCtrlVal(panel, ESTIMATEN_N, &n); |
9e240adb3053
Fix N estimate to properly round
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
228
diff
changeset
|
2455 N3 = round(n); |
227
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2456 SetCtrlVal(MainPanel, PANEL_N3, N3); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2457 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2458 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2459 HidePanel(panel); |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2460 break; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2461 } |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2462 return 0; |
a2f99632a80c
Implement N estimate tacking into account measured beatnote frequency
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
226
diff
changeset
|
2463 } |
256
708de02ef948
Implement limit to frequency adjustment during recenter
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
254
diff
changeset
|
2464 |