@@ -0,0 +1,44 | |||
|
1 | #ifndef PARAMS_H | |
|
2 | #define PARAMS_H | |
|
3 | ||
|
4 | #define XMAX 2048 | |
|
5 | #define YMAX 10000 | |
|
6 | #define FONT_SIZE_WAVEFORM_TITLE 10 | |
|
7 | #define DEFAULT_SIZE 2048 | |
|
8 | #define BLK_SIZE 12 | |
|
9 | ||
|
10 | //**************** | |
|
11 | // TM packets SIDs | |
|
12 | #define SID_NORMAL_SWF_F0 3 | |
|
13 | #define SID_NORMAL_SWF_F1 4 | |
|
14 | #define SID_NORMAL_SWF_F2 5 | |
|
15 | #define SID_NORMAL_CWF_F3 1 | |
|
16 | #define SID_NORMAL_ASM_F0 11 | |
|
17 | #define SID_NORMAL_ASM_F1 12 | |
|
18 | #define SID_NORMAL_ASM_F2 13 | |
|
19 | #define SID_NORMAL_BP1_F0 14 | |
|
20 | #define SID_NORMAL_BP1_F1 15 | |
|
21 | #define SID_NORMAL_BP1_F2 16 | |
|
22 | #define SID_NORMAL_BP2_F0 19 | |
|
23 | #define SID_NORMAL_BP2_F1 20 | |
|
24 | #define SID_NORMAL_BP2_F2 21 | |
|
25 | // | |
|
26 | #define SID_BURST_CWF_F2 2 | |
|
27 | #define SID_BURST_BP1_F0 17 | |
|
28 | #define SID_BURST_BP2_F0 22 | |
|
29 | #define SID_BURST_BP1_F1 18 | |
|
30 | #define SID_BURST_BP2_F1 23 | |
|
31 | // | |
|
32 | #define SID_SBM1_CWF_F1 24 | |
|
33 | #define SID_SBM1_BP1_F0 28 | |
|
34 | #define SID_SBM1_BP2_F0 31 | |
|
35 | // | |
|
36 | #define SID_SBM2_CWF_F2 25 | |
|
37 | #define SID_SBM2_BP1_F0 29 | |
|
38 | #define SID_SBM2_BP2_F0 32 | |
|
39 | #define SID_SBM2_BP1_F1 30 | |
|
40 | #define SID_SBM2_BP2_F1 33 | |
|
41 | ||
|
42 | #define RMAP_DEFAULT_SOURCE_ADDRESS 1 | |
|
43 | ||
|
44 | #endif // PARAMS_H |
This diff has been collapsed as it changes many lines, (517 lines changed) Show them Hide them | |||
@@ -0,0 +1,517 | |||
|
1 | #include "tmstatistics.h" | |
|
2 | #include <QtGui> | |
|
3 | #include <QFontInfo> | |
|
4 | ||
|
5 | TMStatistics::TMStatistics(QWidget *parent) : | |
|
6 | QWidget(parent) | |
|
7 | { | |
|
8 | // Create Fonts | |
|
9 | QFont font; | |
|
10 | font = QFont(this->fontInfo().family(), STATISTICS_FONT_SIZE, QFont::Light); | |
|
11 | ||
|
12 | label_UNKNOWN = new QLabel("UNKNOWN"); | |
|
13 | label_UNKNOWN_nb = new QLabel("-"); | |
|
14 | ||
|
15 | mainLayout = new QGridLayout(); | |
|
16 | layout_stat = new QGridLayout(); // TM stastictics | |
|
17 | layout_NORM = new QGridLayout(); // TM_LFR_SCIENCE_NORMAL_ | |
|
18 | layout_BURST = new QGridLayout(); // TM_LFR_SCIENCE_BURST_ | |
|
19 | layout_SBM1 = new QGridLayout(); // TM_LFR_SCIENCE_SBM1_ | |
|
20 | layout_SBM2 = new QGridLayout(); // TM_LFR_SCIENCE_SBM2_ | |
|
21 | layout_last = new QGridLayout(); // last TM description | |
|
22 | ||
|
23 | //*************** | |
|
24 | // TM_LFR_TC_EXE_ | |
|
25 | label_SUCC = new QLabel("SUCCESS"); | |
|
26 | label_INCO = new QLabel("INCONSISTENT"); | |
|
27 | label_NOTE = new QLabel("NOT_EXECUTABLE"); | |
|
28 | label_NOTI = new QLabel("NOT_IMPLEMENTED"); | |
|
29 | label_ERRO = new QLabel("ERROR"); | |
|
30 | label_CORR = new QLabel("CORRUPTED"); | |
|
31 | label_HK = new QLabel("TM_LFR_HK"); | |
|
32 | // | |
|
33 | label_SUCC_nb = new QLabel("-"); | |
|
34 | label_INCO_nb = new QLabel("-"); | |
|
35 | label_NOTE_nb = new QLabel("-"); | |
|
36 | label_NOTI_nb = new QLabel("-"); | |
|
37 | label_ERRO_nb = new QLabel("-"); | |
|
38 | label_CORR_nb = new QLabel("-"); | |
|
39 | label_HK_nb = new QLabel("-"); | |
|
40 | ||
|
41 | //*********************** | |
|
42 | // TM_LFR_SCIENCE_NORMAL_ | |
|
43 | label_NORM_SWF_F0 = new QLabel("SWF_F0"); | |
|
44 | label_NORM_SWF_F1 = new QLabel("SWF_F1"); | |
|
45 | label_NORM_SWF_F2 = new QLabel("SWF_F2"); | |
|
46 | label_NORM_CWF_F3 = new QLabel("CWF_F3"); | |
|
47 | label_NORM_ASM_F0 = new QLabel("ASM_F0"); | |
|
48 | label_NORM_ASM_F1 = new QLabel("ASM_F1"); | |
|
49 | label_NORM_ASM_F2 = new QLabel("ASM_F2"); | |
|
50 | label_NORM_BP1_F0 = new QLabel("BP1_F0"); | |
|
51 | label_NORM_BP1_F1 = new QLabel("BP1_F1"); | |
|
52 | label_NORM_BP1_F2 = new QLabel("BP1_F2"); | |
|
53 | label_NORM_BP2_F0 = new QLabel("BP2_F0"); | |
|
54 | label_NORM_BP2_F1 = new QLabel("BP2_F1"); | |
|
55 | label_NORM_BP2_F2 = new QLabel("BP2_F2"); | |
|
56 | // | |
|
57 | label_NORM_SWF_F0_nb = new QLabel("-"); | |
|
58 | label_NORM_SWF_F1_nb = new QLabel("-"); | |
|
59 | label_NORM_SWF_F2_nb = new QLabel("-"); | |
|
60 | label_NORM_CWF_F3_nb = new QLabel("-"); | |
|
61 | label_NORM_ASM_F0_nb = new QLabel("-"); | |
|
62 | label_NORM_ASM_F1_nb = new QLabel("-"); | |
|
63 | label_NORM_ASM_F2_nb = new QLabel("-"); | |
|
64 | label_NORM_BP1_F0_nb = new QLabel("-"); | |
|
65 | label_NORM_BP1_F1_nb = new QLabel("-"); | |
|
66 | label_NORM_BP1_F2_nb = new QLabel("-"); | |
|
67 | label_NORM_BP2_F0_nb = new QLabel("-"); | |
|
68 | label_NORM_BP2_F1_nb = new QLabel("-"); | |
|
69 | label_NORM_BP2_F2_nb = new QLabel("-"); | |
|
70 | ||
|
71 | //********************** | |
|
72 | // TM_LFR_SCIENCE_BURST_ | |
|
73 | label_BURST_CWF_F2 = new QLabel("CWF_F3"); | |
|
74 | label_BURST_BP1_F0 = new QLabel("BP1_F0"); | |
|
75 | label_BURST_BP2_F0 = new QLabel("BP2_F0"); | |
|
76 | label_BURST_BP1_F1 = new QLabel("BP1_F1"); | |
|
77 | label_BURST_BP2_F1 = new QLabel("BP2_F1"); | |
|
78 | // | |
|
79 | label_BURST_CWF_F2_nb = new QLabel("-"); | |
|
80 | label_BURST_BP1_F0_nb = new QLabel("-"); | |
|
81 | label_BURST_BP2_F0_nb = new QLabel("-"); | |
|
82 | label_BURST_BP1_F1_nb = new QLabel("-"); | |
|
83 | label_BURST_BP2_F1_nb = new QLabel("-"); | |
|
84 | ||
|
85 | //********************* | |
|
86 | // TM_LFR_SCIENCE_SBM1_ | |
|
87 | label_SBM1_CWF_F1 = new QLabel("CWF_F1"); | |
|
88 | label_SBM1_BP1_F0 = new QLabel("BP1_F0"); | |
|
89 | label_SBM1_BP2_F0 = new QLabel("BP2_F0"); | |
|
90 | // | |
|
91 | label_SBM1_CWF_F1_nb = new QLabel("-"); | |
|
92 | label_SBM1_BP1_F0_nb = new QLabel("-"); | |
|
93 | label_SBM1_BP2_F0_nb = new QLabel("-"); | |
|
94 | ||
|
95 | //********************* | |
|
96 | // TM_LFR_SCIENCE_SBM2_ | |
|
97 | label_SBM2_CWF_F2 = new QLabel("CWF_F2"); | |
|
98 | label_SBM2_BP1_F0 = new QLabel("BP1_F0"); | |
|
99 | label_SBM2_BP2_F0 = new QLabel("BP2_F0"); | |
|
100 | label_SBM2_BP1_F1 = new QLabel("BP1_F1"); | |
|
101 | label_SBM2_BP2_F1 = new QLabel("BP2_F1"); | |
|
102 | // | |
|
103 | label_SBM2_CWF_F2_nb = new QLabel("-"); | |
|
104 | label_SBM2_BP1_F0_nb = new QLabel("-"); | |
|
105 | label_SBM2_BP2_F0_nb = new QLabel("-"); | |
|
106 | label_SBM2_BP1_F1_nb = new QLabel("-"); | |
|
107 | label_SBM2_BP2_F1_nb = new QLabel("-"); | |
|
108 | ||
|
109 | //******** | |
|
110 | // LAST TM | |
|
111 | label_PID = new QLabel("PID"); | |
|
112 | label_CAT = new QLabel("CAT"); | |
|
113 | label_TYP = new QLabel("Type"); | |
|
114 | label_SUB = new QLabel("Subtype"); | |
|
115 | label_SID = new QLabel("SID"); | |
|
116 | label_SIZ = new QLabel("Length"); | |
|
117 | label_coarse_time = new QLabel("Coarse time: "); | |
|
118 | label_fine_time = new QLabel("Fine time: "); | |
|
119 | // | |
|
120 | label_PID_is = new QLabel("-"); | |
|
121 | label_CAT_is = new QLabel("-"); | |
|
122 | label_TYP_is = new QLabel("-"); | |
|
123 | label_SUB_is = new QLabel("-"); | |
|
124 | label_SID_is = new QLabel("-"); | |
|
125 | label_SIZ_is = new QLabel("-"); | |
|
126 | label_coarse_time_val = new QLabel("-"); | |
|
127 | label_fine_time_val = new QLabel("-"); | |
|
128 | ||
|
129 | // QPushButton | |
|
130 | button_reset_stat = new QPushButton("reset stat"); | |
|
131 | ||
|
132 | //********** | |
|
133 | // QGroupBox | |
|
134 | this->setStyleSheet("QGroupBox {border: 1px solid black; }"); | |
|
135 | ||
|
136 | groupbox_stat = new QGroupBox("TM_LFR_TC_EXE_"); | |
|
137 | groupbox_NORM = new QGroupBox("TM_LFR_SCIENCE_NORMAL_"); | |
|
138 | groupbox_BURST = new QGroupBox("TM_LFR_SCIENCE_BURST_"); | |
|
139 | groupbox_SBM1 = new QGroupBox("TM_LFR_SCIENCE_SBM1_"); | |
|
140 | groupbox_SBM2 = new QGroupBox("TM_LFR_SCIENCE_SBM2_"); | |
|
141 | groupbox_last = new QGroupBox("Last TM received"); | |
|
142 | ||
|
143 | groupbox_stat->setFont(font); | |
|
144 | groupbox_NORM->setFont(font); | |
|
145 | groupbox_BURST->setFont(font); | |
|
146 | groupbox_SBM1->setFont(font); | |
|
147 | groupbox_SBM2->setFont(font); | |
|
148 | groupbox_last->setFont(font); | |
|
149 | ||
|
150 | initConstants(); | |
|
151 | ||
|
152 | buildMonitor_NORM(); | |
|
153 | buildMonitor_BURST(); | |
|
154 | buildMonitor_SBM1(); | |
|
155 | buildMonitor_SBM2(); | |
|
156 | buildMonitor(); | |
|
157 | ||
|
158 | connect(this->button_reset_stat, SIGNAL(clicked()), this, SLOT(resetStatistics())); | |
|
159 | ||
|
160 | } | |
|
161 | ||
|
162 | void TMStatistics::initConstants() | |
|
163 | { | |
|
164 | UNKNOWN_nb = 0; | |
|
165 | ||
|
166 | // TM_LFR_SCIENCE_NORMAL_ | |
|
167 | SUCC_nb = 0; | |
|
168 | INCO_nb = 0; | |
|
169 | NOTE_nb = 0; | |
|
170 | NOTI_nb = 0; | |
|
171 | ERRO_nb = 0; | |
|
172 | CORR_nb = 0; | |
|
173 | HK_nb = 0; | |
|
174 | ||
|
175 | // TM_LFR_SCIENCE_NORMAL_ | |
|
176 | NORM_SWF_F0_nb = 0; | |
|
177 | NORM_SWF_F1_nb = 0; | |
|
178 | NORM_SWF_F2_nb = 0; | |
|
179 | NORM_CWF_F3_nb = 0; | |
|
180 | NORM_ASM_F0_nb = 0; | |
|
181 | NORM_ASM_F1_nb = 0; | |
|
182 | NORM_ASM_F2_nb = 0; | |
|
183 | NORM_BP1_F0_nb = 0; | |
|
184 | NORM_BP1_F1_nb = 0; | |
|
185 | NORM_BP1_F2_nb = 0; | |
|
186 | NORM_BP2_F0_nb = 0; | |
|
187 | NORM_BP2_F1_nb = 0; | |
|
188 | NORM_BP2_F2_nb = 0; | |
|
189 | ||
|
190 | BURST_CWF_F2_nb = 0; | |
|
191 | BURST_BP1_F0_nb = 0; | |
|
192 | BURST_BP2_F0_nb = 0; | |
|
193 | BURST_BP1_F1_nb = 0; | |
|
194 | BURST_BP2_F1_nb = 0; | |
|
195 | SBM1_CWF_F2_nb = 0; | |
|
196 | SBM1_BP1_F0_nb = 0; | |
|
197 | SBM1_BP2_F0_nb = 0; | |
|
198 | SBM2_CWF_F2_nb = 0; | |
|
199 | SBM2_BP1_F0_nb = 0; | |
|
200 | SBM2_BP2_F0_nb = 0; | |
|
201 | SBM2_BP1_F1_nb = 0; | |
|
202 | SBM2_BP2_F1_nb = 0; | |
|
203 | } | |
|
204 | ||
|
205 | void TMStatistics::buildMonitor_NORM() | |
|
206 | { | |
|
207 | layout_NORM->addWidget(label_NORM_SWF_F0, 0, 0, 1, 1); | |
|
208 | layout_NORM->addWidget(label_NORM_SWF_F1, 1, 0, 1, 1); | |
|
209 | layout_NORM->addWidget(label_NORM_SWF_F2, 2, 0, 1, 1); | |
|
210 | layout_NORM->addWidget(label_NORM_CWF_F3, 3, 0, 1, 1); | |
|
211 | // | |
|
212 | layout_NORM->addWidget(label_NORM_SWF_F0_nb, 0, 1, 1, 1); | |
|
213 | layout_NORM->addWidget(label_NORM_SWF_F1_nb, 1, 1, 1, 1); | |
|
214 | layout_NORM->addWidget(label_NORM_SWF_F2_nb, 2, 1, 1, 1); | |
|
215 | layout_NORM->addWidget(label_NORM_CWF_F3_nb, 3, 1, 1, 1); | |
|
216 | // | |
|
217 | layout_NORM->addWidget(label_NORM_ASM_F0, 4, 0, 1, 1); | |
|
218 | layout_NORM->addWidget(label_NORM_ASM_F1, 5, 0, 1, 1); | |
|
219 | layout_NORM->addWidget(label_NORM_ASM_F2, 6, 0, 1, 1); | |
|
220 | // | |
|
221 | layout_NORM->addWidget(label_NORM_ASM_F0_nb, 4, 1, 1, 1); | |
|
222 | layout_NORM->addWidget(label_NORM_ASM_F1_nb, 5, 1, 1, 1); | |
|
223 | layout_NORM->addWidget(label_NORM_ASM_F2_nb, 6, 1, 1, 1); | |
|
224 | // | |
|
225 | layout_NORM->addWidget(label_NORM_BP1_F0, 0, 2, 1, 1); | |
|
226 | layout_NORM->addWidget(label_NORM_BP1_F1, 1, 2, 1, 1); | |
|
227 | layout_NORM->addWidget(label_NORM_BP1_F2, 2, 2, 1, 1); | |
|
228 | layout_NORM->addWidget(label_NORM_BP2_F0, 3, 2, 1, 1); | |
|
229 | layout_NORM->addWidget(label_NORM_BP2_F1, 4, 2, 1, 1); | |
|
230 | layout_NORM->addWidget(label_NORM_BP2_F2, 5, 2, 1, 1); | |
|
231 | // | |
|
232 | layout_NORM->addWidget(label_NORM_BP1_F0_nb, 0, 3, 1, 1); | |
|
233 | layout_NORM->addWidget(label_NORM_BP1_F1_nb, 1, 3, 1, 1); | |
|
234 | layout_NORM->addWidget(label_NORM_BP1_F2_nb, 2, 3, 1, 1); | |
|
235 | layout_NORM->addWidget(label_NORM_BP2_F0_nb, 3, 3, 1, 1); | |
|
236 | layout_NORM->addWidget(label_NORM_BP2_F1_nb, 4, 3, 1, 1); | |
|
237 | layout_NORM->addWidget(label_NORM_BP2_F2_nb, 5, 3, 1, 1); | |
|
238 | } | |
|
239 | ||
|
240 | void TMStatistics::buildMonitor_BURST() | |
|
241 | { | |
|
242 | layout_BURST->addWidget(label_BURST_CWF_F2, 0, 0, 1, 1); | |
|
243 | layout_BURST->addWidget(label_BURST_BP1_F0, 1, 0, 1, 1); | |
|
244 | layout_BURST->addWidget(label_BURST_BP2_F0, 2, 0, 1, 1); | |
|
245 | layout_BURST->addWidget(label_BURST_BP1_F1, 3, 0, 1, 1); | |
|
246 | layout_BURST->addWidget(label_BURST_BP2_F1, 4, 0, 1, 1); | |
|
247 | // | |
|
248 | layout_BURST->addWidget(label_BURST_CWF_F2_nb, 0, 1, 1, 1); | |
|
249 | layout_BURST->addWidget(label_BURST_BP1_F0_nb, 1, 1, 1, 1); | |
|
250 | layout_BURST->addWidget(label_BURST_BP2_F0_nb, 2, 1, 1, 1); | |
|
251 | layout_BURST->addWidget(label_BURST_BP1_F1_nb, 3, 1, 1, 1); | |
|
252 | layout_BURST->addWidget(label_BURST_BP2_F1_nb, 4, 1, 1, 1); | |
|
253 | // | |
|
254 | layout_BURST->setRowStretch(5, 1); | |
|
255 | layout_BURST->setColumnStretch(2,1); | |
|
256 | } | |
|
257 | ||
|
258 | void TMStatistics::buildMonitor_SBM1() | |
|
259 | { | |
|
260 | layout_SBM1->addWidget(label_SBM1_CWF_F1, 0, 0, 1, 1); | |
|
261 | layout_SBM1->addWidget(label_SBM1_BP1_F0, 1, 0, 1, 1); | |
|
262 | layout_SBM1->addWidget(label_SBM1_BP2_F0, 2, 0, 1, 1); | |
|
263 | // | |
|
264 | layout_SBM1->addWidget(label_SBM1_CWF_F1_nb, 0, 1, 1, 1); | |
|
265 | layout_SBM1->addWidget(label_SBM1_BP1_F0_nb, 1, 1, 1, 1); | |
|
266 | layout_SBM1->addWidget(label_SBM1_BP2_F0_nb, 2, 1, 1, 1); | |
|
267 | // | |
|
268 | layout_SBM1->setRowStretch(3, 1); | |
|
269 | layout_SBM1->setColumnStretch(2,1); | |
|
270 | } | |
|
271 | ||
|
272 | void TMStatistics::buildMonitor_SBM2() | |
|
273 | { | |
|
274 | layout_SBM2->addWidget(label_SBM2_CWF_F2, 0, 0, 1, 1); | |
|
275 | layout_SBM2->addWidget(label_SBM2_BP1_F0, 1, 0, 1, 1); | |
|
276 | layout_SBM2->addWidget(label_SBM2_BP2_F0, 2, 0, 1, 1); | |
|
277 | layout_SBM2->addWidget(label_SBM2_BP1_F1, 3, 0, 1, 1); | |
|
278 | layout_SBM2->addWidget(label_SBM2_BP2_F1, 4, 0, 1, 1); | |
|
279 | // | |
|
280 | layout_SBM2->addWidget(label_SBM2_CWF_F2_nb, 0, 1, 1, 1); | |
|
281 | layout_SBM2->addWidget(label_SBM2_BP1_F0_nb, 1, 1, 1, 1); | |
|
282 | layout_SBM2->addWidget(label_SBM2_BP2_F0_nb, 2, 1, 1, 1); | |
|
283 | layout_SBM2->addWidget(label_SBM2_BP1_F1_nb, 3, 1, 1, 1); | |
|
284 | layout_SBM2->addWidget(label_SBM2_BP2_F1_nb, 4, 1, 1, 1); | |
|
285 | // | |
|
286 | layout_SBM2->setRowStretch(5, 1); | |
|
287 | layout_SBM2->setColumnStretch(2,1); | |
|
288 | } | |
|
289 | ||
|
290 | void TMStatistics::buildMonitor() | |
|
291 | { | |
|
292 | //*************** | |
|
293 | // TM_LFR_TC_EXE_ | |
|
294 | layout_stat->addWidget(label_SUCC, 0, 0, 1, 1); | |
|
295 | layout_stat->addWidget(label_INCO, 1, 0, 1, 1); | |
|
296 | layout_stat->addWidget(label_NOTE, 2, 0, 1, 1); | |
|
297 | layout_stat->addWidget(label_NOTI, 3, 0, 1, 1); | |
|
298 | layout_stat->addWidget(label_ERRO, 4, 0, 1, 1); | |
|
299 | layout_stat->addWidget(label_CORR, 5, 0, 1, 1); | |
|
300 | layout_stat->addWidget(label_HK, 6, 0, 1, 1); | |
|
301 | // | |
|
302 | layout_stat->addWidget(label_SUCC_nb, 0, 1, 1, 1); | |
|
303 | layout_stat->addWidget(label_INCO_nb, 1, 1, 1, 1); | |
|
304 | layout_stat->addWidget(label_NOTE_nb, 2, 1, 1, 1); | |
|
305 | layout_stat->addWidget(label_NOTI_nb, 3, 1, 1, 1); | |
|
306 | layout_stat->addWidget(label_ERRO_nb, 4, 1, 1, 1); | |
|
307 | layout_stat->addWidget(label_CORR_nb, 5, 1, 1, 1); | |
|
308 | layout_stat->addWidget(label_HK_nb, 6, 1, 1, 1); | |
|
309 | ||
|
310 | //******** | |
|
311 | // LAST TM | |
|
312 | layout_last->addWidget(label_PID, 0, 0, 1, 1); | |
|
313 | layout_last->addWidget(label_CAT, 0, 1, 1, 1); | |
|
314 | layout_last->addWidget(label_TYP, 0, 2, 1, 1); | |
|
315 | layout_last->addWidget(label_SUB, 0, 3, 1, 1); | |
|
316 | layout_last->addWidget(label_SID, 0, 4, 1, 1); | |
|
317 | layout_last->addWidget(label_SIZ, 0, 5, 1, 1); | |
|
318 | // | |
|
319 | layout_last->addWidget(label_PID_is, 1, 0, 1, 1); | |
|
320 | layout_last->addWidget(label_CAT_is, 1, 1, 1, 1); | |
|
321 | layout_last->addWidget(label_TYP_is, 1, 2, 1, 1); | |
|
322 | layout_last->addWidget(label_SUB_is, 1, 3, 1, 1); | |
|
323 | layout_last->addWidget(label_SID_is, 1, 4, 1, 1); | |
|
324 | layout_last->addWidget(label_SIZ_is, 1, 5, 1, 1); | |
|
325 | // | |
|
326 | layout_last->addWidget(label_coarse_time, 2, 0, 1, 1); | |
|
327 | layout_last->addWidget(label_coarse_time_val, 2, 1, 1, 1); | |
|
328 | layout_last->addWidget(label_fine_time, 2, 2, 1, 1); | |
|
329 | layout_last->addWidget(label_fine_time_val, 2, 3, 1, 1); | |
|
330 | // | |
|
331 | layout_last->addWidget(label_UNKNOWN, 3, 0, 1, 1); | |
|
332 | layout_last->addWidget(label_UNKNOWN_nb, 3, 1, 1, 1); | |
|
333 | ||
|
334 | //*********** | |
|
335 | // groupboxes | |
|
336 | groupbox_stat->setLayout(layout_stat); | |
|
337 | groupbox_NORM->setLayout(layout_NORM); | |
|
338 | groupbox_BURST->setLayout(layout_BURST); | |
|
339 | groupbox_SBM1->setLayout(layout_SBM1); | |
|
340 | groupbox_SBM2->setLayout(layout_SBM2); | |
|
341 | groupbox_last->setLayout(layout_last); | |
|
342 | // | |
|
343 | mainLayout->addWidget(groupbox_stat, 0, 0, 1, 1); | |
|
344 | mainLayout->addWidget(groupbox_NORM, 1, 0, 1, 1); | |
|
345 | mainLayout->addWidget(groupbox_last, 2, 0, 1, 2); | |
|
346 | mainLayout->addWidget(groupbox_SBM1, 0, 1, 1, 1); | |
|
347 | mainLayout->addWidget(groupbox_SBM2, 0, 2, 1, 1); | |
|
348 | mainLayout->addWidget(groupbox_BURST, 1, 1, 1, 1); | |
|
349 | mainLayout->addWidget(button_reset_stat, 3, 0, 1, 2); | |
|
350 | mainLayout->setColumnStretch(3, 1); | |
|
351 | mainLayout->setRowStretch(4, 1); | |
|
352 | // | |
|
353 | this->setLayout(mainLayout); | |
|
354 | } | |
|
355 | ||
|
356 | void TMStatistics::resetStatistics() | |
|
357 | { | |
|
358 | initConstants(); | |
|
359 | // | |
|
360 | label_UNKNOWN_nb->setText("-"); | |
|
361 | label_SUCC_nb->setText("-"); | |
|
362 | label_INCO_nb->setText("-"); | |
|
363 | label_NOTE_nb->setText("-"); | |
|
364 | label_NOTI_nb->setText("-"); | |
|
365 | label_ERRO_nb->setText("-"); | |
|
366 | label_CORR_nb->setText("-"); | |
|
367 | label_HK_nb->setText("-"); | |
|
368 | // | |
|
369 | label_NORM_SWF_F0_nb->setText("-"); | |
|
370 | label_NORM_SWF_F1_nb->setText("-"); | |
|
371 | label_NORM_SWF_F2_nb->setText("-"); | |
|
372 | label_NORM_CWF_F3_nb->setText("-"); | |
|
373 | // | |
|
374 | label_PID_is->setText("-"); | |
|
375 | label_CAT_is->setText("-"); | |
|
376 | label_TYP_is->setText("-"); | |
|
377 | label_SUB_is->setText("-"); | |
|
378 | label_SID_is->setText("-"); | |
|
379 | label_SIZ_is->setText("-"); | |
|
380 | // | |
|
381 | label_coarse_time_val->setText("-"); | |
|
382 | label_fine_time_val->setText("-"); | |
|
383 | } | |
|
384 | ||
|
385 | void TMStatistics::updateStatistics(unsigned char pid, unsigned char cat, | |
|
386 | unsigned char typ, unsigned char sub, | |
|
387 | unsigned int sid, unsigned int length, | |
|
388 | unsigned int coarse_t, unsigned int fine_t) | |
|
389 | { | |
|
390 | if (cat == 1) | |
|
391 | { | |
|
392 | if (typ == 1) | |
|
393 | { | |
|
394 | if (sub == 7) | |
|
395 | { | |
|
396 | SUCC_nb = SUCC_nb + 1; | |
|
397 | label_SUCC_nb->setText(QString::number(SUCC_nb)); | |
|
398 | } | |
|
399 | else if (sub == 8) | |
|
400 | { | |
|
401 | if (sid == 5) | |
|
402 | { | |
|
403 | INCO_nb = INCO_nb + 1; | |
|
404 | label_INCO_nb->setText(QString::number(INCO_nb)); | |
|
405 | } | |
|
406 | else if (sid == 40000) | |
|
407 | { | |
|
408 | NOTE_nb = NOTE_nb + 1; | |
|
409 | label_NOTE_nb->setText(QString::number(NOTE_nb)); | |
|
410 | } | |
|
411 | else if (sid == 40002) | |
|
412 | { | |
|
413 | NOTI_nb = NOTI_nb + 1; | |
|
414 | label_NOTI_nb->setText(QString::number(NOTI_nb)); | |
|
415 | } | |
|
416 | else if (sid == 40003) | |
|
417 | { | |
|
418 | ERRO_nb = ERRO_nb + 1; | |
|
419 | label_ERRO_nb->setText(QString::number(ERRO_nb)); | |
|
420 | } | |
|
421 | else if (sid == 40005) | |
|
422 | { | |
|
423 | CORR_nb = CORR_nb + 1; | |
|
424 | label_CORR_nb->setText(QString::number(CORR_nb)); | |
|
425 | } | |
|
426 | else incrementUnknown(); | |
|
427 | } | |
|
428 | else incrementUnknown(); | |
|
429 | } | |
|
430 | else | |
|
431 | incrementUnknown(); | |
|
432 | } | |
|
433 | else if (cat == 4) | |
|
434 | { | |
|
435 | if (typ == 3) | |
|
436 | { | |
|
437 | if (sub == 25) | |
|
438 | if (sid == 1) | |
|
439 | { | |
|
440 | HK_nb = HK_nb + 1; | |
|
441 | label_HK_nb->setText(QString::number(HK_nb)); | |
|
442 | } | |
|
443 | else | |
|
444 | { | |
|
445 | incrementUnknown(); | |
|
446 | } | |
|
447 | else | |
|
448 | { | |
|
449 | incrementUnknown(); | |
|
450 | } | |
|
451 | } | |
|
452 | else | |
|
453 | { | |
|
454 | incrementUnknown(); | |
|
455 | } | |
|
456 | } | |
|
457 | else if (cat == 12) | |
|
458 | { | |
|
459 | if (typ == 21) | |
|
460 | { | |
|
461 | if (sub == 3) | |
|
462 | if (sid == 1) | |
|
463 | { | |
|
464 | NORM_CWF_F3_nb = NORM_CWF_F3_nb + 1; | |
|
465 | label_NORM_CWF_F3_nb->setText(QString::number(NORM_CWF_F3_nb)); | |
|
466 | } | |
|
467 | else if (sid == 3) | |
|
468 | { | |
|
469 | NORM_SWF_F0_nb = NORM_SWF_F0_nb + 1; | |
|
470 | label_NORM_SWF_F0_nb->setText(QString::number(NORM_SWF_F0_nb)); | |
|
471 | } | |
|
472 | else if (sid == 4) | |
|
473 | { | |
|
474 | NORM_SWF_F1_nb = NORM_SWF_F1_nb + 1; | |
|
475 | label_NORM_SWF_F1_nb->setText(QString::number(NORM_SWF_F1_nb)); | |
|
476 | } | |
|
477 | else if (sid == 5) | |
|
478 | { | |
|
479 | NORM_SWF_F2_nb = NORM_SWF_F2_nb + 1; | |
|
480 | label_NORM_SWF_F2_nb->setText(QString::number(NORM_SWF_F2_nb)); | |
|
481 | } | |
|
482 | else | |
|
483 | { | |
|
484 | incrementUnknown(); | |
|
485 | } | |
|
486 | } | |
|
487 | else | |
|
488 | { | |
|
489 | incrementUnknown(); | |
|
490 | } | |
|
491 | } | |
|
492 | else | |
|
493 | { | |
|
494 | incrementUnknown(); | |
|
495 | } | |
|
496 | ||
|
497 | label_PID_is->setText(QString::number(pid)); | |
|
498 | label_CAT_is->setText(QString::number(cat)); | |
|
499 | label_TYP_is->setText(QString::number(typ)); | |
|
500 | label_SUB_is->setText(QString::number(sub)); | |
|
501 | label_SID_is->setText(QString::number(sid)); | |
|
502 | label_SIZ_is->setText(QString::number(length)); | |
|
503 | label_coarse_time_val->setText(QString::number(coarse_t, 16)); | |
|
504 | label_fine_time_val->setText(QString::number(fine_t, 16)); | |
|
505 | } | |
|
506 | ||
|
507 | void TMStatistics::incrementUnknown() | |
|
508 | { | |
|
509 | UNKNOWN_nb = UNKNOWN_nb + 1; | |
|
510 | label_UNKNOWN_nb->setText(QString::number(UNKNOWN_nb)); | |
|
511 | } | |
|
512 | ||
|
513 | ||
|
514 | ||
|
515 | ||
|
516 | ||
|
517 |
@@ -0,0 +1,205 | |||
|
1 | #ifndef TMSTATISTICS_H | |
|
2 | #define TMSTATISTICS_H | |
|
3 | ||
|
4 | #include <QWidget> | |
|
5 | #include <QLabel> | |
|
6 | #include <QPushButton> | |
|
7 | #include <QGridLayout> | |
|
8 | #include <QVBoxLayout> | |
|
9 | #include <QGroupBox> | |
|
10 | ||
|
11 | #define STATISTICS_FONT_SIZE 9 | |
|
12 | ||
|
13 | class TMStatistics : public QWidget | |
|
14 | { | |
|
15 | Q_OBJECT | |
|
16 | public: | |
|
17 | ||
|
18 | explicit TMStatistics(QWidget *parent = 0); | |
|
19 | void initConstants(); | |
|
20 | void buildMonitor_BURST(); | |
|
21 | void buildMonitor_SBM1(); | |
|
22 | void buildMonitor_SBM2(); | |
|
23 | void buildMonitor_NORM(); | |
|
24 | void buildMonitor(); | |
|
25 | void incrementUnknown(); | |
|
26 | ||
|
27 | unsigned int UNKNOWN_nb; | |
|
28 | unsigned int SUCC_nb; | |
|
29 | unsigned int INCO_nb; | |
|
30 | unsigned int NOTE_nb; | |
|
31 | unsigned int NOTI_nb; | |
|
32 | unsigned int ERRO_nb; | |
|
33 | unsigned int CORR_nb; | |
|
34 | unsigned int HK_nb; | |
|
35 | unsigned int NORM_SWF_F0_nb; | |
|
36 | unsigned int NORM_SWF_F1_nb; | |
|
37 | unsigned int NORM_SWF_F2_nb; | |
|
38 | unsigned int NORM_CWF_F3_nb; | |
|
39 | unsigned int NORM_ASM_F0_nb; | |
|
40 | unsigned int NORM_ASM_F1_nb; | |
|
41 | unsigned int NORM_ASM_F2_nb; | |
|
42 | unsigned int NORM_BP1_F0_nb; | |
|
43 | unsigned int NORM_BP1_F1_nb; | |
|
44 | unsigned int NORM_BP1_F2_nb; | |
|
45 | unsigned int NORM_BP2_F0_nb; | |
|
46 | unsigned int NORM_BP2_F1_nb; | |
|
47 | unsigned int NORM_BP2_F2_nb; | |
|
48 | // | |
|
49 | unsigned int BURST_CWF_F2_nb; | |
|
50 | unsigned int BURST_BP1_F0_nb; | |
|
51 | unsigned int BURST_BP2_F0_nb; | |
|
52 | unsigned int BURST_BP1_F1_nb; | |
|
53 | unsigned int BURST_BP2_F1_nb; | |
|
54 | unsigned int SBM1_CWF_F2_nb; | |
|
55 | unsigned int SBM1_BP1_F0_nb; | |
|
56 | unsigned int SBM1_BP2_F0_nb; | |
|
57 | unsigned int SBM2_CWF_F2_nb; | |
|
58 | unsigned int SBM2_BP1_F0_nb; | |
|
59 | unsigned int SBM2_BP2_F0_nb; | |
|
60 | unsigned int SBM2_BP1_F1_nb; | |
|
61 | unsigned int SBM2_BP2_F1_nb; | |
|
62 | ||
|
63 | //******* | |
|
64 | // QLabel | |
|
65 | QLabel *label_UNKNOWN; | |
|
66 | QLabel *label_UNKNOWN_nb; | |
|
67 | ||
|
68 | //*************** | |
|
69 | // TM_LFR_TC_EXE_ | |
|
70 | QLabel *label_SUCC; | |
|
71 | QLabel *label_INCO; | |
|
72 | QLabel *label_NOTE; | |
|
73 | QLabel *label_NOTI; | |
|
74 | QLabel *label_ERRO; | |
|
75 | QLabel *label_CORR; | |
|
76 | QLabel *label_HK; | |
|
77 | // | |
|
78 | QLabel *label_SUCC_nb; | |
|
79 | QLabel *label_INCO_nb; | |
|
80 | QLabel *label_NOTE_nb; | |
|
81 | QLabel *label_NOTI_nb; | |
|
82 | QLabel *label_ERRO_nb; | |
|
83 | QLabel *label_CORR_nb; | |
|
84 | QLabel *label_HK_nb; | |
|
85 | ||
|
86 | //*********************** | |
|
87 | // TM_LFR_SCIENCE_NORMAL_ | |
|
88 | QLabel *label_NORM_SWF_F0; | |
|
89 | QLabel *label_NORM_SWF_F1; | |
|
90 | QLabel *label_NORM_SWF_F2; | |
|
91 | QLabel *label_NORM_CWF_F3; | |
|
92 | QLabel *label_NORM_ASM_F0; | |
|
93 | QLabel *label_NORM_ASM_F1; | |
|
94 | QLabel *label_NORM_ASM_F2; | |
|
95 | QLabel *label_NORM_BP1_F0; | |
|
96 | QLabel *label_NORM_BP1_F1; | |
|
97 | QLabel *label_NORM_BP1_F2; | |
|
98 | QLabel *label_NORM_BP2_F0; | |
|
99 | QLabel *label_NORM_BP2_F1; | |
|
100 | QLabel *label_NORM_BP2_F2; | |
|
101 | // | |
|
102 | QLabel *label_NORM_SWF_F0_nb; | |
|
103 | QLabel *label_NORM_SWF_F1_nb; | |
|
104 | QLabel *label_NORM_SWF_F2_nb; | |
|
105 | QLabel *label_NORM_CWF_F3_nb; | |
|
106 | QLabel *label_NORM_ASM_F0_nb; | |
|
107 | QLabel *label_NORM_ASM_F1_nb; | |
|
108 | QLabel *label_NORM_ASM_F2_nb; | |
|
109 | QLabel *label_NORM_BP1_F0_nb; | |
|
110 | QLabel *label_NORM_BP1_F1_nb; | |
|
111 | QLabel *label_NORM_BP1_F2_nb; | |
|
112 | QLabel *label_NORM_BP2_F0_nb; | |
|
113 | QLabel *label_NORM_BP2_F1_nb; | |
|
114 | QLabel *label_NORM_BP2_F2_nb; | |
|
115 | ||
|
116 | //********************** | |
|
117 | // TM_LFR_SCIENCE_BURST_ | |
|
118 | QLabel *label_BURST_CWF_F2; | |
|
119 | QLabel *label_BURST_BP1_F0; | |
|
120 | QLabel *label_BURST_BP2_F0; | |
|
121 | QLabel *label_BURST_BP1_F1; | |
|
122 | QLabel *label_BURST_BP2_F1; | |
|
123 | // | |
|
124 | QLabel *label_BURST_CWF_F2_nb; | |
|
125 | QLabel *label_BURST_BP1_F0_nb; | |
|
126 | QLabel *label_BURST_BP2_F0_nb; | |
|
127 | QLabel *label_BURST_BP1_F1_nb; | |
|
128 | QLabel *label_BURST_BP2_F1_nb; | |
|
129 | ||
|
130 | //********************* | |
|
131 | // TM_LFR_SCIENCE_SBM1_ | |
|
132 | QLabel *label_SBM1_CWF_F1; | |
|
133 | QLabel *label_SBM1_BP1_F0; | |
|
134 | QLabel *label_SBM1_BP2_F0; | |
|
135 | // | |
|
136 | QLabel *label_SBM1_CWF_F1_nb; | |
|
137 | QLabel *label_SBM1_BP1_F0_nb; | |
|
138 | QLabel *label_SBM1_BP2_F0_nb; | |
|
139 | ||
|
140 | //********************* | |
|
141 | // TM_LFR_SCIENCE_SBM2_ | |
|
142 | QLabel *label_SBM2_CWF_F2; | |
|
143 | QLabel *label_SBM2_BP1_F0; | |
|
144 | QLabel *label_SBM2_BP2_F0; | |
|
145 | QLabel *label_SBM2_BP1_F1; | |
|
146 | QLabel *label_SBM2_BP2_F1; | |
|
147 | // | |
|
148 | QLabel *label_SBM2_CWF_F2_nb; | |
|
149 | QLabel *label_SBM2_BP1_F0_nb; | |
|
150 | QLabel *label_SBM2_BP2_F0_nb; | |
|
151 | QLabel *label_SBM2_BP1_F1_nb; | |
|
152 | QLabel *label_SBM2_BP2_F1_nb; | |
|
153 | ||
|
154 | //******** | |
|
155 | // LAST TM | |
|
156 | QLabel *label_PID; | |
|
157 | QLabel *label_CAT; | |
|
158 | QLabel *label_TYP; | |
|
159 | QLabel *label_SUB; | |
|
160 | QLabel *label_SID; | |
|
161 | QLabel *label_SIZ; | |
|
162 | QLabel *label_coarse_time; | |
|
163 | QLabel *label_fine_time; | |
|
164 | // | |
|
165 | QLabel *label_PID_is; | |
|
166 | QLabel *label_CAT_is; | |
|
167 | QLabel *label_TYP_is; | |
|
168 | QLabel *label_SUB_is; | |
|
169 | QLabel *label_SID_is; | |
|
170 | QLabel *label_SIZ_is; | |
|
171 | QLabel *label_coarse_time_val; | |
|
172 | QLabel *label_fine_time_val; | |
|
173 | ||
|
174 | // Layouts | |
|
175 | QGridLayout *mainLayout; | |
|
176 | QGridLayout *layout_stat; // TM stastictics | |
|
177 | QGridLayout *layout_NORM; // TM_LFR_SCIENCE_NORMAL_ | |
|
178 | QGridLayout *layout_BURST; // TM_LFR_SCIENCE_BURST_ | |
|
179 | QGridLayout *layout_SBM1; // TM_LFR_SCIENCE_SBM1_ | |
|
180 | QGridLayout *layout_SBM2; // TM_LFR_SCIENCE_SBM2_ | |
|
181 | QGridLayout *layout_last; // last TM description | |
|
182 | ||
|
183 | // QPushButton | |
|
184 | QPushButton *button_reset_stat; | |
|
185 | ||
|
186 | // QGroupBox | |
|
187 | QGroupBox *groupbox_stat; | |
|
188 | QGroupBox *groupbox_NORM; | |
|
189 | QGroupBox *groupbox_BURST; | |
|
190 | QGroupBox *groupbox_SBM1; | |
|
191 | QGroupBox *groupbox_SBM2; | |
|
192 | QGroupBox *groupbox_last; | |
|
193 | ||
|
194 | signals: | |
|
195 | ||
|
196 | public slots: | |
|
197 | void resetStatistics(); | |
|
198 | void updateStatistics(unsigned char pid, unsigned char cat, | |
|
199 | unsigned char typ, unsigned char sub, | |
|
200 | unsigned int sid, unsigned int length, | |
|
201 | unsigned int coarse_t, unsigned int fine_t); | |
|
202 | ||
|
203 | }; | |
|
204 | ||
|
205 | #endif // TMSTATISTICS_H |
@@ -0,0 +1,52 | |||
|
1 | #include "wfdisplay.h" | |
|
2 | #include <QApplication> | |
|
3 | ||
|
4 | WFDisplay::WFDisplay(QWidget *parent) : | |
|
5 | QWidget(parent) | |
|
6 | { | |
|
7 | waveforms_LAYOUT = new QVBoxLayout; | |
|
8 | ||
|
9 | spwTabWidget = new QTabWidget; | |
|
10 | ||
|
11 | page_f0 = new WFPage; | |
|
12 | page_f1 = new WFPage; | |
|
13 | page_f2 = new WFPage; | |
|
14 | page_f3 = new WFPage; | |
|
15 | ||
|
16 | spwTabWidget->addTab(page_f0, tr("f0")); | |
|
17 | spwTabWidget->addTab(page_f1, tr("f1")); | |
|
18 | spwTabWidget->addTab(page_f2, tr("f2")); | |
|
19 | spwTabWidget->addTab(page_f3, tr("f3")); | |
|
20 | ||
|
21 | waveforms_LAYOUT->addWidget(spwTabWidget); | |
|
22 | ||
|
23 | this->setLayout(waveforms_LAYOUT); | |
|
24 | ||
|
25 | } | |
|
26 | ||
|
27 | void WFDisplay::displayOnPlot(short *data, unsigned char num_page, unsigned char num) | |
|
28 | { | |
|
29 | QVector<double> x(XMAX), y(XMAX); | |
|
30 | ||
|
31 | for (int i=0; i<XMAX; ++i) | |
|
32 | { | |
|
33 | x[i] = i; | |
|
34 | y[i] = (double) data[i]; | |
|
35 | } | |
|
36 | switch(num_page){ | |
|
37 | case 0: | |
|
38 | page_f0->displayOnPlot(data, num); | |
|
39 | break; | |
|
40 | case 1: | |
|
41 | page_f1->displayOnPlot(data, num); | |
|
42 | break; | |
|
43 | case 2: | |
|
44 | page_f2->displayOnPlot(data, num); | |
|
45 | break; | |
|
46 | case 3: | |
|
47 | page_f3->displayOnPlot(data, num); | |
|
48 | break; | |
|
49 | } | |
|
50 | ||
|
51 | } | |
|
52 |
@@ -0,0 +1,37 | |||
|
1 | #ifndef WFDISPLAY_H | |
|
2 | #define WFDISPLAY_H | |
|
3 | ||
|
4 | #include <QWidget> | |
|
5 | #include <qcustomplot.h> | |
|
6 | #include <QGridLayout> | |
|
7 | #include <QVBoxLayout> | |
|
8 | #include <wfplot.h> | |
|
9 | #include <wfpage.h> | |
|
10 | #include <QTabWidget> | |
|
11 | #include <params.h> | |
|
12 | ||
|
13 | class WFDisplay : public QWidget | |
|
14 | { | |
|
15 | Q_OBJECT | |
|
16 | public: | |
|
17 | explicit WFDisplay(QWidget *parent = 0); | |
|
18 | ||
|
19 | WFPage * page_f0; | |
|
20 | WFPage * page_f1; | |
|
21 | WFPage * page_f2; | |
|
22 | WFPage * page_f3; | |
|
23 | ||
|
24 | QTabWidget *spwTabWidget; | |
|
25 | ||
|
26 | QVBoxLayout *waveforms_LAYOUT; | |
|
27 | ||
|
28 | void displayOnPlot(short *data, unsigned char num_page, unsigned char num); | |
|
29 | ||
|
30 | ||
|
31 | signals: | |
|
32 | ||
|
33 | public slots: | |
|
34 | ||
|
35 | }; | |
|
36 | ||
|
37 | #endif // WFDISPLAY_H |
@@ -0,0 +1,24 | |||
|
1 | #include "wfpacket.h" | |
|
2 | ||
|
3 | WFPacket::WFPacket(QObject *parent) : | |
|
4 | QObject(parent) | |
|
5 | { | |
|
6 | this->nbSamples = XMAX; | |
|
7 | // | |
|
8 | wf_v = (short*) malloc(2*XMAX); | |
|
9 | wf_e1 = (short*) malloc(2*XMAX); | |
|
10 | wf_e2 = (short*) malloc(2*XMAX); | |
|
11 | wf_b1 = (short*) malloc(2*XMAX); | |
|
12 | wf_b2 = (short*) malloc(2*XMAX); | |
|
13 | wf_b3 = (short*) malloc(2*XMAX); | |
|
14 | } | |
|
15 | ||
|
16 | WFPacket::~WFPacket() | |
|
17 | { | |
|
18 | free(wf_v); | |
|
19 | free(wf_e1); | |
|
20 | free(wf_e2); | |
|
21 | free(wf_b1); | |
|
22 | free(wf_b2); | |
|
23 | free(wf_b3); | |
|
24 | } |
@@ -0,0 +1,27 | |||
|
1 | #ifndef WFPACKET_H | |
|
2 | #define WFPACKET_H | |
|
3 | ||
|
4 | #include <QObject> | |
|
5 | #include <params.h> | |
|
6 | ||
|
7 | class WFPacket : public QObject | |
|
8 | { | |
|
9 | Q_OBJECT | |
|
10 | public: | |
|
11 | explicit WFPacket(QObject *parent = 0); | |
|
12 | ~WFPacket(); | |
|
13 | unsigned int nbSamples; | |
|
14 | short *wf_v; | |
|
15 | short *wf_e1; | |
|
16 | short *wf_e2; | |
|
17 | short *wf_b1; | |
|
18 | short *wf_b2; | |
|
19 | short *wf_b3; | |
|
20 | ||
|
21 | signals: | |
|
22 | ||
|
23 | public slots: | |
|
24 | ||
|
25 | }; | |
|
26 | ||
|
27 | #endif // WFPACKET_H |
@@ -0,0 +1,53 | |||
|
1 | #include "wfpage.h" | |
|
2 | ||
|
3 | WFPage::WFPage(QWidget *parent) : | |
|
4 | QWidget(parent) | |
|
5 | { | |
|
6 | wfPlot_v = new WFPlot(); | |
|
7 | wfPlot_e1 = new WFPlot(); | |
|
8 | wfPlot_e2 = new WFPlot(); | |
|
9 | wfPlot_b1 = new WFPlot(); | |
|
10 | wfPlot_b2 = new WFPlot(); | |
|
11 | wfPlot_b3 = new WFPlot(); | |
|
12 | // | |
|
13 | wfPlot_v->customPlot->setTitle("v"); | |
|
14 | wfPlot_e1->customPlot->setTitle("e1"); | |
|
15 | wfPlot_e2->customPlot->setTitle("e2"); | |
|
16 | wfPlot_b1->customPlot->setTitle("b1"); | |
|
17 | wfPlot_b2->customPlot->setTitle("b2"); | |
|
18 | wfPlot_b3->customPlot->setTitle("b3"); | |
|
19 | // | |
|
20 | mainLayout = new QGridLayout; | |
|
21 | mainLayout->addWidget(wfPlot_v, 0, 0, 1, 1); | |
|
22 | mainLayout->addWidget(wfPlot_e1, 0, 1, 1, 1); | |
|
23 | mainLayout->addWidget(wfPlot_e2, 0, 2, 1, 1); | |
|
24 | mainLayout->addWidget(wfPlot_b1, 1, 0, 1, 1); | |
|
25 | mainLayout->addWidget(wfPlot_b2, 1, 1, 1, 1); | |
|
26 | mainLayout->addWidget(wfPlot_b3, 1, 2, 1, 1); | |
|
27 | // | |
|
28 | this->setLayout(mainLayout); | |
|
29 | } | |
|
30 | ||
|
31 | void WFPage::displayOnPlot(short *data, unsigned char num) | |
|
32 | { | |
|
33 | switch(num){ | |
|
34 | case 0: | |
|
35 | wfPlot_v->displayOnPlot(data, DEFAULT_SIZE); | |
|
36 | break; | |
|
37 | case 1: | |
|
38 | wfPlot_e1->displayOnPlot(data, DEFAULT_SIZE); | |
|
39 | break; | |
|
40 | case 2: | |
|
41 | wfPlot_e2->displayOnPlot(data, DEFAULT_SIZE); | |
|
42 | break; | |
|
43 | case 3: | |
|
44 | wfPlot_b1->displayOnPlot(data, DEFAULT_SIZE); | |
|
45 | break; | |
|
46 | case 4: | |
|
47 | wfPlot_b2->displayOnPlot(data, DEFAULT_SIZE); | |
|
48 | break; | |
|
49 | case 5: | |
|
50 | wfPlot_b3->displayOnPlot(data, DEFAULT_SIZE); | |
|
51 | break; | |
|
52 | } | |
|
53 | } |
@@ -0,0 +1,31 | |||
|
1 | #ifndef WFPAGE_H | |
|
2 | #define WFPAGE_H | |
|
3 | ||
|
4 | #include <QWidget> | |
|
5 | #include <wfplot.h> | |
|
6 | #include <params.h> | |
|
7 | ||
|
8 | class WFPage : public QWidget | |
|
9 | { | |
|
10 | Q_OBJECT | |
|
11 | public: | |
|
12 | explicit WFPage(QWidget *parent = 0); | |
|
13 | ||
|
14 | WFPlot *wfPlot_v; | |
|
15 | WFPlot *wfPlot_e1; | |
|
16 | WFPlot *wfPlot_e2; | |
|
17 | WFPlot *wfPlot_b1; | |
|
18 | WFPlot *wfPlot_b2; | |
|
19 | WFPlot *wfPlot_b3; | |
|
20 | ||
|
21 | QGridLayout *mainLayout; | |
|
22 | ||
|
23 | void displayOnPlot(short *data, unsigned char num); | |
|
24 | ||
|
25 | signals: | |
|
26 | ||
|
27 | public slots: | |
|
28 | ||
|
29 | }; | |
|
30 | ||
|
31 | #endif // WFPAGE_H |
@@ -0,0 +1,117 | |||
|
1 | #include "wfplot.h" | |
|
2 | #include <QFontInfo> | |
|
3 | ||
|
4 | WFPlot::WFPlot(QWidget *parent) : | |
|
5 | QWidget(parent) | |
|
6 | { | |
|
7 | // Create Fonts | |
|
8 | QFont font; | |
|
9 | font = QFont(this->fontInfo().family(), FONT_SIZE_WAVEFORM_TITLE, QFont::Light); | |
|
10 | customPlot = new QCustomPlot(); | |
|
11 | mainLayout = new QVBoxLayout(); | |
|
12 | ||
|
13 | customPlot->setInteractions(QCustomPlot::iRangeDrag | QCustomPlot::iRangeZoom | QCustomPlot::iSelectAxes | | |
|
14 | QCustomPlot::iSelectLegend | QCustomPlot::iSelectPlottables | QCustomPlot::iSelectTitle); | |
|
15 | customPlot->setRangeDrag(Qt::Horizontal|Qt::Vertical); | |
|
16 | customPlot->setRangeZoom(Qt::Horizontal|Qt::Vertical); | |
|
17 | customPlot->xAxis->setRange(0, XMAX); | |
|
18 | customPlot->yAxis->setRange(-YMAX, YMAX); | |
|
19 | customPlot->setTitleFont(font); | |
|
20 | //customPlot->setupFullAxesBox(); | |
|
21 | ||
|
22 | customPlot->addGraph(); | |
|
23 | ||
|
24 | mainLayout->addWidget(customPlot); | |
|
25 | ||
|
26 | this->setLayout(mainLayout); | |
|
27 | ||
|
28 | // connect slot that ties some axis selections together (especially opposite axes): | |
|
29 | connect(customPlot, SIGNAL(selectionChangedByUser()), this, SLOT(selectionChanged())); | |
|
30 | // connect slots that takes care that when an axis is selected, only that direction can be dragged and zoomed: | |
|
31 | connect(customPlot, SIGNAL(mousePress(QMouseEvent*)), this, SLOT(mousePress())); | |
|
32 | connect(customPlot, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(mouseWheel())); | |
|
33 | } | |
|
34 | ||
|
35 | void WFPlot::selectionChanged() | |
|
36 | { | |
|
37 | /* | |
|
38 | normally, axis base line, axis tick labels and axis labels are selectable separately, but we want | |
|
39 | the user only to be able to select the axis as a whole, so we tie the selected states of the tick labels | |
|
40 | and the axis base line together. However, the axis label shall be selectable individually. | |
|
41 | ||
|
42 | The selection state of the left and right axes shall be synchronized as well as the state of the | |
|
43 | bottom and top axes. | |
|
44 | ||
|
45 | Further, we want to synchronize the selection of the graphs with the selection state of the respective | |
|
46 | legend item belonging to that graph. So the user can select a graph by either clicking on the graph itself | |
|
47 | or on its legend item. | |
|
48 | */ | |
|
49 | ||
|
50 | // make top and bottom axes be selected synchronously, and handle axis and tick labels as one selectable object: | |
|
51 | if (customPlot->xAxis->selected().testFlag(QCPAxis::spAxis) || customPlot->xAxis->selected().testFlag(QCPAxis::spTickLabels) || | |
|
52 | customPlot->xAxis2->selected().testFlag(QCPAxis::spAxis) || customPlot->xAxis2->selected().testFlag(QCPAxis::spTickLabels)) | |
|
53 | { | |
|
54 | customPlot->xAxis2->setSelected(QCPAxis::spAxis|QCPAxis::spTickLabels); | |
|
55 | customPlot->xAxis->setSelected(QCPAxis::spAxis|QCPAxis::spTickLabels); | |
|
56 | } | |
|
57 | // make left and right axes be selected synchronously, and handle axis and tick labels as one selectable object: | |
|
58 | if (customPlot->yAxis->selected().testFlag(QCPAxis::spAxis) || customPlot->yAxis->selected().testFlag(QCPAxis::spTickLabels) || | |
|
59 | customPlot->yAxis2->selected().testFlag(QCPAxis::spAxis) || customPlot->yAxis2->selected().testFlag(QCPAxis::spTickLabels)) | |
|
60 | { | |
|
61 | customPlot->yAxis2->setSelected(QCPAxis::spAxis|QCPAxis::spTickLabels); | |
|
62 | customPlot->yAxis->setSelected(QCPAxis::spAxis|QCPAxis::spTickLabels); | |
|
63 | } | |
|
64 | ||
|
65 | // synchronize selection of graphs with selection of corresponding legend items: | |
|
66 | for (int i=0; i<customPlot->graphCount(); ++i) | |
|
67 | { | |
|
68 | QCPGraph *graph = customPlot->graph(i); | |
|
69 | QCPPlottableLegendItem *item = customPlot->legend->itemWithPlottable(graph); | |
|
70 | if (item->selected() || graph->selected()) | |
|
71 | { | |
|
72 | item->setSelected(true); | |
|
73 | graph->setSelected(true); | |
|
74 | } | |
|
75 | } | |
|
76 | } | |
|
77 | ||
|
78 | void WFPlot::mousePress() | |
|
79 | { | |
|
80 | // if an axis is selected, only allow the direction of that axis to be dragged | |
|
81 | // if no axis is selected, both directions may be dragged | |
|
82 | ||
|
83 | if (customPlot->xAxis->selected().testFlag(QCPAxis::spAxis)) | |
|
84 | customPlot->setRangeDrag(customPlot->xAxis->orientation()); | |
|
85 | else if (customPlot->yAxis->selected().testFlag(QCPAxis::spAxis)) | |
|
86 | customPlot->setRangeDrag(customPlot->yAxis->orientation()); | |
|
87 | else | |
|
88 | customPlot->setRangeDrag(Qt::Horizontal|Qt::Vertical); | |
|
89 | } | |
|
90 | ||
|
91 | void WFPlot::mouseWheel() | |
|
92 | { | |
|
93 | // if an axis is selected, only allow the direction of that axis to be zoomed | |
|
94 | // if no axis is selected, both directions may be zoomed | |
|
95 | ||
|
96 | if (customPlot->xAxis->selected().testFlag(QCPAxis::spAxis)) | |
|
97 | customPlot->setRangeZoom(customPlot->xAxis->orientation()); | |
|
98 | else if (customPlot->yAxis->selected().testFlag(QCPAxis::spAxis)) | |
|
99 | customPlot->setRangeZoom(customPlot->yAxis->orientation()); | |
|
100 | else | |
|
101 | customPlot->setRangeZoom(Qt::Horizontal|Qt::Vertical); | |
|
102 | } | |
|
103 | ||
|
104 | void WFPlot::displayOnPlot(short *data, unsigned int size) | |
|
105 | { | |
|
106 | QVector<double> x(size), y(size); | |
|
107 | ||
|
108 | for (unsigned int i=0; i<size; ++i) | |
|
109 | { | |
|
110 | x[i] = i; | |
|
111 | y[i] = (double) data[i]; | |
|
112 | } | |
|
113 | ||
|
114 | customPlot->graph(0)->setData(x, y); | |
|
115 | customPlot->replot(); | |
|
116 | ||
|
117 | } |
@@ -0,0 +1,28 | |||
|
1 | #ifndef WFPLOT_H | |
|
2 | #define WFPLOT_H | |
|
3 | ||
|
4 | #include <QWidget> | |
|
5 | #include <qcustomplot.h> | |
|
6 | #include <QVBoxLayout> | |
|
7 | #include <params.h> | |
|
8 | ||
|
9 | class WFPlot : public QWidget | |
|
10 | { | |
|
11 | Q_OBJECT | |
|
12 | public: | |
|
13 | explicit WFPlot(QWidget *parent = 0); | |
|
14 | ||
|
15 | QCustomPlot * customPlot; | |
|
16 | void displayOnPlot(short *data, unsigned int size); | |
|
17 | QVBoxLayout *mainLayout; | |
|
18 | ||
|
19 | signals: | |
|
20 | ||
|
21 | public slots: | |
|
22 | void selectionChanged(); | |
|
23 | void mousePress(); | |
|
24 | void mouseWheel(); | |
|
25 | ||
|
26 | }; | |
|
27 | ||
|
28 | #endif // WFPLOT_H |
|
1 | NO CONTENT: file was removed |
|
1 | NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now