##// END OF EJS Templates
dashboard tab added to the rmapplugin...
leroy -
r46:47a6c68a9cf9 default
parent child
Show More
@@ -0,0 +1,471
1 #include "parameterdump.h"
2
3 ParameterDump::ParameterDump(QWidget *parent) :
4 QWidget(parent)
5 {
6 this->buildTabParameterDump();
7
8 packetToSend = new TCPacketToSend();
9
10 this->setLayout(layout_parameterDump);
11 }
12
13 void ParameterDump::buildTabParameterDump()
14 {
15 buildCOMM();
16 buildNORM();
17 buildBURST();
18 buildSBM1();
19 buildSBM2();
20 buildActions();
21
22 layout_parameterDump = new QGridLayout();
23
24 layout_parameterDump->addWidget(groupbox_COMM, 0, 0, 1, 1);
25 layout_parameterDump->addWidget(groupbox_NORM, 0, 1, 1, 1);
26 layout_parameterDump->addWidget(groupbox_BURST, 1, 0, 1, 1);
27 layout_parameterDump->addWidget(groupbox_ACTIONS, 1, 1, 1, 1);
28 layout_parameterDump->addWidget(groupbox_SBM1,2 , 0, 1, 1);
29 layout_parameterDump->addWidget(groupbox_SBM2, 2, 1, 1, 1);
30
31 layout_parameterDump->setRowStretch(3, 1);
32 layout_parameterDump->setColumnStretch(2, 1);
33
34 layout_parameterDump->setRowStretch(3, 1);
35 layout_parameterDump->setColumnStretch(2, 1);
36 }
37
38 void ParameterDump::buildCOMM()
39 {
40 groupbox_COMM = new QGroupBox(tr("COMMON_PAR"));
41 layout_COMM = new QGridLayout();
42
43 sy_lfr_bw = new QLabel("sy_lfr_bw ");
44 sy_lfr_sp0 = new QLabel("sy_lfr_sp0 ");
45 sy_lfr_sp1 = new QLabel("sy_lfr_sp1 ");
46 sy_lfr_r0 = new QLabel("sy_lfr_r0 ");
47 sy_lfr_r1 = new QLabel("sy_lfr_r1 ");
48
49 spinbox_sy_lfr_bw = new QSpinBox();
50 spinbox_sy_lfr_sp0 = new QSpinBox();
51 spinbox_sy_lfr_sp1 = new QSpinBox();
52 spinbox_sy_lfr_r0 = new QSpinBox();
53 spinbox_sy_lfr_r1 = new QSpinBox();
54
55 spinbox_sy_lfr_bw->setRange(0, 1);
56 spinbox_sy_lfr_sp0->setRange(0, 1);
57 spinbox_sy_lfr_sp1->setRange(0, 1);
58 spinbox_sy_lfr_r0->setRange(0, 1);
59 spinbox_sy_lfr_r1->setRange(0, 1);
60
61 spinbox_sy_lfr_bw->setValue(1);
62 spinbox_sy_lfr_sp0->setValue(0);
63 spinbox_sy_lfr_sp1->setValue(0);
64 spinbox_sy_lfr_r0->setValue(0);
65 spinbox_sy_lfr_r1->setValue(0);
66
67 layout_COMM->addWidget(sy_lfr_bw, 0, 0, 1, 1);
68 layout_COMM->addWidget(sy_lfr_sp0, 1, 0, 1, 1);
69 layout_COMM->addWidget(sy_lfr_sp1, 2, 0, 1, 1);
70 layout_COMM->addWidget(sy_lfr_r0, 3, 0, 1, 1);
71 layout_COMM->addWidget(sy_lfr_r1, 4, 0, 1, 1);
72
73 layout_COMM->addWidget(spinbox_sy_lfr_bw, 0, 1, 1, 1);
74 layout_COMM->addWidget(spinbox_sy_lfr_sp0, 1, 1, 1, 1);
75 layout_COMM->addWidget(spinbox_sy_lfr_sp1, 2, 1, 1, 1);
76 layout_COMM->addWidget(spinbox_sy_lfr_r0, 3, 1, 1, 1);
77 layout_COMM->addWidget(spinbox_sy_lfr_r1, 4, 1, 1, 1);
78
79 layout_COMM->setColumnStretch(2, 1);
80 layout_COMM->setRowStretch(5, 1);
81
82 groupbox_COMM->setLayout(layout_COMM);
83 }
84
85 void ParameterDump::buildNORM()
86 {
87 groupbox_NORM = new QGroupBox(tr("NORMAL_PAR"));
88 layout_NORM = new QGridLayout();
89
90 sy_lfr_n_swf_l = new QLabel("sy_lfr_n_swf_l ");
91 sy_lfr_n_swf_p = new QLabel("sy_lfr_n_swf_p ");
92 sy_lfr_n_asm_p = new QLabel("sy_lfr_n_asm_p ");
93 sy_lfr_n_bp_p0 = new QLabel("sy_lfr_n_bp_p0 ");
94 sy_lfr_n_bp_p1 = new QLabel("sy_lfr_n_bp_p1 ");
95
96 spinbox_sy_lfr_n_swf_l = new QSpinBox();
97 spinbox_sy_lfr_n_swf_p = new QSpinBox();
98 spinbox_sy_lfr_n_asm_p = new QSpinBox();
99 spinbox_sy_lfr_n_bp_p0 = new QSpinBox();
100 spinbox_sy_lfr_n_bp_p1 = new QSpinBox();
101
102 spinbox_sy_lfr_n_swf_l->setRange(256, 65535);
103 spinbox_sy_lfr_n_swf_p->setRange(16, 65535);
104 spinbox_sy_lfr_n_asm_p->setRange(2, 65535);
105 spinbox_sy_lfr_n_bp_p0->setRange(4, 255);
106 spinbox_sy_lfr_n_bp_p1->setRange(20, 255);
107
108 spinbox_sy_lfr_n_swf_l->setValue(2048);
109 spinbox_sy_lfr_n_swf_p->setValue(300);
110 spinbox_sy_lfr_n_asm_p->setValue(3600);
111 spinbox_sy_lfr_n_bp_p0->setValue(4);
112 spinbox_sy_lfr_n_bp_p1->setValue(20);
113
114 layout_NORM->addWidget(sy_lfr_n_swf_l, 0, 0, 1, 1);
115 layout_NORM->addWidget(sy_lfr_n_swf_p, 1, 0, 1, 1);
116 layout_NORM->addWidget(sy_lfr_n_asm_p, 2, 0, 1, 1);
117 layout_NORM->addWidget(sy_lfr_n_bp_p0, 3, 0, 1, 1);
118 layout_NORM->addWidget(sy_lfr_n_bp_p1, 4, 0, 1, 1);
119
120 layout_NORM->addWidget(spinbox_sy_lfr_n_swf_l, 0, 1, 1, 1);
121 layout_NORM->addWidget(spinbox_sy_lfr_n_swf_p, 1, 1, 1, 1);
122 layout_NORM->addWidget(spinbox_sy_lfr_n_asm_p, 2, 1, 1, 1);
123 layout_NORM->addWidget(spinbox_sy_lfr_n_bp_p0, 3, 1, 1, 1);
124 layout_NORM->addWidget(spinbox_sy_lfr_n_bp_p1, 4, 1, 1, 1);
125
126 layout_NORM->setColumnStretch(2, 1);
127 layout_NORM->setRowStretch(5, 1);
128
129 groupbox_NORM->setLayout(layout_NORM);
130 }
131
132 void ParameterDump::buildBURST()
133 {
134 groupbox_BURST = new QGroupBox(tr("BURST_PAR"));
135 layout_BURST = new QGridLayout();
136
137 sy_lfr_b_bp_p0 = new QLabel("sy_lfr_b_bp_p0 ");
138 sy_lfr_b_bp_p1 = new QLabel("sy_lfr_b_bp_p1 ");
139
140 spinbox_sy_lfr_b_bp_p0 = new QSpinBox();
141 spinbox_sy_lfr_b_bp_p1 = new QSpinBox();
142
143 spinbox_sy_lfr_b_bp_p0->setRange(1, 255);
144 spinbox_sy_lfr_b_bp_p1->setRange(5, 255);
145
146 layout_BURST->addWidget(sy_lfr_b_bp_p0, 0, 0, 1, 1);
147 layout_BURST->addWidget(sy_lfr_b_bp_p1, 1, 0, 1, 1);
148 layout_BURST->addWidget(spinbox_sy_lfr_b_bp_p0, 0, 1, 1, 1);
149 layout_BURST->addWidget(spinbox_sy_lfr_b_bp_p1, 1, 1, 1, 1);
150
151 layout_BURST->setColumnStretch(2, 1);
152 layout_BURST->setRowStretch(3, 1);
153
154 groupbox_BURST->setLayout(layout_BURST);
155 }
156
157 void ParameterDump::buildSBM1()
158 {
159 groupbox_SBM1 = new QGroupBox(tr("SBM1_PAR"));
160 layout_SBM1 = new QGridLayout();
161
162 sy_lfr_s1_bp_p0 = new QLabel("sy_lfr_s1_bp_p0 ");
163 sy_lfr_s1_bp_p1 = new QLabel("sy_lfr_s1_bp_p1 ");
164
165 spinbox_sy_lfr_s1_bp_p0 = new QDoubleSpinBox();
166 spinbox_sy_lfr_s1_bp_p1 = new QSpinBox();
167
168 spinbox_sy_lfr_s1_bp_p0->setRange(0.25, 0.25*256);
169 spinbox_sy_lfr_b_bp_p0->setValue(0.25);
170 spinbox_sy_lfr_s1_bp_p1->setRange(1, 255);
171 spinbox_sy_lfr_b_bp_p1->setValue(1);
172
173 layout_SBM1->addWidget(sy_lfr_s1_bp_p0, 0, 0, 1, 1);
174 layout_SBM1->addWidget(sy_lfr_s1_bp_p1, 1, 0, 1, 1);
175 layout_SBM1->addWidget(spinbox_sy_lfr_s1_bp_p0, 0, 1, 1, 1);
176 layout_SBM1->addWidget(spinbox_sy_lfr_s1_bp_p1, 1, 1, 1, 1);
177
178 layout_SBM1->setColumnStretch(2, 1);
179 layout_SBM1->setRowStretch(3, 1);
180
181 groupbox_SBM1->setLayout(layout_SBM1);
182 }
183
184 void ParameterDump::buildSBM2()
185 {
186 groupbox_SBM2 = new QGroupBox(tr("SBM2_PAR"));
187 layout_SBM2 = new QGridLayout();
188
189 sy_lfr_s2_bp_p0 = new QLabel("sy_lfr_s2_bp_p0 ");
190 sy_lfr_s2_bp_p1 = new QLabel("sy_lfr_s2_bp_p1 ");
191
192 spinbox_sy_lfr_s2_bp_p0 = new QSpinBox();
193 spinbox_sy_lfr_s2_bp_p1 = new QSpinBox();
194
195 spinbox_sy_lfr_s2_bp_p0->setRange(1, 255);
196 spinbox_sy_lfr_s2_bp_p1->setRange(5, 255);
197
198 layout_SBM2->addWidget(sy_lfr_s2_bp_p0, 0, 0, 1, 1);
199 layout_SBM2->addWidget(sy_lfr_s2_bp_p1, 1, 0, 1, 1);
200 layout_SBM2->addWidget(spinbox_sy_lfr_s2_bp_p0, 0, 1, 1, 1);
201 layout_SBM2->addWidget(spinbox_sy_lfr_s2_bp_p1, 1, 1, 1, 1);
202
203 layout_SBM2->setColumnStretch(2, 1);
204 layout_SBM2->setRowStretch(3, 1);
205
206 groupbox_SBM2->setLayout(layout_SBM2);
207 }
208
209 void ParameterDump::buildActions()
210 {
211 groupbox_ACTIONS = new QGroupBox(tr("Actions"));
212 layout_ACTIONS = new QGridLayout;
213
214 button_loadCommon = new QPushButton(tr("LOAD_COMM"));
215 button_loadNormal = new QPushButton(tr("LOAD_NORM"));
216 button_loadBurst = new QPushButton(tr("LOAD_BURST"));
217 button_loadSBM1 = new QPushButton(tr("LOAD_SBM1"));
218 button_loadSBM2 = new QPushButton(tr("LOAD_SBM2"));
219 button_parameterDump = new QPushButton(tr("DUMP_PAR"));
220
221 button_loadCommon->setEnabled(false);
222 button_loadNormal->setEnabled(false);
223 button_loadBurst->setEnabled(false);
224 button_loadSBM1->setEnabled(false);
225 button_loadSBM2->setEnabled(false);
226 button_parameterDump->setEnabled(false);
227
228 layout_ACTIONS->addWidget(button_loadCommon, 0, 0, 1, 1);
229 layout_ACTIONS->addWidget(button_loadNormal, 0, 1, 1, 1);
230 layout_ACTIONS->addWidget(button_loadBurst, 1, 0, 1, 1);
231 layout_ACTIONS->addWidget(button_parameterDump, 1, 1, 1, 1);
232 layout_ACTIONS->addWidget(button_loadSBM1, 2, 0, 1, 1);
233 layout_ACTIONS->addWidget(button_loadSBM2, 2, 1, 1, 1);
234
235 groupbox_ACTIONS->setLayout(layout_ACTIONS);
236
237 connect(this->button_parameterDump, SIGNAL(clicked()), this, SLOT(sendParameterDump()));
238 connect(this->button_loadCommon, SIGNAL(clicked()), this, SLOT(sendLoadCommon()));
239 connect(this->button_loadNormal, SIGNAL(clicked()), this, SLOT(sendLoadNormal()));
240 connect(this->button_loadBurst, SIGNAL(clicked()), this, SLOT(sendLoadBurst()));
241 connect(this->button_loadSBM1, SIGNAL(clicked()), this, SLOT(sendLoadSBM1()));
242 connect(this->button_loadSBM2, SIGNAL(clicked()), this, SLOT(sendLoadSBM2()));
243 }
244
245 void ParameterDump::updateParameterDump(TMPacketToRead *tmPacketToRead)
246 {
247
248 Packet_TM_LFR_PARAMETER_DUMP_t *parameterPacket;
249
250 parameterPacket = (Packet_TM_LFR_PARAMETER_DUMP_t *) tmPacketToRead->Value;
251
252 // COMMON
253 spinbox_sy_lfr_bw->setValue( (parameterPacket->bw_sp0_sp1_r0_r1 & 0x10 ) >> 4 );
254 spinbox_sy_lfr_sp0->setValue( (parameterPacket->bw_sp0_sp1_r0_r1 & 0x08 ) >> 3 );
255 spinbox_sy_lfr_sp1->setValue( (parameterPacket->bw_sp0_sp1_r0_r1 & 0x04 ) >> 2 );
256 spinbox_sy_lfr_r0->setValue( (parameterPacket->bw_sp0_sp1_r0_r1 & 0x02 ) >> 1 );
257 spinbox_sy_lfr_r1->setValue( (parameterPacket->bw_sp0_sp1_r0_r1 & 0x01 ) );
258
259 // NORMAL
260 spinbox_sy_lfr_n_swf_l->setValue(parameterPacket->sy_lfr_n_swf_l[0] * 256
261 + parameterPacket->sy_lfr_n_swf_l[1]);
262 spinbox_sy_lfr_n_swf_p->setValue(parameterPacket->sy_lfr_n_swf_p[0] * 256
263 + parameterPacket->sy_lfr_n_swf_p[1]);
264 spinbox_sy_lfr_n_asm_p->setValue(parameterPacket->sy_lfr_n_asm_p[0] * 256
265 + parameterPacket->sy_lfr_n_asm_p[1]);
266 spinbox_sy_lfr_n_bp_p0->setValue(parameterPacket->sy_lfr_n_bp_p0);
267 spinbox_sy_lfr_n_bp_p1->setValue(parameterPacket->sy_lfr_n_bp_p1);
268
269 // BURST
270 spinbox_sy_lfr_b_bp_p0->setValue(parameterPacket->sy_lfr_b_bp_p0);
271 spinbox_sy_lfr_b_bp_p1->setValue(parameterPacket->sy_lfr_b_bp_p1);
272
273 // SBM1
274 spinbox_sy_lfr_s1_bp_p0->setValue(parameterPacket->sy_lfr_s1_bp_p0);
275 spinbox_sy_lfr_s1_bp_p1->setValue(parameterPacket->sy_lfr_s1_bp_p1);
276
277 // SBM2
278 spinbox_sy_lfr_s2_bp_p0->setValue(parameterPacket->sy_lfr_s2_bp_p0);
279 spinbox_sy_lfr_s2_bp_p1->setValue(parameterPacket->sy_lfr_s2_bp_p1);
280 }
281
282 void ParameterDump::sendParameterDump()
283 {
284 Packet_TC_LFR_DUMP_PAR_t packet;
285 unsigned char crcAsTwoBytes[2];
286
287 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
288 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
289 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
290 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
291 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_DUMP_PAR >> 8);
292 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_DUMP_PAR );
293
294 packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
295 packet.serviceType = TC_TYPE_DEFAULT;
296 packet.serviceSubType = TC_SUBTYPE_DUMP;
297 packet.sourceID = SID_DEFAULT;
298
299 packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
300 PACKET_LENGTH_TC_LFR_DUMP_PAR + CCSDS_TC_TM_PACKET_OFFSET - 2);
301 packet.crc[0] = crcAsTwoBytes[0];
302 packet.crc[1] = crcAsTwoBytes[1];
303
304 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_DUMP_PAR + CCSDS_TC_TM_PACKET_OFFSET,
305 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
306 }
307
308 void ParameterDump::sendLoadCommon()
309 {
310 Packet_TC_LFR_LOAD_COMMON_PAR_t packet;
311 unsigned char crcAsTwoBytes[2];
312
313 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
314 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
315 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
316 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
317 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_COMMON_PAR >> 8);
318 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_COMMON_PAR );
319
320 packet.ccsdsSecHeaderFlag_pusVersion_ack = TC_LFR_DATA_FIELD_HEADER0;
321 packet.serviceType = TC_TYPE_DEFAULT;
322 packet.serviceSubType = TC_SUBTYPE_LOAD_COMMON_PAR;
323 packet.sourceID = SID_DEFAULT;
324 packet.spare = TC_LFR_LOAD_COMMON_PAR_SPARE;
325 packet.bw_sp0_sp1_r0_r1 = (spinbox_sy_lfr_bw->value() << 4)
326 + (spinbox_sy_lfr_sp0->value() << 3)
327 + (spinbox_sy_lfr_sp1->value() << 2)
328 + (spinbox_sy_lfr_r0->value() << 1)
329 + (spinbox_sy_lfr_r1->value() );
330
331 packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
332 PACKET_LENGTH_TC_LFR_LOAD_COMMON_PAR + CCSDS_TC_TM_PACKET_OFFSET - 2);
333 packet.crc[0] = crcAsTwoBytes[0];
334 packet.crc[1] = crcAsTwoBytes[1];
335
336 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_LOAD_COMMON_PAR + CCSDS_TC_TM_PACKET_OFFSET,
337 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
338 }
339
340 void ParameterDump::sendLoadNormal()
341 {
342 Packet_TC_LFR_LOAD_NORMAL_PAR_t packet;
343 unsigned char crcAsTwoBytes[2];
344
345 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
346 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
347 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
348 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
349 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_NORMAL_PAR >> 8);
350 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_NORMAL_PAR );
351
352 packet.ccsdsSecHeaderFlag_pusVersion_ack = TC_LFR_DATA_FIELD_HEADER0;
353 packet.serviceType = TC_TYPE_DEFAULT;
354 packet.serviceSubType = TC_SUBTYPE_LOAD_NORMAL_PAR;
355 packet.sourceID = SID_DEFAULT;
356 packet.sy_lfr_n_swf_l[0] = (unsigned char) (spinbox_sy_lfr_n_swf_l->value() >> 8);
357 packet.sy_lfr_n_swf_l[1] = (unsigned char) (spinbox_sy_lfr_n_swf_l->value() );
358 packet.sy_lfr_n_swf_p[0] = (unsigned char) (spinbox_sy_lfr_n_swf_p->value() >> 8);
359 packet.sy_lfr_n_swf_p[1] = (unsigned char) (spinbox_sy_lfr_n_swf_p->value() );
360 packet.sy_lfr_n_asm_p[0] = (unsigned char) (spinbox_sy_lfr_n_asm_p->value() >> 8);
361 packet.sy_lfr_n_asm_p[1] = (unsigned char) (spinbox_sy_lfr_n_asm_p->value() );
362 packet.sy_lfr_n_bp_p0 = (unsigned char) (spinbox_sy_lfr_n_bp_p0->value() );
363 packet.sy_lfr_n_bp_p1 = (unsigned char) (spinbox_sy_lfr_n_bp_p1->value() );
364
365 packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
366 PACKET_LENGTH_TC_LFR_LOAD_NORMAL_PAR + CCSDS_TC_TM_PACKET_OFFSET - 2);
367 packet.crc[0] = crcAsTwoBytes[0];
368 packet.crc[1] = crcAsTwoBytes[1];
369
370 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_LOAD_NORMAL_PAR + CCSDS_TC_TM_PACKET_OFFSET,
371 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
372 }
373
374 void ParameterDump::sendLoadBurst()
375 {
376 Packet_TC_LFR_LOAD_BURST_SBM1_SBM2_PAR_t packet;
377 unsigned char crcAsTwoBytes[2];
378
379 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
380 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
381 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
382 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
383 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_BURST_PAR >> 8);
384 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_BURST_PAR );
385
386 packet.ccsdsSecHeaderFlag_pusVersion_ack = TC_LFR_DATA_FIELD_HEADER0;
387 packet.serviceType = TC_TYPE_DEFAULT;
388 packet.serviceSubType = TC_SUBTYPE_LOAD_BURST_PAR;
389 packet.sourceID = SID_DEFAULT;
390 packet.sy_lfr_bp_p0 = (unsigned char) (spinbox_sy_lfr_b_bp_p0->value() );
391 packet.sy_lfr_bp_p1 = (unsigned char) (spinbox_sy_lfr_b_bp_p1->value() );
392
393 packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
394 PACKET_LENGTH_TC_LFR_LOAD_BURST_PAR + CCSDS_TC_TM_PACKET_OFFSET - 2);
395 packet.crc[0] = crcAsTwoBytes[0];
396 packet.crc[1] = crcAsTwoBytes[1];
397
398 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_LOAD_BURST_PAR + CCSDS_TC_TM_PACKET_OFFSET,
399 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
400 }
401
402 void ParameterDump::sendLoadSBM1()
403 {
404 Packet_TC_LFR_LOAD_BURST_SBM1_SBM2_PAR_t packet;
405 unsigned char crcAsTwoBytes[2];
406
407 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
408 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
409 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
410 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
411 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_SBM1_PAR >> 8);
412 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_SBM1_PAR );
413
414 packet.ccsdsSecHeaderFlag_pusVersion_ack = TC_LFR_DATA_FIELD_HEADER0;
415 packet.serviceType = TC_TYPE_DEFAULT;
416 packet.serviceSubType = TC_SUBTYPE_LOAD_SBM1_PAR;
417 packet.sourceID = SID_DEFAULT;
418 packet.sy_lfr_bp_p0 = (unsigned char) (spinbox_sy_lfr_s1_bp_p0->value() );
419 packet.sy_lfr_bp_p1 = (unsigned char) (spinbox_sy_lfr_s1_bp_p1->value() );
420
421 packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
422 PACKET_LENGTH_TC_LFR_LOAD_SBM1_PAR + CCSDS_TC_TM_PACKET_OFFSET - 2);
423 packet.crc[0] = crcAsTwoBytes[0];
424 packet.crc[1] = crcAsTwoBytes[1];
425
426 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_LOAD_SBM1_PAR + CCSDS_TC_TM_PACKET_OFFSET,
427 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
428 }
429
430 void ParameterDump::sendLoadSBM2()
431 {
432 Packet_TC_LFR_LOAD_BURST_SBM1_SBM2_PAR_t packet;
433 unsigned char crcAsTwoBytes[2];
434
435 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
436 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
437 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
438 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
439 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_SBM2_PAR >> 8);
440 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_LOAD_SBM2_PAR );
441
442 packet.ccsdsSecHeaderFlag_pusVersion_ack = TC_LFR_DATA_FIELD_HEADER0;
443 packet.serviceType = TC_TYPE_DEFAULT;
444 packet.serviceSubType = TC_SUBTYPE_LOAD_SBM2_PAR;
445 packet.sourceID = SID_DEFAULT;
446 packet.sy_lfr_bp_p0 = (unsigned char) (spinbox_sy_lfr_s2_bp_p0->value() );
447 packet.sy_lfr_bp_p1 = (unsigned char) (spinbox_sy_lfr_s2_bp_p1->value() );
448
449 packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
450 PACKET_LENGTH_TC_LFR_LOAD_SBM2_PAR + CCSDS_TC_TM_PACKET_OFFSET - 2);
451 packet.crc[0] = crcAsTwoBytes[0];
452 packet.crc[1] = crcAsTwoBytes[1];
453
454 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_LOAD_SBM2_PAR + CCSDS_TC_TM_PACKET_OFFSET,
455 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
456 }
457
458 void ParameterDump::actionsSetEnabled(bool state)
459 {
460 button_parameterDump->setEnabled(state);
461 button_loadCommon->setEnabled(state);
462 button_loadNormal->setEnabled(state);
463 button_loadBurst->setEnabled(state);
464 button_loadSBM1->setEnabled(state);
465 button_loadSBM2->setEnabled(state);
466 }
467
468 void ParameterDump::GetCRCAsTwoBytes(unsigned char* data, unsigned char* crcAsTwoBytes, unsigned int sizeOfData)
469 {
470 packetToSend->GetCRCAsTwoBytes( data, crcAsTwoBytes, sizeOfData );
471 }
@@ -0,0 +1,115
1 #ifndef PARAMETERDUMP_H
2 #define PARAMETERDUMP_H
3
4 #include <QGroupBox>
5 #include <QGridLayout>
6 #include <QPushButton>
7 #include <QLabel>
8 #include <QSpinBox>
9 #include <QDoubleSpinBox>
10
11 #include <tmpackettoread.h>
12 #include <TC_types.h>
13
14 #include "parameterdump_global.h"
15 #include "tcpackettosend.h"
16
17 class PARAMETERDUMPSHARED_EXPORT ParameterDump : public QWidget
18 {
19 Q_OBJECT
20 public:
21 explicit ParameterDump(QWidget *parent = 0);
22
23 void buildTabParameterDump();
24 void buildCOMM();
25 void buildNORM();
26 void buildBURST();
27 void buildSBM1();
28 void buildSBM2();
29 void buildActions();
30 void updateParameterDump(TMPacketToRead *tmPacketToRead);
31 void actionsSetEnabled(bool state);
32
33 void GetCRCAsTwoBytes(unsigned char* data, unsigned char* crcAsTwoBytes, unsigned int sizeOfData);
34
35 QGroupBox* groupbox_parameterDump;
36 QGroupBox* groupbox_COMM;
37 QGroupBox* groupbox_NORM;
38 QGroupBox* groupbox_BURST;
39 QGroupBox* groupbox_SBM1;
40 QGroupBox* groupbox_SBM2;
41 QGroupBox* groupbox_ACTIONS;
42
43 QGridLayout* layout_parameterDump;
44 QGridLayout* layout_COMM;
45 QGridLayout* layout_NORM;
46 QGridLayout* layout_BURST;
47 QGridLayout* layout_SBM1;
48 QGridLayout* layout_SBM2;
49 QGridLayout* layout_ACTIONS;
50
51 QPushButton* button_loadCommon;
52 QPushButton* button_loadNormal;
53 QPushButton* button_loadBurst;
54 QPushButton* button_loadSBM1;
55 QPushButton* button_loadSBM2;
56 QPushButton* button_parameterDump;
57 //
58 QLabel* sy_lfr_bw;
59 QLabel* sy_lfr_sp0;
60 QLabel* sy_lfr_sp1;
61 QLabel* sy_lfr_r0;
62 QLabel* sy_lfr_r1;
63 //
64 QLabel* sy_lfr_n_swf_l;
65 QLabel* sy_lfr_n_swf_p;
66 QLabel* sy_lfr_n_asm_p;
67 QLabel* sy_lfr_n_bp_p0;
68 QLabel* sy_lfr_n_bp_p1;
69 //
70 QLabel* sy_lfr_b_bp_p0;
71 QLabel* sy_lfr_b_bp_p1;
72 //
73 QLabel* sy_lfr_s1_bp_p0;
74 QLabel* sy_lfr_s1_bp_p1;
75 //
76 QLabel* sy_lfr_s2_bp_p0;
77 QLabel* sy_lfr_s2_bp_p1;
78
79 QSpinBox* spinbox_sy_lfr_bw;
80 QSpinBox* spinbox_sy_lfr_sp0;
81 QSpinBox* spinbox_sy_lfr_sp1;
82 QSpinBox* spinbox_sy_lfr_r0;
83 QSpinBox* spinbox_sy_lfr_r1;
84 //
85 QSpinBox* spinbox_sy_lfr_n_swf_l;
86 QSpinBox* spinbox_sy_lfr_n_swf_p;
87 QSpinBox* spinbox_sy_lfr_n_asm_p;
88 QSpinBox* spinbox_sy_lfr_n_bp_p0;
89 QSpinBox* spinbox_sy_lfr_n_bp_p1;
90 //
91 QSpinBox* spinbox_sy_lfr_b_bp_p0;
92 QSpinBox* spinbox_sy_lfr_b_bp_p1;
93 //
94 QDoubleSpinBox* spinbox_sy_lfr_s1_bp_p0;
95 QSpinBox* spinbox_sy_lfr_s1_bp_p1;
96 //
97 QSpinBox* spinbox_sy_lfr_s2_bp_p0;
98 QSpinBox* spinbox_sy_lfr_s2_bp_p1;
99
100 TCPacketToSend* packetToSend;
101
102 signals:
103 unsigned int WriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
104
105 public slots:
106 void sendParameterDump();
107 void sendLoadCommon();
108 void sendLoadNormal();
109 void sendLoadBurst();
110 void sendLoadSBM1();
111 void sendLoadSBM2();
112
113 };
114
115 #endif // PARAMETERDUMP_H
@@ -0,0 +1,38
1 #-------------------------------------------------
2 #
3 # Project created by QtCreator 2013-07-29T11:18:13
4 #
5 #-------------------------------------------------
6
7 TARGET = parameterdump
8 TEMPLATE = lib
9
10 INCLUDEPATH += \
11 ../../DEV_PLE/header \
12 ../rmapplugin \
13 $${PWD}
14
15 DEFINES += PARAMETERDUMP_LIBRARY
16
17 SOURCES += parameterdump.cpp \
18 tcpackettosend.cpp \
19 ../rmapplugin/tmpackettoread.cpp
20
21 HEADERS += parameterdump.h \
22 parameterdump_global.h \
23 tcpackettosend.h \
24 ../../DEV_PLE/header/ccsds_types.h \
25 ../../DEV_PLE/header/TC_types.h \
26 ../rmapplugin/tmpackettoread.h
27
28 header.path = $$[QT_INSTALL_HEADERS]/lppmon/parameterdump
29 header.files = \
30 parameterdump.h \
31 parameterdump_global.h
32
33 target.path = $$[QT_INSTALL_LIBS]
34 isEmpty(target.path) {
35 target.path = $(QTDIR)/lib
36 }
37
38 INSTALLS += header target
@@ -0,0 +1,12
1 #ifndef PARAMETERDUMP_GLOBAL_H
2 #define PARAMETERDUMP_GLOBAL_H
3
4 #include <QtCore/qglobal.h>
5
6 #if defined(PARAMETERDUMP_LIBRARY)
7 # define PARAMETERDUMPSHARED_EXPORT Q_DECL_EXPORT
8 #else
9 # define PARAMETERDUMPSHARED_EXPORT Q_DECL_IMPORT
10 #endif
11
12 #endif // PARAMETERDUMP_GLOBAL_H
@@ -0,0 +1,95
1 #include "entermode.h"
2
3 EnterMode::EnterMode(QWidget *parent) :
4 QWidget(parent)
5 {
6 button_enterModeStandby = new QPushButton(tr("STANDBY"));
7 button_enterModeNormal = new QPushButton(tr("NORMAL"));
8 button_enterModeBurst = new QPushButton(tr("BURST"));
9 button_enterModeSBM1 = new QPushButton(tr("SBM1"));
10 button_enterModeSBM2 = new QPushButton(tr("SBM2"));
11
12 mainLayout = new QGridLayout();
13 overallLayout = new QGridLayout();
14
15 groupBox = new QGroupBox(tr("ENTER_MODE"));
16
17 mainLayout->addWidget(button_enterModeStandby, 0, 0, 1, 1);
18 mainLayout->addWidget(button_enterModeNormal, 1, 0, 1, 1);
19 mainLayout->addWidget(button_enterModeBurst, 2, 0, 1, 1);
20 mainLayout->addWidget(button_enterModeSBM1, 3, 0, 1, 1);
21 mainLayout->addWidget(button_enterModeSBM2, 4, 0, 1, 1);
22
23 mainLayout->setColumnStretch(1, 1);
24 mainLayout->setRowStretch(5, 1);
25
26 groupBox->setLayout(mainLayout);
27
28 parameterDump = new ParameterDump();
29
30 connect(this->button_enterModeStandby, SIGNAL(clicked()), this, SLOT(enterModeStandby()));
31 connect(this->button_enterModeNormal, SIGNAL(clicked()), this, SLOT(enterModeNormal()));
32 connect(this->button_enterModeBurst, SIGNAL(clicked()), this, SLOT(enterModeBurst()));
33 connect(this->button_enterModeSBM1, SIGNAL(clicked()), this, SLOT(enterModeSBM1()));
34 connect(this->button_enterModeSBM2, SIGNAL(clicked()), this, SLOT(enterModeSBM2()));
35
36 overallLayout->addWidget(groupBox, 0, 0, 1, 1);
37
38 this->setLayout(overallLayout);
39 }
40
41 void EnterMode::sendEnterMode( unsigned char mode)
42 {
43 Packet_TC_LFR_ENTER_MODE_t packet;
44 unsigned char crcAsTwoBytes[2];
45
46 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
47 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
48 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
49 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
50 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_ENTER_MODE >> 8);
51 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_ENTER_MODE );
52
53 packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
54 packet.serviceType = TC_TYPE_DEFAULT;
55 packet.serviceSubType = TC_SUBTYPE_ENTER_MODE;
56 packet.sourceID = SID_DEFAULT;
57 packet.spare = 0x00;
58 packet.mode = mode;
59 packet.enterModeTime[0] = 0x00;
60 packet.enterModeTime[1] = 0x00;
61 packet.enterModeTime[2] = 0x00;
62 packet.enterModeTime[3] = 0x00;
63 packet.enterModeTime[4] = 0x00;
64 packet.enterModeTime[5] = 0x00;
65
66 parameterDump->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
67 PACKET_LENGTH_TC_LFR_ENTER_MODE + CCSDS_TC_TM_PACKET_OFFSET - 2);
68 packet.crc[0] = crcAsTwoBytes[0];
69 packet.crc[1] = crcAsTwoBytes[1];
70
71 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_ENTER_MODE + CCSDS_TC_TM_PACKET_OFFSET,
72 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
73 }
74
75 void EnterMode::enterModeStandby()
76 {
77 sendEnterMode( 0 );
78 }
79
80 void EnterMode::enterModeNormal()
81 {
82 sendEnterMode( 1 );
83 }
84 void EnterMode::enterModeBurst()
85 {
86 sendEnterMode( 2 );
87 }
88 void EnterMode::enterModeSBM1()
89 {
90 sendEnterMode( 3 );
91 }
92 void EnterMode::enterModeSBM2()
93 {
94 sendEnterMode( 4 );
95 }
@@ -0,0 +1,45
1 #ifndef ENTERMODE_H
2 #define ENTERMODE_H
3
4 #include <QWidget>
5 #include <QPushButton>
6 #include <QGridLayout>
7 #include <QGroupBox>
8
9 #include <TC_types.h>
10 #include <parameterdump.h>
11
12 class EnterMode : public QWidget
13 {
14 Q_OBJECT
15 public:
16 explicit EnterMode(QWidget *parent = 0);
17
18 void sendEnterMode(unsigned char mode);
19
20 QPushButton *button_enterModeStandby;
21 QPushButton *button_enterModeNormal;
22 QPushButton *button_enterModeBurst;
23 QPushButton *button_enterModeSBM1;
24 QPushButton *button_enterModeSBM2;
25
26 QGridLayout *mainLayout;
27 QGridLayout *overallLayout;
28
29 QGroupBox *groupBox;
30
31 ParameterDump *parameterDump;
32
33 signals:
34 unsigned int WriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
35
36 public slots:
37 void enterModeStandby();
38 void enterModeNormal();
39 void enterModeBurst();
40 void enterModeSBM1();
41 void enterModeSBM2();
42
43 };
44
45 #endif // ENTERMODE_H
@@ -0,0 +1,28
1 #include "lfractions.h"
2
3 LFRActions::LFRActions(QWidget *parent) :
4 QWidget(parent)
5 {
6 mainLayout = new QGridLayout();
7 enterMode = new EnterMode();
8 parameterDump = new ParameterDump();
9
10 parameterDump->actionsSetEnabled(true);
11
12 mainLayout->addWidget(parameterDump, 0, 0, 1, 1);
13 mainLayout->addWidget(enterMode, 0, 1, 1, 1);
14
15 mainLayout->setColumnStretch(2, 1);
16 mainLayout->setRowStretch(1, 1);
17
18 this->setLayout(mainLayout);
19
20 connect(this->enterMode, SIGNAL(WriteSPWSig(char*,uint,char,char)),
21 this, SLOT(reEmitWriteSPWSig(char*,uint,char,char)));
22 connect(this->parameterDump, SIGNAL(WriteSPWSig(char*,uint,char,char)),
23 this, SLOT(reEmitWriteSPWSig(char*,uint,char,char)));
24 }
25
26 void LFRActions::reEmitWriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication){
27 emit WriteSPWSig( Value, count, targetLogicalAddress, userApplication);
28 }
@@ -0,0 +1,29
1 #ifndef LFRACTIONS_H
2 #define LFRACTIONS_H
3
4 #include <QWidget>
5 #include <QGridLayout>
6
7 #include <parameterdump.h>
8
9 #include "entermode.h"
10
11 class LFRActions : public QWidget
12 {
13 Q_OBJECT
14 public:
15 explicit LFRActions(QWidget *parent = 0);
16
17 QGridLayout *mainLayout;
18 EnterMode *enterMode;
19 ParameterDump *parameterDump;
20
21 signals:
22 unsigned int WriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
23
24 public slots:
25 void reEmitWriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
26
27 };
28
29 #endif // LFRACTIONS_H
@@ -1,142 +1,142
1 1 #############################################################################
2 2 # Makefile for building: PAULs_LPPMON_PLUGINS
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jul 24 16:20:32 2013
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jul 31 09:19:17 2013
4 4 # Project: PAULs_LPPMON_PLUGINS.pro
5 5 # Template: subdirs
6 6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile PAULs_LPPMON_PLUGINS.pro
7 7 #############################################################################
8 8
9 9 first: make_default
10 10 MAKEFILE = Makefile
11 11 QMAKE = /usr/bin/qmake-qt4
12 12 DEL_FILE = rm -f
13 13 CHK_DIR_EXISTS= test -d
14 14 MKDIR = mkdir -p
15 15 COPY = cp -f
16 16 COPY_FILE = $(COPY)
17 17 COPY_DIR = $(COPY) -r
18 18 INSTALL_FILE = install -m 644 -p
19 19 INSTALL_PROGRAM = install -m 755 -p
20 20 INSTALL_DIR = $(COPY_DIR)
21 21 DEL_FILE = rm -f
22 22 SYMLINK = ln -f -s
23 23 DEL_DIR = rmdir
24 24 MOVE = mv -f
25 25 CHK_DIR_EXISTS= test -d
26 26 MKDIR = mkdir -p
27 27 SUBTARGETS = \
28 28 sub-rmapplugin
29 29
30 30 rmapplugin/$(MAKEFILE):
31 31 @$(CHK_DIR_EXISTS) rmapplugin/ || $(MKDIR) rmapplugin/
32 32 cd rmapplugin/ && $(QMAKE) /opt/LPPMON_PLUGINS_PAUL/rmapplugin/rmapplugin.pro -spec /usr/lib64/qt4/mkspecs/linux-g++ -o $(MAKEFILE)
33 33 sub-rmapplugin-qmake_all: FORCE
34 34 @$(CHK_DIR_EXISTS) rmapplugin/ || $(MKDIR) rmapplugin/
35 35 cd rmapplugin/ && $(QMAKE) /opt/LPPMON_PLUGINS_PAUL/rmapplugin/rmapplugin.pro -spec /usr/lib64/qt4/mkspecs/linux-g++ -o $(MAKEFILE)
36 36 sub-rmapplugin: rmapplugin/$(MAKEFILE) FORCE
37 37 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE)
38 38 sub-rmapplugin-make_default-ordered: rmapplugin/$(MAKEFILE) FORCE
39 39 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE)
40 40 sub-rmapplugin-make_default: rmapplugin/$(MAKEFILE) FORCE
41 41 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE)
42 42 sub-rmapplugin-make_first-ordered: rmapplugin/$(MAKEFILE) FORCE
43 43 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) first
44 44 sub-rmapplugin-make_first: rmapplugin/$(MAKEFILE) FORCE
45 45 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) first
46 46 sub-rmapplugin-all-ordered: rmapplugin/$(MAKEFILE) FORCE
47 47 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) all
48 48 sub-rmapplugin-all: rmapplugin/$(MAKEFILE) FORCE
49 49 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) all
50 50 sub-rmapplugin-clean-ordered: rmapplugin/$(MAKEFILE) FORCE
51 51 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) clean
52 52 sub-rmapplugin-clean: rmapplugin/$(MAKEFILE) FORCE
53 53 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) clean
54 54 sub-rmapplugin-distclean-ordered: rmapplugin/$(MAKEFILE) FORCE
55 55 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) distclean
56 56 sub-rmapplugin-distclean: rmapplugin/$(MAKEFILE) FORCE
57 57 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) distclean
58 58 sub-rmapplugin-install_subtargets-ordered: rmapplugin/$(MAKEFILE) FORCE
59 59 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) install
60 60 sub-rmapplugin-install_subtargets: rmapplugin/$(MAKEFILE) FORCE
61 61 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) install
62 62 sub-rmapplugin-uninstall_subtargets-ordered: rmapplugin/$(MAKEFILE) FORCE
63 63 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) uninstall
64 64 sub-rmapplugin-uninstall_subtargets: rmapplugin/$(MAKEFILE) FORCE
65 65 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) uninstall
66 66
67 67 Makefile: PAULs_LPPMON_PLUGINS.pro /usr/lib64/qt4/mkspecs/linux-g++/qmake.conf /usr/lib64/qt4/mkspecs/common/unix.conf \
68 68 /usr/lib64/qt4/mkspecs/common/linux.conf \
69 69 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
70 70 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
71 71 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
72 72 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
73 73 /usr/lib64/qt4/mkspecs/qconfig.pri \
74 74 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
75 75 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
76 76 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
77 77 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
78 78 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
79 79 /usr/lib64/qt4/mkspecs/features/release.prf \
80 80 /usr/lib64/qt4/mkspecs/features/default_post.prf \
81 81 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
82 82 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
83 83 /usr/lib64/qt4/mkspecs/features/qt.prf \
84 84 /usr/lib64/qt4/mkspecs/features/unix/thread.prf \
85 85 /usr/lib64/qt4/mkspecs/features/moc.prf \
86 86 /usr/lib64/qt4/mkspecs/features/resources.prf \
87 87 /usr/lib64/qt4/mkspecs/features/uic.prf \
88 88 /usr/lib64/qt4/mkspecs/features/yacc.prf \
89 89 /usr/lib64/qt4/mkspecs/features/lex.prf \
90 90 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf
91 91 $(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile PAULs_LPPMON_PLUGINS.pro
92 92 /usr/lib64/qt4/mkspecs/common/unix.conf:
93 93 /usr/lib64/qt4/mkspecs/common/linux.conf:
94 94 /usr/lib64/qt4/mkspecs/common/gcc-base.conf:
95 95 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf:
96 96 /usr/lib64/qt4/mkspecs/common/g++-base.conf:
97 97 /usr/lib64/qt4/mkspecs/common/g++-unix.conf:
98 98 /usr/lib64/qt4/mkspecs/qconfig.pri:
99 99 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri:
100 100 /usr/lib64/qt4/mkspecs/features/qt_functions.prf:
101 101 /usr/lib64/qt4/mkspecs/features/qt_config.prf:
102 102 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf:
103 103 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
104 104 /usr/lib64/qt4/mkspecs/features/release.prf:
105 105 /usr/lib64/qt4/mkspecs/features/default_post.prf:
106 106 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
107 107 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
108 108 /usr/lib64/qt4/mkspecs/features/qt.prf:
109 109 /usr/lib64/qt4/mkspecs/features/unix/thread.prf:
110 110 /usr/lib64/qt4/mkspecs/features/moc.prf:
111 111 /usr/lib64/qt4/mkspecs/features/resources.prf:
112 112 /usr/lib64/qt4/mkspecs/features/uic.prf:
113 113 /usr/lib64/qt4/mkspecs/features/yacc.prf:
114 114 /usr/lib64/qt4/mkspecs/features/lex.prf:
115 115 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf:
116 116 qmake: qmake_all FORCE
117 117 @$(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile PAULs_LPPMON_PLUGINS.pro
118 118
119 119 qmake_all: sub-rmapplugin-qmake_all FORCE
120 120
121 121 make_default: sub-rmapplugin-make_default-ordered FORCE
122 122 make_first: sub-rmapplugin-make_first-ordered FORCE
123 123 all: sub-rmapplugin-all-ordered FORCE
124 124 clean: sub-rmapplugin-clean-ordered FORCE
125 125 distclean: sub-rmapplugin-distclean-ordered FORCE
126 126 -$(DEL_FILE) Makefile
127 127 install_subtargets: sub-rmapplugin-install_subtargets-ordered FORCE
128 128 uninstall_subtargets: sub-rmapplugin-uninstall_subtargets-ordered FORCE
129 129
130 130 sub-rmapplugin-check_ordered: rmapplugin/$(MAKEFILE)
131 131 cd rmapplugin/ && $(MAKE) -f $(MAKEFILE) check
132 132 check: sub-rmapplugin-check_ordered
133 133
134 134 mocclean: compiler_moc_header_clean compiler_moc_source_clean
135 135
136 136 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
137 137 install: install_subtargets FORCE
138 138
139 139 uninstall: uninstall_subtargets FORCE
140 140
141 141 FORCE:
142 142
@@ -1,195 +1,197
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE QtCreatorProject>
3 <!-- Written by QtCreator 2.7.0, 2013-07-25T10:36:01. -->
3 <!-- Written by QtCreator 2.8.0, 2013-08-01T14:58:01. -->
4 4 <qtcreator>
5 5 <data>
6 6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
7 7 <value type="int">0</value>
8 8 </data>
9 9 <data>
10 10 <variable>ProjectExplorer.Project.EditorSettings</variable>
11 11 <valuemap type="QVariantMap">
12 12 <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
13 13 <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
14 14 <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
15 15 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
16 <value type="QByteArray" key="language">Cpp</value>
16 <value type="QString" key="language">Cpp</value>
17 17 <valuemap type="QVariantMap" key="value">
18 18 <value type="QString" key="CurrentPreferences">CppGlobal</value>
19 19 </valuemap>
20 20 </valuemap>
21 21 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
22 <value type="QByteArray" key="language">QmlJS</value>
22 <value type="QString" key="language">QmlJS</value>
23 23 <valuemap type="QVariantMap" key="value">
24 24 <value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
25 25 </valuemap>
26 26 </valuemap>
27 27 <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
28 28 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
29 29 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
30 30 <value type="int" key="EditorConfiguration.IndentSize">4</value>
31 31 <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
32 32 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
33 33 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
34 34 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
35 35 <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
36 36 <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
37 37 <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
38 38 <value type="int" key="EditorConfiguration.TabSize">8</value>
39 39 <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
40 40 <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
41 41 <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
42 42 <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
43 43 <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
44 44 <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
45 45 </valuemap>
46 46 </data>
47 47 <data>
48 48 <variable>ProjectExplorer.Project.PluginSettings</variable>
49 49 <valuemap type="QVariantMap"/>
50 50 </data>
51 51 <data>
52 52 <variable>ProjectExplorer.Project.Target.0</variable>
53 53 <valuemap type="QVariantMap">
54 54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
55 55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
56 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
56 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
57 57 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
58 58 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
59 59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
60 60 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
61 61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
62 62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
63 63 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
64 64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
65 65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
66 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
67 67 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
68 68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
69 69 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
70 70 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
71 71 </valuemap>
72 72 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
73 73 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
74 74 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
75 75 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
76 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
76 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
77 77 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
78 78 <value type="QString">-w</value>
79 79 <value type="QString">-r</value>
80 80 </valuelist>
81 81 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
82 82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w </value>
83 83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
84 84 </valuemap>
85 85 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
86 86 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
87 87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
88 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
88 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
89 89 </valuemap>
90 90 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
91 91 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
92 92 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
93 93 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
94 94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
95 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
96 96 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
97 97 <value type="QString">-w</value>
98 98 <value type="QString">-r</value>
99 99 </valuelist>
100 100 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
101 101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
102 102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
103 103 </valuemap>
104 104 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
105 105 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
106 106 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
107 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
107 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
108 108 </valuemap>
109 109 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
110 110 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
111 111 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
112 112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
113 113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
115 115 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
116 116 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL</value>
117 117 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
118 118 </valuemap>
119 119 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
120 120 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
121 121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
122 122 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
123 123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
124 124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
125 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
126 126 </valuemap>
127 127 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
128 128 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
129 129 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
130 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
130 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
131 131 </valuemap>
132 132 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
133 <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
133 134 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
134 135 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
135 136 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
136 137 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
137 138 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
138 139 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
139 140 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
140 141 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
141 142 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
142 143 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
143 144 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
144 145 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
145 146 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
146 147 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
147 148 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
148 149 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
149 150 <value type="int">0</value>
150 151 <value type="int">1</value>
151 152 <value type="int">2</value>
152 153 <value type="int">3</value>
153 154 <value type="int">4</value>
154 155 <value type="int">5</value>
155 156 <value type="int">6</value>
156 157 <value type="int">7</value>
157 158 <value type="int">8</value>
158 159 <value type="int">9</value>
159 160 <value type="int">10</value>
160 161 <value type="int">11</value>
161 162 <value type="int">12</value>
162 163 <value type="int">13</value>
163 164 <value type="int">14</value>
164 165 </valuelist>
166 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
167 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
165 168 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
166 <value type="int" key="ProjectExplorer.CustomExecutableRunConfiguration.BaseEnvironmentBase">2</value>
167 169 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable">lppmon</value>
168 170 <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">false</value>
169 <valuelist type="QVariantList" key="ProjectExplorer.CustomExecutableRunConfiguration.UserEnvironmentChanges"/>
170 171 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
171 172 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Run lppmon</value>
172 173 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
173 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
174 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
174 175 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
175 176 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
177 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
176 178 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
177 179 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
178 180 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
179 181 </valuemap>
180 182 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
181 183 </valuemap>
182 184 </data>
183 185 <data>
184 186 <variable>ProjectExplorer.Project.TargetCount</variable>
185 187 <value type="int">1</value>
186 188 </data>
187 189 <data>
188 190 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
189 <value type="QString">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
191 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
190 192 </data>
191 193 <data>
192 194 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
193 <value type="int">12</value>
195 <value type="int">14</value>
194 196 </data>
195 197 </qtcreator>
@@ -1,409 +1,391
1 1 #############################################################################
2 # Makefile for building: lfrsgse-dev
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jul 24 15:57:53 2013
2 # Makefile for building: lfrsgse
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Thu Aug 1 07:46:21 2013
4 4 # Project: gselesia.pro
5 5 # Template: app
6 6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile gselesia.pro
7 7 #############################################################################
8 8
9 9 ####### Compiler, tools and options
10 10
11 11 CC = gcc
12 12 CXX = g++
13 13 DEFINES = -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
14 14 CFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT $(DEFINES)
15 15 CXXFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT $(DEFINES)
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include -I. -I../common_PLE -I../rmapplugin -I../../DEV_PLE/header -I/usr/include/lppmon/common -I/usr/include/lppmon/wfdisplay -I.
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include -I. -I../common_PLE -I../rmapplugin -I../../DEV_PLE/header -I/usr/include/lppmon/common -I/usr/include/lppmon/wfdisplay -I/usr/include/lppmon/parameterdump -I.
17 17 LINK = g++
18 18 LFLAGS = -Wl,-O1 -Wl,-z,relro
19 LIBS = $(SUBLIBS) -L/usr/lib64 -llppmoncommon -lwfdisplay -lqwt5-qt4 -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
19 LIBS = $(SUBLIBS) -L/usr/lib64 -llppmoncommon -lwfdisplay -lqwt5-qt4 -lparameterdump -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
20 20 AR = ar cqs
21 21 RANLIB =
22 22 QMAKE = /usr/bin/qmake-qt4
23 23 TAR = tar -cf
24 24 COMPRESS = gzip -9f
25 25 COPY = cp -f
26 26 SED = sed
27 27 COPY_FILE = $(COPY)
28 28 COPY_DIR = $(COPY) -r
29 29 STRIP =
30 30 INSTALL_FILE = install -m 644 -p
31 31 INSTALL_DIR = $(COPY_DIR)
32 32 INSTALL_PROGRAM = install -m 755 -p
33 33 DEL_FILE = rm -f
34 34 SYMLINK = ln -f -s
35 35 DEL_DIR = rmdir
36 36 MOVE = mv -f
37 37 CHK_DIR_EXISTS= test -d
38 38 MKDIR = mkdir -p
39 39
40 40 ####### Output directory
41 41
42 42 OBJECTS_DIR = ./
43 43
44 44 ####### Files
45 45
46 46 SOURCES = main.cpp \
47 47 mainwindow.cpp \
48 48 mainwindowui.cpp \
49 ../common_PLE/qipdialogbox.cpp \
50 49 lfrxmlhandler.cpp \
51 50 lfrxmlwriter.cpp \
52 51 ../rmapplugin/tmstatistics.cpp \
53 52 ../rmapplugin/tmpackettoread.cpp \
54 53 ../rmapplugin/wfpacket.cpp \
55 54 ../rmapplugin/spectrapacket.cpp \
55 ../common_PLE/qipdialogbox.cpp \
56 56 ../common_PLE/hkdisplay.cpp \
57 57 lfrxmlparser.cpp \
58 lfrspectrogram.cpp \
59 parameterdump.cpp moc_mainwindow.cpp \
58 lfrspectrogram.cpp moc_mainwindow.cpp \
60 59 moc_mainwindowui.cpp \
61 moc_qipdialogbox.cpp \
62 60 moc_lfrxmlhandler.cpp \
63 61 moc_lfrxmlwriter.cpp \
64 62 moc_tmstatistics.cpp \
65 63 moc_tmpackettoread.cpp \
66 64 moc_wfpacket.cpp \
67 65 moc_spectrapacket.cpp \
66 moc_qipdialogbox.cpp \
68 67 moc_hkdisplay.cpp \
69 68 moc_lfrxmlparser.cpp \
70 moc_lfrspectrogram.cpp \
71 moc_parameterdump.cpp
69 moc_lfrspectrogram.cpp
72 70 OBJECTS = main.o \
73 71 mainwindow.o \
74 72 mainwindowui.o \
75 qipdialogbox.o \
76 73 lfrxmlhandler.o \
77 74 lfrxmlwriter.o \
78 75 tmstatistics.o \
79 76 tmpackettoread.o \
80 77 wfpacket.o \
81 78 spectrapacket.o \
79 qipdialogbox.o \
82 80 hkdisplay.o \
83 81 lfrxmlparser.o \
84 82 lfrspectrogram.o \
85 parameterdump.o \
86 83 moc_mainwindow.o \
87 84 moc_mainwindowui.o \
88 moc_qipdialogbox.o \
89 85 moc_lfrxmlhandler.o \
90 86 moc_lfrxmlwriter.o \
91 87 moc_tmstatistics.o \
92 88 moc_tmpackettoread.o \
93 89 moc_wfpacket.o \
94 90 moc_spectrapacket.o \
91 moc_qipdialogbox.o \
95 92 moc_hkdisplay.o \
96 93 moc_lfrxmlparser.o \
97 moc_lfrspectrogram.o \
98 moc_parameterdump.o
94 moc_lfrspectrogram.o
99 95 DIST = /usr/lib64/qt4/mkspecs/common/unix.conf \
100 96 /usr/lib64/qt4/mkspecs/common/linux.conf \
101 97 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
102 98 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
103 99 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
104 100 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
105 101 /usr/lib64/qt4/mkspecs/qconfig.pri \
106 102 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
107 103 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
108 104 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
109 105 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
110 106 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
111 107 /usr/lib64/qt4/mkspecs/features/release.prf \
112 108 /usr/lib64/qt4/mkspecs/features/default_post.prf \
113 109 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
114 110 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
115 111 /usr/lib64/qt4/mkspecs/features/qt.prf \
116 112 /usr/lib64/qt4/mkspecs/features/unix/thread.prf \
117 113 /usr/lib64/qt4/mkspecs/features/moc.prf \
118 114 /usr/lib64/qt4/mkspecs/features/resources.prf \
119 115 /usr/lib64/qt4/mkspecs/features/uic.prf \
120 116 /usr/lib64/qt4/mkspecs/features/yacc.prf \
121 117 /usr/lib64/qt4/mkspecs/features/lex.prf \
122 118 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf \
123 119 gselesia.pro
124 QMAKE_TARGET = lfrsgse-dev
120 QMAKE_TARGET = lfrsgse
125 121 DESTDIR =
126 TARGET = lfrsgse-dev
122 TARGET = lfrsgse
127 123
128 124 first: all
129 125 ####### Implicit rules
130 126
131 127 .SUFFIXES: .o .c .cpp .cc .cxx .C
132 128
133 129 .cpp.o:
134 130 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
135 131
136 132 .cc.o:
137 133 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
138 134
139 135 .cxx.o:
140 136 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
141 137
142 138 .C.o:
143 139 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
144 140
145 141 .c.o:
146 142 $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
147 143
148 144 ####### Build rules
149 145
150 146 all: Makefile $(TARGET)
151 147
152 148 $(TARGET): $(OBJECTS)
153 149 $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
154 150
155 151 Makefile: gselesia.pro /usr/lib64/qt4/mkspecs/linux-g++/qmake.conf /usr/lib64/qt4/mkspecs/common/unix.conf \
156 152 /usr/lib64/qt4/mkspecs/common/linux.conf \
157 153 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
158 154 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
159 155 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
160 156 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
161 157 /usr/lib64/qt4/mkspecs/qconfig.pri \
162 158 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
163 159 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
164 160 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
165 161 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
166 162 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
167 163 /usr/lib64/qt4/mkspecs/features/release.prf \
168 164 /usr/lib64/qt4/mkspecs/features/default_post.prf \
169 165 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
170 166 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
171 167 /usr/lib64/qt4/mkspecs/features/qt.prf \
172 168 /usr/lib64/qt4/mkspecs/features/unix/thread.prf \
173 169 /usr/lib64/qt4/mkspecs/features/moc.prf \
174 170 /usr/lib64/qt4/mkspecs/features/resources.prf \
175 171 /usr/lib64/qt4/mkspecs/features/uic.prf \
176 172 /usr/lib64/qt4/mkspecs/features/yacc.prf \
177 173 /usr/lib64/qt4/mkspecs/features/lex.prf \
178 174 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf \
179 175 /usr/lib64/libQtXml.prl \
180 176 /usr/lib64/libQtCore.prl \
181 177 /usr/lib64/libQtGui.prl \
182 178 /usr/lib64/libQtNetwork.prl
183 179 $(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile gselesia.pro
184 180 /usr/lib64/qt4/mkspecs/common/unix.conf:
185 181 /usr/lib64/qt4/mkspecs/common/linux.conf:
186 182 /usr/lib64/qt4/mkspecs/common/gcc-base.conf:
187 183 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf:
188 184 /usr/lib64/qt4/mkspecs/common/g++-base.conf:
189 185 /usr/lib64/qt4/mkspecs/common/g++-unix.conf:
190 186 /usr/lib64/qt4/mkspecs/qconfig.pri:
191 187 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri:
192 188 /usr/lib64/qt4/mkspecs/features/qt_functions.prf:
193 189 /usr/lib64/qt4/mkspecs/features/qt_config.prf:
194 190 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf:
195 191 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
196 192 /usr/lib64/qt4/mkspecs/features/release.prf:
197 193 /usr/lib64/qt4/mkspecs/features/default_post.prf:
198 194 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
199 195 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
200 196 /usr/lib64/qt4/mkspecs/features/qt.prf:
201 197 /usr/lib64/qt4/mkspecs/features/unix/thread.prf:
202 198 /usr/lib64/qt4/mkspecs/features/moc.prf:
203 199 /usr/lib64/qt4/mkspecs/features/resources.prf:
204 200 /usr/lib64/qt4/mkspecs/features/uic.prf:
205 201 /usr/lib64/qt4/mkspecs/features/yacc.prf:
206 202 /usr/lib64/qt4/mkspecs/features/lex.prf:
207 203 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf:
208 204 /usr/lib64/libQtXml.prl:
209 205 /usr/lib64/libQtCore.prl:
210 206 /usr/lib64/libQtGui.prl:
211 207 /usr/lib64/libQtNetwork.prl:
212 208 qmake: FORCE
213 209 @$(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile gselesia.pro
214 210
215 211 dist:
216 @$(CHK_DIR_EXISTS) .tmp/lfrsgse-dev1.0.0 || $(MKDIR) .tmp/lfrsgse-dev1.0.0
217 $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/lfrsgse-dev1.0.0/ && $(COPY_FILE) --parents mainwindow.h mainwindowui.h ../common_PLE/qipdialogbox.h lfrxmlhandler.h lfrxmlwriter.h ../rmapplugin/tmstatistics.h ../rmapplugin/tmpackettoread.h ../rmapplugin/wfpacket.h ../rmapplugin/spectrapacket.h ../common_PLE/hkdisplay.h ../rmapplugin/params.h ../../DEV_PLE/header/ccsds_types.h lfrxmlparser.h lfrspectrogram.h parameterdump.h .tmp/lfrsgse-dev1.0.0/ && $(COPY_FILE) --parents main.cpp mainwindow.cpp mainwindowui.cpp ../common_PLE/qipdialogbox.cpp lfrxmlhandler.cpp lfrxmlwriter.cpp ../rmapplugin/tmstatistics.cpp ../rmapplugin/tmpackettoread.cpp ../rmapplugin/wfpacket.cpp ../rmapplugin/spectrapacket.cpp ../common_PLE/hkdisplay.cpp lfrxmlparser.cpp lfrspectrogram.cpp parameterdump.cpp .tmp/lfrsgse-dev1.0.0/ && (cd `dirname .tmp/lfrsgse-dev1.0.0` && $(TAR) lfrsgse-dev1.0.0.tar lfrsgse-dev1.0.0 && $(COMPRESS) lfrsgse-dev1.0.0.tar) && $(MOVE) `dirname .tmp/lfrsgse-dev1.0.0`/lfrsgse-dev1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/lfrsgse-dev1.0.0
212 @$(CHK_DIR_EXISTS) .tmp/lfrsgse1.0.0 || $(MKDIR) .tmp/lfrsgse1.0.0
213 $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/lfrsgse1.0.0/ && $(COPY_FILE) --parents mainwindow.h mainwindowui.h lfrxmlhandler.h lfrxmlwriter.h ../rmapplugin/tmstatistics.h ../rmapplugin/tmpackettoread.h ../rmapplugin/wfpacket.h ../rmapplugin/spectrapacket.h ../common_PLE/qipdialogbox.h ../common_PLE/hkdisplay.h ../rmapplugin/params.h ../../DEV_PLE/header/TC_types.h ../../DEV_PLE/header/ccsds_types.h lfrxmlparser.h lfrspectrogram.h .tmp/lfrsgse1.0.0/ && $(COPY_FILE) --parents main.cpp mainwindow.cpp mainwindowui.cpp lfrxmlhandler.cpp lfrxmlwriter.cpp ../rmapplugin/tmstatistics.cpp ../rmapplugin/tmpackettoread.cpp ../rmapplugin/wfpacket.cpp ../rmapplugin/spectrapacket.cpp ../common_PLE/qipdialogbox.cpp ../common_PLE/hkdisplay.cpp lfrxmlparser.cpp lfrspectrogram.cpp .tmp/lfrsgse1.0.0/ && (cd `dirname .tmp/lfrsgse1.0.0` && $(TAR) lfrsgse1.0.0.tar lfrsgse1.0.0 && $(COMPRESS) lfrsgse1.0.0.tar) && $(MOVE) `dirname .tmp/lfrsgse1.0.0`/lfrsgse1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/lfrsgse1.0.0
218 214
219 215
220 216 clean:compiler_clean
221 217 -$(DEL_FILE) $(OBJECTS)
222 218 -$(DEL_FILE) *~ core *.core
223 219
224 220
225 221 ####### Sub-libraries
226 222
227 223 distclean: clean
228 224 -$(DEL_FILE) $(TARGET)
229 225 -$(DEL_FILE) Makefile
230 226
231 227
232 228 check: first
233 229
234 230 mocclean: compiler_moc_header_clean compiler_moc_source_clean
235 231
236 232 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
237 233
238 compiler_moc_header_make_all: moc_mainwindow.cpp moc_mainwindowui.cpp moc_qipdialogbox.cpp moc_lfrxmlhandler.cpp moc_lfrxmlwriter.cpp moc_tmstatistics.cpp moc_tmpackettoread.cpp moc_wfpacket.cpp moc_spectrapacket.cpp moc_hkdisplay.cpp moc_lfrxmlparser.cpp moc_lfrspectrogram.cpp moc_parameterdump.cpp
234 compiler_moc_header_make_all: moc_mainwindow.cpp moc_mainwindowui.cpp moc_lfrxmlhandler.cpp moc_lfrxmlwriter.cpp moc_tmstatistics.cpp moc_tmpackettoread.cpp moc_wfpacket.cpp moc_spectrapacket.cpp moc_qipdialogbox.cpp moc_hkdisplay.cpp moc_lfrxmlparser.cpp moc_lfrspectrogram.cpp
239 235 compiler_moc_header_clean:
240 -$(DEL_FILE) moc_mainwindow.cpp moc_mainwindowui.cpp moc_qipdialogbox.cpp moc_lfrxmlhandler.cpp moc_lfrxmlwriter.cpp moc_tmstatistics.cpp moc_tmpackettoread.cpp moc_wfpacket.cpp moc_spectrapacket.cpp moc_hkdisplay.cpp moc_lfrxmlparser.cpp moc_lfrspectrogram.cpp moc_parameterdump.cpp
236 -$(DEL_FILE) moc_mainwindow.cpp moc_mainwindowui.cpp moc_lfrxmlhandler.cpp moc_lfrxmlwriter.cpp moc_tmstatistics.cpp moc_tmpackettoread.cpp moc_wfpacket.cpp moc_spectrapacket.cpp moc_qipdialogbox.cpp moc_hkdisplay.cpp moc_lfrxmlparser.cpp moc_lfrspectrogram.cpp
241 237 moc_mainwindow.cpp: lfrxmlhandler.h \
242 238 lfrxmlwriter.h \
243 239 mainwindowui.h \
244 240 lfrspectrogram.h \
245 parameterdump.h \
246 241 lfrxmlparser.h \
247 242 mainwindow.h
248 243 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) mainwindow.h -o moc_mainwindow.cpp
249 244
250 245 moc_mainwindowui.cpp: lfrspectrogram.h \
251 parameterdump.h \
252 246 mainwindowui.h
253 247 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) mainwindowui.h -o moc_mainwindowui.cpp
254 248
255 moc_qipdialogbox.cpp: ../common_PLE/qipdialogbox.h
256 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../common_PLE/qipdialogbox.h -o moc_qipdialogbox.cpp
257
258 249 moc_lfrxmlhandler.cpp: lfrxmlhandler.h
259 250 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) lfrxmlhandler.h -o moc_lfrxmlhandler.cpp
260 251
261 252 moc_lfrxmlwriter.cpp: lfrxmlwriter.h
262 253 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) lfrxmlwriter.h -o moc_lfrxmlwriter.cpp
263 254
264 255 moc_tmstatistics.cpp: ../rmapplugin/tmstatistics.h
265 256 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../rmapplugin/tmstatistics.h -o moc_tmstatistics.cpp
266 257
267 258 moc_tmpackettoread.cpp: ../rmapplugin/tmpackettoread.h
268 259 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../rmapplugin/tmpackettoread.h -o moc_tmpackettoread.cpp
269 260
270 261 moc_wfpacket.cpp: ../rmapplugin/wfpacket.h
271 262 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../rmapplugin/wfpacket.h -o moc_wfpacket.cpp
272 263
273 264 moc_spectrapacket.cpp: ../rmapplugin/spectrapacket.h
274 265 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../rmapplugin/spectrapacket.h -o moc_spectrapacket.cpp
275 266
267 moc_qipdialogbox.cpp: ../common_PLE/qipdialogbox.h
268 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../common_PLE/qipdialogbox.h -o moc_qipdialogbox.cpp
269
276 270 moc_hkdisplay.cpp: ../common_PLE/hkdisplay.h
277 271 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../common_PLE/hkdisplay.h -o moc_hkdisplay.cpp
278 272
279 273 moc_lfrxmlparser.cpp: lfrxmlparser.h
280 274 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) lfrxmlparser.h -o moc_lfrxmlparser.cpp
281 275
282 276 moc_lfrspectrogram.cpp: lfrspectrogram.h
283 277 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) lfrspectrogram.h -o moc_lfrspectrogram.cpp
284 278
285 moc_parameterdump.cpp: parameterdump.h
286 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) parameterdump.h -o moc_parameterdump.cpp
287
288 279 compiler_rcc_make_all:
289 280 compiler_rcc_clean:
290 281 compiler_image_collection_make_all: qmake_image_collection.cpp
291 282 compiler_image_collection_clean:
292 283 -$(DEL_FILE) qmake_image_collection.cpp
293 284 compiler_moc_source_make_all:
294 285 compiler_moc_source_clean:
295 286 compiler_uic_make_all:
296 287 compiler_uic_clean:
297 288 compiler_yacc_decl_make_all:
298 289 compiler_yacc_decl_clean:
299 290 compiler_yacc_impl_make_all:
300 291 compiler_yacc_impl_clean:
301 292 compiler_lex_make_all:
302 293 compiler_lex_clean:
303 294 compiler_clean: compiler_moc_header_clean
304 295
305 296 ####### Compile
306 297
307 298 main.o: main.cpp mainwindow.h \
308 299 lfrxmlhandler.h \
309 300 lfrxmlwriter.h \
310 301 mainwindowui.h \
311 302 lfrspectrogram.h \
312 parameterdump.h \
313 303 lfrxmlparser.h
314 304 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
315 305
316 306 mainwindow.o: mainwindow.cpp mainwindow.h \
317 307 lfrxmlhandler.h \
318 308 lfrxmlwriter.h \
319 309 mainwindowui.h \
320 310 lfrspectrogram.h \
321 parameterdump.h \
322 311 lfrxmlparser.h
323 312 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
324 313
325 314 mainwindowui.o: mainwindowui.cpp mainwindowui.h \
326 lfrspectrogram.h \
327 parameterdump.h
315 lfrspectrogram.h
328 316 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindowui.o mainwindowui.cpp
329 317
330 qipdialogbox.o: ../common_PLE/qipdialogbox.cpp ../common_PLE/qipdialogbox.h
331 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qipdialogbox.o ../common_PLE/qipdialogbox.cpp
332
333 318 lfrxmlhandler.o: lfrxmlhandler.cpp lfrxmlhandler.h
334 319 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o lfrxmlhandler.o lfrxmlhandler.cpp
335 320
336 321 lfrxmlwriter.o: lfrxmlwriter.cpp lfrxmlwriter.h
337 322 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o lfrxmlwriter.o lfrxmlwriter.cpp
338 323
339 324 tmstatistics.o: ../rmapplugin/tmstatistics.cpp ../rmapplugin/tmstatistics.h
340 325 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tmstatistics.o ../rmapplugin/tmstatistics.cpp
341 326
342 327 tmpackettoread.o: ../rmapplugin/tmpackettoread.cpp ../rmapplugin/tmpackettoread.h
343 328 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tmpackettoread.o ../rmapplugin/tmpackettoread.cpp
344 329
345 330 wfpacket.o: ../rmapplugin/wfpacket.cpp ../rmapplugin/wfpacket.h
346 331 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o wfpacket.o ../rmapplugin/wfpacket.cpp
347 332
348 333 spectrapacket.o: ../rmapplugin/spectrapacket.cpp ../rmapplugin/spectrapacket.h
349 334 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o spectrapacket.o ../rmapplugin/spectrapacket.cpp
350 335
336 qipdialogbox.o: ../common_PLE/qipdialogbox.cpp ../common_PLE/qipdialogbox.h
337 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qipdialogbox.o ../common_PLE/qipdialogbox.cpp
338
351 339 hkdisplay.o: ../common_PLE/hkdisplay.cpp ../common_PLE/hkdisplay.h
352 340 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o hkdisplay.o ../common_PLE/hkdisplay.cpp
353 341
354 342 lfrxmlparser.o: lfrxmlparser.cpp lfrxmlparser.h
355 343 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o lfrxmlparser.o lfrxmlparser.cpp
356 344
357 345 lfrspectrogram.o: lfrspectrogram.cpp lfrspectrogram.h
358 346 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o lfrspectrogram.o lfrspectrogram.cpp
359 347
360 parameterdump.o: parameterdump.cpp parameterdump.h
361 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o parameterdump.o parameterdump.cpp
362
363 348 moc_mainwindow.o: moc_mainwindow.cpp
364 349 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
365 350
366 351 moc_mainwindowui.o: moc_mainwindowui.cpp
367 352 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindowui.o moc_mainwindowui.cpp
368 353
369 moc_qipdialogbox.o: moc_qipdialogbox.cpp
370 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qipdialogbox.o moc_qipdialogbox.cpp
371
372 354 moc_lfrxmlhandler.o: moc_lfrxmlhandler.cpp
373 355 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_lfrxmlhandler.o moc_lfrxmlhandler.cpp
374 356
375 357 moc_lfrxmlwriter.o: moc_lfrxmlwriter.cpp
376 358 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_lfrxmlwriter.o moc_lfrxmlwriter.cpp
377 359
378 360 moc_tmstatistics.o: moc_tmstatistics.cpp
379 361 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_tmstatistics.o moc_tmstatistics.cpp
380 362
381 363 moc_tmpackettoread.o: moc_tmpackettoread.cpp
382 364 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_tmpackettoread.o moc_tmpackettoread.cpp
383 365
384 366 moc_wfpacket.o: moc_wfpacket.cpp
385 367 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_wfpacket.o moc_wfpacket.cpp
386 368
387 369 moc_spectrapacket.o: moc_spectrapacket.cpp
388 370 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_spectrapacket.o moc_spectrapacket.cpp
389 371
372 moc_qipdialogbox.o: moc_qipdialogbox.cpp
373 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qipdialogbox.o moc_qipdialogbox.cpp
374
390 375 moc_hkdisplay.o: moc_hkdisplay.cpp
391 376 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_hkdisplay.o moc_hkdisplay.cpp
392 377
393 378 moc_lfrxmlparser.o: moc_lfrxmlparser.cpp
394 379 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_lfrxmlparser.o moc_lfrxmlparser.cpp
395 380
396 381 moc_lfrspectrogram.o: moc_lfrspectrogram.cpp
397 382 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_lfrspectrogram.o moc_lfrspectrogram.cpp
398 383
399 moc_parameterdump.o: moc_parameterdump.cpp
400 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_parameterdump.o moc_parameterdump.cpp
401
402 384 ####### Install
403 385
404 386 install: FORCE
405 387
406 388 uninstall: FORCE
407 389
408 390 FORCE:
409 391
@@ -1,56 +1,56
1 1 #-------------------------------------------------
2 2 #
3 3 # Project created by QtCreator 2013-05-03T14:05:02
4 4 #
5 5 #-------------------------------------------------
6 6
7 7 QT += core gui
8 8 QT += network
9 9 QT += xml
10 10
11 TARGET = lfrsgse-dev
11 TARGET = lfrsgse
12 12 TEMPLATE = app
13 13
14 14 INCLUDEPATH += \
15 15 $${PWD} \
16 16 ../common_PLE \
17 17 ../rmapplugin \
18 18 ../../DEV_PLE/header \
19 19 $$[QT_INSTALL_HEADERS]/lppmon/common \
20 $$[QT_INSTALL_HEADERS]/lppmon/wfdisplay
20 $$[QT_INSTALL_HEADERS]/lppmon/wfdisplay \
21 $$[QT_INSTALL_HEADERS]/lppmon/parameterdump
21 22
22 LIBS += -llppmoncommon -lwfdisplay -lqwt5-qt4
23 LIBS += -llppmoncommon -lwfdisplay -lqwt5-qt4 -lparameterdump
23 24
24 25 SOURCES += main.cpp\
25 26 mainwindow.cpp \
26 27 mainwindowui.cpp \
27 ../common_PLE/qipdialogbox.cpp \
28 28 lfrxmlhandler.cpp \
29 29 lfrxmlwriter.cpp \
30 30 ../rmapplugin/tmstatistics.cpp \
31 31 ../rmapplugin/tmpackettoread.cpp \
32 32 ../rmapplugin/wfpacket.cpp \
33 33 ../rmapplugin/spectrapacket.cpp \
34 ../common_PLE/qipdialogbox.cpp \
34 35 ../common_PLE/hkdisplay.cpp \
35 36 lfrxmlparser.cpp \
36 lfrspectrogram.cpp \
37 parameterdump.cpp
37 lfrspectrogram.cpp
38 38
39 39 HEADERS += mainwindow.h \
40 40 mainwindowui.h \
41 ../common_PLE/qipdialogbox.h \
42 41 lfrxmlhandler.h \
43 42 lfrxmlwriter.h \
44 43 ../rmapplugin/tmstatistics.h \
45 44 ../rmapplugin/tmpackettoread.h \
46 45 ../rmapplugin/wfpacket.h \
47 46 ../rmapplugin/spectrapacket.h \
47 ../common_PLE/qipdialogbox.h \
48 48 ../common_PLE/hkdisplay.h \
49 49 ../rmapplugin/params.h \
50 ../../DEV_PLE/header/TC_types.h \
50 51 ../../DEV_PLE/header/ccsds_types.h \
51 52 lfrxmlparser.h \
52 lfrspectrogram.h \
53 parameterdump.h
53 lfrspectrogram.h
54 54
55 55
56 56
@@ -1,196 +1,198
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE QtCreatorProject>
3 <!-- Written by QtCreator 2.7.0, 2013-07-25T10:23:24. -->
3 <!-- Written by QtCreator 2.8.0, 2013-08-01T09:16:13. -->
4 4 <qtcreator>
5 5 <data>
6 6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
7 7 <value type="int">0</value>
8 8 </data>
9 9 <data>
10 10 <variable>ProjectExplorer.Project.EditorSettings</variable>
11 11 <valuemap type="QVariantMap">
12 12 <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
13 13 <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
14 14 <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
15 15 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
16 <value type="QByteArray" key="language">Cpp</value>
16 <value type="QString" key="language">Cpp</value>
17 17 <valuemap type="QVariantMap" key="value">
18 18 <value type="QString" key="CurrentPreferences">CppGlobal</value>
19 19 </valuemap>
20 20 </valuemap>
21 21 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
22 <value type="QByteArray" key="language">QmlJS</value>
22 <value type="QString" key="language">QmlJS</value>
23 23 <valuemap type="QVariantMap" key="value">
24 24 <value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
25 25 </valuemap>
26 26 </valuemap>
27 27 <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
28 28 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
29 29 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
30 30 <value type="int" key="EditorConfiguration.IndentSize">4</value>
31 31 <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
32 32 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
33 33 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
34 34 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
35 35 <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
36 36 <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
37 37 <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
38 38 <value type="int" key="EditorConfiguration.TabSize">8</value>
39 39 <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
40 40 <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
41 41 <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
42 42 <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
43 43 <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
44 44 <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
45 45 </valuemap>
46 46 </data>
47 47 <data>
48 48 <variable>ProjectExplorer.Project.PluginSettings</variable>
49 49 <valuemap type="QVariantMap"/>
50 50 </data>
51 51 <data>
52 52 <variable>ProjectExplorer.Project.Target.0</variable>
53 53 <valuemap type="QVariantMap">
54 54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
55 55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
56 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
56 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
57 57 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
58 58 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
59 59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
60 60 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
61 61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
62 62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
63 63 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
64 64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
65 65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
66 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
67 67 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
68 68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
69 69 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
70 70 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
71 71 </valuemap>
72 72 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
73 73 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
74 74 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
75 75 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
76 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
76 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
77 77 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
78 78 <value type="QString">-w</value>
79 79 <value type="QString">-r</value>
80 80 </valuelist>
81 81 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
82 82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w </value>
83 83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
84 84 </valuemap>
85 85 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
86 86 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
87 87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
88 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
88 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
89 89 </valuemap>
90 90 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
91 91 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
92 92 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
93 93 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
94 94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
95 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
96 96 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
97 97 <value type="QString">-w</value>
98 98 <value type="QString">-r</value>
99 99 </valuelist>
100 100 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
101 101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
102 102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
103 103 </valuemap>
104 104 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
105 105 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
106 106 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
107 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
107 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
108 108 </valuemap>
109 109 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
110 110 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
111 111 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
112 112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
113 113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
115 115 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
116 116 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL/gse_lesia</value>
117 117 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
118 118 </valuemap>
119 119 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
120 120 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
121 121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
122 122 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
123 123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
124 124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
125 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
126 126 </valuemap>
127 127 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
128 128 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
129 129 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
130 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
130 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
131 131 </valuemap>
132 132 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
133 <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
133 134 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
134 135 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
135 136 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
136 137 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
137 138 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
138 139 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
139 140 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
140 141 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
141 142 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
142 143 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
143 144 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
144 145 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
145 146 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
146 147 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
147 148 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
148 149 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
149 150 <value type="int">0</value>
150 151 <value type="int">1</value>
151 152 <value type="int">2</value>
152 153 <value type="int">3</value>
153 154 <value type="int">4</value>
154 155 <value type="int">5</value>
155 156 <value type="int">6</value>
156 157 <value type="int">7</value>
157 158 <value type="int">8</value>
158 159 <value type="int">9</value>
159 160 <value type="int">10</value>
160 161 <value type="int">11</value>
161 162 <value type="int">12</value>
162 163 <value type="int">13</value>
163 164 <value type="int">14</value>
164 165 </valuelist>
166 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
167 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
165 168 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">gselesia</value>
166 169 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
167 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/opt/LPPMON_PLUGINS_PAUL/gse_lesia/gselesia.pro</value>
168 <value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
170 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/opt/LPPMON_PLUGINS_PAUL/gse_lesia/gselesia.pro</value>
169 171 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
170 172 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">gselesia.pro</value>
171 173 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
172 174 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
173 <valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
174 175 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
175 176 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
176 177 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
178 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
177 179 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
178 180 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
179 181 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
180 182 </valuemap>
181 183 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
182 184 </valuemap>
183 185 </data>
184 186 <data>
185 187 <variable>ProjectExplorer.Project.TargetCount</variable>
186 188 <value type="int">1</value>
187 189 </data>
188 190 <data>
189 191 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
190 <value type="QString">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
192 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
191 193 </data>
192 194 <data>
193 195 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
194 <value type="int">12</value>
196 <value type="int">14</value>
195 197 </data>
196 198 </qtcreator>
1 NO CONTENT: modified file, binary diff hidden
@@ -1,542 +1,580
1 1 #include "mainwindow.h"
2 2 #include <iostream>
3 3 #include <QNetworkInterface>
4 4
5 5 MainWindow::MainWindow(QWidget *parent)
6 6 : QMainWindow(parent)
7 7 {
8 8 parsingContinue = false;
9 9 totalOfBytes = 0;
10 10 totalOfPackets = 0;
11 11
12 12 spectraPacketNormalSpectrumF0 = new SpectraPacket(this, 128);
13 13
14 14 //****
15 15 // XML
16 16 // xml handlers
17 17 xmlHandler = new LFRXmlHandler();
18 18 // xml sources
19 19 sourceTC = new QXmlInputSource();
20 20 // xml writer
21 21 lfrXmlWriter = new LFRXmlWriter();
22 22 // setup xml parser for the echo bridge
23 23 lfrXmlParser = new LFRXmlParser();
24 24
25 25 UI = new MainWindowUI();
26 26 readSettings();
27 27 this->UI->serverTMEchoDialogBox->setIP(echoBridgeIP0, echoBridgeIP1, echoBridgeIP2, echoBridgeIP3);
28 28
29 29 lfrXmlParser->generalCCSDSPacketStore = &this->generalCCSDSPacketStore;
30 30
31 31 initSocketStatesList();
32 32
33 33 this->setCentralWidget(this->UI);
34 34 //this->setLayout(UI->layout());
35 35
36 36 analyserSGSEServerTC = new QTcpServer();
37 37 analyserSGSEServerTM = new QTcpServer();
38 38
39 39 socketTC = NULL;
40 40 socketTM = NULL;
41 41 socketEchoServer = new QTcpSocket();
42 42
43 43 connect(this->UI->button_openServerTCTM, SIGNAL(clicked()), this, SLOT(listenOnTCTMPorts()));
44 44 connect(this->UI->button_testServerTCTM, SIGNAL(clicked()), this, SLOT(testTCTMPorts()));
45 45 connect(this->UI->button_openSocketEchoServer, SIGNAL(clicked()), this, SLOT(openEchoServer()));
46 46 //
47 47 connect(this->analyserSGSEServerTC, SIGNAL(newConnection()), this, SLOT(newConnectionOnTCServer()));
48 48 connect(this->analyserSGSEServerTM, SIGNAL(newConnection()), this, SLOT(newConnectionOnTMServer()));
49 49 //
50 50 connect(this, SIGNAL(socketTMHasChanged(QTcpSocket*)), this->lfrXmlWriter, SLOT(setSocketTM(QTcpSocket*)));
51 51 connect(this->UI->button_TCAcknowledgement, SIGNAL(clicked()), this->lfrXmlWriter, SLOT(sendXML_TC_Acknowledgment()));
52 52 connect(this->UI->button_TCRejection, SIGNAL(clicked()), this->lfrXmlWriter, SLOT(sendXML_TC_rejection()));
53 53 connect(this->UI->button_GSEHK, SIGNAL(clicked()), this->lfrXmlWriter, SLOT(sendXML_GSE_HK()));
54 54
55 55 // socket echo server
56 56 connect(this->socketEchoServer, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
57 57 this, SLOT(socket_TMEcho_ServerHasChanged()));
58 58 connect(this->socketEchoServer, SIGNAL(readyRead()),
59 59 this, SLOT(readDataOnSocketEchoServer()));
60 60
61 61 // display on console
62 62 connect(this->xmlHandler, SIGNAL(displayMessage(QString)),
63 63 this, SLOT(displayOnConsole(QString)));
64 64 connect(this->UI->hkDisplay, SIGNAL(displayMessage(QString)),
65 65 this, SLOT(displayOnConsole(QString)));
66 66 connect(this->lfrXmlParser, SIGNAL(sendMessage(QString)),
67 67 this, SLOT(displayOnConsole(QString)));
68 68 //
69 69 connect(this->lfrXmlParser, SIGNAL(processPacketStore()),
70 70 this, SLOT(processPacketStore()));
71 71 //
72 72 connect(this->UI->button_resetStatistics, SIGNAL(clicked()),
73 73 this, SLOT(resetStatistics()));
74 74
75 75 displayNetworkInterfaces();
76 76
77 77 this->xmlHandler->packetStoreHasChanged(&generalCCSDSPacketStore);
78 78 };
79 79
80 80 MainWindow::~MainWindow()
81 81 {
82 82
83 83 }
84 84
85 85 void MainWindow::displayNetworkInterfaces()
86 86 {
87 87 QList<QHostAddress> list = QNetworkInterface::allAddresses();
88 88 this->displayOnConsole("Network interfaces:");
89 89 for(int nIter=0; nIter<list.count(); nIter++)
90 90 {
91 91 this->UI->displayOnConsole(list[nIter].toString());
92 92 }
93 93 }
94 94
95 95 void MainWindow::listenOnTCTMPorts()
96 96 {
97 97 QString str;
98 98
99 99 //***
100 100 // TC
101 101 analyserSGSEServerTC->listen(QHostAddress::Any, this->UI->getTCPort());
102 102 str = analyserSGSEServerTC->errorString();
103 103 if (!str.isEmpty())
104 104 {
105 105 this->displayOnConsole(str);
106 106 }
107 107 this->displayOnConsole("Listening TC on port "
108 108 + QString::number(this->UI->getTCPort())
109 109 );
110 110
111 111 //***
112 112 // TM
113 113 analyserSGSEServerTM->listen(QHostAddress::Any, this->UI->getTMPort());
114 114 str = analyserSGSEServerTM->errorString();
115 115 if (!str.isEmpty())
116 116 {
117 117 this->displayOnConsole(str);
118 118 }
119 119 this->displayOnConsole("Listening TM on port "
120 120 + QString::number(this->UI->getTMPort())
121 121 );
122 122 }
123 123
124 124 void MainWindow::testTCTMPorts()
125 125 {
126 126 if (socketTC != NULL)
127 127 {
128 128 this->displayOnConsole("TC socket *** " + socketStates.at(socketTC->state()) );
129 129 }
130 130 else
131 131 {
132 132 this->displayOnConsole("TC socket *** not tested, (socketTC) is NULL" );
133 133 }
134 134 if (socketTM != NULL)
135 135 {
136 136 this->displayOnConsole("TM socket *** " + socketStates.at(socketTM->state()) );
137 137 }
138 138 else
139 139 {
140 140 this->displayOnConsole("TM socket *** not tested, (socketTM) is NULL" );
141 141 }
142 142 }
143 143
144 144 void MainWindow::newConnectionOnTCServer()
145 145 {
146 146 this->displayOnConsole("got new connection on TC port");
147 147 socketTC = analyserSGSEServerTC->nextPendingConnection();
148 148 this->displayOnConsole("TC socket *** " + socketStates.at(socketTC->state()) );
149 149 connect(this->socketTC, SIGNAL(readyRead()), this, SLOT(readDataOnTCPort()));
150 150 }
151 151
152 152 void MainWindow::newConnectionOnTMServer()
153 153 {
154 154 this->displayOnConsole("got new connection on TM port");
155 155 socketTM = analyserSGSEServerTM->nextPendingConnection();
156 156 this->displayOnConsole("TM socket *** " + socketStates.at(socketTM->state()) );
157 157 connect(this->socketTM, SIGNAL(readyRead()), this, SLOT(readDataOnTMPort()));
158 158
159 159 emit socketTMHasChanged(this->socketTM);
160 160 }
161 161
162 162 void MainWindow::readDataOnTCPort()
163 163 {
164 164 bool ok;
165 165 int nbBytesAvailable = 0;
166 166
167 167 nbBytesAvailable = socketTC->bytesAvailable();
168 168 buffer = (char *) malloc(nbBytesAvailable);
169 169 socketTC->read(buffer, nbBytesAvailable);
170 170
171 171 this->displayOnConsole("readDataOnTCPort *** "
172 172 + QString::number(nbBytesAvailable)
173 173 + " read");
174 174
175 175 QByteArray xmlData( buffer, nbBytesAvailable);
176 176
177 177 free(buffer);
178 178
179 179 sourceTC->setData( xmlData );
180 180
181 181 xmlReader.setContentHandler(xmlHandler);
182 182 xmlReader.setErrorHandler(xmlHandler);
183 183
184 184 ok = xmlReader.parse(sourceTC);
185 185 if (!ok) {
186 186 std::cout << "Parsing failed." << std::endl;
187 187 }
188 188 else {
189 189 QStringList names = xmlHandler->names();
190 190 QList<int> indentations = xmlHandler->indentations();
191 191
192 192 int items = names.count();
193 193
194 194 for (int i = 0; i < items; ++i) {
195 195 displayOnConsole(
196 196 names[i]
197 197 + " --- identations: "
198 198 + QString::number(indentations[i]));
199 199 }
200 200 }
201 201 }
202 202
203 203 void MainWindow::readDataOnTMPort()
204 204 {
205 205 this->displayOnConsole("TM data received, begin parsing");
206 206 }
207 207
208 208 void MainWindow::readDataOnSocketEchoServer()
209 209 {
210 210 QString dataString;
211 211
212 212 dataArray.append(socketEchoServer->readAll());
213 213 dataString = QString::fromAscii(dataArray);
214 214 this->lfrXmlParser->processIncomingStr(dataString);
215 215 dataArray.clear();
216 216 }
217 217
218 218 void MainWindow::displayOnConsole(QString message)
219 219 {
220 220 this->UI->displayOnConsole( message );
221 221 }
222 222
223 223 void MainWindow::initSocketStatesList()
224 224 {
225 225 socketStates.append("The socket is not connected");
226 226 socketStates.append("The socket is performing a host name lookup");
227 227 socketStates.append("The socket has started establishing a connection");
228 228 socketStates.append("A connection is established");
229 229 socketStates.append("The socket is bound to an address and port (for servers)");
230 230 socketStates.append("The socket is about to close (data may still be waiting to be written)");
231 231 socketStates.append("For internal use only");
232 232 }
233 233
234 234 void MainWindow::openEchoServer()
235 235 {
236 236 socketEchoServer->connectToHost(this->UI->serverTMEchoDialogBox->getIP(),
237 237 this->UI->spinbox_serverTMEchoPort->value());
238 238 //socketEchoServer->open();
239 239 }
240 240
241 241 void MainWindow::socket_TMEcho_ServerHasChanged()
242 242 {
243 243 this->displayOnConsole("TM Echo Socket socket *** " + socketStates.at(socketEchoServer->state()) );
244 244 }
245 245
246 void MainWindow::preProcessPacket(TMPacketToRead *packet)
247 {
248 unsigned char pid = 0;
249 unsigned char cat = 0;
250 unsigned char typ = 0;
251 unsigned char sub = 0;
252 unsigned int sid = 0;
253 unsigned int length = 0;
254 unsigned int coarse_t = 0;
255 unsigned int fine_t = 0;
256
257 //*********************************
258 // get the parameters of the packet
259 pid = this->UI->tmStatistics->getPID( packet );
260 cat = this->UI->tmStatistics->getCAT( packet );
261 typ = this->UI->tmStatistics->getTYPE( packet );
262 sub = this->UI->tmStatistics->getSUBTYPE( packet );
263 length = this->UI->tmStatistics->getLENGTH( packet );
264 coarse_t = this->UI->tmStatistics->getCoarseTime( packet );
265 fine_t = this->UI->tmStatistics->getFineTime( packet );
266 sid = this->UI->tmStatistics->getSID( packet, pid, cat, typ, sub );
267
268 this->UI->tmStatistics->updateStatistics(pid, cat, typ, sub, sid, length, coarse_t, fine_t);
269
270 // compare length in the packet with the size of the packet
271 if ( (length + 1 + 10) != (packet->size))
272 {
273 displayOnConsole("reception of " + QString::number(packet->size)
274 + " bytes instead of " + QString::number(length + 1 + 10));
275 }
276
277 //***************************************************
278 // if the packet is an HK packet, display its content
279 if ( (pid == 76) & (cat == 4) & (typ == TM_TYPE_HK) & (sub == TM_SUBTYPE_HK) )
280 {
281 this->UI->hkDisplay->displayPacket(packet);
282 }
283
284 //**************************************************************
285 // if the packet is a parameter dump packet, display its content
286 if ( (pid == 76) & (cat == 9) & (typ == TM_TYPE_PARAMETER_DUMP) & (sub == TM_SUBTYPE_PARAMETER_DUMP) )
287 {
288 //this->UI->parameterDump->updateParameterDump(packet);
289 }
290
291 //****************************************
292 // if the packet is a waveform, display it
293 if ( (typ == TM_TYPE_LFR_SCIENCE) & (sub == TM_SUBTYPE_LFR_SCIENCE) )
294 {
295 sid = packet->Value[20]; // SID
296 switch (sid){
297 case SID_NORMAL_SWF_F0:
298 buildWFAndDisplay(packet, &wfPacketNormal[0], 0);
299 break;
300 case SID_NORMAL_SWF_F1:
301 buildWFAndDisplay(packet, &wfPacketNormal[1], 1);
302 break;
303 case SID_NORMAL_SWF_F2:
304 buildWFAndDisplay(packet, &wfPacketNormal[2], 2);
305 break;
306 case SID_NORMAL_CWF_F3:
307 buildWFAndDisplay(packet, &wfPacketNormal[3], 3);
308 break;
309 case SID_BURST_CWF_F2:
310 buildWFAndDisplayBurst(packet, &wfPacketBurst);
311 break;
312 case SID_SBM1_CWF_F1:
313 buildWFAndDisplaySBM1(packet, &wfPacketSBM1);
314 break;
315 case SID_SBM2_CWF_F2:
316 buildWFAndDisplaySBM2(packet, &wfPacketSBM2);
317 break;
318 case SID_NORMAL_ASM_F0:
319 buildSpectrumAndDisplayNORM_F0(packet, spectraPacketNormalSpectrumF0);
320 break;
321 }
322 }
323 }
324
325 246 void MainWindow::buildWFAndDisplay(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page)
326 247 {
327 248 unsigned int i = 0;
328 249 unsigned int j = 0;
329 250 unsigned char *data;
330 251 unsigned char pkt_nr = 0;
331 252 unsigned int blk_nr = 0;
332 253
333 254 pkt_nr = packet->Value[23]; // PKT_NR
334 255 blk_nr = packet->Value[30] * 256 + packet->Value[31];
335 256 data = &packet->Value[32]; // start of the first data block;
336 257 j = (pkt_nr-1) * 340;
337 258 for ( i=0; i<blk_nr; i++ ){
338 wfPacket->wf_e1[j + i] = (short) ( (data[ (i * BLK_SIZE) ] << 8) + (data[ (i*BLK_SIZE) + 1]) );
339 wfPacket->wf_v[j + i] = (short) ( (data[ (i * BLK_SIZE) + 2] << 8) + (data[ (i*BLK_SIZE) + 3]) );
340 wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) );
341 wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) );
342 wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) );
343 wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) );
259 wfPacket->wf_v[j + i] = (short) ( (data[ (i * BLK_SIZE) ] << 8) + (data[ (i*BLK_SIZE) + 1]) );
260 wfPacket->wf_e1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 2] << 8) + (data[ (i*BLK_SIZE) + 3]) );
261 wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) );
262 wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) );
263 wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) );
264 wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) );
344 265 }
345 266 if (pkt_nr == 7)
346 267 {
347 268 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_v, num_page, 0);
348 269 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e1, num_page, 1);
349 270 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e2, num_page, 2);
350 271 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b1, num_page, 3);
351 272 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b2, num_page, 4);
352 273 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b3, num_page, 5);
353 274 }
354 275 }
355 276
277 void MainWindow::buildWFAndDisplay_CWF_F3(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page)
278 {
279 unsigned int i = 0;
280 unsigned int j = 0;
281 unsigned char *data;
282 static unsigned char pkt_nr = 1;
283 unsigned int blk_nr = 0;
284
285 blk_nr = packet->Value[28] * 256 + packet->Value[29];
286 data = &packet->Value[30]; // start of the first data block;
287 j = (pkt_nr-1) * 340;
288 for ( i=0; i<blk_nr; i++ ){
289 wfPacket->wf_v[j + i] = (short) ( (data[ (i * BLK_SIZE) ] << 8) + (data[ (i*BLK_SIZE) + 1]) );
290 wfPacket->wf_e1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 2] << 8) + (data[ (i*BLK_SIZE) + 3]) );
291 wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) );
292 wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) );
293 wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) );
294 wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) );
295 }
296 pkt_nr = pkt_nr + 1;
297 if (blk_nr == 8)
298 {
299 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_v, num_page, 0);
300 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e1, num_page, 1);
301 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e2, num_page, 2);
302 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b1, num_page, 3);
303 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b2, num_page, 4);
304 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b3,num_page, 5);
305 pkt_nr = 1;
306 }
307 }
308
356 309 void MainWindow::buildWFAndDisplayBurst(TMPacketToRead *packet, WFPacket *wfPacket)
357 310 {
358 311 unsigned int i = 0;
359 312 unsigned int j = 0;
360 313 unsigned char *data;
361 314 static unsigned char pkt_nr = 1;
362 315 unsigned int blk_nr = 0;
363 316
364 317 blk_nr = packet->Value[28] * 256 + packet->Value[29];
365 318 data = &packet->Value[30]; // start of the first data block;
366 319 j = (pkt_nr-1) * 340;
367 320 for ( i=0; i<blk_nr; i++ ){
368 321 wfPacket->wf_e1[j + i] = (short) ( (data[ (i * BLK_SIZE) ] << 8) + (data[ (i*BLK_SIZE) + 1]) );
369 322 wfPacket->wf_v[j + i] = (short) ( (data[ (i * BLK_SIZE) + 2] << 8) + (data[ (i*BLK_SIZE) + 3]) );
370 323 wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) );
371 324 wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) );
372 325 wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) );
373 326 wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) );
374 327 }
375 328 pkt_nr = pkt_nr + 1;
376 329 if (blk_nr == 8)
377 330 {
378 331 this->UI->wfPageBurst->displayOnPlot(wfPacket->wf_v, 0);
379 332 this->UI->wfPageBurst->displayOnPlot(wfPacket->wf_e1, 1);
380 333 this->UI->wfPageBurst->displayOnPlot(wfPacket->wf_e2, 2);
381 334 this->UI->wfPageBurst->displayOnPlot(wfPacket->wf_b1, 3);
382 335 this->UI->wfPageBurst->displayOnPlot(wfPacket->wf_b2, 4);
383 336 this->UI->wfPageBurst->displayOnPlot(wfPacket->wf_b3, 5);
384 337 pkt_nr = 1;
385 338 }
386 339 }
387 340
388 341 void MainWindow::buildWFAndDisplaySBM1(TMPacketToRead *packet, WFPacket *wfPacket)
389 342 {
390 343 unsigned int i = 0;
391 344 unsigned int j = 0;
392 345 unsigned char *data;
393 346 static unsigned char pkt_nr = 1;
394 347 unsigned int blk_nr = 0;
395 348
396 349 blk_nr = packet->Value[28] * 256 + packet->Value[29];
397 350 data = &packet->Value[30]; // start of the first data block;
398 351 j = (pkt_nr-1) * 340;
399 352 for ( i=0; i<blk_nr; i++ ){
400 353 wfPacket->wf_v[j + i] = (short) ( (data[ (i * BLK_SIZE) ] << 8) + (data[ (i*BLK_SIZE) + 1]) );
401 354 wfPacket->wf_e1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 2] << 8) + (data[ (i*BLK_SIZE) + 3]) );
402 355 wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) );
403 356 wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) );
404 357 wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) );
405 358 wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) );
406 359 }
407 360 pkt_nr = pkt_nr + 1;
408 361 if (blk_nr == 8)
409 362 {
410 363 this->UI->wfPageSBM1->displayOnPlot(wfPacket->wf_v, 0);
411 364 this->UI->wfPageSBM1->displayOnPlot(wfPacket->wf_e1, 1);
412 365 this->UI->wfPageSBM1->displayOnPlot(wfPacket->wf_e2, 2);
413 366 this->UI->wfPageSBM1->displayOnPlot(wfPacket->wf_b1, 3);
414 367 this->UI->wfPageSBM1->displayOnPlot(wfPacket->wf_b2, 4);
415 368 this->UI->wfPageSBM1->displayOnPlot(wfPacket->wf_b3, 5);
416 369 pkt_nr = 1;
417 370 }
418 371 }
419 372
420 373 void MainWindow::buildWFAndDisplaySBM2(TMPacketToRead *packet, WFPacket *wfPacket)
421 374 {
422 375 unsigned int i = 0;
423 376 unsigned int j = 0;
424 377 unsigned char *data;
425 378 static unsigned char pkt_nr = 1;
426 379 unsigned int blk_nr = 0;
427 380
428 381 blk_nr = packet->Value[28] * 256 + packet->Value[29];
429 382 data = &packet->Value[30]; // start of the first data block;
430 383 j = (pkt_nr-1) * 340;
431 384 for ( i=0; i<blk_nr; i++ ){
432 wfPacket->wf_e1[j + i] = (short) ( (data[ (i * BLK_SIZE) ] << 8) + (data[ (i*BLK_SIZE) + 1]) );
433 wfPacket->wf_v[j + i] = (short) ( (data[ (i * BLK_SIZE) + 2] << 8) + (data[ (i*BLK_SIZE) + 3]) );
434 wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) );
435 wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) );
436 wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) );
437 wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) );
385 wfPacket->wf_v[j + i] = (short) ( (data[ (i * BLK_SIZE) ] << 8) + (data[ (i*BLK_SIZE) + 1]) );
386 wfPacket->wf_e1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 2] << 8) + (data[ (i*BLK_SIZE) + 3]) );
387 wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) );
388 wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) );
389 wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) );
390 wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) );
438 391 }
439 392 pkt_nr = pkt_nr + 1;
440 393 if (blk_nr == 8)
441 394 {
442 395 this->UI->wfPageSBM2->displayOnPlot(wfPacket->wf_v, 0);
443 396 this->UI->wfPageSBM2->displayOnPlot(wfPacket->wf_e1, 1);
444 397 this->UI->wfPageSBM2->displayOnPlot(wfPacket->wf_e2, 2);
445 398 this->UI->wfPageSBM2->displayOnPlot(wfPacket->wf_b1, 3);
446 399 this->UI->wfPageSBM2->displayOnPlot(wfPacket->wf_b2, 4);
447 400 this->UI->wfPageSBM2->displayOnPlot(wfPacket->wf_b3, 5);
448 401 pkt_nr = 1;
449 402 }
450 403 }
451 404
452 405 void MainWindow::buildSpectrumAndDisplayNORM_F0(TMPacketToRead *packet, SpectraPacket *spectraPacket)
453 406 {
454 407 unsigned int i = 0;
455 408 unsigned int j = 0;
456 409 unsigned char *data;
457 410 char *aux;
458 411 unsigned char nrASM;
459 412 unsigned int blkNR;
460 413
461 414 nrASM = packet->Value[23];
462 415 blkNR = packet->Value[30] * 256 + packet->Value[31];
463 416 data = &packet->Value[32]; // start of the first data block;
464 417
465 418 j = (nrASM-1) * blkNR;
466 419 for ( i=0; i<blkNR; i++ ){
467 420 aux = (char*) &spectraPacket->s11[j + i];
468 421 aux[3] = data[ (i * 50 + 2*0) ];
469 422 aux[2] = data[ (i * 50 + 2*0) + 1];
470 423 aux = (char*) &spectraPacket->s22[j + i];
471 424 aux[3] = data[ (i * 50 + 2*9) ];
472 425 aux[2] = data[ (i * 50 + 2*9) + 1];
473 426 aux = (char*) &spectraPacket->s33[j + i];
474 427 aux[3] = data[ (i * 50 + 2*16) ];
475 428 aux[2] = data[ (i * 50 + 2*16) + 1];
476 429 aux = (char*) &spectraPacket->s44[j + i];
477 430 aux[3] = data[ (i * 50 + 2*21) ];
478 431 aux[2] = data[ (i * 50 + 2*21) + 1];
479 432 aux = (char*) &spectraPacket->s55[j + i];
480 433 aux[3] = data[ (i * 50 + 2*24) ];
481 434 aux[2] = data[ (i * 50 + 2*24) + 1];
482 435 }
483 436 if (nrASM == 2)
484 437 {
485 438 this->UI->pageSpectraNORM->displayOnPlotFloat(spectraPacket->s11, 0);
486 439 this->UI->pageSpectraNORM->displayOnPlotFloat(spectraPacket->s22, 1);
487 440 this->UI->pageSpectraNORM->displayOnPlotFloat(spectraPacket->s33, 2);
488 441 this->UI->pageSpectraNORM->displayOnPlotFloat(spectraPacket->s44, 3);
489 442 this->UI->pageSpectraNORM->displayOnPlotFloat(spectraPacket->s55, 4);
490 443 }
491 444 }
492 445
493 void MainWindow::processIncomingPacket(TMPacketToRead *packet)
494 {
495 totalOfBytes = totalOfBytes + packet->size;
496 totalOfPackets = totalOfPackets + 1;
497 this->UI->totalOfBytesHasChanged(totalOfBytes);
498 this->UI->totalOfPacketsHasChanged(totalOfPackets);
499 preProcessPacket(packet);
500 }
501
502 446 void MainWindow::resetStatistics()
503 447 {
504 448 totalOfBytes = 0;
505 449 totalOfPackets = 0;
506 450 this->UI->totalOfBytesHasChanged(totalOfBytes);
507 451 this->UI->totalOfPacketsHasChanged(totalOfPackets);
508 452 }
509 453
454 //******************
455 // packet processing
456
510 457 void MainWindow::processPacketStore()
511 458 {
512 459 TMPacketToRead *packet;
513 460 while(!generalCCSDSPacketStore.isEmpty())
514 461 {
515 462 packet = generalCCSDSPacketStore.takeFirst();
516 463 processIncomingPacket(packet);
517 464 delete(packet);
518 465 }
519 466 }
520 467
468 void MainWindow::processIncomingPacket(TMPacketToRead *packet)
469 {
470 totalOfBytes = totalOfBytes + packet->size;
471 totalOfPackets = totalOfPackets + 1;
472 this->UI->totalOfBytesHasChanged(totalOfBytes);
473 this->UI->totalOfPacketsHasChanged(totalOfPackets);
474 preProcessPacket(packet);
475 }
476
477 void MainWindow::preProcessPacket(TMPacketToRead *packet)
478 {
479 unsigned char pid = 0;
480 unsigned char cat = 0;
481 unsigned char typ = 0;
482 unsigned char sub = 0;
483 unsigned int sid = 0;
484 unsigned int length = 0;
485 unsigned int coarse_t = 0;
486 unsigned int fine_t = 0;
487
488 //*********************************
489 // get the parameters of the packet
490 pid = this->UI->tmStatistics->getPID( packet );
491 cat = this->UI->tmStatistics->getCAT( packet );
492 typ = this->UI->tmStatistics->getTYPE( packet );
493 sub = this->UI->tmStatistics->getSUBTYPE( packet );
494 length = this->UI->tmStatistics->getLENGTH( packet );
495 coarse_t = this->UI->tmStatistics->getCoarseTime( packet );
496 fine_t = this->UI->tmStatistics->getFineTime( packet );
497 sid = this->UI->tmStatistics->getSID( packet, pid, cat, typ, sub );
498
499 this->UI->tmStatistics->updateStatistics(pid, cat, typ, sub, sid, length, coarse_t, fine_t);
500
501 // compare length in the packet with the size of the packet
502 if ( (length + 1 + 10) != (packet->size))
503 {
504 displayOnConsole("reception of " + QString::number(packet->size)
505 + " bytes instead of " + QString::number(length + 1 + 10));
506 }
507
508 //***************************************************
509 // if the packet is an HK packet, display its content
510 if ( (pid == 76) & (cat == 4) & (typ == TM_TYPE_HK) & (sub == TM_SUBTYPE_HK) )
511 {
512 this->UI->hkDisplay->displayPacket(packet);
513 }
514
515 //**************************************************************
516 // if the packet is a parameter dump packet, display its content
517 if ( (pid == 76) & (cat == 9) & (typ == TM_TYPE_PARAMETER_DUMP) & (sub == TM_SUBTYPE_PARAMETER_DUMP) )
518 {
519 this->UI->parameterDump->updateParameterDump(packet);
520 }
521
522 //****************************************
523 // if the packet is a waveform, display it
524 if ( (typ == TM_TYPE_LFR_SCIENCE) & (sub == TM_SUBTYPE_LFR_SCIENCE) )
525 {
526 sid = packet->Value[20]; // SID
527 switch (sid){
528 case SID_NORMAL_SWF_F0:
529 buildWFAndDisplay(packet, &wfPacketNormal[0], 0);
530 break;
531 case SID_NORMAL_SWF_F1:
532 buildWFAndDisplay(packet, &wfPacketNormal[1], 1);
533 break;
534 case SID_NORMAL_SWF_F2:
535 buildWFAndDisplay(packet, &wfPacketNormal[2], 2);
536 break;
537 case SID_NORMAL_CWF_F3:
538 buildWFAndDisplay_CWF_F3(packet, &wfPacketNormal[3], 3);
539 break;
540 case SID_BURST_CWF_F2:
541 buildWFAndDisplayBurst(packet, &wfPacketBurst);
542 break;
543 case SID_SBM1_CWF_F1:
544 buildWFAndDisplaySBM1(packet, &wfPacketSBM1);
545 break;
546 case SID_SBM2_CWF_F2:
547 buildWFAndDisplaySBM2(packet, &wfPacketSBM2);
548 break;
549 case SID_NORMAL_ASM_F0:
550 buildSpectrumAndDisplayNORM_F0(packet, spectraPacketNormalSpectrumF0);
551 break;
552 }
553 }
554 }
555
556 //******************
557 // general functions
558
521 559 void MainWindow::readSettings()
522 560 {
523 561 QSettings settings("lpp", "lfrsgse");
524 562 echoBridgeIP0 = (unsigned char) settings.value("echoBridgeIP0", 127).toInt();
525 563 echoBridgeIP1 = (unsigned char) settings.value("echoBridgeIP1", 0).toInt();
526 564 echoBridgeIP2 = (unsigned char) settings.value("echoBridgeIP2", 0).toInt();
527 565 echoBridgeIP3 = (unsigned char) settings.value("echoBridgeIP3", 1).toInt();
528 566 }
529 567
530 568 void MainWindow::writeSettings()
531 569 {
532 570 QSettings settings("lpp", "lfrsgse");
533 571 settings.setValue("echoBridgeIP0", this->UI->serverTMEchoDialogBox->get_addressPart1());
534 572 settings.setValue("echoBridgeIP1", this->UI->serverTMEchoDialogBox->get_addressPart2());
535 573 settings.setValue("echoBridgeIP2", this->UI->serverTMEchoDialogBox->get_addressPart3());
536 574 settings.setValue("echoBridgeIP3", this->UI->serverTMEchoDialogBox->get_addressPart4());
537 575 }
538 576
539 577 void MainWindow::closeEvent(QCloseEvent *)
540 578 {
541 579 writeSettings();
542 580 }
@@ -1,109 +1,110
1 1 #ifndef MAINWINDOW_H
2 2 #define MAINWINDOW_H
3 3
4 4 #include <QTcpServer>
5 5 #include <QTcpSocket>
6 6 #include <QXmlSimpleReader>
7 7 #include <QSettings>
8 8 #include <QMainWindow>
9 9
10 10 #include <lfrxmlhandler.h>
11 11 #include <lfrxmlwriter.h>
12 12 #include <mainwindowui.h>
13 13 #include "tmpackettoread.h"
14 14 #include "wfpacket.h"
15 15 #include "lfrxmlparser.h"
16 16 #include <spectrapacket.h>
17 17
18 18 class MainWindow : public QMainWindow
19 19 {
20 20 Q_OBJECT
21 21
22 22 public:
23 23 MainWindow(QWidget *parent = 0);
24 24 ~MainWindow();
25 25
26 26 void displayNetworkInterfaces();
27 27 void initSocketStatesList();
28 28 //
29 29 void preProcessPacket(TMPacketToRead *packet);
30 30 unsigned char getPID(TMPacketToRead *packet);
31 31 unsigned char getCAT(TMPacketToRead *packet);
32 32 unsigned char getTYPE(TMPacketToRead *packet);
33 33 unsigned char getSUBTYPE(TMPacketToRead *packet);
34 34 unsigned int getLENGTH(TMPacketToRead *packet);
35 35 unsigned int getCoarseTime(TMPacketToRead *packet);
36 36 unsigned int getFineTime(TMPacketToRead *packet);
37 37 unsigned int getSID(TMPacketToRead *packet, unsigned char pid, unsigned char cat, unsigned char typ, unsigned char sub);
38 38 //
39 39 void buildWFAndDisplay(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page);
40 void buildWFAndDisplay_CWF_F3(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page);
40 41 void buildWFAndDisplayBurst(TMPacketToRead *packet, WFPacket *wfPacket);
41 42 void buildWFAndDisplaySBM1(TMPacketToRead *packet, WFPacket *wfPacket);
42 43 void buildWFAndDisplaySBM2(TMPacketToRead *packet, WFPacket *wfPacket);
43 44 void buildSpectrumAndDisplayNORM_F0(TMPacketToRead *packet, SpectraPacket *spectraPacket);
44 45
45 46 protected:
46 47 void closeEvent(QCloseEvent *);
47 48
48 49 private:
49 50 void readSettings();
50 51 void writeSettings();
51 52 unsigned char echoBridgeIP0;
52 53 unsigned char echoBridgeIP1;
53 54 unsigned char echoBridgeIP2;
54 55 unsigned char echoBridgeIP3;
55 56
56 57 QByteArray dataArray;
57 58
58 59 QList<TMPacketToRead*> generalCCSDSPacketStore;
59 60
60 61 QTcpServer *analyserSGSEServerTC;
61 62 QTcpServer *analyserSGSEServerTM;
62 63 QTcpSocket *socketTC;
63 64 QTcpSocket *socketTM;
64 65 QTcpSocket *socketEchoServer;
65 66
66 67 unsigned int totalOfBytes;
67 68 unsigned int totalOfPackets;
68 69
69 70 QXmlSimpleReader xmlReader;
70 71 QXmlInputSource *sourceTC;
71 72 LFRXmlHandler *xmlHandler;
72 73 LFRXmlParser *lfrXmlParser;
73 74
74 75 QList<QString> socketStates;
75 76
76 77 char *buffer;
77 78
78 79 MainWindowUI *UI;
79 80
80 81 LFRXmlWriter *lfrXmlWriter;
81 82
82 83 WFPacket wfPacketNormal[4];
83 84 WFPacket wfPacketBurst;
84 85 WFPacket wfPacketSBM1;
85 86 WFPacket wfPacketSBM2;
86 87 SpectraPacket *spectraPacketNormalSpectrumF0;
87 88
88 89 bool parsingContinue;
89 90
90 91 signals:
91 92 void socketTMHasChanged(QTcpSocket *socket);
92 93
93 94 public slots:
94 95 void displayOnConsole(QString message);
95 96 void listenOnTCTMPorts();
96 97 void testTCTMPorts();
97 98 void newConnectionOnTCServer();
98 99 void newConnectionOnTMServer();
99 100 void readDataOnTCPort();
100 101 void readDataOnTMPort();
101 102 void readDataOnSocketEchoServer();
102 103 void openEchoServer();
103 104 void socket_TMEcho_ServerHasChanged();
104 105 void processIncomingPacket(TMPacketToRead *packet);
105 106 void resetStatistics();
106 107 void processPacketStore();
107 108 };
108 109
109 110 #endif // MAINWINDOW_H
@@ -1,107 +1,107
1 1 #ifndef MAINWINDOWUI_H
2 2 #define MAINWINDOWUI_H
3 3
4 4 #include <QWidget>
5 5 #include <qipdialogbox.h>
6 6 #include <QLabel>
7 7 #include <QPushButton>
8 8 #include <QGridLayout>
9 9 #include <QVBoxLayout>
10 10 #include <QGroupBox>
11 11 #include <QSpinBox>
12 12 #include <QTextEdit>
13 13 #include <QTabWidget>
14 14
15 15 #include <wfdisplay.h>
16 16 #include <pagespectra.h>
17 #include <parameterdump.h>
17 18
18 19 #include "tmstatistics.h"
19 20 #include "hkdisplay.h"
20 21 #include "lfrspectrogram.h"
21 #include "parameterdump.h"
22 22
23 23 class MainWindowUI : public QWidget
24 24 {
25 25 Q_OBJECT
26 26 public:
27 27 explicit MainWindowUI(QWidget *parent = 0);
28 28
29 29 void setTCTMServerAddressIP(QString address);
30 30 QString getTMEchoServerAddress();
31 31 int getTMPort();
32 32 int getTCPort();
33 33 void displayOnConsole(QString message);
34 34
35 35 QTabWidget *spwTabWidget;
36 36 QWidget* spwTabWidgetPage0;
37 37 QWidget* spwTabWidgetPage1;
38 38 QWidget* spwTabWidgetPage2;
39 39 QWidget* spwTabWidgetPage3;
40 40 QWidget* spwTabWidgetPage4;
41 41 QWidget* spwTabWidgetPage5;
42 42 QWidget* spwTabWidgetPage6;
43 43 QWidget* spwTabWidgetPage7;
44 44
45 45 TMStatistics* tmStatistics;
46 46
47 47 WFDisplay* wfDisplay;
48 48 WFPage* wfPageBurst;
49 49 WFPage* wfPageSBM1;
50 50 WFPage* wfPageSBM2;
51 51 PageSpectra* pageSpectraNORM;
52 52 HKDisplay* hkDisplay;
53 53 LFRSpectrogram* lfrSpectrogam;
54 54
55 55 QWidget* widget_spectrogram;
56 56
57 57 ParameterDump* parameterDump;
58 58
59 59 QPushButton *button_openServerTCTM;
60 60 QPushButton *button_testServerTCTM;
61 61 QPushButton *button_openSocketEchoServer;
62 62 QPushButton *button_TCAcknowledgement;
63 63 QPushButton *button_TCRejection;
64 64 QPushButton *button_GSEHK;
65 65 QPushButton *button_clearConsole;
66 66 QPushButton *button_resetStatistics;
67 67
68 68 QIPDialogBox *serverTMEchoDialogBox;
69 69
70 70 QSpinBox *spinbox_serverTMEchoPort;
71 71
72 72 signals:
73 73
74 74 public slots:
75 75 void clearConsole();
76 76 void totalOfBytesHasChanged(unsigned int nbBytes);
77 77 void totalOfPacketsHasChanged(unsigned int nbPackets);
78 78
79 79 private:
80 80 QLabel *label_serverTMEcho;
81 81 QLabel *label_serverTMEchoPort;
82 82 QLabel *label_TMServerPort;
83 83 QLabel *label_TCServerPort;
84 84 QLabel *label_currentTCTMServer;
85 85 QLabel *label_currentTCTMServerIP;
86 86 QLabel *label_totalOfBytes;
87 87 QLabel *label_totalOfPackets;
88 88
89 89 QTextEdit *console;
90 90
91 91 QSpinBox *spinbox_TMServerPort;
92 92 QSpinBox *spinbox_TCServerPort;
93 93
94 94 QGroupBox *groupbox_TMEcho;
95 95 QGroupBox *groupbox_ports;
96 96 QGroupBox *groupbox_TMToForeignGSETester;
97 97
98 98 QVBoxLayout *layout_TMEcho;
99 99 QVBoxLayout *layout_TMToForeignGSETester;
100 100 QVBoxLayout *layout_overallLayout;
101 101
102 102 QGridLayout *mainLayout;
103 103 QGridLayout *layout_ports;
104 104
105 105 };
106 106
107 107 #endif // MAINWINDOWUI_H
@@ -1,519 +1,555
1 1 #############################################################################
2 2 # Makefile for building: librmapplugin.so.1.0.0
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jul 24 16:21:25 2013
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jul 31 09:19:17 2013
4 4 # Project: rmapplugin.pro
5 5 # Template: lib
6 6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile rmapplugin.pro
7 7 #############################################################################
8 8
9 9 ####### Compiler, tools and options
10 10
11 11 CC = gcc
12 12 CXX = g++
13 13 DEFINES = -DPLUGIN=rmapplugin -DPLUGINHEADER="\"rmapplugin.h\"" -Ddriver_Name="\"RMAPPlugin\"" -Ddriver_Author="\"Paul Leroy paul.leroy@lpp.polytechnique.fr\"" -Ddriver_Version="\"1.1.2\"" -Ddriver_Description="\"AHB bus controler, works with Gaisler's AHB plugn' play bus.\"" -Ddriver_can_be_root=1 -Ddriver_can_be_child=0 -Ddriver_VID=0 -Ddriver_PID=0 -DLPPMON_VERSION="\"0.0.1\"" -DUNIXTRANSLATIONPATH -DLPPMON_PLUGINS_INSTALL_PATH="QDir::homePath()+\"/.lppmon/plugins\"" -DLPPMON_CONFIG_PATH="QDir::homePath()+\"/.lppmon/config\"" -DLPPMON_TRANSLATION_PATH="\"/etc/lppmon/translations\"" -DLPPMONPLUGIN_LIBRARY -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
14 14 CFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
15 15 CXXFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -I/usr/include/python2.7 -I/usr/include/python2.7 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include -I. -I../common_PLE -I../../DEV_PLE/header -I../spw_usb_driver_v2.63/inc -I/usr/include/lppmon/common -I/usr/include/lppmon/wfdisplay -I/usr/include/lppmon/common -I/usr/include/lppmon -I/usr/include/lppmon/pluginsInterface -I/usr/include/PythonQt -Imoc
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include -I. -I../common_PLE -I../../DEV_PLE/header -I../spw_usb_driver_v2.63/inc -I/usr/include/lppmon/common -I/usr/include/lppmon/wfdisplay -I/usr/include/lppmon/parameterdump -I/usr/include/lppmon/common -I/usr/include/lppmon -I/usr/include/lppmon/pluginsInterface -I/usr/include/PythonQt -Imoc
17 17 LINK = g++
18 18 LFLAGS = -Wl,-O1 -Wl,-z,relro -shared -Wl,-soname,librmapplugin.so.1
19 LIBS = $(SUBLIBS) -L/usr/lib64 ../spw_usb_driver_v2.63/lib/x86_64/libSpaceWireUSBAPI.so ../spw_usb_driver_v2.63/lib/x86_64/libConfigLibraryUSB.so -llppmoncommon -lwfdisplay -lqwt5-qt4 -ldl -lutil -lm -lpython2.7 -lPythonQt_QtAll -lPythonQt -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
19 LIBS = $(SUBLIBS) -L/usr/lib64 ../spw_usb_driver_v2.63/lib/x86_64/libSpaceWireUSBAPI.so ../spw_usb_driver_v2.63/lib/x86_64/libConfigLibraryUSB.so -llppmoncommon -lwfdisplay -lqwt5-qt4 -lparameterdump -ldl -lutil -lm -lpython2.7 -lPythonQt_QtAll -lPythonQt -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
20 20 AR = ar cqs
21 21 RANLIB =
22 22 QMAKE = /usr/bin/qmake-qt4
23 23 TAR = tar -cf
24 24 COMPRESS = gzip -9f
25 25 COPY = cp -f
26 26 SED = sed
27 27 COPY_FILE = $(COPY)
28 28 COPY_DIR = $(COPY) -r
29 29 STRIP =
30 30 INSTALL_FILE = install -m 644 -p
31 31 INSTALL_DIR = $(COPY_DIR)
32 32 INSTALL_PROGRAM = install -m 755 -p
33 33 DEL_FILE = rm -f
34 34 SYMLINK = ln -f -s
35 35 DEL_DIR = rmdir
36 36 MOVE = mv -f
37 37 CHK_DIR_EXISTS= test -d
38 38 MKDIR = mkdir -p
39 39
40 40 ####### Output directory
41 41
42 42 OBJECTS_DIR = obj/
43 43
44 44 ####### Files
45 45
46 46 SOURCES = rmapplugin.cpp \
47 47 rmappluginui.cpp \
48 48 rmapoperations.cpp \
49 49 ccsds.cpp \
50 50 ../common_PLE/qipdialogbox.cpp \
51 51 ../common_PLE/gresbstatusenquiry.cpp \
52 52 rmappluginpythonwrapper.cpp \
53 53 stardundee.cpp \
54 54 gresb.cpp \
55 55 tcpackettosend.cpp \
56 56 tmpackettoread.cpp \
57 57 tmstatistics.cpp \
58 58 wfpacket.cpp \
59 59 tmechobridge.cpp \
60 entermode.cpp \
61 lfractions.cpp \
60 62 /usr/include/lppmon/pluginsInterface/lppmonplugininterface.cpp moc/moc_rmappluginui.cpp \
61 63 moc/moc_rmapplugin.cpp \
62 64 moc/moc_qipdialogbox.cpp \
63 65 moc/moc_gresbstatusenquiry.cpp \
64 66 moc/moc_rmappluginpythonwrapper.cpp \
65 67 moc/moc_stardundee.cpp \
66 68 moc/moc_gresb.cpp \
67 69 moc/moc_tcpackettosend.cpp \
68 70 moc/moc_tmpackettoread.cpp \
69 71 moc/moc_tmstatistics.cpp \
70 72 moc/moc_wfpacket.cpp \
71 73 moc/moc_tmechobridge.cpp \
74 moc/moc_entermode.cpp \
75 moc/moc_lfractions.cpp \
72 76 moc/moc_genericPySysdriver.cpp \
73 77 moc/moc_lppmonplugin.cpp
74 78 OBJECTS = obj/rmapplugin.o \
75 79 obj/rmappluginui.o \
76 80 obj/rmapoperations.o \
77 81 obj/ccsds.o \
78 82 obj/qipdialogbox.o \
79 83 obj/gresbstatusenquiry.o \
80 84 obj/rmappluginpythonwrapper.o \
81 85 obj/stardundee.o \
82 86 obj/gresb.o \
83 87 obj/tcpackettosend.o \
84 88 obj/tmpackettoread.o \
85 89 obj/tmstatistics.o \
86 90 obj/wfpacket.o \
87 91 obj/tmechobridge.o \
92 obj/entermode.o \
93 obj/lfractions.o \
88 94 obj/lppmonplugininterface.o \
89 95 obj/moc_rmappluginui.o \
90 96 obj/moc_rmapplugin.o \
91 97 obj/moc_qipdialogbox.o \
92 98 obj/moc_gresbstatusenquiry.o \
93 99 obj/moc_rmappluginpythonwrapper.o \
94 100 obj/moc_stardundee.o \
95 101 obj/moc_gresb.o \
96 102 obj/moc_tcpackettosend.o \
97 103 obj/moc_tmpackettoread.o \
98 104 obj/moc_tmstatistics.o \
99 105 obj/moc_wfpacket.o \
100 106 obj/moc_tmechobridge.o \
107 obj/moc_entermode.o \
108 obj/moc_lfractions.o \
101 109 obj/moc_genericPySysdriver.o \
102 110 obj/moc_lppmonplugin.o
103 111 DIST = /usr/lib64/qt4/mkspecs/common/unix.conf \
104 112 /usr/lib64/qt4/mkspecs/common/linux.conf \
105 113 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
106 114 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
107 115 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
108 116 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
109 117 /usr/lib64/qt4/mkspecs/qconfig.pri \
110 118 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
111 119 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
112 120 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
113 121 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
114 122 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
115 123 /usr/lib64/qt4/mkspecs/features/release.prf \
116 124 /usr/lib64/qt4/mkspecs/features/default_post.prf \
117 125 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf \
118 126 /usr/lib64/qt4/mkspecs/features/pythonqt.prf \
119 127 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
120 128 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
121 129 /usr/lib64/qt4/mkspecs/features/qt.prf \
122 130 /usr/lib64/qt4/mkspecs/features/unix/thread.prf \
123 131 /usr/lib64/qt4/mkspecs/features/moc.prf \
124 132 /usr/lib64/qt4/mkspecs/features/resources.prf \
125 133 /usr/lib64/qt4/mkspecs/features/uic.prf \
126 134 /usr/lib64/qt4/mkspecs/features/yacc.prf \
127 135 /usr/lib64/qt4/mkspecs/features/lex.prf \
128 136 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf \
129 137 rmapplugin.pro
130 138 QMAKE_TARGET = rmapplugin
131 139 DESTDIR = bin/
132 140 TARGET = librmapplugin.so.1.0.0
133 141 TARGETA = bin/librmapplugin.a
134 142 TARGETD = librmapplugin.so.1.0.0
135 143 TARGET0 = librmapplugin.so
136 144 TARGET1 = librmapplugin.so.1
137 145 TARGET2 = librmapplugin.so.1.0
138 146
139 147 first: all
140 148 ####### Implicit rules
141 149
142 150 .SUFFIXES: .o .c .cpp .cc .cxx .C
143 151
144 152 .cpp.o:
145 153 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
146 154
147 155 .cc.o:
148 156 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
149 157
150 158 .cxx.o:
151 159 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
152 160
153 161 .C.o:
154 162 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
155 163
156 164 .c.o:
157 165 $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
158 166
159 167 ####### Build rules
160 168
161 169 all: Makefile bin/$(TARGET)
162 170
163 171 bin/$(TARGET): $(OBJECTS) $(SUBLIBS) $(OBJCOMP)
164 172 @$(CHK_DIR_EXISTS) bin/ || $(MKDIR) bin/
165 173 -$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2)
166 174 $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP)
167 175 -ln -s $(TARGET) $(TARGET0)
168 176 -ln -s $(TARGET) $(TARGET1)
169 177 -ln -s $(TARGET) $(TARGET2)
170 178 -$(DEL_FILE) bin/$(TARGET)
171 179 -$(DEL_FILE) bin/$(TARGET0)
172 180 -$(DEL_FILE) bin/$(TARGET1)
173 181 -$(DEL_FILE) bin/$(TARGET2)
174 182 -$(MOVE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2) bin/
175 183
176 184
177 185
178 186 staticlib: $(TARGETA)
179 187
180 188 $(TARGETA): $(OBJECTS) $(OBJCOMP)
181 189 -$(DEL_FILE) $(TARGETA)
182 190 $(AR) $(TARGETA) $(OBJECTS)
183 191
184 192 Makefile: rmapplugin.pro /usr/lib64/qt4/mkspecs/linux-g++/qmake.conf /usr/lib64/qt4/mkspecs/common/unix.conf \
185 193 /usr/lib64/qt4/mkspecs/common/linux.conf \
186 194 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
187 195 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
188 196 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
189 197 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
190 198 /usr/lib64/qt4/mkspecs/qconfig.pri \
191 199 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
192 200 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
193 201 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
194 202 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
195 203 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
196 204 /usr/lib64/qt4/mkspecs/features/release.prf \
197 205 /usr/lib64/qt4/mkspecs/features/default_post.prf \
198 206 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf \
199 207 /usr/lib64/qt4/mkspecs/features/pythonqt.prf \
200 208 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
201 209 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
202 210 /usr/lib64/qt4/mkspecs/features/qt.prf \
203 211 /usr/lib64/qt4/mkspecs/features/unix/thread.prf \
204 212 /usr/lib64/qt4/mkspecs/features/moc.prf \
205 213 /usr/lib64/qt4/mkspecs/features/resources.prf \
206 214 /usr/lib64/qt4/mkspecs/features/uic.prf \
207 215 /usr/lib64/qt4/mkspecs/features/yacc.prf \
208 216 /usr/lib64/qt4/mkspecs/features/lex.prf \
209 217 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf \
210 218 /usr/lib64/libQtXml.prl \
211 219 /usr/lib64/libQtCore.prl \
212 220 /usr/lib64/libQtGui.prl \
213 221 /usr/lib64/libQtNetwork.prl
214 222 $(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile rmapplugin.pro
215 223 /usr/lib64/qt4/mkspecs/common/unix.conf:
216 224 /usr/lib64/qt4/mkspecs/common/linux.conf:
217 225 /usr/lib64/qt4/mkspecs/common/gcc-base.conf:
218 226 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf:
219 227 /usr/lib64/qt4/mkspecs/common/g++-base.conf:
220 228 /usr/lib64/qt4/mkspecs/common/g++-unix.conf:
221 229 /usr/lib64/qt4/mkspecs/qconfig.pri:
222 230 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri:
223 231 /usr/lib64/qt4/mkspecs/features/qt_functions.prf:
224 232 /usr/lib64/qt4/mkspecs/features/qt_config.prf:
225 233 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf:
226 234 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
227 235 /usr/lib64/qt4/mkspecs/features/release.prf:
228 236 /usr/lib64/qt4/mkspecs/features/default_post.prf:
229 237 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf:
230 238 /usr/lib64/qt4/mkspecs/features/pythonqt.prf:
231 239 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
232 240 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
233 241 /usr/lib64/qt4/mkspecs/features/qt.prf:
234 242 /usr/lib64/qt4/mkspecs/features/unix/thread.prf:
235 243 /usr/lib64/qt4/mkspecs/features/moc.prf:
236 244 /usr/lib64/qt4/mkspecs/features/resources.prf:
237 245 /usr/lib64/qt4/mkspecs/features/uic.prf:
238 246 /usr/lib64/qt4/mkspecs/features/yacc.prf:
239 247 /usr/lib64/qt4/mkspecs/features/lex.prf:
240 248 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf:
241 249 /usr/lib64/libQtXml.prl:
242 250 /usr/lib64/libQtCore.prl:
243 251 /usr/lib64/libQtGui.prl:
244 252 /usr/lib64/libQtNetwork.prl:
245 253 qmake: FORCE
246 254 @$(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile rmapplugin.pro
247 255
248 256 dist:
249 257 @$(CHK_DIR_EXISTS) obj/rmapplugin1.0.0 || $(MKDIR) obj/rmapplugin1.0.0
250 $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/rmapplugin1.0.0/ && $(COPY_FILE) --parents ../../DEV_PLE/header/ccsds_types.h rmappluginui.h rmapplugin.h rmapoperations.h ccsds.h ../common_PLE/qipdialogbox.h ../common_PLE/gresbstatusenquiry.h rmappluginpythonwrapper.h stardundee.h ../spw_usb_driver_v2.61/inc/spw_usb_api.h ../spw_usb_driver_v2.61/inc/spw_config_library.h gresb.h tcpackettosend.h tmpackettoread.h tmstatistics.h wfpacket.h params.h tmechobridge.h /usr/include/lppmon/genericPySysdriver.h /usr/include/lppmon/lppmonplugin.h obj/rmapplugin1.0.0/ && $(COPY_FILE) --parents rmapplugin.cpp rmappluginui.cpp rmapoperations.cpp ccsds.cpp ../common_PLE/qipdialogbox.cpp ../common_PLE/gresbstatusenquiry.cpp rmappluginpythonwrapper.cpp stardundee.cpp gresb.cpp tcpackettosend.cpp tmpackettoread.cpp tmstatistics.cpp wfpacket.cpp tmechobridge.cpp /usr/include/lppmon/pluginsInterface/lppmonplugininterface.cpp obj/rmapplugin1.0.0/ && (cd `dirname obj/rmapplugin1.0.0` && $(TAR) rmapplugin1.0.0.tar rmapplugin1.0.0 && $(COMPRESS) rmapplugin1.0.0.tar) && $(MOVE) `dirname obj/rmapplugin1.0.0`/rmapplugin1.0.0.tar.gz . && $(DEL_FILE) -r obj/rmapplugin1.0.0
258 $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/rmapplugin1.0.0/ && $(COPY_FILE) --parents ../../DEV_PLE/header/ccsds_types.h rmappluginui.h rmapplugin.h rmapoperations.h ccsds.h ../common_PLE/qipdialogbox.h ../common_PLE/gresbstatusenquiry.h rmappluginpythonwrapper.h stardundee.h ../spw_usb_driver_v2.61/inc/spw_usb_api.h ../spw_usb_driver_v2.61/inc/spw_config_library.h gresb.h tcpackettosend.h tmpackettoread.h tmstatistics.h wfpacket.h params.h tmechobridge.h entermode.h lfractions.h /usr/include/lppmon/genericPySysdriver.h /usr/include/lppmon/lppmonplugin.h obj/rmapplugin1.0.0/ && $(COPY_FILE) --parents rmapplugin.cpp rmappluginui.cpp rmapoperations.cpp ccsds.cpp ../common_PLE/qipdialogbox.cpp ../common_PLE/gresbstatusenquiry.cpp rmappluginpythonwrapper.cpp stardundee.cpp gresb.cpp tcpackettosend.cpp tmpackettoread.cpp tmstatistics.cpp wfpacket.cpp tmechobridge.cpp entermode.cpp lfractions.cpp /usr/include/lppmon/pluginsInterface/lppmonplugininterface.cpp obj/rmapplugin1.0.0/ && (cd `dirname obj/rmapplugin1.0.0` && $(TAR) rmapplugin1.0.0.tar rmapplugin1.0.0 && $(COMPRESS) rmapplugin1.0.0.tar) && $(MOVE) `dirname obj/rmapplugin1.0.0`/rmapplugin1.0.0.tar.gz . && $(DEL_FILE) -r obj/rmapplugin1.0.0
251 259
252 260
253 261 clean:compiler_clean
254 262 -$(DEL_FILE) $(OBJECTS)
255 263 -$(DEL_FILE) *~ core *.core
256 264
257 265
258 266 ####### Sub-libraries
259 267
260 268 distclean: clean
261 269 -$(DEL_FILE) bin/$(TARGET)
262 270 -$(DEL_FILE) bin/$(TARGET0) bin/$(TARGET1) bin/$(TARGET2) $(TARGETA)
263 271 -$(DEL_FILE) Makefile
264 272
265 273
266 274 check: first
267 275
268 276 mocclean: compiler_moc_header_clean compiler_moc_source_clean
269 277
270 278 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
271 279
272 compiler_moc_header_make_all: moc/moc_rmappluginui.cpp moc/moc_rmapplugin.cpp moc/moc_qipdialogbox.cpp moc/moc_gresbstatusenquiry.cpp moc/moc_rmappluginpythonwrapper.cpp moc/moc_stardundee.cpp moc/moc_gresb.cpp moc/moc_tcpackettosend.cpp moc/moc_tmpackettoread.cpp moc/moc_tmstatistics.cpp moc/moc_wfpacket.cpp moc/moc_tmechobridge.cpp moc/moc_genericPySysdriver.cpp moc/moc_lppmonplugin.cpp
280 compiler_moc_header_make_all: moc/moc_rmappluginui.cpp moc/moc_rmapplugin.cpp moc/moc_qipdialogbox.cpp moc/moc_gresbstatusenquiry.cpp moc/moc_rmappluginpythonwrapper.cpp moc/moc_stardundee.cpp moc/moc_gresb.cpp moc/moc_tcpackettosend.cpp moc/moc_tmpackettoread.cpp moc/moc_tmstatistics.cpp moc/moc_wfpacket.cpp moc/moc_tmechobridge.cpp moc/moc_entermode.cpp moc/moc_lfractions.cpp moc/moc_genericPySysdriver.cpp moc/moc_lppmonplugin.cpp
273 281 compiler_moc_header_clean:
274 -$(DEL_FILE) moc/moc_rmappluginui.cpp moc/moc_rmapplugin.cpp moc/moc_qipdialogbox.cpp moc/moc_gresbstatusenquiry.cpp moc/moc_rmappluginpythonwrapper.cpp moc/moc_stardundee.cpp moc/moc_gresb.cpp moc/moc_tcpackettosend.cpp moc/moc_tmpackettoread.cpp moc/moc_tmstatistics.cpp moc/moc_wfpacket.cpp moc/moc_tmechobridge.cpp moc/moc_genericPySysdriver.cpp moc/moc_lppmonplugin.cpp
282 -$(DEL_FILE) moc/moc_rmappluginui.cpp moc/moc_rmapplugin.cpp moc/moc_qipdialogbox.cpp moc/moc_gresbstatusenquiry.cpp moc/moc_rmappluginpythonwrapper.cpp moc/moc_stardundee.cpp moc/moc_gresb.cpp moc/moc_tcpackettosend.cpp moc/moc_tmpackettoread.cpp moc/moc_tmstatistics.cpp moc/moc_wfpacket.cpp moc/moc_tmechobridge.cpp moc/moc_entermode.cpp moc/moc_lfractions.cpp moc/moc_genericPySysdriver.cpp moc/moc_lppmonplugin.cpp
275 283 moc/moc_rmappluginui.cpp: rmapoperations.h \
276 284 params.h \
277 285 stardundee.h \
278 286 ccsds.h \
279 287 tmpackettoread.h \
280 288 gresb.h \
281 289 tmstatistics.h \
282 290 tmechobridge.h \
291 entermode.h \
292 lfractions.h \
283 293 rmappluginui.h
284 294 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) rmappluginui.h -o moc/moc_rmappluginui.cpp
285 295
286 296 moc/moc_rmapplugin.cpp: rmappluginui.h \
287 297 rmapoperations.h \
288 298 params.h \
289 299 stardundee.h \
290 300 ccsds.h \
291 301 tmpackettoread.h \
292 302 gresb.h \
293 303 tmstatistics.h \
294 304 tmechobridge.h \
305 entermode.h \
306 lfractions.h \
295 307 wfpacket.h \
296 308 rmapplugin.h
297 309 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) rmapplugin.h -o moc/moc_rmapplugin.cpp
298 310
299 311 moc/moc_qipdialogbox.cpp: ../common_PLE/qipdialogbox.h
300 312 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../common_PLE/qipdialogbox.h -o moc/moc_qipdialogbox.cpp
301 313
302 314 moc/moc_gresbstatusenquiry.cpp: ../common_PLE/gresbstatusenquiry.h
303 315 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../common_PLE/gresbstatusenquiry.h -o moc/moc_gresbstatusenquiry.cpp
304 316
305 317 moc/moc_rmappluginpythonwrapper.cpp: rmapoperations.h \
306 318 params.h \
307 319 ccsds.h \
308 320 tcpackettosend.h \
309 321 tmpackettoread.h \
310 322 rmappluginpythonwrapper.h
311 323 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) rmappluginpythonwrapper.h -o moc/moc_rmappluginpythonwrapper.cpp
312 324
313 325 moc/moc_stardundee.cpp: rmapoperations.h \
314 326 params.h \
315 327 ccsds.h \
316 328 tmpackettoread.h \
317 329 stardundee.h
318 330 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) stardundee.h -o moc/moc_stardundee.cpp
319 331
320 332 moc/moc_gresb.cpp: rmapoperations.h \
321 333 params.h \
322 334 ccsds.h \
323 335 tmpackettoread.h \
324 336 gresb.h
325 337 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) gresb.h -o moc/moc_gresb.cpp
326 338
327 339 moc/moc_tcpackettosend.cpp: tcpackettosend.h
328 340 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) tcpackettosend.h -o moc/moc_tcpackettosend.cpp
329 341
330 342 moc/moc_tmpackettoread.cpp: tmpackettoread.h
331 343 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) tmpackettoread.h -o moc/moc_tmpackettoread.cpp
332 344
333 345 moc/moc_tmstatistics.cpp: tmpackettoread.h \
334 346 tmstatistics.h
335 347 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) tmstatistics.h -o moc/moc_tmstatistics.cpp
336 348
337 349 moc/moc_wfpacket.cpp: params.h \
338 350 wfpacket.h
339 351 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) wfpacket.h -o moc/moc_wfpacket.cpp
340 352
341 353 moc/moc_tmechobridge.cpp: tmpackettoread.h \
342 354 tmechobridge.h
343 355 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) tmechobridge.h -o moc/moc_tmechobridge.cpp
344 356
357 moc/moc_entermode.cpp: entermode.h
358 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) entermode.h -o moc/moc_entermode.cpp
359
360 moc/moc_lfractions.cpp: entermode.h \
361 lfractions.h
362 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) lfractions.h -o moc/moc_lfractions.cpp
363
345 364 moc/moc_genericPySysdriver.cpp: /usr/include/lppmon/genericPySysdriver.h
346 365 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) /usr/include/lppmon/genericPySysdriver.h -o moc/moc_genericPySysdriver.cpp
347 366
348 367 moc/moc_lppmonplugin.cpp: /usr/include/lppmon/lppmonplugin.h
349 368 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) /usr/include/lppmon/lppmonplugin.h -o moc/moc_lppmonplugin.cpp
350 369
351 370 compiler_rcc_make_all:
352 371 compiler_rcc_clean:
353 372 compiler_image_collection_make_all: qmake_image_collection.cpp
354 373 compiler_image_collection_clean:
355 374 -$(DEL_FILE) qmake_image_collection.cpp
356 375 compiler_moc_source_make_all:
357 376 compiler_moc_source_clean:
358 377 compiler_uic_make_all:
359 378 compiler_uic_clean:
360 379 compiler_yacc_decl_make_all:
361 380 compiler_yacc_decl_clean:
362 381 compiler_yacc_impl_make_all:
363 382 compiler_yacc_impl_clean:
364 383 compiler_lex_make_all:
365 384 compiler_lex_clean:
366 385 compiler_clean: compiler_moc_header_clean
367 386
368 387 ####### Compile
369 388
370 389 obj/rmapplugin.o: rmapplugin.cpp rmapplugin.h \
371 390 rmappluginui.h \
372 391 rmapoperations.h \
373 392 params.h \
374 393 stardundee.h \
375 394 ccsds.h \
376 395 tmpackettoread.h \
377 396 gresb.h \
378 397 tmstatistics.h \
379 398 tmechobridge.h \
399 entermode.h \
400 lfractions.h \
380 401 wfpacket.h \
381 402 rmappluginpythonwrapper.h \
382 403 tcpackettosend.h
383 404 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/rmapplugin.o rmapplugin.cpp
384 405
385 406 obj/rmappluginui.o: rmappluginui.cpp rmapplugin.h \
386 407 rmappluginui.h \
387 408 rmapoperations.h \
388 409 params.h \
389 410 stardundee.h \
390 411 ccsds.h \
391 412 tmpackettoread.h \
392 413 gresb.h \
393 414 tmstatistics.h \
394 415 tmechobridge.h \
416 entermode.h \
417 lfractions.h \
395 418 wfpacket.h
396 419 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/rmappluginui.o rmappluginui.cpp
397 420
398 421 obj/rmapoperations.o: rmapoperations.cpp rmapoperations.h \
399 422 params.h
400 423 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/rmapoperations.o rmapoperations.cpp
401 424
402 425 obj/ccsds.o: ccsds.cpp ccsds.h
403 426 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/ccsds.o ccsds.cpp
404 427
405 428 obj/qipdialogbox.o: ../common_PLE/qipdialogbox.cpp ../common_PLE/qipdialogbox.h
406 429 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/qipdialogbox.o ../common_PLE/qipdialogbox.cpp
407 430
408 431 obj/gresbstatusenquiry.o: ../common_PLE/gresbstatusenquiry.cpp ../common_PLE/gresbstatusenquiry.h
409 432 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/gresbstatusenquiry.o ../common_PLE/gresbstatusenquiry.cpp
410 433
411 434 obj/rmappluginpythonwrapper.o: rmappluginpythonwrapper.cpp rmappluginpythonwrapper.h \
412 435 rmapoperations.h \
413 436 params.h \
414 437 ccsds.h \
415 438 tcpackettosend.h \
416 439 tmpackettoread.h
417 440 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/rmappluginpythonwrapper.o rmappluginpythonwrapper.cpp
418 441
419 442 obj/stardundee.o: stardundee.cpp stardundee.h \
420 443 rmapoperations.h \
421 444 params.h \
422 445 ccsds.h \
423 446 tmpackettoread.h
424 447 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/stardundee.o stardundee.cpp
425 448
426 449 obj/gresb.o: gresb.cpp gresb.h \
427 450 rmapoperations.h \
428 451 params.h \
429 452 ccsds.h \
430 453 tmpackettoread.h
431 454 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/gresb.o gresb.cpp
432 455
433 456 obj/tcpackettosend.o: tcpackettosend.cpp tcpackettosend.h
434 457 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/tcpackettosend.o tcpackettosend.cpp
435 458
436 459 obj/tmpackettoread.o: tmpackettoread.cpp tmpackettoread.h
437 460 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/tmpackettoread.o tmpackettoread.cpp
438 461
439 462 obj/tmstatistics.o: tmstatistics.cpp tmstatistics.h \
440 463 tmpackettoread.h
441 464 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/tmstatistics.o tmstatistics.cpp
442 465
443 466 obj/wfpacket.o: wfpacket.cpp wfpacket.h \
444 467 params.h
445 468 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/wfpacket.o wfpacket.cpp
446 469
447 470 obj/tmechobridge.o: tmechobridge.cpp tmechobridge.h \
448 471 tmpackettoread.h
449 472 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/tmechobridge.o tmechobridge.cpp
450 473
474 obj/entermode.o: entermode.cpp entermode.h
475 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/entermode.o entermode.cpp
476
477 obj/lfractions.o: lfractions.cpp lfractions.h \
478 entermode.h
479 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/lfractions.o lfractions.cpp
480
451 481 obj/lppmonplugininterface.o: /usr/include/lppmon/pluginsInterface/lppmonplugininterface.cpp /usr/include/lppmon/pluginsInterface/lppmonplugininterface.h \
452 482 /usr/include/lppmon/pluginsInterface/lppmonplugininterface_global.h
453 483 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/lppmonplugininterface.o /usr/include/lppmon/pluginsInterface/lppmonplugininterface.cpp
454 484
455 485 obj/moc_rmappluginui.o: moc/moc_rmappluginui.cpp
456 486 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_rmappluginui.o moc/moc_rmappluginui.cpp
457 487
458 488 obj/moc_rmapplugin.o: moc/moc_rmapplugin.cpp
459 489 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_rmapplugin.o moc/moc_rmapplugin.cpp
460 490
461 491 obj/moc_qipdialogbox.o: moc/moc_qipdialogbox.cpp
462 492 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_qipdialogbox.o moc/moc_qipdialogbox.cpp
463 493
464 494 obj/moc_gresbstatusenquiry.o: moc/moc_gresbstatusenquiry.cpp
465 495 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_gresbstatusenquiry.o moc/moc_gresbstatusenquiry.cpp
466 496
467 497 obj/moc_rmappluginpythonwrapper.o: moc/moc_rmappluginpythonwrapper.cpp
468 498 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_rmappluginpythonwrapper.o moc/moc_rmappluginpythonwrapper.cpp
469 499
470 500 obj/moc_stardundee.o: moc/moc_stardundee.cpp
471 501 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_stardundee.o moc/moc_stardundee.cpp
472 502
473 503 obj/moc_gresb.o: moc/moc_gresb.cpp
474 504 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_gresb.o moc/moc_gresb.cpp
475 505
476 506 obj/moc_tcpackettosend.o: moc/moc_tcpackettosend.cpp
477 507 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_tcpackettosend.o moc/moc_tcpackettosend.cpp
478 508
479 509 obj/moc_tmpackettoread.o: moc/moc_tmpackettoread.cpp
480 510 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_tmpackettoread.o moc/moc_tmpackettoread.cpp
481 511
482 512 obj/moc_tmstatistics.o: moc/moc_tmstatistics.cpp
483 513 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_tmstatistics.o moc/moc_tmstatistics.cpp
484 514
485 515 obj/moc_wfpacket.o: moc/moc_wfpacket.cpp
486 516 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_wfpacket.o moc/moc_wfpacket.cpp
487 517
488 518 obj/moc_tmechobridge.o: moc/moc_tmechobridge.cpp
489 519 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_tmechobridge.o moc/moc_tmechobridge.cpp
490 520
521 obj/moc_entermode.o: moc/moc_entermode.cpp
522 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_entermode.o moc/moc_entermode.cpp
523
524 obj/moc_lfractions.o: moc/moc_lfractions.cpp
525 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_lfractions.o moc/moc_lfractions.cpp
526
491 527 obj/moc_genericPySysdriver.o: moc/moc_genericPySysdriver.cpp
492 528 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_genericPySysdriver.o moc/moc_genericPySysdriver.cpp
493 529
494 530 obj/moc_lppmonplugin.o: moc/moc_lppmonplugin.cpp
495 531 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o obj/moc_lppmonplugin.o moc/moc_lppmonplugin.cpp
496 532
497 533 ####### Install
498 534
499 535 install_target: first FORCE
500 536 @$(CHK_DIR_EXISTS) $(INSTALL_ROOT)/home/paul/.lppmon/plugins/ || $(MKDIR) $(INSTALL_ROOT)/home/paul/.lppmon/plugins/
501 537 -$(INSTALL_PROGRAM) "bin/$(TARGET)" "$(INSTALL_ROOT)/home/paul/.lppmon/plugins/$(TARGET)"
502 538 -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/home/paul/.lppmon/plugins/$(TARGET0)"
503 539 -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/home/paul/.lppmon/plugins/$(TARGET1)"
504 540 -$(SYMLINK) "$(TARGET)" "$(INSTALL_ROOT)/home/paul/.lppmon/plugins/$(TARGET2)"
505 541
506 542 uninstall_target: FORCE
507 543 -$(DEL_FILE) "$(INSTALL_ROOT)/home/paul/.lppmon/plugins/$(TARGET)"
508 544 -$(DEL_FILE) "$(INSTALL_ROOT)/home/paul/.lppmon/plugins/$(TARGET0)"
509 545 -$(DEL_FILE) "$(INSTALL_ROOT)/home/paul/.lppmon/plugins/$(TARGET1)"
510 546 -$(DEL_FILE) "$(INSTALL_ROOT)/home/paul/.lppmon/plugins/$(TARGET2)"
511 547 -$(DEL_DIR) $(INSTALL_ROOT)/home/paul/.lppmon/plugins/
512 548
513 549
514 550 install: install_target FORCE
515 551
516 552 uninstall: uninstall_target FORCE
517 553
518 554 FORCE:
519 555
@@ -1,786 +1,809
1 1 #include "gresb.h"
2 2 #include <QTime>
3 3 #include <QHostAddress>
4 4
5 5 gresb::gresb(QWidget *parent) :
6 6 QWidget(parent)
7 7 {
8 8 RMAPSend_SOCKET = new QTcpSocket;
9 9 RMAPReceive_SOCKET = new QTcpSocket;
10 10 GRESBStatusQuery_SOCKET = new QTcpSocket;
11 11
12 12 rmapPacketSEMAPHORE = new QSemaphore;
13 13 ccsdsPacketSEMAPHORE = new QSemaphore;
14 14 rmapPacket = (char*) malloc(RMAP_MAX_PACKET_LENGTH);
15 15 ccsdsPacket = (unsigned char*) malloc(CCSDS_MAX_PACKET_LENGTH);
16 16 spwPacket = (char*) malloc( qMax(RMAP_MAX_PACKET_LENGTH, CCSDS_MAX_PACKET_LENGTH) );
17 17
18 18 commandCode = invalid0; // initialization of the command code for the RMAP transfers
19 19 rmapTargetLogicalAddress = DEFAULT_TARGET;
20 20 rmapSourceLogicalAddress = DEFAULT_SOURCE;
21 21
22 22 //*** QLABEL ***//
23 23 gresbBridgeIPLabel = new QLabel(tr("GRESB Bridge IP: "));
24 24 gresbVirtualLinkLabel = new QLabel(tr("GRESB Virtual Link: "));
25 25 spwLinkLabel = new QLabel(tr("GRESB SPW Link: "));
26 26 rmapSendStateLabel = new QLabel(tr("RMAP Send Socket State: waiting for connection"));
27 27 rmapReceiveStateLabel = new QLabel(tr("RMAP Receive Socket State: waiting for connection"));
28 28 gresbStatusQueryLabel = new QLabel(tr("GRESB status query socket (port 3010): waiting for connection"));
29 29 gresbStatusQueryDialogLabel = new QLabel(tr("sockets opened but SpaceWire link not running"));
30 30
31 31 //*** SPINBOX ***//
32 32 gresbVirtualLinkSpinBox = new QSpinBox;
33 33 spwLinkSpinBox = new QSpinBox;;
34 34 gresbVirtualLinkSpinBox->setRange(0, 4);
35 35 gresbVirtualLinkSpinBox->setValue(1);
36 36 spwLinkSpinBox->setRange(0, 2);
37 37 spwLinkSpinBox->setValue(0);
38 38
39 39 //*** QPUSHBUTTON ***//
40 40 gresbStatusQueryRetryButton = new QPushButton(tr("Retry"));
41 41 gresbStatusQueryAbortButton = new QPushButton(tr("Abort"));
42 42
43 43 //*** LAYOUT ***//
44 44 connectionLayout = new QGridLayout;
45 45
46 46 //*** MISC ***//
47 47 gresbStatusQueryDialog = new QDialog;
48 48 gresbBridgeIPDialogBox = new QIPDialogBox;
49 49 spwLinkStatusEnquiry = new gresbStatusEnquiry;
50 50
51 readSettings(); // get the stored settings for the IP address
52
51 53 connectionLayout->addWidget(gresbBridgeIPLabel, 0, 0, 0);
52 54 connectionLayout->addWidget(gresbBridgeIPDialogBox, 0, 1, 0);
53 55 connectionLayout->addWidget(gresbVirtualLinkLabel, 1, 0, 0);
54 56 connectionLayout->addWidget(gresbVirtualLinkSpinBox, 1, 1, 0);
55 57 connectionLayout->addWidget(spwLinkLabel, 2, 0, 0);
56 58 connectionLayout->addWidget(spwLinkSpinBox, 2, 1, 0);
57 59 connectionLayout->addWidget(rmapSendStateLabel, 3, 0, 1, 2);
58 60 connectionLayout->addWidget(rmapReceiveStateLabel, 4, 0, 1, 2);
59 61 connectionLayout->addWidget(gresbStatusQueryLabel, 5, 0, 1, 2);
60 62
61 63 connectionLayout->setRowStretch(6, 1);
62 64 connectionLayout->setColumnStretch(2, 1);
63 65
64 66 // GRESB STATUS QUERY DIALOG
65 67 gresbStatusQueryDialogLayout = new QGridLayout;
66 68 gresbStatusQueryDialogLayout->addWidget(gresbStatusQueryDialogLabel, 0, 0, 1, 2);
67 69 gresbStatusQueryDialogLayout->addWidget(gresbStatusQueryRetryButton, 1, 0, 0);
68 70 gresbStatusQueryDialogLayout->addWidget(gresbStatusQueryAbortButton, 1, 1, 0);
69 71 gresbStatusQueryDialog->setLayout(gresbStatusQueryDialogLayout);
70 72
71 73 this->setLayout(connectionLayout);
72 74
73 75 connect(RMAPSend_SOCKET, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(RMAPSendConnectionState(QAbstractSocket::SocketState)));
74 76 connect(RMAPReceive_SOCKET, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(RMAPReceiveConnectionState(QAbstractSocket::SocketState)));
75 77 connect(GRESBStatusQuery_SOCKET, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(GRESBConnectionState(QAbstractSocket::SocketState)));
76 78 connect(gresbStatusQueryRetryButton, SIGNAL(clicked()), this, SLOT(reTestSPWLink()));
77 79 connect(gresbStatusQueryAbortButton, SIGNAL(clicked()), gresbStatusQueryDialog, SLOT(reject()));
78 80 connect(spwLinkStatusEnquiry->readSPWStatusButton, SIGNAL(clicked()), this, SLOT(GRESBStatusQuery()));
79 81 connect(this->RMAPReceive_SOCKET, SIGNAL(readyRead()), this, SLOT(receiveSPWPacketLoop()));
80 82 }
81 83
82 84 gresb::~gresb()
83 85 {
84 86 free(rmapPacket);
85 87 free(ccsdsPacket);
86 88 free(spwPacket);
89
90 writeSettings();
87 91 }
88 92
89 93 unsigned int gresb::Write(unsigned int *Value, unsigned int count, unsigned int address)
90 94 {
91 95 unsigned int remainingCount = count;
92 96 unsigned int iOffset = 0;
93 97 QString console_message;
94 98 char* data;
95 99
96 100 if(rmapPacketSEMAPHORE->available()!=0)
97 101 {
98 102 emit appendToLog("WARNING === in function WRITE of rmapplugin *** RMAP request already running, WRITE access stopped");
99 103 return 1;
100 104 }
101 105
102 106 RMAP_write_reply_setText("reply to the write command required\nlast reply status: unavailable");
103 107
104 108 data = (char*) malloc(READ_WRITE_MAX_COUNTS*4);
105 109
106 110 emit appendToLog(QString("*** START *** WRITE ")+ QString::number(count) + QString(" word(s) @0x")+ QString::number(address,16));
107 111
108 112 while (remainingCount > READ_WRITE_MAX_COUNTS)
109 113 {
110 114 for (int i = 0; i<READ_WRITE_MAX_COUNTS; i++)
111 115 {
112 116 data[i*4+3] = (char) ((unsigned int) Value[i+iOffset]);
113 117 data[i*4+2] = (char) ((unsigned int) Value[i+iOffset]>>8);
114 118 data[i*4+1] = (char) ((unsigned int) Value[i+iOffset]>>16);
115 119 data[i*4+0] = (char) ((unsigned int) Value[i+iOffset]>>24);
116 120 }
117 121
118 122 console_message.sprintf("remainingCount: %d => ", remainingCount);
119 123 emit appendToLog(console_message + QString("Write ")+ QString::number(READ_WRITE_MAX_COUNTS*4) + QString(" byte(s) @0x")+ QString::number(address,16));
120 124
121 125 if(WriteBLOCK(data, READ_WRITE_MAX_COUNTS*4, address)==0)
122 126 {
123 127 emit appendToLog("WARNING === in function WRITE of rmapplugin *** RMAP write command failed");
124 128 return 1;
125 129 }
126 130
127 131 remainingCount = remainingCount - READ_WRITE_MAX_COUNTS;
128 132 address = address + READ_WRITE_MAX_COUNTS * 4;
129 133 iOffset = iOffset + READ_WRITE_MAX_COUNTS;
130 134 }
131 135
132 136 if (remainingCount > 0)
133 137 {
134 138 for (unsigned int i = 0; i<remainingCount; i++)
135 139 {
136 140 data[i*4+3] = (char) ((unsigned int) Value[i+iOffset]);
137 141 data[i*4+2] = (char) ((unsigned int) Value[i+iOffset]>>8);
138 142 data[i*4+1] = (char) ((unsigned int) Value[i+iOffset]>>16);
139 143 data[i*4+0] = (char) ((unsigned int) Value[i+iOffset]>>24);
140 144 }
141 145
142 146 console_message.sprintf("remainingCount: %d => ", remainingCount);
143 147 emit appendToLog(console_message + QString("Write ")+ QString::number(remainingCount*4) + QString(" byte(s) @0x")+ QString::number(address,16));
144 148
145 149 if (WriteBLOCK(data, remainingCount*4, address)==0)
146 150 {
147 151 emit appendToLog("WARNING === in function WRITE of rmapplugin *** RMAP write command failed");
148 152 return 1;
149 153 }
150 154 }
151 155
152 156 emit appendToLog(QString("*** STOP *** WRITE"));
153 157 free(data);
154 158 return count;
155 159 }
156 160
157 161 unsigned int gresb::Read(unsigned int *Value, unsigned int count, unsigned int address)
158 162 {
159 163 unsigned int remainingCount = count;
160 164 unsigned int iOffset = 0;
161 165 QString console_message;
162 166
163 167 if(rmapPacketSEMAPHORE->available()!=0)
164 168 {
165 169 emit appendToLog("WARNING === in function READ of rmapplugin *** RMAP request already running, READ access stopped");
166 170 return 1;
167 171 }
168 172 emit appendToLog(QString("*** START *** READ ")+ QString::number(count) + QString(" word(s) @0x")+ QString::number(address,16));
169 173
170 174 while (remainingCount > READ_WRITE_MAX_COUNTS)
171 175 {
172 176 console_message.sprintf("remainingCount: %d => ", remainingCount);
173 177 emit appendToLog(console_message + QString("Read ")+ QString::number(4*READ_WRITE_MAX_COUNTS) + QString(" byte(s) @0x")+ QString::number(address,16));
174 178
175 179 if (ReadBLOCK(READ_WRITE_MAX_COUNTS*4, address)==0)
176 180 {
177 181 emit appendToLog("WARNING === in function READ of rmapplugin *** RMAP packet not received");
178 182 return 1;
179 183 }
180 184
181 185 for(int i=0;i<READ_WRITE_MAX_COUNTS;i++)
182 186 {
183 187 Value[i+iOffset] = (unsigned char) rmapPacket[i*4+RMAP_READ_REPLY_HEADER_LENGTH];
184 188 for(int j=1;j<4;j++)
185 189 {
186 190 Value[i+iOffset]= ((unsigned char)(rmapPacket[i*4+j+RMAP_READ_REPLY_HEADER_LENGTH])) + Value[i+iOffset]*256;
187 191 }
188 192 }
189 193
190 194 remainingCount = remainingCount - READ_WRITE_MAX_COUNTS;
191 195 address = address + READ_WRITE_MAX_COUNTS * 4;
192 196 iOffset = iOffset + READ_WRITE_MAX_COUNTS;
193 197 rmapPacketSEMAPHORE->acquire();
194 198 }
195 199
196 200 if (remainingCount > 0)
197 201 {
198 202 console_message.sprintf("remainingCount: %d => ", remainingCount);
199 203 emit appendToLog(console_message + QString("Read ")+ QString::number(4*remainingCount) + QString(" byte(s) @0x")+ QString::number(address,16));
200 204
201 205 if (ReadBLOCK(4*remainingCount, address)==0)
202 206 {
203 207 emit appendToLog("WARNING === in function READ of rmapplugin *** RMAP packet not received");
204 208 return 1;
205 209 }
206 210
207 211 for(unsigned int i=0;i<remainingCount;i++)
208 212 {
209 213 Value[i+iOffset] = (unsigned char) rmapPacket[i*4+RMAP_READ_REPLY_HEADER_LENGTH];
210 214 for(int j=1;j<4;j++)
211 215 {
212 216 Value[i+iOffset]= ((unsigned char)(rmapPacket[i*4+j+RMAP_READ_REPLY_HEADER_LENGTH])) + Value[i+iOffset]*256;
213 217 }
214 218 }
215 219 rmapPacketSEMAPHORE->acquire();
216 220 }
217 221
218 222 emit appendToLog(QString("*** STOP *** READ "));
219 223 return count;
220 224 }
221 225
222 226 unsigned int gresb::WriteBLOCK(char *data, unsigned int nbBytes, unsigned int address)
223 227 {
224 228 QTime RMAPTimeout;
225 229 RMAP *RMAPCommand;
226 230 int errorCode;
227 231 QString console_message;
228 232
229 233 if (GRESBStatusQueryRequest(LinkStatus, spwLinkSpinBox->value()) == 1)
230 234 {
231 235 this->Close();
232 236 return 1;
233 237 }
234 238
235 239 RMAPCommand = new RMAP(commandCode,
236 240 rmapTargetLogicalAddress,
237 241 rmapSourceLogicalAddress,
238 242 address,
239 243 nbBytes,
240 244 data);
241 245
242 246 // SEND GRESB HEADER
243 247 RMAPSend_SOCKET->write((char*) ((void*) &RMAPCommand->GRESBHeader), 4);
244 248 // SEND SPACEWIRE PACKET HEADER
245 249 RMAPSend_SOCKET->write((char*) ((void*) &RMAPCommand->RMAPHeader), sizeof(RMAPCommand->RMAPHeader));
246 250 // SEND DATA
247 251 RMAPSend_SOCKET->write( data, nbBytes);
248 252 // SEND DATA CRC
249 253 RMAPSend_SOCKET->write((char*) ((void*) &RMAPCommand->dataCRC), 1);
250 254 RMAPTimeout.start();
251 255 while(RMAPSend_SOCKET->bytesToWrite() > 0)
252 256 {
253 257 RMAPSend_SOCKET->waitForBytesWritten(100);
254 258 if(RMAPTimeout.elapsed()>1000)
255 259 {
256 260 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** sending Write RMAP Command timeout");
257 261 return 0;
258 262 }
259 263 }
260 264
261 265 if ( (commandCode == writeSingle_noVer_Rep) | (commandCode == writeInc_noVer_Rep) |
262 266 (commandCode == writeSingle_ver_rep) | (commandCode == writeInc_ver_rep) )
263 267 {
264 268 // WAIT FOR THE RMAP REPLY PACKET
265 269 errorCode = receiveSPWPacket(1);
266 270 if (errorCode<=0)
267 271 {
268 272 emit appendToLog("WARNING === in function WriteBLOCK of rmapplugin *** RMAP packet reception failed with code " + QString::number(errorCode));
269 273 return 0;
270 274 }
271 275 if(rmapPacketSize != 8)
272 276 {
273 277 console_message.sprintf("WARNING === in function WRITE (with reply) of rmapplugin *** write reply format not compliant\n");
274 278 emit appendToLog(console_message);
275 279 return 0;
276 280 }
277 281 switch (rmapPacket[3]) // byte 4 is the status byte in the reply
278 282 {
279 283 case 0:
280 284 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 0 Successfull");
281 285 break;
282 286 case 1:
283 287 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** General error code");
284 288 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 1 General error code");
285 289 break;
286 290 case 2:
287 291 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** Unused RMAP packet type or command code");
288 292 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 2 Unused RMAP packet type or command code");
289 293 break;
290 294 case 3:
291 295 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** Invalid key");
292 296 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 3 Invalid key");
293 297 break;
294 298 case 4:
295 299 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** Invalid data CRC");
296 300 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 4 Invalid data CRC");
297 301 break;
298 302 case 5:
299 303 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** Early EOP");
300 304 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 5 Early EOP");
301 305 break;
302 306 case 6:
303 307 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** Too much data");
304 308 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 6 Too much data");
305 309 break;
306 310 case 7:
307 311 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** EEP");
308 312 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 7 EEP");
309 313 break;
310 314 case 8:
311 315 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** Reserved");
312 316 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 8 Reserved");
313 317 break;
314 318 case 9:
315 319 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** Verify buffer overrun");
316 320 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 9 Verify buffer overrun");
317 321 break;
318 322 case 10:
319 323 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** RMAP command not implemented or not authorised");
320 324 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 10 RMAP command not implemented or not authorised");
321 325 break;
322 326 case 11:
323 327 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** RMW data length error");
324 328 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 11 RMAP RMW data length error");
325 329 break;
326 330 case 12:
327 331 emit appendToLog("WARNING === in function WRITE (with reply) of rmapplugin *** Invalid target logical address");
328 332 RMAP_write_reply_setText("reply to the write command required\nlast reply status: 12 Invalid target logical address");
329 333 break;
330 334 }
331 335 acquireRMAPSemaphore();
332 336 }
333 337 return nbBytes;
334 338 }
335 339
336 340 unsigned int gresb::ReadBLOCK(unsigned int nbBytes, unsigned int address)
337 341 {
338 342 int errorCode;
339 343 RMAP *RMAPCommand;
340 344 QTime RMAPTimeout;
341 345 unsigned int dataLength;
342 346 if (GRESBStatusQueryRequest(LinkStatus, spwLinkSpinBox->value()) == 1)
343 347 {
344 348 this->Close();
345 349 return 1;
346 350 }
347 351
348 352 if (nbBytes > 4)
349 353 {
350 354 RMAPCommand = new RMAP(read_Inc,
351 355 rmapTargetLogicalAddress,
352 356 rmapSourceLogicalAddress,
353 357 address,
354 358 nbBytes,
355 359 NULL);
356 360 }
357 361 else
358 362 {
359 363 RMAPCommand = new RMAP(read_Single,
360 364 rmapTargetLogicalAddress,
361 365 rmapSourceLogicalAddress,
362 366 address,
363 367 nbBytes,
364 368 NULL);
365 369 }
366 370
367 371 // SEND THE GRESB HEADER FOR THE RMAP READ COMMAND
368 372 RMAPSend_SOCKET->write((char*) ((void*) &RMAPCommand->GRESBHeader), 4);
369 373 // SEND THE SPACEWIRE PACKET FOR THE RMAP READ COMMAND
370 374 RMAPSend_SOCKET->write((char*) ((void*) &RMAPCommand->RMAPHeader), sizeof(RMAPCommand->RMAPHeader));
371 375 RMAPSend_SOCKET->waitForBytesWritten(100);
372 376 RMAPTimeout.start();
373 377 // write timeout
374 378 while(RMAPSend_SOCKET->bytesToWrite() > 0)
375 379 {
376 380 RMAPSend_SOCKET->waitForBytesWritten(100);
377 381 if(RMAPTimeout.elapsed()>1000)
378 382 {
379 383 emit appendToLog("WARNING === in function READ of rmapplugin *** sending Read RMAP Command timeout\n");
380 384 return 0;
381 385 }
382 386 }
383 387
384 388 // RECEIVE THE INCOMING RMAP PACKET
385 389 errorCode = receiveSPWPacket(1); // request ID 1 is for RMAP packet
386 390 if (errorCode<=0)
387 391 {
388 392 emit appendToLog("WARNING === in function ReadBLOCK of rmapplugin *** RMAP packet reception failed with code " + QString::number(errorCode));
389 393 return 0;
390 394 }
391 395 dataLength = rmapPacketSize - RMAP_READ_REPLY_HEADER_LENGTH - RMAP_DATA_CRC_LENGTH;
392 396 if(dataLength != nbBytes)
393 397 {
394 398 emit appendToLog("WARNING === in function READ of rmapplugin *** number of data received ("
395 399 +QString::number(dataLength)
396 400 +") not equal to number of data requested ("
397 401 +QString::number(nbBytes)
398 402 +")");
399 403 return 0;
400 404 }
401 405 return dataLength;
402 406 }
403 407
404 408 unsigned int gresb::WriteSPW(char *Value, unsigned int count, char targetLogicalAddress, char userApplication)
405 409 {
406 410 char protocoleIdentifier = 0x02;
407 411 char reserved = 0x00;
408 412 char gresbProtocole = 0x00;
409 413 unsigned char size[3];
410 414 unsigned int spwPacketSize = count + 4;
411 415 QTime SPWTimeout;
412 416
413 417 if (count>248)
414 418 {
415 419 appendToLog("WARNING === in function WRITE of rmapplugin *** CCSDS packet size > 248 bytes\n");
416 420 return 1;
417 421 }
418 422
419 423 appendToLog(QString("*** START *** Send CCSDS packet of ")+ QString::number(count) + QString(" byte(s)"));
420 424
421 425 if (GRESBStatusQueryRequest(LinkStatus, spwLinkSpinBox->value()) == 1)
422 426 {
423 427 this->Close();
424 428 appendToLog("WARNING === in function WRITE of rmapplugin *** SPW link not running\n");
425 429 return 1;
426 430 }
427 431
428 432 // SEND GRESB HEADER
429 433 size[0] = (unsigned char) ((unsigned int) spwPacketSize>>16);
430 434 size[1] = (unsigned char) ((unsigned int) spwPacketSize>>8);
431 435 size[2] = (unsigned char) ((unsigned int) spwPacketSize);
432 436 RMAPSend_SOCKET->write(&gresbProtocole, 1);
433 437 RMAPSend_SOCKET->write((char*) size, 3);
434 438 // SEND SPW HEADER
435 439 RMAPSend_SOCKET->write(&targetLogicalAddress, 1);
436 440 RMAPSend_SOCKET->write(&protocoleIdentifier, 1);
437 441 RMAPSend_SOCKET->write(&reserved, 1);
438 442 RMAPSend_SOCKET->write(&userApplication, 1);
439 443 // SEND CCSDS PACKET
440 444 RMAPSend_SOCKET->write(Value, count);
441 445 SPWTimeout.start();
442 446 while(RMAPSend_SOCKET->bytesToWrite() > 0)
443 447 {
444 448 RMAPSend_SOCKET->waitForBytesWritten(100);
445 449 if(SPWTimeout.elapsed()>1000)
446 450 {
447 451 appendToLog("WARNING === in function WRITE of rmapplugin *** sending CCSDS packet timeout\n");
448 452 return 1;
449 453 }
450 454 }
451 455
452 456 appendToLog(QString("*** CCSDS packet sent"));
453 457
454 458 return count;
455 459 }
456 460
457 461 int gresb::receiveSPWPacketLoop(unsigned char requestID)
458 462 {
459 463 int result = 0;
460 464 while (RMAPReceive_SOCKET->bytesAvailable())
461 465 {
462 466 result = receiveSPWPacket(requestID);
463 467 }
464 468
465 469 return result;
466 470 }
467 471
468 472 int gresb::receiveSPWPacket(unsigned char requestID) // SLOT
469 473 {
470 474 QTime spwPacketReceiverTimeout;
471 475 // GRESB HEADER
472 476 char RES_TR_EP; // 6 bits REserved + 1 bit TRuncated + 1 bit EP error end of packet
473 477 unsigned char packetLength2;
474 478 unsigned char packetLength1;
475 479 unsigned char packetLength0;
476 480 unsigned int packetLength;
477 481
478 482 if (requestID==1)
479 483 {
480 484 if (rmapPacketSEMAPHORE->available()) return rmapPacketSize;
481 485 }
482 486
483 487 RMAPReceive_SOCKET->blockSignals(1); // block the signals of the socket during packet reception
484 488 // READ THE GRESB HEADER OF THE INCOMING PACKET
485 489 spwPacketReceiverTimeout.start();
486 490 while(RMAPReceive_SOCKET->bytesAvailable() < 4)
487 491 {
488 492 RMAPReceive_SOCKET->waitForReadyRead(100);
489 493 if(spwPacketReceiverTimeout.elapsed()>1000) return -1; // ERROR === read GRSEB header TIMEOUT
490 494 }
491 495 RMAPReceive_SOCKET->read(&RES_TR_EP, 1);
492 496 RMAPReceive_SOCKET->read( (char*) &packetLength2, 1);
493 497 RMAPReceive_SOCKET->read( (char*) &packetLength1, 1);
494 498 RMAPReceive_SOCKET->read( (char*) &packetLength0, 1);
495 499 packetLength = (packetLength2<<16) + (packetLength1<<8) + (packetLength0);
496 500
497 501 // READ THE SPW PACKET
498 502 while(RMAPReceive_SOCKET->bytesAvailable() < packetLength)
499 503 {
500 504 RMAPReceive_SOCKET->waitForReadyRead(100);
501 505 if(spwPacketReceiverTimeout.elapsed()>1000) return -2; // ERROR === read SPW packet TIMEOUT
502 506 }
503 507 RMAPReceive_SOCKET->read( spwPacket, packetLength );
504 508 RMAPReceive_SOCKET->blockSignals(0);
505 509 //emit sendMessage("Packet of size " + QString::number(packetLength) + " received");
506 510
507 511 switch(spwPacket[1]) // byte 1 is the protocole identifier in the SPW packet
508 512 {
509 513 case 1: // 0x01 is the protocole identifier for RMAP packets
510 514 if (rmapPacketSEMAPHORE->available()!=0) return -3; // ERROR === previous RMAP packet not processed yet
511 515 for(unsigned int i=0; i<packetLength; i++) rmapPacket[i] = spwPacket[i];
512 516 rmapPacketSize = packetLength;
513 517 rmapPacketSEMAPHORE->release();
514 518 emit sendMessage("RMAP packet of size " + QString::number(packetLength) + " received");
515 519 return packetLength;
516 520
517 521 case 2: // 0x02 is the protocole identifier for CCSDS packets
518 522 /*if (ccsdsPacketSEMAPHORE->available()!=0)
519 523 {
520 524 emit sendMessage("in function [receiveSPWPacket] === ERROR === previous CCSDS packet not processed yet");
521 525 return -4; // ERROR === previous CCSDS packet not processed yet
522 526 }*/
523 527 for(unsigned int i=0; i<packetLength; i++) ccsdsPacket[i] = spwPacket[i];
524 528 ccsdsPacketSize = packetLength;
525 529 storeCCSDSPacket(ccsdsPacket, packetLength);
526 530 return packetLength;
527 531 }
528 532 return 0;
529 533 }
530 534
531 535 unsigned int gresb::storeCCSDSPacket(unsigned char *ccsdsPacket, unsigned int size)
532 536 {
533 537 TMPacketToRead *generalPacket;
534 538
535 539 generalPacket = new TMPacketToRead(ccsdsPacket, size);
536 540 emit sendPacket(generalPacket);
537 541
538 542 return 1;
539 543 }
540 544
541 545 void gresb::Open() // SLOT
542 546 {
543 547 bool spwRunning = true;
544 548 RMAPSend_SOCKET->connectToHost( QHostAddress(gresbBridgeIPDialogBox->getIP()),
545 549 3000 + gresbVirtualLinkSpinBox->value()*2,
546 550 QIODevice::WriteOnly);
547 551 RMAPReceive_SOCKET->connectToHost( QHostAddress(gresbBridgeIPDialogBox->getIP()),
548 552 3000 + gresbVirtualLinkSpinBox->value()*2+1,
549 553 QIODevice::ReadOnly);
550 554 GRESBStatusQuery_SOCKET->connectToHost( QHostAddress(gresbBridgeIPDialogBox->getIP()),
551 555 3010,
552 556 QIODevice::ReadWrite);
553 557 GRESBStatusQuery_SOCKET->waitForConnected(10000);
554 558 // initialize SPW packet semaphores
555 559 while (rmapPacketSEMAPHORE->available()!=0) rmapPacketSEMAPHORE->acquire();
556 560 while (ccsdsPacketSEMAPHORE->available()!=0) ccsdsPacketSEMAPHORE->acquire();
557 561 if (GRESBStatusQueryRequest(LinkStatus, spwLinkSpinBox->value()) != 0)
558 562 {
559 563 spwRunning = gresbStatusQueryDialog->exec();
560 564 }
561 565 if (spwRunning == false) this->Close();
562 566 else
563 567 {
564 568 emit appendToLog(QString("SpaceWire running on link ")+ QString::number(spwLinkSpinBox->value()));
565 569 RMAPReceive_SOCKET->readAll(); // read all remaining data from the reception socket
566 570 emit isOpen(true);
567 571 }
568 572 }
569 573
570 574 void gresb::Close() // SLOT
571 575 {
572 576 RMAPSend_SOCKET->disconnectFromHost();
573 577 RMAPReceive_SOCKET->disconnectFromHost();
574 578 GRESBStatusQuery_SOCKET->disconnectFromHost();
575 579 emit isOpen(false);
576 580 }
577 581
578 582 int gresb::GRESBStatusQuery() // SLOT
579 583 {
580 584 GRESBStatusQueryRequest(LinkStatus, 0);
581 585 GRESBStatusQueryRequest(LinkStatus, 1);
582 586 GRESBStatusQueryRequest(LinkStatus, 2);
583 587 GRESBStatusQueryRequest(LinkStatistics, 0);
584 588 GRESBStatusQueryRequest(LinkStatistics, 1);
585 589 GRESBStatusQueryRequest(LinkStatistics, 2);
586 590 return 0;
587 591 }
588 592
589 593 int gresb::GRESBStatusQueryRequest(GresbStatusQueryOption option, char link)
590 594 {
591 595 gresb_status_query_t statusQueryCommand;
592 596 gresb_link_status_reply_t linkStatusReply;
593 597 gresb_link_statistics_reply_t linkStatisticsReply;
594 598 QTime statusQueryTimeout;
595 599 QString console_message;
596 600
597 601 statusQueryCommand.protocolIdentifier = (char) 0x02;
598 602 statusQueryCommand.reserved1 = (char) 0x00;
599 603 statusQueryCommand.reserved0 = (char) 0x00;
600 604 statusQueryCommand.option = (char) option;
601 605 statusQueryCommand.value3 = (char) 0x00;
602 606 statusQueryCommand.value2 = (char) 0x00;
603 607 statusQueryCommand.value1 = (char) 0x00;
604 608 statusQueryCommand.value0 = (char) link;
605 609
606 610 GRESBStatusQuery_SOCKET->write((char*) ((void*) &statusQueryCommand), sizeof(statusQueryCommand));
607 611 GRESBStatusQuery_SOCKET->flush();
608 612 GRESBStatusQuery_SOCKET->waitForBytesWritten(1000);
609 613
610 614 statusQueryTimeout.start();
611 615 while(GRESBStatusQuery_SOCKET->bytesToWrite() > 0)
612 616 {
613 617 GRESBStatusQuery_SOCKET->waitForBytesWritten(100);
614 618 if(statusQueryTimeout.elapsed()>1000)
615 619 {
616 620 emit appendToLog("WARNING === in function GRESBStatusQueryRequest of rmapplugin *** sending StatusQueryCommand timeout");
617 621 return 1;
618 622 }
619 623 }
620 624
621 625 switch (option)
622 626 {
623 627 case LinkStatus:
624 628 {
625 629 statusQueryTimeout.start();
626 630 while(GRESBStatusQuery_SOCKET->bytesAvailable() < (int) sizeof(linkStatusReply))
627 631 {
628 632 GRESBStatusQuery_SOCKET->waitForReadyRead(100);
629 633 if(statusQueryTimeout.elapsed()>1000)
630 634 {
631 635 console_message.sprintf("GRESBStatusQueryRequest / LinkStatus => error timeout bytesAvailable()\n");
632 636 emit appendToLog(console_message);
633 637 return 1;
634 638 }
635 639 }
636 640 GRESBStatusQuery_SOCKET->read((char*) ((void*) &linkStatusReply), (int) sizeof(linkStatusReply));
637 641 console_message.sprintf("%x", linkStatusReply.byte0);
638 642 spwLinkStatusEnquiry->statusQueryTable->item(0, link)->setText(console_message);
639 643 console_message.sprintf("%d", linkStatusReply.byte1);
640 644 spwLinkStatusEnquiry->statusQueryTable->item(1, link)->setText(console_message);
641 645 if (linkStatusReply.byte0 == 0) return 1;
642 646 break;
643 647 }
644 648 case LinkStatistics:
645 649 {
646 650 statusQueryTimeout.start();
647 651 while(GRESBStatusQuery_SOCKET->bytesAvailable() < (int) sizeof(linkStatisticsReply))
648 652 {
649 653 GRESBStatusQuery_SOCKET->waitForReadyRead(100);
650 654 if(statusQueryTimeout.elapsed()>1000)
651 655 {
652 656 console_message.sprintf("GRESBStatusQueryRequest / LinkStatistics => error timeout bytesAvailable()\n");
653 657 emit appendToLog(console_message);
654 658 return 1;
655 659 }
656 660 }
657 661 GRESBStatusQuery_SOCKET->read((char*) ((void*) &linkStatisticsReply), sizeof(linkStatisticsReply));
658 662 /*console_message.sprintf("%d", charTab_TO_int(linkStatisticsReply.sizeOfDataTransmitted));
659 663 UI->spwLinkStatusEnquiry->statusQueryTable->item(9, link)->setText(console_message);
660 664 console_message.sprintf("%d", charTab_TO_int(linkStatisticsReply.numberOfPacketsTransmitted));
661 665 UI->spwLinkStatusEnquiry->statusQueryTable->item(8, link)->setText(console_message);
662 666 console_message.sprintf("%d", charTab_TO_int(linkStatisticsReply.numberOfTruncatedPacketsReceived));
663 667 UI->spwLinkStatusEnquiry->statusQueryTable->item(6, link)->setText(console_message);
664 668 console_message.sprintf("%d", charTab_TO_int(linkStatisticsReply.numberOfPacketsWithEEPReceived));
665 669 UI->spwLinkStatusEnquiry->statusQueryTable->item(5, link)->setText(console_message);
666 670 console_message.sprintf("%d", charTab_TO_int(linkStatisticsReply.sizeOfDataReceived));
667 671 UI->spwLinkStatusEnquiry->statusQueryTable->item(4, link)->setText(console_message);
668 672 console_message.sprintf("%d", charTab_TO_int(linkStatisticsReply.numberOfPacketsReceived));
669 673 UI->spwLinkStatusEnquiry->statusQueryTable->item(3, link)->setText(console_message);*/
670 674 break;
671 675 }
672 676 case NodeAddressStatistics:
673 677 {
674 678 break;
675 679 }
676 680 case GetRoute:
677 681 {
678 682 break;
679 683 }
680 684 }
681 685 return 0;
682 686 }
683 687
684 688 void gresb::reTestSPWLink() // SLOT
685 689 {
686 690 if (GRESBStatusQueryRequest(LinkStatus, spwLinkSpinBox->value()) == 0)
687 691 {
688 692 gresbStatusQueryDialog->accept();
689 693 }
690 694 }
691 695
692 696 void gresb::RMAPSendConnectionState(QAbstractSocket::SocketState socketState) // SLOT
693 697 {
694 698 rmapSendStateLabel->setText("");
695 699 QString socketMessage = "RMAP Send Socket State: ";
696 700 switch(socketState)
697 701 {
698 702 case QAbstractSocket::UnconnectedState :
699 703 socketMessage.append("0 => Unconnected");
700 704 break;
701 705 case 1:
702 706 socketMessage.append("1 => HostLookup");
703 707 break;
704 708 case 2:
705 709 socketMessage.append("2 => Connecting");
706 710 break;
707 711 case 3:
708 712 socketMessage.append("3 => Connected");
709 713 break;
710 714 case 4:
711 715 socketMessage.append("4 => Bound");
712 716 break;
713 717 case 5:
714 718 socketMessage.append("5 => Closing");
715 719 break;
716 720 case 6:
717 721 socketMessage.append("6 => Listening");
718 722 break;
719 723 }
720 724 rmapSendStateLabel->setText(socketMessage);
721 725 emit appendToLog(socketMessage);
722 726 }
723 727
724 728 void gresb::RMAPReceiveConnectionState(QAbstractSocket::SocketState socketState) // SLOT
725 729 {
726 730 rmapReceiveStateLabel->setText("");
727 731 QString socketMessage = "RMAP Receive Socket State: ";
728 732 switch(socketState)
729 733 {
730 734 case QAbstractSocket::UnconnectedState :
731 735 socketMessage.append("0 => Unconnected");
732 736 break;
733 737 case 1:
734 738 socketMessage.append("1 => HostLookup");
735 739 break;
736 740 case 2:
737 741 socketMessage.append("2 => Connecting");
738 742 break;
739 743 case 3:
740 744 socketMessage.append("3 => Connected");
741 745 break;
742 746 case 4:
743 747 socketMessage.append("4 => Bound");
744 748 break;
745 749 case 5:
746 750 socketMessage.append("5 => Closing");
747 751 break;
748 752 case 6:
749 753 socketMessage.append("6 => Listening");
750 754 break;
751 755 }
752 756 rmapReceiveStateLabel->setText(socketMessage);
753 757 emit appendToLog(socketMessage);
754 758 }
755 759
756 760 void gresb::GRESBConnectionState(QAbstractSocket::SocketState socketState) // SLOT
757 761 {
758 762 gresbStatusQueryLabel->setText("");
759 763 QString socketMessage = "GRESB status query socket (port 3010): ";
760 764 switch(socketState)
761 765 {
762 766 case QAbstractSocket::UnconnectedState :
763 767 socketMessage.append("0 => Unconnected");
764 768 break;
765 769 case 1:
766 770 socketMessage.append("1 => HostLookup");
767 771 break;
768 772 case 2:
769 773 socketMessage.append("2 => Connecting");
770 774 break;
771 775 case 3:
772 776 socketMessage.append("3 => Connected");
773 777 break;
774 778 case 4:
775 779 socketMessage.append("4 => Bound");
776 780 break;
777 781 case 5:
778 782 socketMessage.append("5 => Closing");
779 783 break;
780 784 case 6:
781 785 socketMessage.append("6 => Listening");
782 786 break;
783 787 }
784 788 gresbStatusQueryLabel->setText(socketMessage);
785 789 }
786 790
791 void gresb::readSettings()
792 {
793 QSettings settings("lpp", "rmapplugin");
794 gresbBridgeIP0 = (unsigned char) settings.value("gresbBridgeIP0", 129).toInt();
795 gresbBridgeIP1 = (unsigned char) settings.value("gresbBridgeIP1", 104).toInt();
796 gresbBridgeIP2 = (unsigned char) settings.value("gresbBridgeIP2", 27).toInt();
797 gresbBridgeIP3 = (unsigned char) settings.value("gresbBridgeIP3", 244).toInt();
798 this->gresbBridgeIPDialogBox->setIP(gresbBridgeIP0, gresbBridgeIP1, gresbBridgeIP2, gresbBridgeIP3);
799 }
800
801 void gresb::writeSettings()
802 {
803 QSettings settings("lpp", "rmapplugin");
804 settings.setValue("gresbBridgeIP0", this->gresbBridgeIPDialogBox->get_addressPart1());
805 settings.setValue("gresbBridgeIP1", this->gresbBridgeIPDialogBox->get_addressPart2());
806 settings.setValue("gresbBridgeIP2", this->gresbBridgeIPDialogBox->get_addressPart3());
807 settings.setValue("gresbBridgeIP3", this->gresbBridgeIPDialogBox->get_addressPart4());
808 }
809
@@ -1,108 +1,115
1 1 #ifndef GRESB_H
2 2 #define GRESB_H
3 3
4 4 #include <QWidget>
5 5 #include <QLabel>
6 6 #include <QPushButton>
7 7 #include <QSpinBox>
8 8 #include <QGridLayout>
9 9 #include <QTcpSocket>
10 10 #include <QDialog>
11 11 #include <QSemaphore>
12 #include <QSettings>
12 13
13 14 #include "gresbstatusenquiry.h"
14 15 #include "rmapoperations.h"
15 16 #include "qipdialogbox.h"
16 17 #include "ccsds.h"
17 18 #include "tmpackettoread.h"
18 19
19 20 class gresb : public QWidget
20 21 {
21 22 Q_OBJECT
22 23 public:
23 24 explicit gresb(QWidget *parent = 0);
24 25 ~gresb();
25 26 unsigned int Write(unsigned int *Value,unsigned int count,unsigned int address=0);
26 27 unsigned int Read(unsigned int *Value,unsigned int count,unsigned int address=0);
27 28 unsigned int WriteSPW(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
29 void readSettings();
30 void writeSettings();
28 31
29 32 unsigned int storeCCSDSPacket(unsigned char *ccsdsPacket, unsigned int size);
30 33
31 34 gresbStatusEnquiry* spwLinkStatusEnquiry;
32 35
33 36 signals:
34 37 void sendMessage(QString message);
35 38 void sendPacket(TMPacketToRead*);
36 39 void isOpen(bool);
37 40 void RMAP_write_reply_setText(QString);
38 41 void appendToLog(QString);
39 42
40 43 public slots:
41 44 void Open();
42 45 void Close();
43 46 int receiveSPWPacketLoop(unsigned char requestID=0);
44 47 int receiveSPWPacket(unsigned char requestID=0);
45 48 void commandCodeHasChanged(RMAP_command_codes code) {this->commandCode = code;}
46 49 void targetHasChanged(int target) {rmapTargetLogicalAddress = (unsigned char) target;}
47 50 void sourceHasChanged(int source) {rmapSourceLogicalAddress = (unsigned char) source;}
48 51 void ccsdsPacketIsProcessed() {ccsdsPacketSEMAPHORE->tryAcquire();}
49 52 void reTestSPWLink();
50 53 //
51 54 void RMAPSendConnectionState(QAbstractSocket::SocketState socketState);
52 55 void RMAPReceiveConnectionState(QAbstractSocket::SocketState socketState);
53 56 void GRESBConnectionState(QAbstractSocket::SocketState socketState);
54 57 //
55 58 void setIP(unsigned char address1, unsigned char address2, unsigned char address3, unsigned char address4)
56 59 {this->gresbBridgeIPDialogBox->setIP(address1, address2, address3, address4);}
57 60
58 61 private slots:
59 62 int GRESBStatusQuery();
60 63
61 64 private:
62 65 unsigned int WriteBLOCK(char *data,unsigned int nbBytes,unsigned int address=0);
63 66 unsigned int ReadBLOCK(unsigned int nbBytes,unsigned int address=0);
64 67 void acquireRMAPSemaphore() {rmapPacketSEMAPHORE->tryAcquire();}
65 68 void acquireCCSDSSemaphore() {ccsdsPacketSEMAPHORE->tryAcquire();}
66 69 int GRESBStatusQueryRequest(GresbStatusQueryOption option, char link);
67 70
68 71 unsigned char rmapTargetLogicalAddress ;
69 72 unsigned char rmapSourceLogicalAddress ;
70 73
71 74 RMAP_command_codes commandCode;
72 75
73 76 QPushButton *gresbStatusQueryRetryButton;
74 77 QPushButton *gresbStatusQueryAbortButton;
75 78
76 79 QLabel *gresbBridgeIPLabel;
77 80 QLabel *gresbVirtualLinkLabel;
78 81 QLabel *spwLinkLabel;
79 82 QLabel *rmapSendStateLabel;
80 83 QLabel *rmapReceiveStateLabel;
81 84 QLabel *gresbStatusQueryLabel;
82 85 QLabel *gresbStatusQueryDialogLabel;
83 86
84 87 QDialog *gresbStatusQueryDialog;
85 88
86 89 QIPDialogBox* gresbBridgeIPDialogBox;
90 unsigned char gresbBridgeIP0;
91 unsigned char gresbBridgeIP1;
92 unsigned char gresbBridgeIP2;
93 unsigned char gresbBridgeIP3;
87 94
88 95 QSpinBox *gresbVirtualLinkSpinBox;
89 96 QSpinBox *spwLinkSpinBox;
90 97
91 98 QGridLayout *connectionLayout;
92 99 QGridLayout *gresbStatusQueryDialogLayout;
93 100
94 101 QTcpSocket *RMAPSend_SOCKET;
95 102 QTcpSocket *RMAPReceive_SOCKET;
96 103 QTcpSocket *GRESBStatusQuery_SOCKET;
97 104
98 105 // Packet receiver
99 106 QSemaphore *rmapPacketSEMAPHORE;
100 107 QSemaphore *ccsdsPacketSEMAPHORE;
101 108 char* rmapPacket; // The buffer to receive RMAP READ packets
102 109 unsigned char *ccsdsPacket;
103 110 char *spwPacket;
104 111 unsigned int rmapPacketSize;
105 112 unsigned int ccsdsPacketSize;
106 113 };
107 114
108 115 #endif // GRESB_H
@@ -1,395 +1,411
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the LPPMON Software
3 3 -- Copyright (C) 2012, Laboratory of Plasma Physics - CNRS
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------*/
19 19 /*-- Author : Paul LEROY
20 20 -- Mail : paul.leroy@lpp.polytechnique.fr
21 21 ----------------------------------------------------------------------------*/
22 22 #include "rmapplugin.h"
23 23 #include <QHostAddress>
24 24 #include <QIODevice>
25 25 #include <QApplication>
26 26 #include <rmappluginpythonwrapper.h>
27 27 #include <PythonQt.h>
28 28 #include <QTimer>
29 29
30 30 rmapplugin::rmapplugin(QWidget *parent)
31 31 :lppmonplugin(parent,false)
32 32 {
33 33 this->UI = new rmapPluginUI();
34 34 this->setWindowTitle(tr("RMAP and SPW Communication"));
35 35 this->setWidget((QWidget*)this->UI);
36 36
37 37 timeCode = 0;
38 38 time_COARSE = 0;
39 39 time_FINE = 0;
40 40 currentBridge = selectedBridgeIsUnknown;
41 41
42 42 //**************
43 43 //Python wrapper
44 44 this->pyObject = new rmappluginPythonWrapper();
45 45 connect(this->pyObject,SIGNAL(ReadSig(uint*,uint,uint)),this,SLOT(Read(uint*,uint,uint)));
46 46 connect(this->pyObject,SIGNAL(WriteSig(uint*,uint,uint)),this,SLOT(Write(uint*,uint,uint)));
47 47 //**
48 48 connect( (rmappluginPythonWrapper*)this->pyObject, SIGNAL( WriteSPWSig(char*,uint,char,char) ),
49 49 this, SLOT( WriteSPW(char*,uint,char,char)), Qt::DirectConnection );
50 50 //**
51 51 connect( (rmappluginPythonWrapper*)this->pyObject, SIGNAL( updateTargetAddress(unsigned char) ),
52 52 this, SLOT( setValueTargetAddress(unsigned char)) );
53 53 //**
54 54 connect( (rmappluginPythonWrapper*)this->pyObject, SIGNAL( updateSourceAddress(unsigned char) ),
55 55 this, SLOT( setValueSourceAddress(unsigned char)) );
56 56 //**
57 57 connect( (rmappluginPythonWrapper*)this->pyObject, SIGNAL(sendMessage(QString)),
58 58 this, SLOT(displayOnConsole(QString)) );
59 59 //**
60 60 connect( (rmappluginPythonWrapper*)this->pyObject, SIGNAL(fetchPacketSig()),
61 61 this, SLOT(fetchPacket()), Qt::DirectConnection );
62 62 //***
63 63 connect( (rmappluginPythonWrapper*)this->pyObject, SIGNAL(nbPacketHasChanged(int)),
64 64 this, SLOT(nbPacketHasChanged(int)));
65 65 //**************
66 66
67 67 //**************
68 68 // get a smart pointer to the __main__ module of the Python interpreter
69 69 PythonQtObjectPtr context = PythonQt::self()->getMainModule();
70 70 // add a QObject as variable of name "BUTTON_rmapOpenCommunication" to the namespace of the __main__ module
71 71 context.addObject("BUTTON_rmapOpenCommunication", UI->rmapOpenCommunicationButton);
72 72 context.addObject("BUTTON_rmapCloseCommunication", UI->rmapCloseCommunicationButton);
73 73 context.addObject("BUTTON_selectStarDundee", UI->selectStarDundee_BUTTON);
74 74 context.addObject("BUTTON_selectGRESB", UI->selectGRESB_BUTTON);
75 75 context.addObject("GRESB_Bridge", UI->gresbBridge);
76 76 //**************
77 77
78 78 connect(UI->rmapOpenCommunicationButton, SIGNAL(clicked()), this, SLOT(openBridge()));
79 79 connect(UI->rmapCloseCommunicationButton, SIGNAL(clicked()), this, SLOT(closeBridge()));
80 80 connect(this, SIGNAL(
81 81 updateStatistics(unsigned char,unsigned char,unsigned char,unsigned char,uint,uint,uint,uint)
82 82 ),
83 83 this->UI->tmStatistics, SLOT(
84 84 updateStatistics(unsigned char,unsigned char,unsigned char,unsigned char,uint,uint,uint,uint)
85 85 ));
86 86
87 87 //******
88 88 // GRESB
89 89 connect(this->UI->gresbBridge, SIGNAL(sendMessage(QString)), this, SLOT(displayOnConsole(QString)));
90 90 connect(this->UI->gresbBridge, SIGNAL(isOpen(bool)), this, SLOT(activatePlugin(bool)));
91 91 connect(this->UI->gresbBridge, SIGNAL(RMAP_write_reply_setText(QString)), this, SLOT(RMAP_write_reply_setText(QString)));
92 92 connect(this->UI->gresbBridge, SIGNAL(appendToLog(QString)), this, SLOT(appendToLog(QString)));
93 93 connect(this, SIGNAL(ccsdsPacketIsProcessed()), this->UI->gresbBridge, SLOT(ccsdsPacketIsProcessed()));
94 94 connect(this->UI->rmapTargetLogicalAddressSpinBox, SIGNAL(valueChanged(int)),
95 95 this->UI->gresbBridge, SLOT(targetHasChanged(int)));
96 96 connect(this->UI->rmapSourceLogicalAddressSpinBox, SIGNAL(valueChanged(int)),
97 97 this->UI->gresbBridge, SLOT(sourceHasChanged(int)));
98 98 connect(this->UI->gresbBridge, SIGNAL(sendPacket(TMPacketToRead*)),
99 99 this, SLOT(receivePacketFromBridge(TMPacketToRead*)), Qt::DirectConnection);
100 100
101 101 //************
102 102 // Star Dundee
103 103 connect(this->UI->starDundee, SIGNAL(sendMessage(QString)), this, SLOT(displayOnConsole(QString)));
104 104 connect(this->UI->starDundee, SIGNAL(isOpen(bool)), this, SLOT(activatePlugin(bool)));
105 105 connect(this->UI->starDundee, SIGNAL(RMAP_write_reply_setText(QString)), this, SLOT(RMAP_write_reply_setText(QString)));
106 106 connect(this->UI->starDundee, SIGNAL(appendToLog(QString)), this, SLOT(appendToLog(QString)));
107 107 connect(this, SIGNAL(ccsdsPacketIsProcessed()), this->UI->starDundee, SLOT(ccsdsPacketIsProcessed()));
108 108 connect(this->UI->rmapTargetLogicalAddressSpinBox, SIGNAL(valueChanged(int)),
109 109 this->UI->starDundee, SLOT(targetHasChanged(int)));
110 110 connect(this->UI->rmapSourceLogicalAddressSpinBox, SIGNAL(valueChanged(int)),
111 111 this->UI->starDundee, SLOT(sourceHasChanged(int)));
112 112 connect(this->UI->starDundee, SIGNAL(sendPacket(TMPacketToRead*)),
113 113 this, SLOT(receivePacketFromBridge(TMPacketToRead*)), Qt::DirectConnection);
114 114
115 115 connect(this->UI, SIGNAL(bridgeHasChanged(selectedBridge)), this, SLOT(bridgeHasChanged(selectedBridge)));
116 116
117 117 ((rmappluginPythonWrapper*)this->pyObject)->ccsdsPacketStore = &(this->generalCCSDSPacketStore);
118
119 //************
120 // LFR ACtions
121 connect(this->UI->lfrActions, SIGNAL(WriteSPWSig(char*,uint,char,char)),
122 this, SLOT(WriteSPW(char*,uint,char,char)));
123
118 124 }
119 125
120 126 rmapplugin::~rmapplugin()
121 127 {
122 128 switch(currentBridge)
123 129 {
124 130 case selectedBridgeIsGRESB :
125 if (RMAPSend_SOCKET->isOpen()) RMAPSend_SOCKET->disconnectFromHost();
126 if (RMAPReceive_SOCKET->isOpen()) RMAPReceive_SOCKET->disconnectFromHost();
127 if (GRESBStatusQuery_SOCKET->isOpen()) GRESBStatusQuery_SOCKET->disconnectFromHost();
131 this->UI->gresbBridge->writeSettings();
128 132 break;
129 133 case selectedBridgeIsStarDundee :
130 134 break;
131 135 default:
132 136 break;
133 137 }
134 138 }
135 139
136 140 unsigned int rmapplugin::Write(unsigned int *Value, unsigned int count, unsigned int address)
137 141 {
138 142 unsigned int result;
139 143 switch(currentBridge)
140 144 {
141 145 case selectedBridgeIsGRESB :
142 146 result = UI->gresbBridge->Write(Value, count, address);
143 147 break;
144 148 case selectedBridgeIsStarDundee :
145 149 result = UI->starDundee->Write(Value, count, address);
146 150 break;
147 151 default:
148 152 result = 1;
149 153 break;
150 154 }
151 155 return result;
152 156 }
153 157
154 158 unsigned int rmapplugin::Read(unsigned int *Value, unsigned int count, unsigned int address)
155 159 {
156 160 unsigned int result;
157 161 switch(currentBridge)
158 162 {
159 163 case selectedBridgeIsGRESB :
160 164 result = UI->gresbBridge->Read(Value, count, address);
161 165 break;
162 166 case selectedBridgeIsStarDundee :
163 167 result = UI->starDundee->Read(Value, count, address);
164 168 break;
165 169 default:
166 170 result = 1;
167 171 break;
168 172 }
169 173 return result;
170 174 }
171 175
172 176 ////////
173 177 // SLOTS
174 178
175 179 unsigned int rmapplugin::WriteSPW(char *Value, unsigned int count, char targetLogicalAddress, char userApplication) // SLOT
176 180 {
177 181 unsigned int result;
178 182 switch(currentBridge)
179 183 {
180 184 case selectedBridgeIsGRESB :
181 185 result = UI->gresbBridge->WriteSPW(Value, count, targetLogicalAddress, userApplication);
182 186 break;
183 187 case selectedBridgeIsStarDundee :
184 188 result = UI->starDundee->WriteSPW(Value, count, targetLogicalAddress, userApplication);
185 189 break;
186 190 default:
187 191 result = 1;
188 192 break;
189 193 }
190 194 return result;
191 195 }
192 196
193 197 void rmapplugin::openBridge()
194 198 {
195 199 switch(currentBridge)
196 200 {
197 201 case selectedBridgeIsGRESB :
198 202 this->UI->gresbBridge->Open();
199 203 break;
200 204 case selectedBridgeIsStarDundee :
201 205 this->UI->starDundee->Open();
202 206 break;
203 207 default:
204 208 break;
205 209 }
206 210 }
207 211
208 212 void rmapplugin::closeBridge()
209 213 {
210 214 switch(currentBridge)
211 215 {
212 216 case selectedBridgeIsGRESB :
213 217 this->UI->gresbBridge->Close();
214 218 break;
215 219 case selectedBridgeIsStarDundee :
216 220 this->UI->starDundee->Close();
217 221 break;
218 222 default:
219 223 break;
220 224 }
221 225 }
222 226
223 227 void rmapplugin::RMAP_write_reply_setText(QString text)
224 228 {
225 229 this->UI->RMAP_write_reply->setText(text);
226 230 }
227 231
228 232 void rmapplugin::appendToLog(QString text)
229 233 {
230 234 APPENDTOLOG(text);
231 235 }
232 236
233 237 void rmapplugin::setValueTargetAddress(unsigned char newAddress)
234 238 {
235 239 this->UI->rmapTargetLogicalAddressSpinBox->setValue(newAddress);
236 240 }
237 241
238 242 void rmapplugin::setValueSourceAddress(unsigned char newAddress)
239 243 {
240 244 this->UI->rmapSourceLogicalAddressSpinBox->setValue(newAddress);
241 245 }
242 246
243 247 void rmapplugin::receivePacketFromBridge(TMPacketToRead *packet)
244 248 {
245 249 preProcessPacket(packet);
246 250
247 251 // Send the packet to the TM echo bridge for processing
248 252 this->UI->tmEchoBridge->sendTMPacketLESIA(packet);
249 253
250 254 this->generalCCSDSPacketStore.append(packet);
255 if (this->generalCCSDSPacketStore.size() > 1000)
256 {
257 this->generalCCSDSPacketStore.erase(generalCCSDSPacketStore.begin(),
258 generalCCSDSPacketStore.begin() + 500);
259 }
251 260 this->UI->nbPacketInStore->setText("nb packets in store: " + QString::number(generalCCSDSPacketStore.size()));
252 261 processPacketStore();
253 262 }
254 263
255 264 void rmapplugin::preProcessPacket(TMPacketToRead *packet)
256 265 {
257 266 unsigned char pid = 0;
258 267 unsigned char cat = 0;
259 268 unsigned char typ = 0;
260 269 unsigned char sub = 0;
261 270 unsigned int sid = 0;
262 271 unsigned int length = 0;
263 272 unsigned int coarse_t = 0;
264 273 unsigned int fine_t = 0;
265 274
266 275 //*********************************
267 276 // get the parameters of the packet
268 277 pid = this->UI->tmStatistics->getPID( packet );
269 278 cat = this->UI->tmStatistics->getCAT( packet );
270 279 typ = this->UI->tmStatistics->getTYPE( packet );
271 280 sub = this->UI->tmStatistics->getSUBTYPE( packet );
272 281 length = this->UI->tmStatistics->getLENGTH( packet );
273 282 coarse_t = this->UI->tmStatistics->getCoarseTime( packet );
274 283 fine_t = this->UI->tmStatistics->getFineTime( packet );
275 284 sid = this->UI->tmStatistics->getSID( packet, pid, cat, typ, sub );
276 285
277 286 emit updateStatistics(pid, cat, typ, sub, sid, length, coarse_t, fine_t);
278 287
288 //**********************************************
289 // if the packet is a parameter dump, display it
290 if ( (typ == TM_TYPE_PARAMETER_DUMP) & (sub == TM_SUBTYPE_PARAMETER_DUMP) & (sid == SID_PARAMETER_DUMP) )
291 {
292 this->UI->lfrActions->parameterDump->updateParameterDump(packet);
293 }
279 294
280 295 //****************************************
281 296 // if the packet is a waveform, display it
282 297 /*if ( (typ == 21) & (sub == 3) )
283 298 {
284 299 sid = packet->Value[20]; // SID
285 300 switch (sid){
286 301 case SID_NORMAL_SWF_F0:
287 302 buildWFAndDisplay(packet, &wfPacketNormal[0], 0);
288 303 break;
289 304 case SID_NORMAL_SWF_F1:
290 305 buildWFAndDisplay(packet, &wfPacketNormal[1], 1);
291 306 break;
292 307 case SID_NORMAL_SWF_F2:
293 308 buildWFAndDisplay(packet, &wfPacketNormal[2], 2);
294 309 break;
295 310 case SID_NORMAL_CWF_F3:
296 311 buildWFAndDisplay(packet, &wfPacketNormal[3], 3);
297 312 break;
298 313 }
299 314 }*/
300 315 }
301 316
302 317 void rmapplugin::nbPacketHasChanged(int nb)
303 318 {
304 319 this->UI->nbPacketInStore->setText("nb packets in store: " + QString::number(nb));
305 320 }
306 321
307 322 void rmapplugin::buildWFAndDisplay(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page)
308 323 {
309 324 unsigned int i = 0;
310 325 unsigned int j = 0;
311 326 unsigned char *data;
312 327 unsigned char pkt_nr = 0;
313 328 unsigned int blk_nr = 0;
314 329
315 330 pkt_nr = packet->Value[23]; // PKT_NR
316 331 blk_nr = packet->Value[24] * 256 + packet->Value[25];
317 332 data = &packet->Value[26]; // start of the first data block;
318 333 j = (pkt_nr-1) * 340;
319 334 for ( i=0; i<blk_nr; i++ ){
320 335 wfPacket->wf_e1[j + i] = (short) ( (data[ (i * BLK_SIZE) ] << 8) + (data[ (i*BLK_SIZE) + 1]) );
321 336 wfPacket->wf_v[j + i] = (short) ( (data[ (i * BLK_SIZE) + 2] << 8) + (data[ (i*BLK_SIZE) + 3]) );
322 337 wfPacket->wf_b1[j + i] = (short) ( (data[ (i * BLK_SIZE) + 4] << 8) + (data[ (i*BLK_SIZE) + 5]) );
323 338 wfPacket->wf_e2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 6] << 8) + (data[ (i*BLK_SIZE) + 7]) );
324 339 wfPacket->wf_b3[j + i] = (short) ( (data[ (i * BLK_SIZE) + 8] << 8) + (data[ (i*BLK_SIZE) + 9]) );
325 340 wfPacket->wf_b2[j + i] = (short) ( (data[ (i * BLK_SIZE) + 10] << 8) + (data[ (i*BLK_SIZE) + 11]) );
326 341 }
327 342 if (pkt_nr == 7)
328 343 {
329 344 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_v, num_page, 0);
330 345 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e1, num_page, 1);
331 346 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_e2, num_page, 2);
332 347 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b1, num_page, 3);
333 348 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b2, num_page, 4);
334 349 this->UI->wfDisplay->displayOnPlot(wfPacket->wf_b3, num_page, 5);
335 350 }
336 351 }
337 352
338 353 /////////////////////
339 354 // INTERNAL FUNCTIONS
340 355
341 356 void rmapplugin::processCCSDSPacket(unsigned char *ccsdsPacket, unsigned int size) // SLOT
342 357 {
343 358 QString message;
344 359 unsigned int fine_time_value = 0;
345 360 fine_time_value = ((unsigned int) ccsdsPacket[7]<<24)
346 361 + ((unsigned int) ccsdsPacket[6]<<16)
347 362 + ((unsigned int) ccsdsPacket[5]<<8)
348 363 + ((unsigned int) ccsdsPacket[4]);
349 364 message.append(QTime::currentTime().toString() +":" + QString::number(QTime::currentTime().msec()) + ": ");
350 365 message.append("size "
351 366 + QString::number(size)
352 367 +" *** header "
353 368 + QString::number(ccsdsPacket[0], 16)
354 369 + " "
355 370 + QString::number(ccsdsPacket[1], 16)
356 371 + " "
357 372 + QString::number(ccsdsPacket[2], 16)
358 373 + " "
359 374 + QString::number(ccsdsPacket[3], 16)
360 375 + " *** coarse time "
361 376 + QString::number(fine_time_value));
362 377 //+ QString::number(ccsdsPacket[4], 16)
363 378 //+" "
364 379 //+ QString::number(ccsdsPacket[5], 16)
365 380 //+" "
366 381 //+ QString::number(ccsdsPacket[6], 16)
367 382 //+" "
368 383 //+ QString::number(ccsdsPacket[7], 16));
369 384 displayOnConsole(message);
370 385 //((rmappluginPythonWrapper*)this->pyObject)->storeCCSDSPacket(ccsdsPacket, size);
371 386 emit ccsdsPacketIsProcessed();
372 387 }
373 388
374 389 void rmapplugin::processPacketStore()
375 390 {
376 391 ((rmappluginPythonWrapper*)this->pyObject)->processPacketStore();
377 392 }
378 393
379 394 int rmapplugin::fetchPacket()
380 395 {
381 396 int ret = 0;
382 397
383 398 switch(currentBridge)
384 399 {
385 400 case selectedBridgeIsGRESB :
386 401 break;
387 402 case selectedBridgeIsStarDundee :
388 403 ret = this->UI->starDundee->receiveSPWPacketLoop();
389 404 break;
390 405 default:
391 406 break;
392 407 }
393 408
394 409 return ret;
395 410 }
411
@@ -1,103 +1,100
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the LPPMON Software
3 3 -- Copyright (C) 2011, Laboratory of Plasmas Physic - CNRS
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------*/
19 19 /*-- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@lpp.polytechnique.fr
21 21 ----------------------------------------------------------------------------*/
22 22 #ifndef DRIVER1_H
23 23 #define DRIVER1_H
24 24 #include <rmappluginui.h>
25 25 #include <rmapoperations.h>
26 26 #include <QMenuBar>
27 27 #include <QMenu>
28 28 #include <QAction>
29 29 #include <QMainWindow>
30 30 #include <QTcpSocket>
31 31 #include <QTime>
32 32 #include <ccsds.h>
33 33 #include <QSemaphore>
34 34 #include <wfpacket.h>
35 35
36 36 #include <lppmonplugin.h>
37 37
38 38 #include "tmpackettoread.h"
39 39
40 40 #define APPENDTOLOG(message) this->UI->appendToLogFile(QTime::currentTime().toString() +":" + QString::number(QTime::currentTime().msec()) + ": " + message)
41 41
42 42 #define READ_WRITE_MAX_COUNTS 4096 // in words
43 43 #define RMAP_MAX_DATA_LENGTH 4*READ_WRITE_MAX_COUNTS // in bytes, shall be lower than the limit size of SPW packet of the GRESB bridge
44 44 #define RMAP_READ_REPLY_HEADER_LENGTH 12 // in bytes => ECSS
45 45 #define RMAP_READ_COMMAND_HEADER_LENGTH 16 // in bytes => ECSS
46 46 #define RMAP_DATA_CRC_LENGTH 1 // in bytes => ECSS
47 47 #define CCSDS_MAX_PACKET_LENGTH 4412 // in bytes, specified in the LFR Software Requirements Specification
48 48
49 49 class rmapplugin : public lppmonplugin
50 50 {
51 51 Q_OBJECT
52 52 public:
53 53 explicit rmapplugin(QWidget *parent = 0);
54 54 ~rmapplugin();
55 55 QList<TMPacketToRead*> generalCCSDSPacketStore;
56 56 void preProcessPacket(TMPacketToRead *packet);
57 57 WFPacket wfPacketNormal[4];
58 58 void buildWFAndDisplay(TMPacketToRead *packet, WFPacket *wfPacket, unsigned char num_page);
59 59
60 60 public slots:
61 61 unsigned int Write(unsigned int *Value,unsigned int count,unsigned int address=0);
62 62 unsigned int Read(unsigned int *Value,unsigned int count,unsigned int address=0);
63 63 unsigned int WriteSPW(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
64 64 void setValueTargetAddress(unsigned char newAddress);
65 65 void setValueSourceAddress(unsigned char newAddress);
66 66 void openBridge();
67 67 void closeBridge();
68 68 void processCCSDSPacket(unsigned char *ccsdsPacket, unsigned int size);
69 69 void processPacketStore();
70 70 void updatePacketStore(selectedBridge bridge);
71 71 void nbPacketHasChanged(int nb);
72 72 int fetchPacket();
73 73 void receivePacketFromBridge(TMPacketToRead* packet);
74 74 //
75 75 void displayOnConsole(QString message) {this->UI->console->append(message);}
76 76 //
77 77 void RMAP_write_reply_setText(QString text);
78 78 void appendToLog(QString text);
79 79 //
80 80 void activatePlugin(bool flag) {emit activateSig(flag);}
81 81 void bridgeHasChanged(selectedBridge bridge) {currentBridge = bridge;}
82 82
83 83 signals:
84 84 void ccsdsPacketIsProcessed();
85 85 void updateStatistics(unsigned char pid, unsigned char cat,
86 86 unsigned char typ, unsigned char sub,
87 87 unsigned int sid, unsigned int length,
88 88 unsigned int coarse_t, unsigned int fine_t);
89 89
90 90 private:
91 91 selectedBridge currentBridge;
92 92 rmapPluginUI* UI;
93 QTcpSocket* GRESBStatusQuery_SOCKET;
94 QTcpSocket* RMAPSend_SOCKET;
95 QTcpSocket* RMAPReceive_SOCKET;
96 93 ccsds* ccsds_command;
97 94 unsigned int rmapPacketSize;
98 95 unsigned int time_COARSE;
99 96 unsigned int time_FINE;
100 97 char timeCode;
101 98 };
102 99
103 100 #endif // DRIVER1_H
@@ -1,84 +1,89
1 1 #
2 2 # Project created by QtCreator 2011-09-20T08:15:30
3 3 #
4 4 #-------------------------------------------------
5 5
6 6 #include(/etc/lppmon/lppmonplugin.prf)
7 7 CONFIG += lppmonplugin
8 8 TARGET = rmapplugin
9 9
10 10 DEFINES += PLUGIN=rmapplugin
11 11 DEFINES += PLUGINHEADER="\"\\\"rmapplugin.h"\\\"\"
12 12 DEFINES += driver_Name="\"\\\"RMAPPlugin"\\\"\"
13 13 DEFINES += driver_Author="\"\\\"Paul Leroy paul.leroy@lpp.polytechnique.fr"\\\"\"
14 14 DEFINES += driver_Version="\"\\\"1.1.2"\\\"\"
15 15 DEFINES += driver_Description="\"\\\"AHB bus controler, works with Gaisler's AHB plugn' play bus."\\\"\"
16 16 DEFINES += driver_can_be_root=1
17 17 DEFINES += driver_can_be_child=0
18 18 DEFINES += driver_VID=0
19 19 DEFINES += driver_PID=0
20 20
21 21 QT += network
22 22
23 23 LIBS += ../spw_usb_driver_v2.63/lib/x86_64/libSpaceWireUSBAPI.so \
24 24 ../spw_usb_driver_v2.63/lib/x86_64/libConfigLibraryUSB.so
25 25
26 26
27 27 INCLUDEPATH += \
28 28 $${PWD} \
29 29 ../common_PLE \
30 30 ../../DEV_PLE/header \
31 31 ../spw_usb_driver_v2.63/inc \
32 32 $${QT_INSTALL_HEADER} \
33 33 $$[QT_INSTALL_HEADERS]/lppmon/common \
34 $$[QT_INSTALL_HEADERS]/lppmon/wfdisplay
34 $$[QT_INSTALL_HEADERS]/lppmon/wfdisplay \
35 $$[QT_INSTALL_HEADERS]/lppmon/parameterdump
35 36
36 LIBS += -llppmoncommon -lwfdisplay -lqwt5-qt4
37 LIBS += -llppmoncommon -lwfdisplay -lqwt5-qt4 -lparameterdump
37 38
38 39
39 40 HEADERS += \
40 41 ../../DEV_PLE/header/ccsds_types.h \
41 42 rmappluginui.h \
42 43 rmapplugin.h \
43 44 rmapoperations.h \
44 45 ccsds.h \
45 46 ../common_PLE/qipdialogbox.h \
46 47 ../common_PLE/gresbstatusenquiry.h \
47 48 rmappluginpythonwrapper.h \
48 49 stardundee.h \
49 50 ../spw_usb_driver_v2.61/inc/spw_usb_api.h \
50 51 ../spw_usb_driver_v2.61/inc/spw_config_library.h \
51 52 gresb.h \
52 53 tcpackettosend.h \
53 54 tmpackettoread.h \
54 55 tmstatistics.h \
55 56 wfpacket.h \
56 57 params.h \
57 tmechobridge.h
58 tmechobridge.h \
59 entermode.h \
60 lfractions.h
58 61
59 62
60 63 SOURCES += \
61 64 rmapplugin.cpp \
62 65 rmappluginui.cpp \
63 66 rmapoperations.cpp \
64 67 ccsds.cpp \
65 68 ../common_PLE/qipdialogbox.cpp \
66 69 ../common_PLE/gresbstatusenquiry.cpp \
67 70 rmappluginpythonwrapper.cpp \
68 71 stardundee.cpp \
69 72 gresb.cpp \
70 73 tcpackettosend.cpp \
71 74 tmpackettoread.cpp \
72 75 tmstatistics.cpp \
73 76 wfpacket.cpp \
74 tmechobridge.cpp
77 tmechobridge.cpp \
78 entermode.cpp \
79 lfractions.cpp
75 80
76 81
77 82
78 83
79 84
80 85
81 86
82 87
83 88
84 89
@@ -1,58 +1,59
1 1 #ifndef RMAPPLUGINPYTHONWRAPPER_H
2 2 #define RMAPPLUGINPYTHONWRAPPER_H
3 3
4 4 #include <QObject>
5 5 #include <genericPySysdriver.h>
6 6 #include <QList>
7 7 #include <QVariant>
8 #include <QTimer>
9
8 10 #include "rmapoperations.h"
9 11 #include "ccsds.h"
10 #include <tcpackettosend.h>
11 #include <tmpackettoread.h>
12 #include <QTimer>
12 #include "tcpackettosend.h"
13 #include "tmpackettoread.h"
13 14
14 15 class rmappluginPythonWrapper : public genericPySysdriver
15 16 {
16 17 Q_OBJECT
17 18 public:
18 19 explicit rmappluginPythonWrapper(QObject *parent = 0);
19 20
20 21 QList<TMPacketToRead*> *ccsdsPacketStore;
21 22 void processPacketStore();
22 23 unsigned int storeCCSDSPacket(unsigned char *ccsdsPacket, unsigned int size);
23 24
24 25 QList<TCPacketToSend*> TCPacketStore;
25 26 QTimer *timer;
26 27
27 28 signals:
28 29 void ccsdsPacketIsAvailable(unsigned int size);
29 30 void wakeUpCallingThread();
30 31 unsigned int WriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
31 32 void updateTargetAddress(unsigned char newAddress);
32 33 void updateSourceAddress(unsigned char newAddress);
33 34 void activateTCLoopSig();
34 35 void processPacketStoreNowSig();
35 36 void sendMessage(QString message);
36 37 int fetchPacketSig();
37 38 void nbPacketHasChanged(int nb);
38 39
39 40 public slots:
40 41 QList<QVariant> ReadSPW(unsigned int size=0);
41 42 int fetchPacket() {return emit fetchPacketSig();}
42 43 void WriteSPW(QList<int> dataList);
43 44 void WriteSPWDelay(QList<int> dataList, unsigned int delay=0);
44 45 void processPacketStoreLater(unsigned int delay);
45 46 void sendProcessPacketStoreNowSig(){emit processPacketStoreNowSig();}
46 47 void sendTCLoop();
47 48 void sendTC();
48 49 void reEmitWriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication)
49 50 {emit WriteSPWSig(Value, count, targetLogicalAddress, userApplication);}
50 51
51 52 void setTargetAddressValue(unsigned int address);
52 53 void setSourceAddressValue(unsigned int address);
53 54 void ProcessPendingEvents();
54 55 void BlockAllSignals();
55 56
56 57 };
57 58
58 59 #endif // RMAPPLUGINPYTHONWRAPPER_H
@@ -1,296 +1,298
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the LPPMON Software
3 3 -- Copyright (C) 2011, Laboratory of Plasmas Physic - CNRS
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------*/
19 19 /*-- Author : Alexis Jeandet
20 20 -- Mail : alexis.jeandet@lpp.polytechnique.fr
21 21 ----------------------------------------------------------------------------*/
22 22 #include "rmapplugin.h"
23 23
24 24 rmapPluginUI::rmapPluginUI(QWidget *parent) :
25 25 QWidget(parent)
26 26 {
27 27 spwTabWidget = new QTabWidget;
28 28 //
29 29 QWidget* spwTabWidgetPage0 = new QWidget;
30 30 QWidget* spwTabWidgetPage2 = new QWidget;
31 31 QWidget* spwTabWidgetPage3 = new QWidget;
32 32 QWidget* spwTabWidgetPage4 = new QWidget;
33 33 QWidget* spwTabWidgetPage5 = new QWidget;
34 34 QWidget* spwTabWidgetPage6 = new QWidget;
35 35 //
36 36 bridgeWidget = new QWidget;
37 37 mainLayout = new QVBoxLayout;
38 38 ccsdsLayout = new QVBoxLayout;
39 39 consoleLayout = new QVBoxLayout;
40 40 selectionLayout = new QVBoxLayout;
41 41 connectionLayout = new QGridLayout;
42 42 bridgeSelection_LAYOUT = new QGridLayout;
43 43 generalParameters_LAYOUT = new QGridLayout;
44 44
45 45 gresb_GROUPBOX = new QGroupBox(tr("GRESB bridge parameters"));
46 46 stardundee_GROUPBOX = new QGroupBox(tr("Star Dundee brick parameters"));
47 47 selection_GROUPBOX = new QGroupBox(tr("Bridge selection"));
48 48 generalParameters_GROUPBOX = new QGroupBox(tr("General parameters"));
49 49
50 50 //*** QLABEL ***//
51 51 gresbBridgeIPLabel = new QLabel(tr("Bridge IP: "));
52 52 gresbVirtualLinkLabel = new QLabel(tr("Virtual Link: "));
53 53 spwLinkLabel = new QLabel(tr("SPW Link: "));
54 54 rmapSourceLogicalAddressLabel = new QLabel(tr("RMAP Source Logical Address: "));
55 55 rmapTargetLogicalAddressLabel = new QLabel(tr("RMAP Target Logical Address: "));
56 56 logFileName = new QLabel;
57 57 gresbStatusQueryLabel = new QLabel(tr("Status query socket (port 3010): waiting for connection"));
58 58 gresbStatusQueryDialogLabel = new QLabel(tr("sockets opened but SpaceWire link not running"));
59 59 nbPacketInStore = new QLabel(tr("nb packets in store: -"));
60 60
61 61 //*** QPUSHBUTTON ***//
62 62 rmapOpenCommunicationButton = new QPushButton(tr("Open selected bridge"));
63 63 rmapCloseCommunicationButton = new QPushButton(tr("Close selected bridge"));
64 64 rmapOpenCommunicationButton->setEnabled(false);
65 65 rmapCloseCommunicationButton->setEnabled(false);
66 66 logFileChooseButton = new QPushButton(tr("Choose file"));
67 67 gresbStatusQueryRetryButton = new QPushButton(tr("Retry"));
68 68 gresbStatusQueryAbortButton = new QPushButton(tr("Abort"));
69 69 clearConsoleButton = new QPushButton(tr("Clear"));
70 70
71 71 selectGRESB_BUTTON = new QRadioButton(tr("GRESB"));
72 72 selectStarDundee_BUTTON = new QRadioButton(tr("Star Dundee"));
73 73
74 74 //*** SPINBOX ***//
75 75 gresbVirtualLinkSpinBox = new QSpinBox;
76 76 rmapSourceLogicalAddressSpinBox = new QSpinBox;
77 77 rmapTargetLogicalAddressSpinBox = new QSpinBox;
78 78 spwLinkSpinBox = new QSpinBox;;
79 79 CCSDSTargetLogicalAddressSpinBox = new QSpinBox;
80 80 gresbVirtualLinkSpinBox->setRange(0, 4);
81 81 gresbVirtualLinkSpinBox->setValue(1);
82 82 rmapSourceLogicalAddressSpinBox->setRange(0, 255);
83 83 rmapTargetLogicalAddressSpinBox->setRange(0, 255);
84 84 spwLinkSpinBox->setRange(0, 2);
85 85 spwLinkSpinBox->setValue(0);
86 86
87 87 //*** MISC **//
88 88 starDundee = new StarDundee;
89 89 gresbBridge = new gresb;
90 90 tmEchoBridge = new TMEchoBridge();
91 91 console = new QTextEdit;
92 92 gresbStatusQueryDialog = new QDialog;
93 93 logEnableCheckBox = new QCheckBox(tr("Enable Logs"));
94 94 RMAP_write_verify = new QCheckBox(tr("data checked before write\nlimited to 4 bytes\nNOT IMPLEMENTED"));
95 95 RMAP_write_reply = new QCheckBox(tr("reply to the write command required\nlast reply status: unavailable"));
96 96 logFile = new QFile();
97 97 wfDisplay = new WFDisplay();
98 98 tmStatistics = new TMStatistics();
99 lfrActions = new LFRActions();
99 100
100 101 logFileEn = false;
101 102
102 103 connectionLayout->setRowStretch(7, 1);
103 104 connectionLayout->setColumnStretch(2, 1);
104 105
105 106 bridgeSelection_LAYOUT->addWidget(selectGRESB_BUTTON, 0, 0, 1, 1);
106 107 bridgeSelection_LAYOUT->addWidget(selectStarDundee_BUTTON, 0, 1, 1, 1);
107 108
108 109 bridgeSelection_LAYOUT->setRowStretch(1, 1);
109 110 bridgeSelection_LAYOUT->setColumnStretch(2, 1);
110 111
111 112 generalParameters_LAYOUT->addWidget(logEnableCheckBox, 0, 0, 1, 1);
112 113 generalParameters_LAYOUT->addWidget(logFileChooseButton, 0, 1, 1, 1);
113 114 generalParameters_LAYOUT->addWidget(rmapSourceLogicalAddressLabel, 1, 0, 0);
114 115 generalParameters_LAYOUT->addWidget(rmapSourceLogicalAddressSpinBox, 1, 1, 0);
115 116 generalParameters_LAYOUT->addWidget(rmapTargetLogicalAddressLabel, 2, 0, 0);
116 117 generalParameters_LAYOUT->addWidget(rmapTargetLogicalAddressSpinBox, 2, 1, 0);
117 118 generalParameters_LAYOUT->addWidget(rmapOpenCommunicationButton, 3, 0, 1, 1);
118 119 generalParameters_LAYOUT->addWidget(rmapCloseCommunicationButton, 3, 1, 1, 1);
119 120 generalParameters_LAYOUT->addWidget(RMAP_write_verify, 4, 0, 1, 2);
120 121 generalParameters_LAYOUT->addWidget(RMAP_write_reply, 5, 0, 1, 2);
121 122
122 123 generalParameters_LAYOUT->setRowStretch(6, 1);
123 124 generalParameters_LAYOUT->setColumnStretch(2, 1);
124 125
125 126 gresb_GROUPBOX->setLayout(gresbBridge->layout());
126 127 gresb_GROUPBOX->setVisible(false);
127 128 stardundee_GROUPBOX->setLayout(starDundee->layout());
128 129 stardundee_GROUPBOX->setVisible(false);
129 130 selection_GROUPBOX->setLayout(bridgeSelection_LAYOUT);
130 131 generalParameters_GROUPBOX->setLayout(generalParameters_LAYOUT);
131 132 selectionLayout->addWidget(selection_GROUPBOX);
132 133 selectionLayout->addWidget(generalParameters_GROUPBOX);
133 134 selectionLayout->addWidget(gresb_GROUPBOX);
134 135 selectionLayout->addWidget(stardundee_GROUPBOX);
135 136
136 137 //********
137 138 // CONSOLE
138 139 consoleLayout->addWidget(console);
139 140 consoleLayout->addWidget(clearConsoleButton);
140 141 consoleLayout->addWidget(nbPacketInStore);
141 142
142 143 connect(this->logFileChooseButton, SIGNAL(clicked()), this, SLOT(chooseLogFile()));
143 144 connect(this, SIGNAL(setLogFileName(QString)), this->logFileName, SLOT(setText(QString)));
144 145 connect(this->logEnableCheckBox, SIGNAL(stateChanged(int)), this, SLOT(logFileEnDisable(int)));
145 146
146 147 spwTabWidget->addTab(spwTabWidgetPage0, tr("connection"));
147 spwTabWidget->addTab(spwTabWidgetPage2, tr("status"));
148 //spwTabWidget->addTab(spwTabWidgetPage2, tr("status"));
148 149 spwTabWidget->addTab(spwTabWidgetPage3, tr("console"));
149 150 spwTabWidget->addTab(spwTabWidgetPage4, tr("TM statistics"));
151 spwTabWidget->addTab(lfrActions, tr("dashboard"));
150 152 //spwTabWidget->addTab(spwTabWidgetPage5, tr("waveforms"));
151 153 spwTabWidget->addTab(spwTabWidgetPage6, tr("TM Echo Bridge"));
152 154
153 155 spwTabWidgetPage0->setLayout(selectionLayout);
154 156 spwTabWidgetPage2->setLayout(this->gresbBridge->spwLinkStatusEnquiry->mainLayout);
155 157 spwTabWidgetPage3->setLayout(consoleLayout);
156 158 spwTabWidgetPage4->setLayout(tmStatistics->layout());
157 159 spwTabWidgetPage5->setLayout(wfDisplay->layout());
158 160 spwTabWidgetPage6->setLayout(tmEchoBridge->layout());
159 161
160 162 mainLayout->addWidget(spwTabWidget);
161 163 setLayout(mainLayout);
162 164
163 165 connect(this->clearConsoleButton, SIGNAL(clicked()), this->console, SLOT(clear()));
164 166
165 167 // briges
166 168 connect(this->selectGRESB_BUTTON, SIGNAL(clicked()), this, SLOT(selectionBetweenGresbAndStarDundee()));
167 169 connect(this->selectStarDundee_BUTTON, SIGNAL(clicked()), this, SLOT(selectionBetweenGresbAndStarDundee()));
168 170 connect(this->starDundee, SIGNAL(isOpen(bool)), this, SLOT(isOpen(bool)));
169 171 connect(this->gresbBridge, SIGNAL(isOpen(bool)), this, SLOT(isOpen(bool)));
170 172
171 173 connect(this->rmapSourceLogicalAddressSpinBox, SIGNAL(valueChanged(int)), this->gresbBridge, SLOT(sourceHasChanged(int)));
172 174 connect(this->rmapTargetLogicalAddressSpinBox, SIGNAL(valueChanged(int)), this->gresbBridge, SLOT(targetHasChanged(int)));
173 175 connect(this->rmapSourceLogicalAddressSpinBox, SIGNAL(valueChanged(int)), this->starDundee, SLOT(sourceHasChanged(int)));
174 176 connect(this->rmapTargetLogicalAddressSpinBox, SIGNAL(valueChanged(int)), this->starDundee, SLOT(targetHasChanged(int)));
175 177
176 178 // command code
177 179 connect(this->RMAP_write_reply, SIGNAL(clicked()), this, SLOT(getCommandCode()));
178 180 connect(this->RMAP_write_verify, SIGNAL(clicked()), this, SLOT(getCommandCode()));
179 181 connect(this, SIGNAL(commandCodeHasChanged(RMAP_command_codes)),
180 182 this->starDundee, SLOT(commandCodeHasChanged(RMAP_command_codes)));
181 183 connect(this, SIGNAL(commandCodeHasChanged(RMAP_command_codes)),
182 184 this->gresbBridge, SLOT(commandCodeHasChanged(RMAP_command_codes)));
183 185
184 186 getCommandCode(); // init the command code value
185 187 rmapSourceLogicalAddressSpinBox->setValue(DEFAULT_SOURCE);
186 188 rmapTargetLogicalAddressSpinBox->setValue(DEFAULT_TARGET);
187 189 }
188 190
189 191 rmapPluginUI::~rmapPluginUI()
190 192 {
191 193 //delete ui;
192 194 }
193 195
194 196 void rmapPluginUI::chooseLogFile()
195 197 {
196 198 if(this->logFile->isOpen())
197 199 this->logFile->close();
198 200 this->logFile->setFileName(QFileDialog::getSaveFileName(this,tr("Open Log file"),
199 201 QDir::homePath()
200 202 + "/"
201 203 + QDate::currentDate().toString()
202 204 + "_"
203 205 + QTime::currentTime().toString()
204 206 + "_rmapPluginUI.log",
205 207 tr("Log Files (*.txt *.log)")));
206 208 if(this->logFile->open(QIODevice::WriteOnly))
207 209 {
208 210 this->logFileStrm = new QTextStream(this->logFile);
209 211 emit this->setLogFileName(this->logFile->fileName());
210 212 }
211 213 }
212 214
213 215 void rmapPluginUI::logFileEnDisable(int state)
214 216 {
215 217 if(state==Qt::Checked)
216 218 {
217 219 this->logFileEn = true;
218 220 }
219 221 else if(state==Qt::Unchecked)
220 222 {
221 223 this->logFileEn = false;
222 224 }
223 225 }
224 226
225 227 bool rmapPluginUI::islogfileenable()
226 228 {
227 229 return this->logFileEn;
228 230 }
229 231
230 232 void rmapPluginUI::appendToLogFile(const QString & text)
231 233 {
232 234 if(this->logFileEn && this->logFile->isOpen())
233 235 {
234 236 *(this->logFileStrm) << text << endl;
235 237 }
236 238 }
237 239
238 240 void rmapPluginUI::closeEvent(QCloseEvent *event)
239 241 {
240 242 if(this->logFile->isOpen())
241 243 {
242 244 this->logFileStrm->flush();
243 245 this->logFile->waitForBytesWritten(3000);
244 246 this->logFile->close();
245 247 }
246 248 event->accept();
247 249 }
248 250
249 251 RMAP_command_codes rmapPluginUI::getCommandCode()
250 252 {
251 253 RMAP_command_codes commandCode = invalid0;
252 254 if (RMAP_write_verify->isChecked() and RMAP_write_reply->isChecked()) commandCode = writeSingle_ver_rep;
253 255 if (RMAP_write_verify->isChecked() and !RMAP_write_reply->isChecked()) commandCode = writeSingle_ver_noRep;
254 256 if (!RMAP_write_verify->isChecked() and RMAP_write_reply->isChecked()) commandCode = writeSingle_noVer_Rep;
255 257 if (!RMAP_write_verify->isChecked() and !RMAP_write_reply->isChecked()) commandCode = writeSingle_noVer_noRep;
256 258 emit commandCodeHasChanged(commandCode);
257 259 return commandCode;
258 260 }
259 261
260 262 // SLOT
261 263
262 264 void rmapPluginUI::selectionBetweenGresbAndStarDundee() //SLOT
263 265 {
264 266 if (selectGRESB_BUTTON->isChecked())
265 267 {
266 268 gresb_GROUPBOX->setVisible(true);
267 269 stardundee_GROUPBOX->setVisible(false);
268 270 rmapOpenCommunicationButton->setEnabled(true);
269 271 emit bridgeHasChanged(selectedBridgeIsGRESB);
270 272 }
271 273 if (selectStarDundee_BUTTON->isChecked())
272 274 {
273 275 stardundee_GROUPBOX->setVisible(true);
274 276 gresb_GROUPBOX->setVisible(false);
275 277 rmapOpenCommunicationButton->setEnabled(true);
276 278 emit bridgeHasChanged(selectedBridgeIsStarDundee);
277 279 }
278 280 }
279 281
280 282 void rmapPluginUI::isOpen(bool flag)
281 283 {
282 284 if (flag == true)
283 285 {
284 286 selection_GROUPBOX->setEnabled(false);
285 287 this->rmapOpenCommunicationButton->setEnabled(false);
286 288 this->rmapCloseCommunicationButton->setEnabled(true);
287 289 }
288 290 if (flag == false)
289 291 {
290 292 selection_GROUPBOX->setEnabled(true);
291 293 this->rmapOpenCommunicationButton->setEnabled(true);
292 294 this->rmapCloseCommunicationButton->setEnabled(false);
293 295 }
294 296 }
295 297
296 298
@@ -1,166 +1,169
1 1 /*------------------------------------------------------------------------------
2 2 -- This file is a part of the LPPMON Software
3 3 -- Copyright (C) 20011, Laboratory of Plasma Physics - CNRS
4 4 --
5 5 -- This program is free software; you can redistribute it and/or modify
6 6 -- it under the terms of the GNU General Public License as published by
7 7 -- the Free Software Foundation; either version 3 of the License, or
8 8 -- (at your option) any later version.
9 9 --
10 10 -- This program is distributed in the hope that it will be useful,
11 11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 13 -- GNU General Public License for more details.
14 14 --
15 15 -- You should have received a copy of the GNU General Public License
16 16 -- along with this program; if not, write to the Free Software
17 17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 18 -------------------------------------------------------------------------------*/
19 19 /*-- Author : Paul Leroy
20 20 -- Mail : paul.leroy@lpp.polytechnique.fr
21 21 ----------------------------------------------------------------------------*/
22 22 #ifndef RMAPPLUGINUI_H
23 23 #define RMAPPLUGINUI_H
24 24
25 25 #include <QWidget>
26 26 #include <QPushButton>
27 27 #include <QLabel>
28 28 #include <QSlider>
29 29 #include <QSpinBox>
30 30 #include <QGridLayout>
31 31 #include <QCheckBox>
32 32 #include <QFile>
33 33 #include <QTextStream>
34 34 #include <QFileDialog>
35 35 #include <QDir>
36 36 #include <QDialog>
37 37 #include <QCloseEvent>
38 38 #include <QTabWidget>
39 39 #include <QTextEdit>
40 40 #include <QRadioButton>
41 41 #include <QGroupBox>
42 42
43 43 #include <rmapoperations.h>
44 44 #include <gresbstatusenquiry.h>
45 45 #include <stardundee.h>
46 46 #include <gresb.h>
47 47 #include <wfdisplay.h>
48 #include <parameterdump.h>
48 49
49 50 #include "qipdialogbox.h"
50 51 #include "tmstatistics.h"
51 52 #include "tmechobridge.h"
53 #include "entermode.h"
54 #include "lfractions.h"
52 55
53 56 enum selectedBridge{
54 57 selectedBridgeIsUnknown,
55 58 selectedBridgeIsGRESB,
56 59 selectedBridgeIsStarDundee
57 60 };
58 61
59 62 class rmapPluginUI : public QWidget
60 63 {
61 64 Q_OBJECT
62 65
63 66 public:
64 67 explicit rmapPluginUI(QWidget *parent = 0);
65 68 ~rmapPluginUI();
66 69
67 70 QPushButton* rmapOpenCommunicationButton;
68 71 QPushButton* rmapCloseCommunicationButton;
69 72 QPushButton* logFileChooseButton;
70 73 QPushButton* gresbStatusQueryRetryButton;
71 74 QPushButton* gresbStatusQueryAbortButton;
72 75 QPushButton* sendCCSDSCommandButton;
73 76 QPushButton* send_TC_LFR_UPDATE_TIME_Button;
74 77 QPushButton* reset_TC_LFR_UPDATE_TIME_Button;
75 78 QPushButton* clearConsoleButton;
76 79
77 80 QRadioButton* selectGRESB_BUTTON;
78 81 QRadioButton* selectStarDundee_BUTTON;
79 82
80 83 QGroupBox *selection_GROUPBOX;
81 84
82 85 QSpinBox* gresbVirtualLinkSpinBox;
83 86 QSpinBox* spwLinkSpinBox;
84 87 QSpinBox* rmapSourceLogicalAddressSpinBox;
85 88 QSpinBox* rmapTargetLogicalAddressSpinBox;
86 89 QSpinBox* CCSDSTargetLogicalAddressSpinBox;
87 90
88 91 QCheckBox *logEnableCheckBox;
89 92 QCheckBox *RMAP_write_verify;
90 93 QCheckBox *RMAP_write_reply;
91 94
92 95 QLabel* rmapSendStateLabel;
93 96 QLabel* rmapReceiveStateLabel;
94 97 QLabel* gresbStatusQueryLabel;
95 98 QLabel* gresbStatusQueryDialogLabel;
96 99 QLabel* sendCCSDSCommandLabel;
97 100 QLabel* nbPacketInStore;
98 101
99 102 QDialog* gresbStatusQueryDialog;
100 103
101 104 QTextEdit* console;
102 105
103 106 WFDisplay* wfDisplay;
104
105 107 TMStatistics* tmStatistics;
108 LFRActions* lfrActions;
106 109
107 110 // SPACEWIRE BRIDGES
108 111 StarDundee *starDundee;
109 112 gresb *gresbBridge;
110 113
111 114 // TM Echo Bridge
112 115 TMEchoBridge * tmEchoBridge;
113 116
114 117 bool islogfileenable();
115 118 void appendToLogFile(const QString & text);
116 119 void closeEvent(QCloseEvent *event);
117 120
118 121 public slots:
119 122 void chooseLogFile();
120 123 void logFileEnDisable(int state);
121 124 RMAP_command_codes getCommandCode();
122 125
123 126 private slots:
124 127 void selectionBetweenGresbAndStarDundee();
125 128 void isOpen(bool flag);
126 129
127 130 signals:
128 131 void connectPortsig(QString PortName,int baudrate);
129 132 void setLogFileName(QString FileName);
130 133 void commandCodeHasChanged(RMAP_command_codes commandCode);
131 134 void bridgeHasChanged(selectedBridge bridge);
132 135 void targetHasChanged(unsigned char target);
133 136 void sourceHasChanged(unsigned char source);
134 137
135 138 private:
136 139 QLabel *gresbBridgeIPLabel;
137 140 QLabel *gresbVirtualLinkLabel;
138 141 QLabel *spwLinkLabel;
139 142 QLabel *rmapSourceLogicalAddressLabel;
140 143 QLabel *rmapTargetLogicalAddressLabel;
141 144 QLabel *logFileName;
142 145
143 146 QGridLayout *bridgeSelection_LAYOUT;
144 147 QGridLayout *connectionLayout;
145 148 QGridLayout *gresbStatusQueryDialogLayout;
146 149 QGridLayout *generalParameters_LAYOUT;
147 150 QVBoxLayout *selectionLayout;
148 151 QVBoxLayout *mainLayout;
149 152 QVBoxLayout *ccsdsLayout;
150 153 QVBoxLayout *consoleLayout;
151 154
152 155 QTabWidget *spwTabWidget;
153 156
154 157 QWidget* bridgeWidget;
155 158
156 159 QGroupBox *gresb_GROUPBOX;
157 160 QGroupBox *stardundee_GROUPBOX;
158 161 QGroupBox *generalParameters_GROUPBOX;
159 162
160 163 QFile *logFile;
161 164 QTextStream *logFileStrm;
162 165 bool logFileEn;
163 166
164 167 };
165 168
166 169 #endif // RMAPPLUGINUI_H
@@ -1,659 +1,749
1 1 #include "tmstatistics.h"
2 2 #include <QtGui>
3 3 #include <QFontInfo>
4 #include <stdio.h>
4 5
5 6 TMStatistics::TMStatistics(QWidget *parent) :
6 7 QWidget(parent)
7 8 {
8 9 // Create Fonts
9 10 QFont font;
10 11 font = QFont(this->fontInfo().family(), STATISTICS_FONT_SIZE, QFont::Light);
11 12
12 13 label_UNKNOWN = new QLabel("UNKNOWN");
13 14 label_UNKNOWN_nb = new QLabel("-");
14 15
15 16 mainLayout = new QGridLayout();
16 17 layout_stat = new QGridLayout(); // TM stastictics
17 18 layout_NORM = new QGridLayout(); // TM_LFR_SCIENCE_NORMAL_
18 19 layout_BURST = new QGridLayout(); // TM_LFR_SCIENCE_BURST_
19 20 layout_SBM1 = new QGridLayout(); // TM_LFR_SCIENCE_SBM1_
20 21 layout_SBM2 = new QGridLayout(); // TM_LFR_SCIENCE_SBM2_
21 22 layout_last = new QGridLayout(); // last TM description
23 layout_record = new QVBoxLayout();
22 24
23 25 //***************
24 26 // TM_LFR_TC_EXE_
25 27 label_SUCC = new QLabel("SUCCESS");
26 28 label_INCO = new QLabel("INCONSISTENT");
27 29 label_NOTE = new QLabel("NOT_EXECUTABLE");
28 30 label_NOTI = new QLabel("NOT_IMPLEMENTED");
29 31 label_ERRO = new QLabel("ERROR");
30 32 label_CORR = new QLabel("CORRUPTED");
31 33 label_HK = new QLabel("TM_LFR_HK");
32 34 label_DUMP = new QLabel("TM_LFR_PARAMETER_DUMP");
33 35 //
34 36 label_SUCC_nb = new QLabel("-");
35 37 label_INCO_nb = new QLabel("-");
36 38 label_NOTE_nb = new QLabel("-");
37 39 label_NOTI_nb = new QLabel("-");
38 40 label_ERRO_nb = new QLabel("-");
39 41 label_CORR_nb = new QLabel("-");
40 42 label_HK_nb = new QLabel("-");
41 43 label_DUMP_nb = new QLabel("-");
42 44
43 45 //***********************
44 46 // TM_LFR_SCIENCE_NORMAL_
45 47 label_NORM_SWF_F0 = new QLabel("SWF_F0");
46 48 label_NORM_SWF_F1 = new QLabel("SWF_F1");
47 49 label_NORM_SWF_F2 = new QLabel("SWF_F2");
48 50 label_NORM_CWF_F3 = new QLabel("CWF_F3");
49 51 label_NORM_ASM_F0 = new QLabel("ASM_F0");
50 52 label_NORM_ASM_F1 = new QLabel("ASM_F1");
51 53 label_NORM_ASM_F2 = new QLabel("ASM_F2");
52 54 label_NORM_BP1_F0 = new QLabel("BP1_F0");
53 55 label_NORM_BP1_F1 = new QLabel("BP1_F1");
54 56 label_NORM_BP1_F2 = new QLabel("BP1_F2");
55 57 label_NORM_BP2_F0 = new QLabel("BP2_F0");
56 58 label_NORM_BP2_F1 = new QLabel("BP2_F1");
57 59 label_NORM_BP2_F2 = new QLabel("BP2_F2");
58 60 //
59 61 label_NORM_SWF_F0_nb = new QLabel("-");
60 62 label_NORM_SWF_F1_nb = new QLabel("-");
61 63 label_NORM_SWF_F2_nb = new QLabel("-");
62 64 label_NORM_CWF_F3_nb = new QLabel("-");
63 65 label_NORM_ASM_F0_nb = new QLabel("-");
64 66 label_NORM_ASM_F1_nb = new QLabel("-");
65 67 label_NORM_ASM_F2_nb = new QLabel("-");
66 68 label_NORM_BP1_F0_nb = new QLabel("-");
67 69 label_NORM_BP1_F1_nb = new QLabel("-");
68 70 label_NORM_BP1_F2_nb = new QLabel("-");
69 71 label_NORM_BP2_F0_nb = new QLabel("-");
70 72 label_NORM_BP2_F1_nb = new QLabel("-");
71 73 label_NORM_BP2_F2_nb = new QLabel("-");
72 74
73 75 //**********************
74 76 // TM_LFR_SCIENCE_BURST_
75 77 label_BURST_CWF_F2 = new QLabel("CWF_F2");
76 78 label_BURST_BP1_F0 = new QLabel("BP1_F0");
77 79 label_BURST_BP2_F0 = new QLabel("BP2_F0");
78 80 label_BURST_BP1_F1 = new QLabel("BP1_F1");
79 81 label_BURST_BP2_F1 = new QLabel("BP2_F1");
80 82 //
81 83 label_BURST_CWF_F2_nb = new QLabel("-");
82 84 label_BURST_BP1_F0_nb = new QLabel("-");
83 85 label_BURST_BP2_F0_nb = new QLabel("-");
84 86 label_BURST_BP1_F1_nb = new QLabel("-");
85 87 label_BURST_BP2_F1_nb = new QLabel("-");
86 88
87 89 //*********************
88 90 // TM_LFR_SCIENCE_SBM1_
89 91 label_SBM1_CWF_F1 = new QLabel("CWF_F1");
90 92 label_SBM1_BP1_F0 = new QLabel("BP1_F0");
91 93 label_SBM1_BP2_F0 = new QLabel("BP2_F0");
92 94 //
93 95 label_SBM1_CWF_F1_nb = new QLabel("-");
94 96 label_SBM1_BP1_F0_nb = new QLabel("-");
95 97 label_SBM1_BP2_F0_nb = new QLabel("-");
96 98
97 99 //*********************
98 100 // TM_LFR_SCIENCE_SBM2_
99 101 label_SBM2_CWF_F2 = new QLabel("CWF_F2");
100 102 label_SBM2_BP1_F0 = new QLabel("BP1_F0");
101 103 label_SBM2_BP2_F0 = new QLabel("BP2_F0");
102 104 label_SBM2_BP1_F1 = new QLabel("BP1_F1");
103 105 label_SBM2_BP2_F1 = new QLabel("BP2_F1");
104 106 //
105 107 label_SBM2_CWF_F2_nb = new QLabel("-");
106 108 label_SBM2_BP1_F0_nb = new QLabel("-");
107 109 label_SBM2_BP2_F0_nb = new QLabel("-");
108 110 label_SBM2_BP1_F1_nb = new QLabel("-");
109 111 label_SBM2_BP2_F1_nb = new QLabel("-");
110 112
111 113 //********
112 114 // LAST TM
113 115 label_PID = new QLabel("PID");
114 116 label_CAT = new QLabel("CAT");
115 117 label_TYP = new QLabel("Type");
116 118 label_SUB = new QLabel("Subtype");
117 119 label_SID = new QLabel("SID");
118 120 label_SIZ = new QLabel("Length");
119 121 label_coarse_time = new QLabel("Coarse time: ");
120 122 label_fine_time = new QLabel("Fine time: ");
121 123 //
122 124 label_PID_is = new QLabel("-");
123 125 label_CAT_is = new QLabel("-");
124 126 label_TYP_is = new QLabel("-");
125 127 label_SUB_is = new QLabel("-");
126 128 label_SID_is = new QLabel("-");
127 129 label_SIZ_is = new QLabel("-");
128 130 label_coarse_time_val = new QLabel("-");
129 131 label_fine_time_val = new QLabel("-");
130 132
131 133 // QPushButton
132 134 button_reset_stat = new QPushButton("reset stat");
135 button_record = new QPushButton("REC");
136 button_chooseDir = new QPushButton("choose dir");
133 137
134 138 //**********
135 139 // QGroupBox
136 140 this->setStyleSheet("QGroupBox {border: 1px solid black; }");
137 141
138 142 groupbox_stat = new QGroupBox("TM_LFR_TC_EXE_");
139 143 groupbox_NORM = new QGroupBox("TM_LFR_SCIENCE_NORMAL_");
140 144 groupbox_BURST = new QGroupBox("TM_LFR_SCIENCE_BURST_");
141 145 groupbox_SBM1 = new QGroupBox("TM_LFR_SCIENCE_SBM1_");
142 146 groupbox_SBM2 = new QGroupBox("TM_LFR_SCIENCE_SBM2_");
143 147 groupbox_last = new QGroupBox("Last TM received");
148 groupbox_record = new QGroupBox("Packet recording");
144 149
145 150 groupbox_stat->setFont(font);
146 151 groupbox_NORM->setFont(font);
147 152 groupbox_BURST->setFont(font);
148 153 groupbox_SBM1->setFont(font);
149 154 groupbox_SBM2->setFont(font);
150 155 groupbox_last->setFont(font);
156 groupbox_record->setFont(font);
157
158 readSettings();
159 logFile = new QFile();
160 logFileEn = false;
151 161
152 162 initConstants();
153 163
154 164 buildMonitor_NORM();
155 165 buildMonitor_BURST();
156 166 buildMonitor_SBM1();
157 167 buildMonitor_SBM2();
158 168 buildMonitor();
159 169
160 170 connect(this->button_reset_stat, SIGNAL(clicked()), this, SLOT(resetStatistics()));
161
171 connect(this->button_record, SIGNAL(clicked()), this, SLOT(storePackets()));
172 connect(this->button_chooseDir, SIGNAL(clicked()), this, SLOT(chooseDir()));
162 173 }
163 174
164 175 void TMStatistics::initConstants()
165 176 {
166 177 UNKNOWN_nb = 0;
167 178
168 179 // TM_LFR_TC_EXE_
169 180 SUCC_nb = 0;
170 181 INCO_nb = 0;
171 182 NOTE_nb = 0;
172 183 NOTI_nb = 0;
173 184 ERRO_nb = 0;
174 185 CORR_nb = 0;
175 186 HK_nb = 0;
176 187 DUMP_nb = 0;
177 188
178 189 // TM_LFR_SCIENCE_NORMAL_
179 190 NORM_SWF_F0_nb = 0;
180 191 NORM_SWF_F1_nb = 0;
181 192 NORM_SWF_F2_nb = 0;
182 193 NORM_CWF_F3_nb = 0;
183 194 NORM_ASM_F0_nb = 0;
184 195 NORM_ASM_F1_nb = 0;
185 196 NORM_ASM_F2_nb = 0;
186 197 NORM_BP1_F0_nb = 0;
187 198 NORM_BP1_F1_nb = 0;
188 199 NORM_BP1_F2_nb = 0;
189 200 NORM_BP2_F0_nb = 0;
190 201 NORM_BP2_F1_nb = 0;
191 202 NORM_BP2_F2_nb = 0;
192 203
193 204 BURST_CWF_F2_nb = 0;
194 205 BURST_BP1_F0_nb = 0;
195 206 BURST_BP2_F0_nb = 0;
196 207 BURST_BP1_F1_nb = 0;
197 208 BURST_BP2_F1_nb = 0;
198 209 SBM1_CWF_F1_nb = 0;
199 210 SBM1_BP1_F0_nb = 0;
200 211 SBM1_BP2_F0_nb = 0;
201 212 SBM2_CWF_F2_nb = 0;
202 213 SBM2_BP1_F0_nb = 0;
203 214 SBM2_BP2_F0_nb = 0;
204 215 SBM2_BP1_F1_nb = 0;
205 216 SBM2_BP2_F1_nb = 0;
206 217 }
207 218
208 219 void TMStatistics::buildMonitor_NORM()
209 220 {
210 221 layout_NORM->addWidget(label_NORM_SWF_F0, 0, 0, 1, 1);
211 222 layout_NORM->addWidget(label_NORM_SWF_F1, 1, 0, 1, 1);
212 223 layout_NORM->addWidget(label_NORM_SWF_F2, 2, 0, 1, 1);
213 224 layout_NORM->addWidget(label_NORM_CWF_F3, 3, 0, 1, 1);
214 225 //
215 226 layout_NORM->addWidget(label_NORM_SWF_F0_nb, 0, 1, 1, 1);
216 227 layout_NORM->addWidget(label_NORM_SWF_F1_nb, 1, 1, 1, 1);
217 228 layout_NORM->addWidget(label_NORM_SWF_F2_nb, 2, 1, 1, 1);
218 229 layout_NORM->addWidget(label_NORM_CWF_F3_nb, 3, 1, 1, 1);
219 230 //
220 231 layout_NORM->addWidget(label_NORM_ASM_F0, 4, 0, 1, 1);
221 232 layout_NORM->addWidget(label_NORM_ASM_F1, 5, 0, 1, 1);
222 233 layout_NORM->addWidget(label_NORM_ASM_F2, 6, 0, 1, 1);
223 234 //
224 235 layout_NORM->addWidget(label_NORM_ASM_F0_nb, 4, 1, 1, 1);
225 236 layout_NORM->addWidget(label_NORM_ASM_F1_nb, 5, 1, 1, 1);
226 237 layout_NORM->addWidget(label_NORM_ASM_F2_nb, 6, 1, 1, 1);
227 238 //
228 239 layout_NORM->addWidget(label_NORM_BP1_F0, 0, 2, 1, 1);
229 240 layout_NORM->addWidget(label_NORM_BP1_F1, 1, 2, 1, 1);
230 241 layout_NORM->addWidget(label_NORM_BP1_F2, 2, 2, 1, 1);
231 242 layout_NORM->addWidget(label_NORM_BP2_F0, 3, 2, 1, 1);
232 243 layout_NORM->addWidget(label_NORM_BP2_F1, 4, 2, 1, 1);
233 244 layout_NORM->addWidget(label_NORM_BP2_F2, 5, 2, 1, 1);
234 245 //
235 246 layout_NORM->addWidget(label_NORM_BP1_F0_nb, 0, 3, 1, 1);
236 247 layout_NORM->addWidget(label_NORM_BP1_F1_nb, 1, 3, 1, 1);
237 248 layout_NORM->addWidget(label_NORM_BP1_F2_nb, 2, 3, 1, 1);
238 249 layout_NORM->addWidget(label_NORM_BP2_F0_nb, 3, 3, 1, 1);
239 250 layout_NORM->addWidget(label_NORM_BP2_F1_nb, 4, 3, 1, 1);
240 251 layout_NORM->addWidget(label_NORM_BP2_F2_nb, 5, 3, 1, 1);
241 252 }
242 253
243 254 void TMStatistics::buildMonitor_BURST()
244 255 {
245 256 layout_BURST->addWidget(label_BURST_CWF_F2, 0, 0, 1, 1);
246 257 layout_BURST->addWidget(label_BURST_BP1_F0, 1, 0, 1, 1);
247 258 layout_BURST->addWidget(label_BURST_BP2_F0, 2, 0, 1, 1);
248 259 layout_BURST->addWidget(label_BURST_BP1_F1, 3, 0, 1, 1);
249 260 layout_BURST->addWidget(label_BURST_BP2_F1, 4, 0, 1, 1);
250 261 //
251 262 layout_BURST->addWidget(label_BURST_CWF_F2_nb, 0, 1, 1, 1);
252 263 layout_BURST->addWidget(label_BURST_BP1_F0_nb, 1, 1, 1, 1);
253 264 layout_BURST->addWidget(label_BURST_BP2_F0_nb, 2, 1, 1, 1);
254 265 layout_BURST->addWidget(label_BURST_BP1_F1_nb, 3, 1, 1, 1);
255 266 layout_BURST->addWidget(label_BURST_BP2_F1_nb, 4, 1, 1, 1);
256 267 //
257 268 layout_BURST->setRowStretch(5, 1);
258 269 layout_BURST->setColumnStretch(2,1);
259 270 }
260 271
261 272 void TMStatistics::buildMonitor_SBM1()
262 273 {
263 274 layout_SBM1->addWidget(label_SBM1_CWF_F1, 0, 0, 1, 1);
264 275 layout_SBM1->addWidget(label_SBM1_BP1_F0, 1, 0, 1, 1);
265 276 layout_SBM1->addWidget(label_SBM1_BP2_F0, 2, 0, 1, 1);
266 277 //
267 278 layout_SBM1->addWidget(label_SBM1_CWF_F1_nb, 0, 1, 1, 1);
268 279 layout_SBM1->addWidget(label_SBM1_BP1_F0_nb, 1, 1, 1, 1);
269 280 layout_SBM1->addWidget(label_SBM1_BP2_F0_nb, 2, 1, 1, 1);
270 281 //
271 282 layout_SBM1->setRowStretch(3, 1);
272 283 layout_SBM1->setColumnStretch(2,1);
273 284 }
274 285
275 286 void TMStatistics::buildMonitor_SBM2()
276 287 {
277 288 layout_SBM2->addWidget(label_SBM2_CWF_F2, 0, 0, 1, 1);
278 289 layout_SBM2->addWidget(label_SBM2_BP1_F0, 1, 0, 1, 1);
279 290 layout_SBM2->addWidget(label_SBM2_BP2_F0, 2, 0, 1, 1);
280 291 layout_SBM2->addWidget(label_SBM2_BP1_F1, 3, 0, 1, 1);
281 292 layout_SBM2->addWidget(label_SBM2_BP2_F1, 4, 0, 1, 1);
282 293 //
283 294 layout_SBM2->addWidget(label_SBM2_CWF_F2_nb, 0, 1, 1, 1);
284 295 layout_SBM2->addWidget(label_SBM2_BP1_F0_nb, 1, 1, 1, 1);
285 296 layout_SBM2->addWidget(label_SBM2_BP2_F0_nb, 2, 1, 1, 1);
286 297 layout_SBM2->addWidget(label_SBM2_BP1_F1_nb, 3, 1, 1, 1);
287 298 layout_SBM2->addWidget(label_SBM2_BP2_F1_nb, 4, 1, 1, 1);
288 299 //
289 300 layout_SBM2->setRowStretch(5, 1);
290 301 layout_SBM2->setColumnStretch(2,1);
291 302 }
292 303
293 304 void TMStatistics::buildMonitor()
294 305 {
295 306 //***************
296 307 // TM_LFR_TC_EXE_
297 308 layout_stat->addWidget(label_SUCC, 0, 0, 1, 1);
298 309 layout_stat->addWidget(label_INCO, 1, 0, 1, 1);
299 310 layout_stat->addWidget(label_NOTE, 2, 0, 1, 1);
300 311 layout_stat->addWidget(label_NOTI, 3, 0, 1, 1);
301 312 layout_stat->addWidget(label_ERRO, 4, 0, 1, 1);
302 313 layout_stat->addWidget(label_CORR, 5, 0, 1, 1);
303 314 layout_stat->addWidget(label_HK, 6, 0, 1, 1);
304 315 layout_stat->addWidget(label_DUMP, 7, 0, 1, 1);
305 316 //
306 317 layout_stat->addWidget(label_SUCC_nb, 0, 1, 1, 1);
307 318 layout_stat->addWidget(label_INCO_nb, 1, 1, 1, 1);
308 319 layout_stat->addWidget(label_NOTE_nb, 2, 1, 1, 1);
309 320 layout_stat->addWidget(label_NOTI_nb, 3, 1, 1, 1);
310 321 layout_stat->addWidget(label_ERRO_nb, 4, 1, 1, 1);
311 322 layout_stat->addWidget(label_CORR_nb, 5, 1, 1, 1);
312 323 layout_stat->addWidget(label_HK_nb, 6, 1, 1, 1);
313 324 layout_stat->addWidget(label_DUMP_nb, 7, 1, 1, 1);
314 325
315 326 //********
316 327 // LAST TM
317 328 layout_last->addWidget(label_PID, 0, 0, 1, 1);
318 329 layout_last->addWidget(label_CAT, 0, 1, 1, 1);
319 330 layout_last->addWidget(label_TYP, 0, 2, 1, 1);
320 331 layout_last->addWidget(label_SUB, 0, 3, 1, 1);
321 332 layout_last->addWidget(label_SID, 0, 4, 1, 1);
322 333 layout_last->addWidget(label_SIZ, 0, 5, 1, 1);
323 334 //
324 335 layout_last->addWidget(label_PID_is, 1, 0, 1, 1);
325 336 layout_last->addWidget(label_CAT_is, 1, 1, 1, 1);
326 337 layout_last->addWidget(label_TYP_is, 1, 2, 1, 1);
327 338 layout_last->addWidget(label_SUB_is, 1, 3, 1, 1);
328 339 layout_last->addWidget(label_SID_is, 1, 4, 1, 1);
329 340 layout_last->addWidget(label_SIZ_is, 1, 5, 1, 1);
330 341 //
331 342 layout_last->addWidget(label_coarse_time, 2, 0, 1, 1);
332 343 layout_last->addWidget(label_coarse_time_val, 2, 1, 1, 1);
333 344 layout_last->addWidget(label_fine_time, 2, 2, 1, 1);
334 345 layout_last->addWidget(label_fine_time_val, 2, 3, 1, 1);
335 346 //
336 347 layout_last->addWidget(label_UNKNOWN, 3, 0, 1, 1);
337 348 layout_last->addWidget(label_UNKNOWN_nb, 3, 1, 1, 1);
338 349
350 layout_record->addWidget(button_record);
351 layout_record->addWidget(button_chooseDir);
352 layout_record->insertStretch(2, 1);
353
339 354 //***********
340 355 // groupboxes
341 356 groupbox_stat->setLayout(layout_stat);
342 357 groupbox_NORM->setLayout(layout_NORM);
343 358 groupbox_BURST->setLayout(layout_BURST);
344 359 groupbox_SBM1->setLayout(layout_SBM1);
345 360 groupbox_SBM2->setLayout(layout_SBM2);
346 361 groupbox_last->setLayout(layout_last);
362 groupbox_record->setLayout(layout_record);
347 363 //
348 364 mainLayout->addWidget(groupbox_stat, 0, 0, 1, 1);
349 365 mainLayout->addWidget(groupbox_NORM, 1, 0, 1, 1);
350 366 mainLayout->addWidget(groupbox_last, 2, 0, 1, 2);
351 367 mainLayout->addWidget(groupbox_SBM1, 0, 1, 1, 1);
352 368 mainLayout->addWidget(groupbox_SBM2, 0, 2, 1, 1);
353 369 mainLayout->addWidget(groupbox_BURST, 1, 1, 1, 1);
354 mainLayout->addWidget(button_reset_stat, 3, 0, 1, 2);
370 mainLayout->addWidget(groupbox_record, 1, 2, 1, 1);
371 mainLayout->addWidget(button_reset_stat, 3, 0, 1, 3);
355 372 mainLayout->setColumnStretch(3, 1);
356 373 mainLayout->setRowStretch(4, 1);
357 374 //
358 375 this->setLayout(mainLayout);
359 376 }
360 377
361 378 void TMStatistics::resetStatistics()
362 379 {
363 380 initConstants();
364 381 //
365 382 label_UNKNOWN_nb->setText("-");
366 383 label_SUCC_nb->setText("-");
367 384 label_INCO_nb->setText("-");
368 385 label_NOTE_nb->setText("-");
369 386 label_NOTI_nb->setText("-");
370 387 label_ERRO_nb->setText("-");
371 388 label_CORR_nb->setText("-");
372 389 label_HK_nb->setText("-");
373 390 label_DUMP_nb->setText("-");
374 391 //
375 392 label_NORM_SWF_F0_nb->setText("-");
376 393 label_NORM_SWF_F1_nb->setText("-");
377 394 label_NORM_SWF_F2_nb->setText("-");
378 395 label_NORM_CWF_F3_nb->setText("-");
379 396 label_NORM_ASM_F0_nb->setText("-");
380 397 //
381 398 label_BURST_CWF_F2_nb->setText("-");
382 399 //
383 400 label_SBM1_CWF_F1_nb->setText("-");
384 401 //
385 402 label_SBM2_CWF_F2_nb->setText("-");
386 403 //
387 404 label_PID_is->setText("-");
388 405 label_CAT_is->setText("-");
389 406 label_TYP_is->setText("-");
390 407 label_SUB_is->setText("-");
391 408 label_SID_is->setText("-");
392 409 label_SIZ_is->setText("-");
393 410 //
394 411 label_coarse_time_val->setText("-");
395 412 label_fine_time_val->setText("-");
396 413 }
397 414
398 415 void TMStatistics::updateStatistics(unsigned char pid, unsigned char cat,
399 416 unsigned char typ, unsigned char sub,
400 417 unsigned int sid, unsigned int length,
401 418 unsigned int coarse_t, unsigned int fine_t)
402 419 {
403 420 if (cat == 1)
404 421 {
405 422 if (typ == TM_TYPE_TC_EXE)
406 423 {
407 424 if (sub == TM_SUBTYPE_EXE_OK)
408 425 {
409 426 SUCC_nb = SUCC_nb + 1;
410 427 label_SUCC_nb->setText(QString::number(SUCC_nb));
411 428 }
412 429 else if (sub == TM_SUBTYPE_EXE_NOK)
413 430 {
414 431 if (sid == SID_EXE_INC)
415 432 {
416 433 INCO_nb = INCO_nb + 1;
417 434 label_INCO_nb->setText(QString::number(INCO_nb));
418 435 }
419 436 else if (sid == SID_NOT_EXE)
420 437 {
421 438 NOTE_nb = NOTE_nb + 1;
422 439 label_NOTE_nb->setText(QString::number(NOTE_nb));
423 440 }
424 441 else if (sid == SID_NOT_IMP)
425 442 {
426 443 NOTI_nb = NOTI_nb + 1;
427 444 label_NOTI_nb->setText(QString::number(NOTI_nb));
428 445 }
429 446 else if (sid == SID_EXE_ERR)
430 447 {
431 448 ERRO_nb = ERRO_nb + 1;
432 449 label_ERRO_nb->setText(QString::number(ERRO_nb));
433 450 }
434 451 else if (sid == SID_EXE_CORR)
435 452 {
436 453 CORR_nb = CORR_nb + 1;
437 454 label_CORR_nb->setText(QString::number(CORR_nb));
438 455 }
439 456 else incrementUnknown();
440 457 }
441 458 else incrementUnknown();
442 459 }
443 460 else
444 461 incrementUnknown();
445 462 }
446 463 else if (cat == 4)
447 464 {
448 465 if (typ == TM_TYPE_HK)
449 466 {
450 467 if (sub == TM_SUBTYPE_HK)
451 468 if (sid == SID_HK)
452 469 {
453 470 HK_nb = HK_nb + 1;
454 471 label_HK_nb->setText(QString::number(HK_nb));
455 472 }
456 473 else
457 474 {
458 475 incrementUnknown();
459 476 }
460 477 else
461 478 {
462 479 incrementUnknown();
463 480 }
464 481 }
465 482 else
466 483 {
467 484 incrementUnknown();
468 485 }
469 486 }
470 487 else if (cat == 9)
471 488 {
472 489 if (typ == TM_TYPE_PARAMETER_DUMP)
473 490 {
474 491 if (sub == TM_SUBTYPE_PARAMETER_DUMP)
475 492 if (sid == SID_PARAMETER_DUMP)
476 493 {
477 494 DUMP_nb = DUMP_nb + 1;
478 495 label_DUMP_nb->setText(QString::number(DUMP_nb));
479 496 }
480 497 else
481 498 {
482 499 incrementUnknown();
483 500 }
484 501 else
485 502 {
486 503 incrementUnknown();
487 504 }
488 505 }
489 506 else
490 507 {
491 508 incrementUnknown();
492 509 }
493 510 }
494 511 else if (cat == 12)
495 512 {
496 513 if (typ == 21)
497 514 {
498 515 if (sub == 3)
499 516 {
500 517 if (sid == SID_NORM_CWF_F3)
501 518 {
502 519 NORM_CWF_F3_nb = NORM_CWF_F3_nb + 1;
503 520 label_NORM_CWF_F3_nb->setText(QString::number(NORM_CWF_F3_nb));
504 521 }
505 522 else if (sid == SID_BURST_CWF_F2)
506 523 {
507 524 BURST_CWF_F2_nb = BURST_CWF_F2_nb + 1;
508 525 label_BURST_CWF_F2_nb->setText(QString::number(BURST_CWF_F2_nb));
509 526 }
510 527 else if (sid == SID_NORM_SWF_F0)
511 528 {
512 529 NORM_SWF_F0_nb = NORM_SWF_F0_nb + 1;
513 530 label_NORM_SWF_F0_nb->setText(QString::number(NORM_SWF_F0_nb));
514 531 }
515 532 else if (sid == SID_NORM_SWF_F1)
516 533 {
517 534 NORM_SWF_F1_nb = NORM_SWF_F1_nb + 1;
518 535 label_NORM_SWF_F1_nb->setText(QString::number(NORM_SWF_F1_nb));
519 536 }
520 537 else if (sid == SID_NORM_SWF_F2)
521 538 {
522 539 NORM_SWF_F2_nb = NORM_SWF_F2_nb + 1;
523 540 label_NORM_SWF_F2_nb->setText(QString::number(NORM_SWF_F2_nb));
524 541 }
525 542 else if (sid == SID_NORM_ASM_F0)
526 543 {
527 544 NORM_ASM_F0_nb = NORM_ASM_F0_nb + 1;
528 545 label_NORM_ASM_F0_nb->setText(QString::number(NORM_ASM_F0_nb));
529 546 }
530 547 else if (sid == SID_SBM1_CWF_F1)
531 548 {
532 549 SBM1_CWF_F1_nb = SBM1_CWF_F1_nb + 1;
533 550 label_SBM1_CWF_F1_nb->setText(QString::number(SBM1_CWF_F1_nb));
534 551 }
535 552 else if (sid == SID_SBM2_CWF_F2)
536 553 {
537 554 SBM2_CWF_F2_nb = SBM2_CWF_F2_nb + 1;
538 555 label_SBM2_CWF_F2_nb->setText(QString::number(SBM2_CWF_F2_nb));
539 556 }
540 557 else
541 558 {
542 559 incrementUnknown();
543 560 }
544 561 }
545 562 }
546 563 else
547 564 {
548 565 incrementUnknown();
549 566 }
550 567 }
551 568 else
552 569 {
553 570 incrementUnknown();
554 571 }
555 572
556 573 label_PID_is->setText(QString::number(pid));
557 574 label_CAT_is->setText(QString::number(cat));
558 575 label_TYP_is->setText(QString::number(typ));
559 576 label_SUB_is->setText(QString::number(sub));
560 577 label_SID_is->setText(QString::number(sid));
561 578 label_SIZ_is->setText(QString::number(length));
562 579 label_coarse_time_val->setText(QString::number(coarse_t, 16));
563 580 label_fine_time_val->setText(QString::number(fine_t, 16));
564 581 }
565 582
566 583 void TMStatistics::incrementUnknown()
567 584 {
568 585 UNKNOWN_nb = UNKNOWN_nb + 1;
569 586 label_UNKNOWN_nb->setText(QString::number(UNKNOWN_nb));
570 587 }
571 588
572 589 unsigned char TMStatistics::getPID(TMPacketToRead *packet)
573 590 {
574 591 unsigned char pid = 0;
575 592
576 593 pid = ((packet->Value[4] & 0x07) << 4) + ((packet->Value[5] & 0xf0) >> 4);
577 594
578 595 return pid;
579 596 }
580 597
581 598 unsigned char TMStatistics::getCAT(TMPacketToRead *packet)
582 599 {
583 600 unsigned char cat = 0;
584 601
585 602 cat = packet->Value[5] & 0x0f;
586 603
587 604 return cat;
588 605 }
589 606
590 607 unsigned char TMStatistics::getTYPE(TMPacketToRead *packet)
591 608 {
592 609 unsigned char typ = 0;
593 610
594 611 typ = packet->Value[11]; // TYPE
595 612
596 613 return typ;
597 614 }
598 615
599 616 unsigned char TMStatistics::getSUBTYPE(TMPacketToRead *packet)
600 617 {
601 618 unsigned char sub = 0;
602 619
603 620 sub = packet->Value[12]; // SUBTYPE
604 621
605 622 return sub;
606 623 }
607 624
608 625 unsigned int TMStatistics::getLENGTH(TMPacketToRead *packet)
609 626 {
610 627 unsigned int length = 0;
611 628
612 629 length = packet->Value[8] * 256 + packet->Value[9];
613 630
614 631 return length;
615 632 }
616 633
617 634 unsigned int TMStatistics::getCoarseTime(TMPacketToRead *packet)
618 635 {
619 636 unsigned int coarse = 0;
620 637
621 638 coarse = packet->Value[14] * pow(2, 24) + packet->Value[15] * pow(2, 16)
622 639 + packet->Value[16] * pow(2, 8) + packet->Value[17];
623 640
624 641 return coarse;
625 642 }
626 643
627 644 unsigned int TMStatistics::getFineTime(TMPacketToRead *packet)
628 645 {
629 646 unsigned int fine = 0;
630 647
631 648 fine = packet->Value[18] * pow(2, 8) + packet->Value[19];
632 649
633 650 return fine;
634 651 }
635 652
636 653 unsigned int TMStatistics::getSID(TMPacketToRead *packet,
637 654 unsigned char pid, unsigned char cat,
638 655 unsigned char typ, unsigned char sub)
639 656 {
640 657 unsigned int sid = 0;
658 QByteArray packetAsAnArray;
641 659
642 660 if ((pid == 76) & (cat == 1) & (typ == TM_TYPE_TC_EXE) & (sub == TM_SUBTYPE_EXE_NOK))
643 661 sid = packet->Value[20] * 256 + packet->Value[21];
644 662 else if ((pid == 76) & (cat == 4) & (typ == TM_TYPE_HK) & (sub == TM_SUBTYPE_HK))
645 663 sid = SID_HK;
646 664 else if ((pid == 76) & (cat == 9) & (typ == TM_TYPE_PARAMETER_DUMP) & (sub == TM_SUBTYPE_PARAMETER_DUMP))
647 665 sid = SID_PARAMETER_DUMP;
648 666 else if ((pid == 76) & (cat == 12) & (typ == TM_TYPE_LFR_SCIENCE) & (sub == TM_SUBTYPE_LFR_SCIENCE))
649 667 sid = packet->Value[20];
650 668 else if ((pid == 79) & (cat == 12) & (typ == TM_TYPE_LFR_SCIENCE) & (sub == TM_SUBTYPE_LFR_SCIENCE))
651 669 sid = packet->Value[20];
652 670
671 if (logFileEn == true)
672 {
673 packetAsAnArray = QByteArray::fromRawData((char *) &packet->Value[4], (packet->size-4)).toHex();
674 *(this->logFileStrm)
675 << QDate::currentDate().toString() + " "
676 << QTime::currentTime().toString() << endl
677 << packetAsAnArray
678 << endl
679 << endl;
680 }
681
653 682 return sid;
654 683 }
655 684
685 void TMStatistics::buildFileName()
686 {
687 QString date;
688 QString time;
689 QString prefix;
690
691 date = QDate::currentDate().toString();
692 time = QTime::currentTime().toString();
693
694 prefix = defaultStorageDirectory + "/" + date + "_" + time + "_" ;
656 695
657 696
697 if(this->logFile->isOpen()) this->logFile->close();
698 this->logFile->setFileName( prefix + "packet_record.data");
699 if(this->logFile->open(QIODevice::WriteOnly)) this->logFileStrm = new QTextStream(this->logFile);
700 }
658 701
702 void TMStatistics::storePackets()
703 {
704 if (logFileEn == false)
705 {
706 buildFileName();
707 button_record->setText(tr("STOP"));
708 logFileEn = true;
709 }
710 else
711 {
712 if(this->logFile->isOpen()) this->logFile->close();
713 button_record->setText(tr("REC"));
714 logFileEn = false;
715 }
716 }
659 717
718 void TMStatistics::readSettings()
719 {
720 QSettings settings("lpp", "lfrsgse");
721 defaultStorageDirectory = settings.value("defaultStorageDirectory", QDir::homePath()).toString();
722 }
723
724 void TMStatistics::writeSettings()
725 {
726 QSettings settings("lpp", "lfrsgse");
727 settings.setValue("defaultStorageDirectory", defaultStorageDirectory);
728 }
729
730 void TMStatistics::chooseDir()
731 {
732 defaultStorageDirectory = QFileDialog::getExistingDirectory(this,
733 "choose the directory",
734 QDir::homePath(),
735 QFileDialog::ShowDirsOnly);
736 }
737
738 void TMStatistics::closeEvent(QCloseEvent *event)
739 {
740 if(this->logFile->isOpen())
741 {
742 this->logFileStrm->flush();
743 this->logFile->waitForBytesWritten(3000);
744 this->logFile->close();
745 }
746 writeSettings();
747 event->accept();
748 }
749
@@ -1,220 +1,237
1 1 #ifndef TMSTATISTICS_H
2 2 #define TMSTATISTICS_H
3 3
4 4 #include <QWidget>
5 5 #include <QLabel>
6 6 #include <QPushButton>
7 7 #include <QGridLayout>
8 8 #include <QVBoxLayout>
9 9 #include <QGroupBox>
10 #include <QFile>
11 #include <QTextStream>
10 12 #include <tmpackettoread.h>
11 13 #include <ccsds_types.h>
12 14
13 15 #define STATISTICS_FONT_SIZE 9
14 16
15 17 class TMStatistics : public QWidget
16 18 {
17 19 Q_OBJECT
18 20 public:
19 21
20 22 explicit TMStatistics(QWidget *parent = 0);
21 23 void initConstants();
22 24 void buildMonitor_BURST();
23 25 void buildMonitor_SBM1();
24 26 void buildMonitor_SBM2();
25 27 void buildMonitor_NORM();
26 28 void buildMonitor();
27 29 void incrementUnknown();
28 30 //
29 31 void preProcessPacket(TMPacketToRead *packet);
30 32 unsigned char getPID(TMPacketToRead *packet);
31 33 unsigned char getCAT(TMPacketToRead *packet);
32 34 unsigned char getTYPE(TMPacketToRead *packet);
33 35 unsigned char getSUBTYPE(TMPacketToRead *packet);
34 36 unsigned int getLENGTH(TMPacketToRead *packet);
35 37 unsigned int getCoarseTime(TMPacketToRead *packet);
36 38 unsigned int getFineTime(TMPacketToRead *packet);
37 39 unsigned int getSID(TMPacketToRead *packet, unsigned char pid, unsigned char cat, unsigned char typ, unsigned char sub);
40 void closeEvent(QCloseEvent *event);
38 41
39 42 unsigned int UNKNOWN_nb;
40 43 unsigned int SUCC_nb;
41 44 unsigned int INCO_nb;
42 45 unsigned int NOTE_nb;
43 46 unsigned int NOTI_nb;
44 47 unsigned int ERRO_nb;
45 48 unsigned int CORR_nb;
46 49 unsigned int HK_nb;
47 50 unsigned int DUMP_nb;
48 51 unsigned int NORM_SWF_F0_nb;
49 52 unsigned int NORM_SWF_F1_nb;
50 53 unsigned int NORM_SWF_F2_nb;
51 54 unsigned int NORM_CWF_F3_nb;
52 55 unsigned int NORM_ASM_F0_nb;
53 56 unsigned int NORM_ASM_F1_nb;
54 57 unsigned int NORM_ASM_F2_nb;
55 58 unsigned int NORM_BP1_F0_nb;
56 59 unsigned int NORM_BP1_F1_nb;
57 60 unsigned int NORM_BP1_F2_nb;
58 61 unsigned int NORM_BP2_F0_nb;
59 62 unsigned int NORM_BP2_F1_nb;
60 63 unsigned int NORM_BP2_F2_nb;
61 64 //
62 65 unsigned int BURST_CWF_F2_nb;
63 66 unsigned int BURST_BP1_F0_nb;
64 67 unsigned int BURST_BP2_F0_nb;
65 68 unsigned int BURST_BP1_F1_nb;
66 69 unsigned int BURST_BP2_F1_nb;
67 70 unsigned int SBM1_CWF_F1_nb;
68 71 unsigned int SBM1_BP1_F0_nb;
69 72 unsigned int SBM1_BP2_F0_nb;
70 73 unsigned int SBM2_CWF_F2_nb;
71 74 unsigned int SBM2_BP1_F0_nb;
72 75 unsigned int SBM2_BP2_F0_nb;
73 76 unsigned int SBM2_BP1_F1_nb;
74 77 unsigned int SBM2_BP2_F1_nb;
75 78
76 79 //*******
77 80 // QLabel
78 81 QLabel *label_UNKNOWN;
79 82 QLabel *label_UNKNOWN_nb;
80 83
81 84 //***************
82 85 // TM_LFR_TC_EXE_
83 86 QLabel *label_SUCC;
84 87 QLabel *label_INCO;
85 88 QLabel *label_NOTE;
86 89 QLabel *label_NOTI;
87 90 QLabel *label_ERRO;
88 91 QLabel *label_CORR;
89 92 QLabel *label_HK;
90 93 QLabel *label_DUMP;
91 94 //
92 95 QLabel *label_SUCC_nb;
93 96 QLabel *label_INCO_nb;
94 97 QLabel *label_NOTE_nb;
95 98 QLabel *label_NOTI_nb;
96 99 QLabel *label_ERRO_nb;
97 100 QLabel *label_CORR_nb;
98 101 QLabel *label_HK_nb;
99 102 QLabel *label_DUMP_nb;
100 103
101 104 //***********************
102 105 // TM_LFR_SCIENCE_NORMAL_
103 106 QLabel *label_NORM_SWF_F0;
104 107 QLabel *label_NORM_SWF_F1;
105 108 QLabel *label_NORM_SWF_F2;
106 109 QLabel *label_NORM_CWF_F3;
107 110 QLabel *label_NORM_ASM_F0;
108 111 QLabel *label_NORM_ASM_F1;
109 112 QLabel *label_NORM_ASM_F2;
110 113 QLabel *label_NORM_BP1_F0;
111 114 QLabel *label_NORM_BP1_F1;
112 115 QLabel *label_NORM_BP1_F2;
113 116 QLabel *label_NORM_BP2_F0;
114 117 QLabel *label_NORM_BP2_F1;
115 118 QLabel *label_NORM_BP2_F2;
116 119 //
117 120 QLabel *label_NORM_SWF_F0_nb;
118 121 QLabel *label_NORM_SWF_F1_nb;
119 122 QLabel *label_NORM_SWF_F2_nb;
120 123 QLabel *label_NORM_CWF_F3_nb;
121 124 QLabel *label_NORM_ASM_F0_nb;
122 125 QLabel *label_NORM_ASM_F1_nb;
123 126 QLabel *label_NORM_ASM_F2_nb;
124 127 QLabel *label_NORM_BP1_F0_nb;
125 128 QLabel *label_NORM_BP1_F1_nb;
126 129 QLabel *label_NORM_BP1_F2_nb;
127 130 QLabel *label_NORM_BP2_F0_nb;
128 131 QLabel *label_NORM_BP2_F1_nb;
129 132 QLabel *label_NORM_BP2_F2_nb;
130 133
131 134 //**********************
132 135 // TM_LFR_SCIENCE_BURST_
133 136 QLabel *label_BURST_CWF_F2;
134 137 QLabel *label_BURST_BP1_F0;
135 138 QLabel *label_BURST_BP2_F0;
136 139 QLabel *label_BURST_BP1_F1;
137 140 QLabel *label_BURST_BP2_F1;
138 141 //
139 142 QLabel *label_BURST_CWF_F2_nb;
140 143 QLabel *label_BURST_BP1_F0_nb;
141 144 QLabel *label_BURST_BP2_F0_nb;
142 145 QLabel *label_BURST_BP1_F1_nb;
143 146 QLabel *label_BURST_BP2_F1_nb;
144 147
145 148 //*********************
146 149 // TM_LFR_SCIENCE_SBM1_
147 150 QLabel *label_SBM1_CWF_F1;
148 151 QLabel *label_SBM1_BP1_F0;
149 152 QLabel *label_SBM1_BP2_F0;
150 153 //
151 154 QLabel *label_SBM1_CWF_F1_nb;
152 155 QLabel *label_SBM1_BP1_F0_nb;
153 156 QLabel *label_SBM1_BP2_F0_nb;
154 157
155 158 //*********************
156 159 // TM_LFR_SCIENCE_SBM2_
157 160 QLabel *label_SBM2_CWF_F2;
158 161 QLabel *label_SBM2_BP1_F0;
159 162 QLabel *label_SBM2_BP2_F0;
160 163 QLabel *label_SBM2_BP1_F1;
161 164 QLabel *label_SBM2_BP2_F1;
162 165 //
163 166 QLabel *label_SBM2_CWF_F2_nb;
164 167 QLabel *label_SBM2_BP1_F0_nb;
165 168 QLabel *label_SBM2_BP2_F0_nb;
166 169 QLabel *label_SBM2_BP1_F1_nb;
167 170 QLabel *label_SBM2_BP2_F1_nb;
168 171
169 172 //********
170 173 // LAST TM
171 174 QLabel *label_PID;
172 175 QLabel *label_CAT;
173 176 QLabel *label_TYP;
174 177 QLabel *label_SUB;
175 178 QLabel *label_SID;
176 179 QLabel *label_SIZ;
177 180 QLabel *label_coarse_time;
178 181 QLabel *label_fine_time;
179 182 //
180 183 QLabel *label_PID_is;
181 184 QLabel *label_CAT_is;
182 185 QLabel *label_TYP_is;
183 186 QLabel *label_SUB_is;
184 187 QLabel *label_SID_is;
185 188 QLabel *label_SIZ_is;
186 189 QLabel *label_coarse_time_val;
187 190 QLabel *label_fine_time_val;
188 191
189 192 // Layouts
190 193 QGridLayout *mainLayout;
191 194 QGridLayout *layout_stat; // TM stastictics
192 195 QGridLayout *layout_NORM; // TM_LFR_SCIENCE_NORMAL_
193 196 QGridLayout *layout_BURST; // TM_LFR_SCIENCE_BURST_
194 197 QGridLayout *layout_SBM1; // TM_LFR_SCIENCE_SBM1_
195 198 QGridLayout *layout_SBM2; // TM_LFR_SCIENCE_SBM2_
196 199 QGridLayout *layout_last; // last TM description
200 QVBoxLayout *layout_record;
197 201
198 202 // QPushButton
199 203 QPushButton *button_reset_stat;
204 QPushButton *button_record;
205 QPushButton *button_chooseDir;
206
207 QFile *logFile;
208 QTextStream *logFileStrm;
209 bool logFileEn;
210 QString defaultStorageDirectory;
200 211
201 212 // QGroupBox
202 213 QGroupBox *groupbox_stat;
203 214 QGroupBox *groupbox_NORM;
204 215 QGroupBox *groupbox_BURST;
205 216 QGroupBox *groupbox_SBM1;
206 217 QGroupBox *groupbox_SBM2;
207 218 QGroupBox *groupbox_last;
219 QGroupBox *groupbox_record;
208 220
209 221 signals:
210 222
211 223 public slots:
212 224 void resetStatistics();
213 225 void updateStatistics(unsigned char pid, unsigned char cat,
214 226 unsigned char typ, unsigned char sub,
215 227 unsigned int sid, unsigned int length,
216 228 unsigned int coarse_t, unsigned int fine_t);
229 void storePackets();
230 void buildFileName();
231 void readSettings();
232 void writeSettings();
233 void chooseDir();
217 234
218 235 };
219 236
220 237 #endif // TMSTATISTICS_H
@@ -1,580 +1,580
1 1 #include "pagespectra.h"
2 2 #include <stdio.h>
3 3
4 4 PageSpectra::PageSpectra(QWidget *parent) :
5 5 QMainWindow(parent)
6 6 {
7 7 unsigned int i = 0;
8 8
9 9 for (i = 0; i<6; i++)
10 10 {
11 11 localIndex[i] = 0;
12 12 }
13 13
14 14 pageTitle = "default";
15 15 wfPlot_v = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
16 16 wfPlot_e1 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
17 17 wfPlot_e2 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
18 18 wfPlot_b1 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
19 19 wfPlot_b2 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
20 20 //
21 21 wfPlot_v->customPlot->setTitle("s11");
22 22 wfPlot_e1->customPlot->setTitle("s22");
23 23 wfPlot_e2->customPlot->setTitle("s33");
24 24 wfPlot_b1->customPlot->setTitle("s44");
25 25 wfPlot_b2->customPlot->setTitle("s55");
26 26 //
27 27 /*mainLayout = new QGridLayout;
28 28 mainLayout->addWidget(wfPlot_v, 0, 0, 1, 1);
29 29 mainLayout->addWidget(wfPlot_e1, 0, 1, 1, 1);
30 30 mainLayout->addWidget(wfPlot_e2, 0, 2, 1, 1);
31 31 mainLayout->addWidget(wfPlot_b1, 1, 0, 1, 1);
32 32 mainLayout->addWidget(wfPlot_b2, 1, 1, 1, 1);
33 33 mainLayout->addWidget(wfPlot_b3, 1, 2, 1, 1);*/
34 34 //
35 35 dockV = NULL;
36 36 dockE1 = NULL;
37 37 dockE2 = NULL;
38 38 dockB1 = NULL;
39 39 dockB2 = NULL;
40 40
41 41 titleWidgetV = new QWidget();
42 42 titleWidgetE1 = new QWidget();
43 43 titleWidgetE2 = new QWidget();
44 44 titleWidgetB1 = new QWidget();
45 45 titleWidgetB2 = new QWidget();
46 46
47 47 logFileName = new QLabel();
48 48 logFile = new QFile();
49 49 logFileV = new QFile();
50 50 logFileE1 = new QFile();
51 51 logFileE2 = new QFile();
52 52 logFileB1 = new QFile();
53 53 logFileB2 = new QFile();
54 54
55 55 logFileEn = false;
56 56 storageEnabledV = false;
57 57 storageEnabledE1 = false;
58 58 storageEnabledE2 = false;
59 59 storageEnabledB1 = false;
60 60 storageEnabledB2 = false;
61 61
62 62 createToolBar();
63 63 readSettings();
64 64 }
65 65
66 66 void PageSpectra::displayOnPlot(short *data, unsigned char num)
67 67 {
68 68 QByteArray dataByteArray;
69 69 unsigned int i;
70 70
71 71 switch(num){
72 72 case 0:
73 73 wfPlot_v->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
74 74 if ( (storageEnabledV == true) && (logFileV->isOpen()) )
75 75 {
76 76 for (i=0; i<DEFAULT_SIZE; i++)
77 77 {
78 78 dataByteArray.clear();
79 79 dataByteArray.append(QByteArray::number(localIndex[0]));
80 80 dataByteArray.append(' ');
81 81 dataByteArray.append(QByteArray::number(data[i]));
82 82 *(this->logFileStrmV) << dataByteArray << endl;
83 83 localIndex[0]++;
84 84 }
85 85 }
86 86 break;
87 87 case 1:
88 88 wfPlot_e1->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
89 89 break;
90 90 case 2:
91 91 wfPlot_e2->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
92 92 break;
93 93 case 3:
94 94 wfPlot_b1->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
95 95 break;
96 96 case 4:
97 97 wfPlot_b2->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
98 98 break;
99 99 default:
100 100 break;
101 101 }
102 102 }
103 103
104 104 void PageSpectra::displayOnPlotFloat(float *data, unsigned char num)
105 105 {
106 106 QByteArray dataByteArray;
107 107 unsigned int i;
108 108
109 109 switch(num){
110 110 case 0:
111 111 wfPlot_v->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
112 112 if ( (storageEnabledV == true) && (logFileV->isOpen()) )
113 113 {
114 114 for (i=0; i<DEFAULT_SIZE; i++)
115 115 {
116 116 dataByteArray.clear();
117 117 dataByteArray.append(QByteArray::number(localIndex[0]));
118 118 dataByteArray.append(' ');
119 119 dataByteArray.append(QByteArray::number(data[i]));
120 120 *(this->logFileStrmV) << dataByteArray << endl;
121 121 localIndex[0]++;
122 122 }
123 123 }
124 124 break;
125 125 case 1:
126 126 wfPlot_e1->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
127 127 break;
128 128 case 2:
129 129 wfPlot_e2->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
130 130 break;
131 131 case 3:
132 132 wfPlot_b1->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
133 133 break;
134 134 case 4:
135 135 wfPlot_b2->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
136 136 break;
137 137 default:
138 138 break;
139 139 }
140 140 }
141 141
142 142 void PageSpectra::createToolBar()
143 143 {
144 144 radio_v = new QRadioButton(tr("s11"));
145 145 radio_e1 = new QRadioButton(tr("s22"));
146 146 radio_e2 = new QRadioButton(tr("s33"));
147 147 radio_b1 = new QRadioButton(tr("s44"));
148 radio_b2 = new QRadioButton(tr("s44"));
148 radio_b2 = new QRadioButton(tr("s55"));
149 149 radio_tabify = new QRadioButton(tr("tabify"));
150 150
151 151 radio_v->setAutoExclusive(false);
152 152 radio_e1->setAutoExclusive(false);
153 153 radio_e2->setAutoExclusive(false);
154 154 radio_b1->setAutoExclusive(false);
155 155 radio_b2->setAutoExclusive(false);
156 156 radio_tabify->setAutoExclusive(false);
157 157
158 158 button_selectAll = new QPushButton(tr("select all"));
159 159 button_storeWfrm = new QPushButton(tr("REC"));
160 160 button_chooseDir = new QPushButton(tr("choose dir"));
161 161
162 162 myToolBar = new QToolBar("select");
163 163
164 164 myToolBar->addWidget(radio_v);
165 165 myToolBar->addWidget(radio_e1);
166 166 myToolBar->addWidget(radio_e2);
167 167 myToolBar->addWidget(radio_b1);
168 168 myToolBar->addWidget(radio_b2);
169 169 myToolBar->addSeparator();
170 170 myToolBar->addWidget(button_selectAll);
171 171 myToolBar->addWidget(radio_tabify);
172 172 myToolBar->addSeparator();
173 173 myToolBar->addWidget(button_storeWfrm);
174 174 myToolBar->addWidget(button_chooseDir);
175 175
176 176 addToolBar(Qt::LeftToolBarArea, myToolBar);
177 177
178 178 radio_tabify->setChecked(true);
179 179
180 180 connect(this->radio_v, SIGNAL(clicked(bool)), this, SLOT(actionRadioV(bool)));
181 181 connect(this->radio_e1, SIGNAL(clicked(bool)), this, SLOT(actionRadioE1(bool)));
182 182 connect(this->radio_e2, SIGNAL(clicked(bool)), this, SLOT(actionRadioE2(bool)));
183 183 connect(this->radio_b1, SIGNAL(clicked(bool)), this, SLOT(actionRadioB1(bool)));
184 184 connect(this->radio_b2, SIGNAL(clicked(bool)), this, SLOT(actionRadioB2(bool)));
185 185 connect(this->button_selectAll, SIGNAL(clicked()), this, SLOT(selectAll()));
186 186 connect(this->radio_tabify, SIGNAL(clicked(bool)), this, SLOT(organizeDocks()));
187 187 connect(this->button_storeWfrm, SIGNAL(clicked()), this, SLOT(storeWfrm()));
188 188 connect(this->button_chooseDir, SIGNAL(clicked()), this, SLOT(chooseDir()));
189 189 }
190 190
191 191 void PageSpectra::actionRadioV(bool state)
192 192 {
193 193 if (state == true)
194 194 {
195 195 if (dockV == NULL)
196 196 {
197 197 dockV = new QDockWidget("V", this);
198 198 dockV->setWidget(wfPlot_v);
199 199 dockV->setTitleBarWidget(titleWidgetV);
200 200 }
201 201 }
202 202 else
203 203 {
204 204 this->removeDockWidget(dockV);
205 205 }
206 206 organizeDocks();
207 207 }
208 208
209 209 void PageSpectra::actionRadioE1(bool state)
210 210 {
211 211 if (state == true)
212 212 {
213 213 if (dockE1 == NULL)
214 214 {
215 215 dockE1 = new QDockWidget("E1", this);
216 216 dockE1->setWidget(wfPlot_e1);
217 217 dockE1->setTitleBarWidget(titleWidgetE1);
218 218 }
219 219 }
220 220 else
221 221 {
222 222 this->removeDockWidget(dockE1);
223 223 }
224 224 organizeDocks();
225 225 }
226 226
227 227 void PageSpectra::actionRadioE2(bool state)
228 228 {
229 229 if (state == true)
230 230 {
231 231 if (dockE2 == NULL)
232 232 {
233 233 dockE2 = new QDockWidget("E2", this);
234 234 dockE2->setWidget(wfPlot_e2);
235 235 dockE2->setTitleBarWidget(titleWidgetE2);
236 236 }
237 237 }
238 238 else
239 239 {
240 240 this->removeDockWidget(dockE2);
241 241 }
242 242 organizeDocks();
243 243 }
244 244
245 245 void PageSpectra::actionRadioB1(bool state)
246 246 {
247 247 if (state == true)
248 248 {
249 249 if (dockB1 == NULL)
250 250 {
251 251 dockB1 = new QDockWidget("B1", this);
252 252 dockB1->setWidget(wfPlot_b1);
253 253 dockB1->setTitleBarWidget(titleWidgetB1);
254 254 }
255 255 }
256 256 else
257 257 {
258 258 this->removeDockWidget(dockB1);
259 259 }
260 260 organizeDocks();
261 261 }
262 262
263 263 void PageSpectra::actionRadioB2(bool state)
264 264 {
265 265 if (state == true)
266 266 {
267 267 if (dockB2 == NULL)
268 268 {
269 269 dockB2 = new QDockWidget("B2", this);
270 270 dockB2->setWidget(wfPlot_b2);
271 271 dockB2->setTitleBarWidget(titleWidgetB2);
272 272 }
273 273 }
274 274 else
275 275 {
276 276 this->removeDockWidget(dockB2);
277 277 }
278 278 organizeDocks();
279 279 }
280 280
281 281 void PageSpectra::buildDockList()
282 282 {
283 283 dockList.clear();
284 284
285 285 if (radio_v->isChecked())
286 286 {
287 287 dockList.append(dockV);
288 288 removeDockWidget(dockV);
289 289 }
290 290 if (radio_e1->isChecked())
291 291 {
292 292 dockList.append(dockE1);
293 293 removeDockWidget(dockE1);
294 294 }
295 295 if (radio_e2->isChecked())
296 296 {
297 297 dockList.append(dockE2);
298 298 removeDockWidget(dockE2);
299 299 }
300 300 if (radio_b1->isChecked())
301 301 {
302 302 dockList.append(dockB1);
303 303 removeDockWidget(dockB1);
304 304 }
305 305 if (radio_b2->isChecked())
306 306 {
307 307 dockList.append(dockB2);
308 308 removeDockWidget(dockB2);
309 309 }
310 310 }
311 311
312 312 void PageSpectra::organizeDocks()
313 313 {
314 314 if (radio_tabify->isChecked())
315 315 {
316 316 tabify();
317 317 }
318 318 else
319 319 {
320 320 unTabify();
321 321 }
322 322 wfPlot_v->resize(wfPlot_v->minimumSizeHint());
323 323 wfPlot_e1->resize(wfPlot_e1->minimumSizeHint());
324 324 wfPlot_e2->resize(wfPlot_e2->minimumSizeHint());
325 325 wfPlot_b1->resize(wfPlot_b1->minimumSizeHint());
326 326 wfPlot_b2->resize(wfPlot_b2->minimumSizeHint());
327 327 this->resize(this->minimumSizeHint());
328 328 }
329 329
330 330 void PageSpectra::unTabify()
331 331 {
332 332 buildDockList();
333 333
334 334 switch(dockList.size())
335 335 {
336 336 case 0:
337 337 break;
338 338 case 1:
339 339 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
340 340 dockList.at(0)->show();
341 341 break;
342 342 case 2:
343 343 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
344 344 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
345 345 dockList.at(0)->show();
346 346 dockList.at(1)->show();
347 347 break;
348 348 case 3:
349 349 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
350 350 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
351 351 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
352 352 dockList.at(0)->show();
353 353 dockList.at(1)->show();
354 354 dockList.at(2)->show();
355 355 break;
356 356 case 4:
357 357 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
358 358 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
359 359 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
360 360 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
361 361 dockList.at(0)->show();
362 362 dockList.at(1)->show();
363 363 dockList.at(2)->show();
364 364 dockList.at(3)->show();
365 365 break;
366 366 case 5:
367 367 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
368 368 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
369 369 addDockWidget(Qt::TopDockWidgetArea, dockList.at(2));
370 370 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
371 371 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(4));
372 372 dockList.at(0)->show();
373 373 dockList.at(1)->show();
374 374 dockList.at(2)->show();
375 375 dockList.at(3)->show();
376 376 dockList.at(4)->show();
377 377 break;
378 378 default:
379 379 break;
380 380 }
381 381 }
382 382
383 383 void PageSpectra::tabify()
384 384 {
385 385 buildDockList();
386 386
387 387 switch(dockList.size())
388 388 {
389 389 case 0:
390 390 break;
391 391 case 1:
392 392 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
393 393 dockList.at(0)->show();
394 394 break;
395 395 case 2:
396 396 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
397 397 tabifyDockWidget(dockList.at(0), dockList.at(1));
398 398 dockList.at(0)->show();
399 399 dockList.at(1)->show();
400 400 break;
401 401 case 3:
402 402 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
403 403 tabifyDockWidget(dockList.at(0), dockList.at(1));
404 404 tabifyDockWidget(dockList.at(1), dockList.at(2));
405 405 dockList.at(0)->show();
406 406 dockList.at(1)->show();
407 407 dockList.at(2)->show();
408 408 break;
409 409 case 4:
410 410 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
411 411 tabifyDockWidget(dockList.at(0), dockList.at(1));
412 412 tabifyDockWidget(dockList.at(1), dockList.at(2));
413 413 tabifyDockWidget(dockList.at(2), dockList.at(3));
414 414 dockList.at(0)->show();
415 415 dockList.at(1)->show();
416 416 dockList.at(2)->show();
417 417 dockList.at(3)->show();
418 418 break;
419 419 case 5:
420 420 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
421 421 tabifyDockWidget(dockList.at(0), dockList.at(1));
422 422 tabifyDockWidget(dockList.at(1), dockList.at(2));
423 423 tabifyDockWidget(dockList.at(2), dockList.at(3));
424 424 tabifyDockWidget(dockList.at(3), dockList.at(4));
425 425 dockList.at(0)->show();
426 426 dockList.at(1)->show();
427 427 dockList.at(2)->show();
428 428 dockList.at(3)->show();
429 429 dockList.at(4)->show();
430 430 break;
431 431 case 6:
432 432 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
433 433 tabifyDockWidget(dockList.at(0), dockList.at(1));
434 434 tabifyDockWidget(dockList.at(1), dockList.at(2));
435 435 tabifyDockWidget(dockList.at(2), dockList.at(3));
436 436 tabifyDockWidget(dockList.at(3), dockList.at(4));
437 437 tabifyDockWidget(dockList.at(4), dockList.at(5));
438 438 dockList.at(0)->show();
439 439 dockList.at(1)->show();
440 440 dockList.at(2)->show();
441 441 dockList.at(3)->show();
442 442 dockList.at(4)->show();
443 443 dockList.at(5)->show();
444 444 break;
445 445 default:
446 446 break;
447 447 }
448 448 }
449 449
450 450 void PageSpectra::selectAll()
451 451 {
452 452 radio_v->click();
453 453 radio_e1->click();
454 454 radio_e2->click();
455 455 radio_b1->click();
456 456 radio_b2->click();
457 457 }
458 458
459 459 void PageSpectra::storeWfrm()
460 460 {
461 461 if (logFileEn == false)
462 462 {
463 463 buildFileNames();
464 464 button_storeWfrm->setText(tr("STOP"));
465 465 logFileEn = true;
466 466 }
467 467 else
468 468 {
469 469 if(this->logFileV->isOpen()) this->logFileV->close();
470 470 if(this->logFileE1->isOpen()) this->logFileE1->close();
471 471 if(this->logFileE2->isOpen()) this->logFileE2->close();
472 472 // disable all storage
473 473 storageEnabledV = false;
474 474 storageEnabledE1 = false;
475 475 storageEnabledE2 = false;
476 476 storageEnabledB1 = false;
477 477 storageEnabledB2 = false;
478 478 button_storeWfrm->setText(tr("REC"));
479 479 logFileEn = false;
480 480 }
481 481 }
482 482
483 483 void PageSpectra::buildFileNames()
484 484 {
485 485 QString date;
486 486 QString time;
487 487 QString prefix;
488 488
489 489 date = QDate::currentDate().toString();
490 490 time = QTime::currentTime().toString();
491 491
492 492 prefix = defaultStorageDirectory + "/" + date + "_" + time + "_" + pageTitle ;
493 493
494 494 if (radio_v->isChecked())
495 495 {
496 496 if(this->logFileV->isOpen()) this->logFileV->close();
497 497 this->logFileV->setFileName( prefix + "_V.data");
498 498 if(this->logFileV->open(QIODevice::WriteOnly)) this->logFileStrmV = new QTextStream(this->logFileV);
499 499 storageEnabledV = true;
500 500 }
501 501 if (radio_e1->isChecked())
502 502 {
503 503 if(this->logFileE1->isOpen()) this->logFileE1->close();
504 504 this->logFileE1->setFileName( prefix + "_E1.data");
505 505 if(this->logFileE1->open(QIODevice::WriteOnly)) this->logFileStrmE1 = new QTextStream(this->logFileE1);
506 506 storageEnabledE1 = true;
507 507 }
508 508 if (radio_e2->isChecked())
509 509 {
510 510 if(this->logFileE2->isOpen()) this->logFileE2->close();
511 511 this->logFileE2->setFileName( prefix + "_E2.data");
512 512 if(this->logFileE2->open(QIODevice::WriteOnly)) this->logFileStrmE2 = new QTextStream(this->logFileE2);
513 513 storageEnabledE2 = true;
514 514 }
515 515 if (radio_b1->isChecked())
516 516 {
517 517
518 518 }
519 519 if (radio_b2->isChecked())
520 520 {
521 521
522 522 }
523 523 }
524 524
525 525 void PageSpectra::logFileEnDisable(bool state)
526 526 {
527 527 if(state==true)
528 528 {
529 529 this->logFileEn = true;
530 530 }
531 531 else if(state==false)
532 532 {
533 533 this->logFileEn = false;
534 534 }
535 535 }
536 536
537 537 bool PageSpectra::islogfileenable()
538 538 {
539 539 return this->logFileEn;
540 540 }
541 541
542 542 void PageSpectra::appendToLogFile(const QString & text)
543 543 {
544 544 if(this->logFileEn && this->logFile->isOpen())
545 545 {
546 546 *(this->logFileStrm) << text << endl;
547 547 }
548 548 }
549 549
550 550 void PageSpectra::closeEvent(QCloseEvent *event)
551 551 {
552 552 if(this->logFile->isOpen())
553 553 {
554 554 this->logFileStrm->flush();
555 555 this->logFile->waitForBytesWritten(3000);
556 556 this->logFile->close();
557 557 }
558 558 writeSettings();
559 559 event->accept();
560 560 }
561 561
562 562 void PageSpectra::readSettings()
563 563 {
564 564 QSettings settings("lpp", "lfrsgse");
565 565 defaultStorageDirectory = settings.value("defaultStorageDirectory", QDir::homePath()).toString();
566 566 }
567 567
568 568 void PageSpectra::writeSettings()
569 569 {
570 570 QSettings settings("lpp", "lfrsgse");
571 571 settings.setValue("defaultStorageDirectory", defaultStorageDirectory);
572 572 }
573 573
574 574 void PageSpectra::chooseDir()
575 575 {
576 576 defaultStorageDirectory = QFileDialog::getExistingDirectory(this,
577 577 "choose the directory",
578 578 QDir::homePath(),
579 579 QFileDialog::ShowDirsOnly);
580 580 }
@@ -1,195 +1,197
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE QtCreatorProject>
3 <!-- Written by QtCreator 2.7.0, 2013-07-24T16:26:20. -->
3 <!-- Written by QtCreator 2.8.0, 2013-08-01T09:15:42. -->
4 4 <qtcreator>
5 5 <data>
6 6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
7 7 <value type="int">0</value>
8 8 </data>
9 9 <data>
10 10 <variable>ProjectExplorer.Project.EditorSettings</variable>
11 11 <valuemap type="QVariantMap">
12 12 <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
13 13 <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
14 14 <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
15 15 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
16 <value type="QByteArray" key="language">Cpp</value>
16 <value type="QString" key="language">Cpp</value>
17 17 <valuemap type="QVariantMap" key="value">
18 18 <value type="QString" key="CurrentPreferences">CppGlobal</value>
19 19 </valuemap>
20 20 </valuemap>
21 21 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
22 <value type="QByteArray" key="language">QmlJS</value>
22 <value type="QString" key="language">QmlJS</value>
23 23 <valuemap type="QVariantMap" key="value">
24 24 <value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
25 25 </valuemap>
26 26 </valuemap>
27 27 <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
28 28 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
29 29 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
30 30 <value type="int" key="EditorConfiguration.IndentSize">4</value>
31 31 <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
32 32 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
33 33 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
34 34 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
35 35 <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
36 36 <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
37 37 <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
38 38 <value type="int" key="EditorConfiguration.TabSize">8</value>
39 39 <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
40 40 <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
41 41 <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
42 42 <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
43 43 <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
44 44 <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
45 45 </valuemap>
46 46 </data>
47 47 <data>
48 48 <variable>ProjectExplorer.Project.PluginSettings</variable>
49 49 <valuemap type="QVariantMap"/>
50 50 </data>
51 51 <data>
52 52 <variable>ProjectExplorer.Project.Target.0</variable>
53 53 <valuemap type="QVariantMap">
54 54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
55 55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
56 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
56 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
57 57 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
58 58 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
59 59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
60 60 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
61 61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
62 62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
63 63 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
64 64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
65 65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
66 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
67 67 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
68 68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
69 69 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
70 70 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
71 71 </valuemap>
72 72 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
73 73 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
74 74 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
75 75 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
76 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
76 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
77 77 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
78 78 <value type="QString">-w</value>
79 79 <value type="QString">-r</value>
80 80 </valuelist>
81 81 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
82 82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w </value>
83 83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
84 84 </valuemap>
85 85 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
86 86 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
87 87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
88 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
88 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
89 89 </valuemap>
90 90 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
91 91 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
92 92 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
93 93 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
94 94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
95 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
96 96 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
97 97 <value type="QString">-w</value>
98 98 <value type="QString">-r</value>
99 99 </valuelist>
100 100 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
101 101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
102 102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
103 103 </valuemap>
104 104 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
105 105 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
106 106 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
107 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
107 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
108 108 </valuemap>
109 109 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
110 110 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
111 111 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
112 112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
113 113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
115 115 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
116 116 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL/wfdisplay/wfdisplay</value>
117 117 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
118 118 </valuemap>
119 119 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
120 120 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
121 121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
122 122 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
123 123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
124 124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
125 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
126 126 </valuemap>
127 127 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
128 128 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
129 129 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
130 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
130 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
131 131 </valuemap>
132 132 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
133 <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
133 134 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
134 135 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
135 136 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
136 137 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
137 138 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
138 139 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
139 140 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
140 141 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
141 142 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
142 143 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
143 144 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
144 145 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
145 146 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
146 147 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
147 148 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
148 149 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
149 150 <value type="int">0</value>
150 151 <value type="int">1</value>
151 152 <value type="int">2</value>
152 153 <value type="int">3</value>
153 154 <value type="int">4</value>
154 155 <value type="int">5</value>
155 156 <value type="int">6</value>
156 157 <value type="int">7</value>
157 158 <value type="int">8</value>
158 159 <value type="int">9</value>
159 160 <value type="int">10</value>
160 161 <value type="int">11</value>
161 162 <value type="int">12</value>
162 163 <value type="int">13</value>
163 164 <value type="int">14</value>
164 165 </valuelist>
166 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
167 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
165 168 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
166 <value type="int" key="ProjectExplorer.CustomExecutableRunConfiguration.BaseEnvironmentBase">2</value>
167 169 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
168 170 <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">false</value>
169 <valuelist type="QVariantList" key="ProjectExplorer.CustomExecutableRunConfiguration.UserEnvironmentChanges"/>
170 171 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
171 172 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value>
172 173 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
173 <value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
174 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
174 175 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
175 176 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
177 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
176 178 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
177 179 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
178 180 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
179 181 </valuemap>
180 182 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
181 183 </valuemap>
182 184 </data>
183 185 <data>
184 186 <variable>ProjectExplorer.Project.TargetCount</variable>
185 187 <value type="int">1</value>
186 188 </data>
187 189 <data>
188 190 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
189 <value type="QString">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
191 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
190 192 </data>
191 193 <data>
192 194 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
193 <value type="int">12</value>
195 <value type="int">14</value>
194 196 </data>
195 197 </qtcreator>
@@ -1,597 +1,594
1 1 #include "wfpage.h"
2 2 #include <stdio.h>
3 3
4 4 WFPage::WFPage(QWidget *parent) :
5 5 QMainWindow(parent)
6 6 {
7 unsigned int i = 0;
8
9 for (i = 0; i<6; i++)
10 {
11 localIndex[i] = 0;
12 }
13 7
14 8 pageTitle = "default";
15 9 wfPlot_v = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
16 10 wfPlot_e1 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
17 11 wfPlot_e2 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
18 12 wfPlot_b1 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
19 13 wfPlot_b2 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
20 14 wfPlot_b3 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
21 15 //
22 16 wfPlot_v->customPlot->setTitle("v");
23 17 wfPlot_e1->customPlot->setTitle("e1");
24 18 wfPlot_e2->customPlot->setTitle("e2");
25 19 wfPlot_b1->customPlot->setTitle("b1");
26 20 wfPlot_b2->customPlot->setTitle("b2");
27 21 wfPlot_b3->customPlot->setTitle("b3");
28 22 //
29 23 /*mainLayout = new QGridLayout;
30 24 mainLayout->addWidget(wfPlot_v, 0, 0, 1, 1);
31 25 mainLayout->addWidget(wfPlot_e1, 0, 1, 1, 1);
32 26 mainLayout->addWidget(wfPlot_e2, 0, 2, 1, 1);
33 27 mainLayout->addWidget(wfPlot_b1, 1, 0, 1, 1);
34 28 mainLayout->addWidget(wfPlot_b2, 1, 1, 1, 1);
35 29 mainLayout->addWidget(wfPlot_b3, 1, 2, 1, 1);*/
36 30 //
37 31 dockV = NULL;
38 32 dockE1 = NULL;
39 33 dockE2 = NULL;
40 34 dockB1 = NULL;
41 35 dockB2 = NULL;
42 36 dockB3 = NULL;
43 37
44 38 titleWidgetV = new QWidget();
45 39 titleWidgetE1 = new QWidget();
46 40 titleWidgetE2 = new QWidget();
47 41 titleWidgetB1 = new QWidget();
48 42 titleWidgetB2 = new QWidget();
49 43 titleWidgetB3 = new QWidget();
50 44
51 45 logFileName = new QLabel();
52 46 logFile = new QFile();
53 logFileV = new QFile();
54 logFileE1 = new QFile();
55 logFileE2 = new QFile();
56 logFileB1 = new QFile();
57 logFileB2 = new QFile();
58 logFileB3 = new QFile();
59 47
60 48 logFileEn = false;
61 storageEnabledV = false;
62 storageEnabledE1 = false;
63 storageEnabledE2 = false;
64 storageEnabledB1 = false;
65 storageEnabledB2 = false;
66 storageEnabledB3 = false;
49 storageEnabled = false;
50 allowDataStorage = false;
51
52 indexOffset = 0;
67 53
68 54 createToolBar();
69 55 readSettings();
70 56 }
71 57
72 58 void WFPage::displayOnPlot(short *data, unsigned char num)
73 59 {
74 QByteArray dataByteArray;
75 unsigned int i;
60 fillDataBuffer( data, num );
76 61
77 62 switch(num){
78 63 case 0:
79 wfPlot_v->displayOnPlot(data, DEFAULT_SIZE);
80 if ( (storageEnabledV == true) && (logFileV->isOpen()) )
64 wfPlot_v->displayOnPlot(data, DEFAULT_SIZE);
65 break;
66
67 case 1:
68 wfPlot_e1->displayOnPlot(data, DEFAULT_SIZE);
69 break;
70
71 case 2:
72 wfPlot_e2->displayOnPlot(data, DEFAULT_SIZE);
73 break;
74
75 case 3:
76 wfPlot_b1->displayOnPlot(data, DEFAULT_SIZE);
77 break;
78
79 case 4:
80 wfPlot_b2->displayOnPlot(data, DEFAULT_SIZE);
81 break;
82
83 case 5:
84 wfPlot_b3->displayOnPlot(data, DEFAULT_SIZE);
85 break;
86 }
87 }
88
89 void WFPage::initDataBuffer()
90 {
91 for (unsigned int i = 0; i < DEFAULT_SIZE; i++)
92 {
93 dataBuffer[i].clear();
94 }
95 }
96
97 void WFPage::fillDataBuffer(short *data, unsigned char num)
98 {
99 if ( (storageEnabled == true) | (allowDataStorage==true) ) // store data in buffers
100 {
101 switch(num) {
102
103 case 0 :
104 initDataBuffer();
105 for (unsigned int i=0; i<DEFAULT_SIZE; i++)
81 106 {
82 for (i=0; i<DEFAULT_SIZE; i++)
107 dataBuffer[i].append(QByteArray::number(data[i]));
108 dataBuffer[i].append(' ');
109 }
110 allowDataStorage = true;
111 break;
112
113 case 1 :
114 case 2 :
115 case 3 :
116 case 4 :
117 if (allowDataStorage==true) {
118 for (unsigned int i=0; i<DEFAULT_SIZE; i++)
83 119 {
84 dataByteArray.clear();
85 dataByteArray.append(QByteArray::number(localIndex[0]));
86 dataByteArray.append(' ');
87 dataByteArray.append(QByteArray::number(data[i]));
88 *(this->logFileStrmV) << dataByteArray << endl;
89 localIndex[0]++;
120 dataBuffer[i].append(QByteArray::number(data[i]));
121 dataBuffer[i].append(' ');
90 122 }
91 123 }
92 124 break;
93 case 1:
94 wfPlot_e1->displayOnPlot(data, DEFAULT_SIZE);
125
126 case 5 :
127 if (allowDataStorage==true) {
128 for (unsigned int i=0; i<DEFAULT_SIZE; i++)
129 {
130 dataBuffer[i].append(QByteArray::number(data[i]));
131 dataBuffer[i].append(' ');
132 }
133 storeDataBuffer();
134 allowDataStorage = false;
135 }
95 136 break;
96 case 2:
97 wfPlot_e2->displayOnPlot(data, DEFAULT_SIZE);
137
138 default:
98 139 break;
99 case 3:
100 wfPlot_b1->displayOnPlot(data, DEFAULT_SIZE);
101 break;
102 case 4:
103 wfPlot_b2->displayOnPlot(data, DEFAULT_SIZE);
104 break;
105 case 5:
106 wfPlot_b3->displayOnPlot(data, DEFAULT_SIZE);
107 break;
140
141 }
142 }
143 }
144
145 void WFPage::storeDataBuffer()
146 {
147 for (int i = 0; i < DEFAULT_SIZE; i++ )
148 {
149 *(this->logFileStrm) << (i + indexOffset) << " " << dataBuffer[i] << endl;
150 }
151 indexOffset = indexOffset + DEFAULT_SIZE;
152 if (storageEnabled == false){
153 this->logFileStrm->flush();
154 this->logFile->waitForBytesWritten(3000);
155 this->logFile->close();
108 156 }
109 157 }
110 158
111 159 void WFPage::createToolBar()
112 160 {
113 161 radio_v = new QRadioButton(tr("v"));
114 162 radio_e1 = new QRadioButton(tr("e1"));
115 163 radio_e2 = new QRadioButton(tr("e2"));
116 164 radio_b1 = new QRadioButton(tr("b1"));
117 165 radio_b2 = new QRadioButton(tr("b2"));
118 166 radio_b3 = new QRadioButton(tr("b3"));
119 167 radio_tabify = new QRadioButton(tr("tabify"));
120 168
121 169 radio_v->setAutoExclusive(false);
122 170 radio_e1->setAutoExclusive(false);
123 171 radio_e2->setAutoExclusive(false);
124 172 radio_b1->setAutoExclusive(false);
125 173 radio_b2->setAutoExclusive(false);
126 174 radio_b3->setAutoExclusive(false);
127 175 radio_tabify->setAutoExclusive(false);
128 176
129 177 button_selectAll = new QPushButton(tr("select all"));
130 178 button_storeWfrm = new QPushButton(tr("REC"));
131 179 button_chooseDir = new QPushButton(tr("choose dir"));
132 180
133 181 myToolBar = new QToolBar("select");
134 182
135 183 myToolBar->addWidget(radio_v);
136 184 myToolBar->addWidget(radio_e1);
137 185 myToolBar->addWidget(radio_e2);
138 186 myToolBar->addWidget(radio_b1);
139 187 myToolBar->addWidget(radio_b2);
140 188 myToolBar->addWidget(radio_b3);
141 189 myToolBar->addSeparator();
142 190 myToolBar->addWidget(button_selectAll);
143 191 myToolBar->addWidget(radio_tabify);
144 192 myToolBar->addSeparator();
145 193 myToolBar->addWidget(button_storeWfrm);
146 194 myToolBar->addWidget(button_chooseDir);
147 195
148 196 addToolBar(Qt::LeftToolBarArea, myToolBar);
149 197
150 198 radio_tabify->setChecked(true);
151 199
152 200 connect(this->radio_v, SIGNAL(clicked(bool)), this, SLOT(actionRadioV(bool)));
153 201 connect(this->radio_e1, SIGNAL(clicked(bool)), this, SLOT(actionRadioE1(bool)));
154 202 connect(this->radio_e2, SIGNAL(clicked(bool)), this, SLOT(actionRadioE2(bool)));
155 203 connect(this->radio_b1, SIGNAL(clicked(bool)), this, SLOT(actionRadioB1(bool)));
156 204 connect(this->radio_b2, SIGNAL(clicked(bool)), this, SLOT(actionRadioB2(bool)));
157 205 connect(this->radio_b3, SIGNAL(clicked(bool)), this, SLOT(actionRadioB3(bool)));
158 206 connect(this->button_selectAll, SIGNAL(clicked()), this, SLOT(selectAll()));
159 207 connect(this->radio_tabify, SIGNAL(clicked(bool)), this, SLOT(organizeDocks()));
160 208 connect(this->button_storeWfrm, SIGNAL(clicked()), this, SLOT(storeWfrm()));
161 209 connect(this->button_chooseDir, SIGNAL(clicked()), this, SLOT(chooseDir()));
162 210 }
163 211
164 212 void WFPage::actionRadioV(bool state)
165 213 {
166 214 if (state == true)
167 215 {
168 216 if (dockV == NULL)
169 217 {
170 218 dockV = new QDockWidget("V", this);
171 219 dockV->setWidget(wfPlot_v);
172 220 dockV->setTitleBarWidget(titleWidgetV);
173 221 }
174 222 }
175 223 else
176 224 {
177 225 this->removeDockWidget(dockV);
178 226 }
179 227 organizeDocks();
180 228 }
181 229
182 230 void WFPage::actionRadioE1(bool state)
183 231 {
184 232 if (state == true)
185 233 {
186 234 if (dockE1 == NULL)
187 235 {
188 236 dockE1 = new QDockWidget("E1", this);
189 237 dockE1->setWidget(wfPlot_e1);
190 238 dockE1->setTitleBarWidget(titleWidgetE1);
191 239 }
192 240 }
193 241 else
194 242 {
195 243 this->removeDockWidget(dockE1);
196 244 }
197 245 organizeDocks();
198 246 }
199 247
200 248 void WFPage::actionRadioE2(bool state)
201 249 {
202 250 if (state == true)
203 251 {
204 252 if (dockE2 == NULL)
205 253 {
206 254 dockE2 = new QDockWidget("E2", this);
207 255 dockE2->setWidget(wfPlot_e2);
208 256 dockE2->setTitleBarWidget(titleWidgetE2);
209 257 }
210 258 }
211 259 else
212 260 {
213 261 this->removeDockWidget(dockE2);
214 262 }
215 263 organizeDocks();
216 264 }
217 265
218 266 void WFPage::actionRadioB1(bool state)
219 267 {
220 268 if (state == true)
221 269 {
222 270 if (dockB1 == NULL)
223 271 {
224 272 dockB1 = new QDockWidget("B1", this);
225 273 dockB1->setWidget(wfPlot_b1);
226 274 dockB1->setTitleBarWidget(titleWidgetB1);
227 275 }
228 276 }
229 277 else
230 278 {
231 279 this->removeDockWidget(dockB1);
232 280 }
233 281 organizeDocks();
234 282 }
235 283
236 284 void WFPage::actionRadioB2(bool state)
237 285 {
238 286 if (state == true)
239 287 {
240 288 if (dockB2 == NULL)
241 289 {
242 290 dockB2 = new QDockWidget("B2", this);
243 291 dockB2->setWidget(wfPlot_b2);
244 292 dockB2->setTitleBarWidget(titleWidgetB2);
245 293 }
246 294 }
247 295 else
248 296 {
249 297 this->removeDockWidget(dockB2);
250 298 }
251 299 organizeDocks();
252 300 }
253 301
254 302 void WFPage::actionRadioB3(bool state)
255 303 {
256 304 if (state == true)
257 305 {
258 306 if (dockB3 == NULL)
259 307 {
260 308 dockB3 = new QDockWidget("B3", this);
261 309 dockB3->setWidget(wfPlot_b3);
262 310 dockB3->setTitleBarWidget(titleWidgetB3);
263 311 }
264 312 }
265 313 else
266 314 {
267 315 this->removeDockWidget(dockB3);
268 316 }
269 317 organizeDocks();
270 318 }
271 319
272 320 void WFPage::buildDockList()
273 321 {
274 322 dockList.clear();
275 323
276 324 if (radio_v->isChecked())
277 325 {
278 326 dockList.append(dockV);
279 327 removeDockWidget(dockV);
280 328 }
281 329 if (radio_e1->isChecked())
282 330 {
283 331 dockList.append(dockE1);
284 332 removeDockWidget(dockE1);
285 333 }
286 334 if (radio_e2->isChecked())
287 335 {
288 336 dockList.append(dockE2);
289 337 removeDockWidget(dockE2);
290 338 }
291 339 if (radio_b1->isChecked())
292 340 {
293 341 dockList.append(dockB1);
294 342 removeDockWidget(dockB1);
295 343 }
296 344 if (radio_b2->isChecked())
297 345 {
298 346 dockList.append(dockB2);
299 347 removeDockWidget(dockB2);
300 348 }
301 349 if (radio_b3->isChecked())
302 350 {
303 351 dockList.append(dockB3);
304 352 removeDockWidget(dockB3);
305 353 }
306 354 }
307 355
308 356 void WFPage::organizeDocks()
309 357 {
310 358 if (radio_tabify->isChecked())
311 359 {
312 360 tabify();
313 361 }
314 362 else
315 363 {
316 364 unTabify();
317 365 }
318 366 wfPlot_v->resize(wfPlot_v->minimumSizeHint());
319 367 wfPlot_e1->resize(wfPlot_e1->minimumSizeHint());
320 368 wfPlot_e2->resize(wfPlot_e2->minimumSizeHint());
321 369 wfPlot_b1->resize(wfPlot_b1->minimumSizeHint());
322 370 wfPlot_b2->resize(wfPlot_b2->minimumSizeHint());
323 371 wfPlot_b3->resize(wfPlot_b3->minimumSizeHint());
324 372 this->resize(this->minimumSizeHint());
325 373 }
326 374
327 375 void WFPage::unTabify()
328 376 {
329 377 buildDockList();
330 378
331 379 switch(dockList.size())
332 380 {
333 381 case 0:
334 382 break;
335 383 case 1:
336 384 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
337 385 dockList.at(0)->show();
338 386 break;
339 387 case 2:
340 388 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
341 389 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
342 390 dockList.at(0)->show();
343 391 dockList.at(1)->show();
344 392 break;
345 393 case 3:
346 394 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
347 395 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
348 396 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
349 397 dockList.at(0)->show();
350 398 dockList.at(1)->show();
351 399 dockList.at(2)->show();
352 400 break;
353 401 case 4:
354 402 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
355 403 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
356 404 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
357 405 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
358 406 dockList.at(0)->show();
359 407 dockList.at(1)->show();
360 408 dockList.at(2)->show();
361 409 dockList.at(3)->show();
362 410 break;
363 411 case 5:
364 412 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
365 413 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
366 414 addDockWidget(Qt::TopDockWidgetArea, dockList.at(2));
367 415 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
368 416 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(4));
369 417 dockList.at(0)->show();
370 418 dockList.at(1)->show();
371 419 dockList.at(2)->show();
372 420 dockList.at(3)->show();
373 421 dockList.at(4)->show();
374 422 break;
375 423 case 6:
376 424 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
377 425 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
378 426 addDockWidget(Qt::TopDockWidgetArea, dockList.at(2));
379 427 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
380 428 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(4));
381 429 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(5));
382 430 dockList.at(0)->show();
383 431 dockList.at(1)->show();
384 432 dockList.at(2)->show();
385 433 dockList.at(3)->show();
386 434 dockList.at(4)->show();
387 435 dockList.at(5)->show();
388 436 break;
389 437 default:
390 438 break;
391 439 }
392 440 }
393 441
394 442 void WFPage::tabify()
395 443 {
396 444 buildDockList();
397 445
398 446 switch(dockList.size())
399 447 {
400 448 case 0:
401 449 break;
402 450 case 1:
403 451 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
404 452 dockList.at(0)->show();
405 453 break;
406 454 case 2:
407 455 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
408 456 tabifyDockWidget(dockList.at(0), dockList.at(1));
409 457 dockList.at(0)->show();
410 458 dockList.at(1)->show();
411 459 break;
412 460 case 3:
413 461 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
414 462 tabifyDockWidget(dockList.at(0), dockList.at(1));
415 463 tabifyDockWidget(dockList.at(1), dockList.at(2));
416 464 dockList.at(0)->show();
417 465 dockList.at(1)->show();
418 466 dockList.at(2)->show();
419 467 break;
420 468 case 4:
421 469 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
422 470 tabifyDockWidget(dockList.at(0), dockList.at(1));
423 471 tabifyDockWidget(dockList.at(1), dockList.at(2));
424 472 tabifyDockWidget(dockList.at(2), dockList.at(3));
425 473 dockList.at(0)->show();
426 474 dockList.at(1)->show();
427 475 dockList.at(2)->show();
428 476 dockList.at(3)->show();
429 477 break;
430 478 case 5:
431 479 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
432 480 tabifyDockWidget(dockList.at(0), dockList.at(1));
433 481 tabifyDockWidget(dockList.at(1), dockList.at(2));
434 482 tabifyDockWidget(dockList.at(2), dockList.at(3));
435 483 tabifyDockWidget(dockList.at(3), dockList.at(4));
436 484 dockList.at(0)->show();
437 485 dockList.at(1)->show();
438 486 dockList.at(2)->show();
439 487 dockList.at(3)->show();
440 488 dockList.at(4)->show();
441 489 break;
442 490 case 6:
443 491 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
444 492 tabifyDockWidget(dockList.at(0), dockList.at(1));
445 493 tabifyDockWidget(dockList.at(1), dockList.at(2));
446 494 tabifyDockWidget(dockList.at(2), dockList.at(3));
447 495 tabifyDockWidget(dockList.at(3), dockList.at(4));
448 496 tabifyDockWidget(dockList.at(4), dockList.at(5));
449 497 dockList.at(0)->show();
450 498 dockList.at(1)->show();
451 499 dockList.at(2)->show();
452 500 dockList.at(3)->show();
453 501 dockList.at(4)->show();
454 502 dockList.at(5)->show();
455 503 break;
456 504 default:
457 505 break;
458 506 }
459 507 }
460 508
461 509 void WFPage::selectAll()
462 510 {
463 511 radio_v->click();
464 512 radio_e1->click();
465 513 radio_e2->click();
466 514 radio_b1->click();
467 515 radio_b2->click();
468 516 radio_b3->click();
469 517 }
470 518
471 519 void WFPage::storeWfrm()
472 520 {
473 521 if (logFileEn == false)
474 522 {
475 buildFileNames();
523 buildFileName();
524 indexOffset = 0;
476 525 button_storeWfrm->setText(tr("STOP"));
477 526 logFileEn = true;
478 527 }
479 528 else
480 529 {
481 if(this->logFileV->isOpen()) this->logFileV->close();
482 if(this->logFileE1->isOpen()) this->logFileE1->close();
483 if(this->logFileE2->isOpen()) this->logFileE2->close();
484 // disable all storage
485 storageEnabledV = false;
486 storageEnabledE1 = false;
487 storageEnabledE2 = false;
488 storageEnabledB1 = false;
489 storageEnabledB2 = false;
490 storageEnabledB3 = false;
530 // disable storage
531 storageEnabled = false;
491 532 button_storeWfrm->setText(tr("REC"));
492 533 logFileEn = false;
493 534 }
494 535 }
495 536
496 void WFPage::buildFileNames()
537 void WFPage::buildFileName()
497 538 {
498 539 QString date;
499 540 QString time;
500 541 QString prefix;
501 542
502 543 date = QDate::currentDate().toString();
503 544 time = QTime::currentTime().toString();
504 545
505 546 prefix = defaultStorageDirectory + "/" + date + "_" + time + "_" + pageTitle ;
506 547
507 if (radio_v->isChecked())
508 {
509 if(this->logFileV->isOpen()) this->logFileV->close();
510 this->logFileV->setFileName( prefix + "_V.data");
511 if(this->logFileV->open(QIODevice::WriteOnly)) this->logFileStrmV = new QTextStream(this->logFileV);
512 storageEnabledV = true;
513 }
514 if (radio_e1->isChecked())
515 {
516 if(this->logFileE1->isOpen()) this->logFileE1->close();
517 this->logFileE1->setFileName( prefix + "_E1.data");
518 if(this->logFileE1->open(QIODevice::WriteOnly)) this->logFileStrmE1 = new QTextStream(this->logFileE1);
519 storageEnabledE1 = true;
520 }
521 if (radio_e2->isChecked())
522 {
523 if(this->logFileE2->isOpen()) this->logFileE2->close();
524 this->logFileE2->setFileName( prefix + "_E2.data");
525 if(this->logFileE2->open(QIODevice::WriteOnly)) this->logFileStrmE2 = new QTextStream(this->logFileE2);
526 storageEnabledE2 = true;
527 }
528 if (radio_b1->isChecked())
529 {
548 if(this->logFile->isOpen()) this->logFile->close();
549 this->logFile->setFileName( prefix + ".data");
550 if(this->logFile->open(QIODevice::WriteOnly)) this->logFileStrm = new QTextStream(this->logFile);
530 551
531 }
532 if (radio_b2->isChecked())
533 {
552 *(this->logFileStrm) << "time V E1 E2 B1 B2 B3 " << endl;
534 553
535 }
536 if (radio_b3->isChecked())
537 {
554 storageEnabled = true;
538 555
539 }
540 556 }
541 557
542 558 void WFPage::logFileEnDisable(bool state)
543 559 {
544 560 if(state==true)
545 561 {
546 562 this->logFileEn = true;
547 563 }
548 564 else if(state==false)
549 565 {
550 566 this->logFileEn = false;
551 567 }
552 568 }
553 569
554 bool WFPage::islogfileenable()
555 {
556 return this->logFileEn;
557 }
558
559 void WFPage::appendToLogFile(const QString & text)
560 {
561 if(this->logFileEn && this->logFile->isOpen())
562 {
563 *(this->logFileStrm) << text << endl;
564 }
565 }
566
567 570 void WFPage::closeEvent(QCloseEvent *event)
568 571 {
569 if(this->logFile->isOpen())
570 {
571 this->logFileStrm->flush();
572 this->logFile->waitForBytesWritten(3000);
573 this->logFile->close();
574 }
575 572 writeSettings();
576 573 event->accept();
577 574 }
578 575
579 576 void WFPage::readSettings()
580 577 {
581 578 QSettings settings("lpp", "lfrsgse");
582 579 defaultStorageDirectory = settings.value("defaultStorageDirectory", QDir::homePath()).toString();
583 580 }
584 581
585 582 void WFPage::writeSettings()
586 583 {
587 584 QSettings settings("lpp", "lfrsgse");
588 585 settings.setValue("defaultStorageDirectory", defaultStorageDirectory);
589 586 }
590 587
591 588 void WFPage::chooseDir()
592 589 {
593 590 defaultStorageDirectory = QFileDialog::getExistingDirectory(this,
594 591 "choose the directory",
595 592 QDir::homePath(),
596 593 QFileDialog::ShowDirsOnly);
597 594 }
@@ -1,134 +1,115
1 1 #ifndef WFPAGE_H
2 2 #define WFPAGE_H
3 3
4 4 #include "wfdisplay_global.h"
5 5
6 6 #include <QtGui/QMainWindow>
7 7 #include <QRadioButton>
8 8 #include <QPushButton>
9 9 #include <QDockWidget>
10 10 #include <QToolBar>
11 11 #include <QLabel>
12 12 #include <QFile>
13 13 #include <QTextStream>
14 14 #include <QFileDialog>
15 15 #include <QSettings>
16 16
17 17 #include <wfplot.h>
18 18 #include <wfdisplay_params.h>
19 19
20 20 class WFDISPLAYSHARED_EXPORT WFPage : public QMainWindow
21 21 {
22 22 Q_OBJECT
23 23 public:
24 24 explicit WFPage(QWidget *parent = 0);
25 25
26 26 void createToolBar();
27 27 void buildDockList();
28 28 void unTabify();
29 29 void tabify();
30 30 // STORE
31 void buildFileNames();
32 bool islogfileenable();
33 void appendToLogFile(const QString & text);
31 void buildFileName();
34 32 void closeEvent(QCloseEvent *event);
35 33 void readSettings();
36 34 void writeSettings();
37 35
38 36 bool logFileEn;
39 bool storageEnabledV;
40 bool storageEnabledE1;
41 bool storageEnabledE2;
42 bool storageEnabledB1;
43 bool storageEnabledB2;
44 bool storageEnabledB3;
37 bool storageEnabled;
45 38
46 39 QLabel *logFileName;
47 QLabel *logFileNameV;
48 QLabel *logFileNameE1;
49 QLabel *logFileNameE2;
50 QLabel *logFileNameB1;
51 QLabel *logFileNameB2;
52 QLabel *logFileNameB3;
53 40
54 41 QWidget *titleWidgetV;
55 42 QWidget *titleWidgetE1;
56 43 QWidget *titleWidgetE2;
57 44 QWidget *titleWidgetB1;
58 45 QWidget *titleWidgetB2;
59 46 QWidget *titleWidgetB3;
60 47
48 QByteArray dataBuffer[DEFAULT_SIZE];
49
61 50 QList<QDockWidget*> dockList;
62 51
63 52 QDockWidget *dockV;
64 53 QDockWidget *dockE1;
65 54 QDockWidget *dockE2;
66 55 QDockWidget *dockB1;
67 56 QDockWidget *dockB2;
68 57 QDockWidget *dockB3;
69 58
70 59 QRadioButton *radio_v;
71 60 QRadioButton *radio_e1;
72 61 QRadioButton *radio_e2;
73 62 QRadioButton *radio_b1;
74 63 QRadioButton *radio_b2;
75 64 QRadioButton *radio_b3;
76 65 QRadioButton *radio_tabify;
77 66
78 67 QPushButton *button_selectAll;
79 68 QPushButton *button_storeWfrm;
80 69 QPushButton *button_chooseDir;
81 70
82 71 QToolBar *myToolBar;
83 72
84 73 WFPlot *wfPlot_v;
85 74 WFPlot *wfPlot_e1;
86 75 WFPlot *wfPlot_e2;
87 76 WFPlot *wfPlot_b1;
88 77 WFPlot *wfPlot_b2;
89 78 WFPlot *wfPlot_b3;
90 79
91 80 QFile *logFile;
92 QFile *logFileV;
93 QFile *logFileE1;
94 QFile *logFileE2;
95 QFile *logFileB1;
96 QFile *logFileB2;
97 QFile *logFileB3;
98 81
99 82 QTextStream *logFileStrm;
100 QTextStream *logFileStrmV;
101 QTextStream *logFileStrmE1;
102 QTextStream *logFileStrmE2;
103 QTextStream *logFileStrmB1;
104 QTextStream *logFileStrmB2;
105 QTextStream *logFileStrmB3;
83
84 unsigned int indexOffset;
106 85
107 86 QString pageTitle;
108 87 QString defaultStorageDirectory;
109 88
110 unsigned int localIndex[5];
111
112 89 //QGridLayout *mainLayout;
113 90
114 91 void displayOnPlot(short *data, unsigned char num);
92 void initDataBuffer();
93 void fillDataBuffer(short *data, unsigned char num);
94 void storeDataBuffer();
95
96 bool allowDataStorage;
115 97
116 98 signals:
117 void setLogFileName(QString FileName);
118 99
119 100 public slots:
120 101 void actionRadioV(bool state);
121 102 void actionRadioE1(bool state);
122 103 void actionRadioE2(bool state);
123 104 void actionRadioB1(bool state);
124 105 void actionRadioB2(bool state);
125 106 void actionRadioB3(bool state);
126 107 void organizeDocks();
127 108 void selectAll();
128 109 void storeWfrm();
129 110 void logFileEnDisable(bool state);
130 111 void chooseDir();
131 112
132 113 };
133 114
134 115 #endif // WFPAGE_H
General Comments 0
You need to be logged in to leave comments. Login now