##// END OF EJS Templates
Sync
leroy -
r68:44c3f7e01104 default
parent child
Show More
This diff has been collapsed as it changes many lines, (513 lines changed) Show them Hide them
@@ -0,0 +1,513
1 #include "asmpage.h"
2
3 ASMPage::ASMPage(QWidget *parent, unsigned int bufferSize, unsigned int xMAX, unsigned int yMAX) :
4 QMainWindow(parent)
5 {
6 unsigned int i;
7 localBufferSize = bufferSize;
8 // memory allocation of the data buffer
9 dataBuffer = (QByteArray**) malloc( localBufferSize * sizeof(QByteArray*) );
10 for (i=0; i<localBufferSize; i++)
11 {
12 dataBuffer[i] = new QByteArray;
13 }
14
15 pageTitle = "default";
16
17 wfPlot_asm_b1b1 = new WFPlot(this, xMAX, yMAX);
18 wfPlot_asm_b2b2 = new WFPlot(this, xMAX, yMAX);
19 wfPlot_asm_b3b3 = new WFPlot(this, xMAX, yMAX);
20 wfPlot_asm_e1e1 = new WFPlot(this, xMAX, yMAX);
21 wfPlot_asm_e2e2 = new WFPlot(this, xMAX, yMAX);
22
23 wfPlot_asm_b1b1->customPlot->setTitle("b1b1");
24 wfPlot_asm_b2b2->customPlot->setTitle("b2b2");
25 wfPlot_asm_b3b3->customPlot->setTitle("b3b3");
26 wfPlot_asm_e1e1->customPlot->setTitle("e1e1");
27 wfPlot_asm_e2e2->customPlot->setTitle("e2e2");
28
29 dockB1B1 = NULL;
30 dockB2B2 = NULL;
31 dockB3B3 = NULL;
32 dockE1E1 = NULL;
33 dockE2E2 = NULL;
34
35 titleWidgetB1B1 = new QWidget();
36 titleWidgetB2B2 = new QWidget();
37 titleWidgetB3B3 = new QWidget();
38 titleWidgetE1E1 = new QWidget();
39 titleWidgetE2E2 = new QWidget();
40
41 logFileName = new QLabel();
42 logFile = new QFile();
43
44 logFileEn = false;
45 storageEnabled = false;
46 allowDataStorage = false;
47
48 createToolBar();
49 }
50
51 ASMPage::~ASMPage()
52 {
53 unsigned int i;
54 // deallocation of the data buffer
55 for (i=0; i<localBufferSize; i++)
56 {
57 delete dataBuffer[i];
58 }
59 free(dataBuffer);
60 }
61
62 void ASMPage::createToolBar()
63 {
64 radio_b1b1 = new QRadioButton(tr("b1b1"));
65 radio_b2b2 = new QRadioButton(tr("b2b2"));
66 radio_b3b3 = new QRadioButton(tr("b3b3"));
67 radio_e1e1 = new QRadioButton(tr("e1e1"));
68 radio_e2e2 = new QRadioButton(tr("e2e2"));
69 radio_tabify = new QRadioButton(tr("tabify"));
70
71 radio_b1b1->setAutoExclusive(false);
72 radio_b2b2->setAutoExclusive(false);
73 radio_b3b3->setAutoExclusive(false);
74 radio_e1e1->setAutoExclusive(false);
75 radio_e2e2->setAutoExclusive(false);
76 radio_tabify->setAutoExclusive(false);
77
78 button_selectAll = new QPushButton(tr("select all"));
79
80 label_storeWfrm = new QLabel("-");
81
82 myToolBar = new QToolBar("select");
83
84 myToolBar->addWidget(radio_b1b1);
85 myToolBar->addWidget(radio_b2b2);
86 myToolBar->addWidget(radio_b3b3);
87 myToolBar->addWidget(radio_e1e1);
88 myToolBar->addWidget(radio_e2e2);
89 myToolBar->addSeparator();
90 myToolBar->addWidget(button_selectAll);
91 myToolBar->addWidget(radio_tabify);
92 myToolBar->addSeparator();
93 myToolBar->addWidget(label_storeWfrm);
94
95 addToolBar(Qt::LeftToolBarArea, myToolBar);
96
97 radio_tabify->setChecked(true);
98
99 connect(this->radio_b1b1, SIGNAL(clicked(bool)), this, SLOT(actionRadioB1B1(bool)));
100 connect(this->radio_b2b2, SIGNAL(clicked(bool)), this, SLOT(actionRadioB2B2(bool)));
101 connect(this->radio_b3b3, SIGNAL(clicked(bool)), this, SLOT(actionRadioB3B3(bool)));
102 connect(this->radio_e1e1, SIGNAL(clicked(bool)), this, SLOT(actionRadioE1E1(bool)));
103 connect(this->radio_e2e2, SIGNAL(clicked(bool)), this, SLOT(actionRadioE2E2(bool)));
104 connect(this->button_selectAll, SIGNAL(clicked()), this, SLOT(selectAll()));
105 connect(this->radio_tabify, SIGNAL(clicked(bool)), this, SLOT(organizeDocks()));
106 }
107
108 void ASMPage::actionRadioB1B1(bool state)
109 {
110 if (state == true)
111 {
112 if (dockB1B1 == NULL)
113 {
114 dockB1B1 = new QDockWidget("B1B1", this);
115 dockB1B1->setWidget(wfPlot_asm_b1b1);
116 dockB1B1->setTitleBarWidget(titleWidgetB1B1);
117 }
118 }
119 else
120 {
121 this->removeDockWidget(dockB1B1);
122 }
123 organizeDocks();
124 }
125
126 void ASMPage::actionRadioB2B2(bool state)
127 {
128 if (state == true)
129 {
130 if (dockB2B2 == NULL)
131 {
132 dockB2B2 = new QDockWidget("B2B2", this);
133 dockB2B2->setWidget(wfPlot_asm_b2b2);
134 dockB2B2->setTitleBarWidget(titleWidgetB2B2);
135 }
136 }
137 else
138 {
139 this->removeDockWidget(dockB2B2);
140 }
141 organizeDocks();
142 }
143
144 void ASMPage::actionRadioB3B3(bool state)
145 {
146 if (state == true)
147 {
148 if (dockB3B3 == NULL)
149 {
150 dockB3B3 = new QDockWidget("B3B3", this);
151 dockB3B3->setWidget(wfPlot_asm_b3b3);
152 dockB3B3->setTitleBarWidget(titleWidgetB3B3);
153 }
154 }
155 else
156 {
157 this->removeDockWidget(dockB3B3);
158 }
159 organizeDocks();
160 }
161
162 void ASMPage::actionRadioE1E1(bool state)
163 {
164 if (state == true)
165 {
166 if (dockE1E1 == NULL)
167 {
168 dockE1E1 = new QDockWidget("E1E1", this);
169 dockE1E1->setWidget(wfPlot_asm_e1e1);
170 dockE1E1->setTitleBarWidget(titleWidgetE1E1);
171 }
172 }
173 else
174 {
175 this->removeDockWidget(dockE1E1);
176 }
177 organizeDocks();
178 }
179
180 void ASMPage::actionRadioE2E2(bool state)
181 {
182 if (state == true)
183 {
184 if (dockE2E2 == NULL)
185 {
186 dockE2E2 = new QDockWidget("E2E2", this);
187 dockE2E2->setWidget(wfPlot_asm_e2e2);
188 dockE2E2->setTitleBarWidget(titleWidgetE2E2);
189 }
190 }
191 else
192 {
193 this->removeDockWidget(dockE2E2);
194 }
195 organizeDocks();
196 }
197
198 void ASMPage::buildDockList()
199 {
200 dockList.clear();
201
202 if (radio_b1b1->isChecked())
203 {
204 dockList.append(dockB1B1);
205 removeDockWidget(dockB1B1);
206 }
207 if (radio_b2b2->isChecked())
208 {
209 dockList.append(dockB2B2);
210 removeDockWidget(dockB2B2);
211 }
212 if (radio_b3b3->isChecked())
213 {
214 dockList.append(dockB3B3);
215 removeDockWidget(dockB3B3);
216 }
217 if (radio_e1e1->isChecked())
218 {
219 dockList.append(dockE1E1);
220 removeDockWidget(dockE1E1);
221 }
222 if (radio_e2e2->isChecked())
223 {
224 dockList.append(dockE2E2);
225 removeDockWidget(dockE2E2);
226 }
227 }
228
229 void ASMPage::organizeDocks()
230 {
231 if (radio_tabify->isChecked())
232 {
233 tabify();
234 }
235 else
236 {
237 unTabify();
238 }
239 wfPlot_asm_b1b1->resize(wfPlot_asm_b1b1->minimumSizeHint());
240 wfPlot_asm_b2b2->resize(wfPlot_asm_b2b2->minimumSizeHint());
241 wfPlot_asm_b3b3->resize(wfPlot_asm_b3b3->minimumSizeHint());
242 wfPlot_asm_e1e1->resize(wfPlot_asm_e1e1->minimumSizeHint());
243 wfPlot_asm_e2e2->resize(wfPlot_asm_e2e2->minimumSizeHint());
244 this->resize(this->minimumSizeHint());
245 }
246
247 void ASMPage::unTabify()
248 {
249 buildDockList();
250
251 switch(dockList.size())
252 {
253 case 0:
254 break;
255 case 1:
256 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
257 dockList.at(0)->show();
258 break;
259 case 2:
260 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
261 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
262 dockList.at(0)->show();
263 dockList.at(1)->show();
264 break;
265 case 3:
266 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
267 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
268 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
269 dockList.at(0)->show();
270 dockList.at(1)->show();
271 dockList.at(2)->show();
272 break;
273 case 4:
274 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
275 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
276 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
277 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
278 dockList.at(0)->show();
279 dockList.at(1)->show();
280 dockList.at(2)->show();
281 dockList.at(3)->show();
282 break;
283 case 5:
284 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
285 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
286 addDockWidget(Qt::TopDockWidgetArea, dockList.at(2));
287 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
288 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(4));
289 dockList.at(0)->show();
290 dockList.at(1)->show();
291 dockList.at(2)->show();
292 dockList.at(3)->show();
293 dockList.at(4)->show();
294 break;
295 default:
296 break;
297 }
298 }
299
300 void ASMPage::tabify()
301 {
302 buildDockList();
303
304 switch(dockList.size())
305 {
306 case 0:
307 break;
308 case 1:
309 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
310 dockList.at(0)->show();
311 break;
312 case 2:
313 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
314 tabifyDockWidget(dockList.at(0), dockList.at(1));
315 dockList.at(0)->show();
316 dockList.at(1)->show();
317 break;
318 case 3:
319 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
320 tabifyDockWidget(dockList.at(0), dockList.at(1));
321 tabifyDockWidget(dockList.at(1), dockList.at(2));
322 dockList.at(0)->show();
323 dockList.at(1)->show();
324 dockList.at(2)->show();
325 break;
326 case 4:
327 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
328 tabifyDockWidget(dockList.at(0), dockList.at(1));
329 tabifyDockWidget(dockList.at(1), dockList.at(2));
330 tabifyDockWidget(dockList.at(2), dockList.at(3));
331 dockList.at(0)->show();
332 dockList.at(1)->show();
333 dockList.at(2)->show();
334 dockList.at(3)->show();
335 break;
336 case 5:
337 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
338 tabifyDockWidget(dockList.at(0), dockList.at(1));
339 tabifyDockWidget(dockList.at(1), dockList.at(2));
340 tabifyDockWidget(dockList.at(2), dockList.at(3));
341 tabifyDockWidget(dockList.at(3), dockList.at(4));
342 dockList.at(0)->show();
343 dockList.at(1)->show();
344 dockList.at(2)->show();
345 dockList.at(3)->show();
346 dockList.at(4)->show();
347 break;
348 default:
349 break;
350 }
351 }
352
353 void ASMPage::selectAll()
354 {
355 radio_b1b1->click();
356 radio_b2b2->click();
357 radio_b3b3->click();
358 radio_e1e1->click();
359 radio_e2e2->click();
360 }
361
362 void ASMPage::storeWfrm()
363 {
364 if (logFileEn == false)
365 {
366 buildFileName();
367 label_storeWfrm->setText("Recording...");
368 logFileEn = true;
369 }
370 else
371 {
372 // disable storage
373 storageEnabled = false;
374 label_storeWfrm->setText("-");
375 logFileEn = false;
376 }
377 }
378
379 void ASMPage::buildFileName()
380 {
381 QTime time;
382 QDate date;
383 QString dateTime;
384 QString prefix;
385
386 date = QDate::currentDate();
387 time = QTime::currentTime();
388
389 dateTime = QString::number( date.year() ) + "_"
390 + QString::number( date.month() ) + "_"
391 + QString::number( date.day() ) + "-"
392 + QString::number( time.hour() ) + "_"
393 + QString::number( time.minute() ) + "_"
394 + QString::number( time.second() );
395
396 prefix = defaultStorageDirectory + "/" + dateTime + "_" + pageTitle ;
397
398 if(this->logFile->isOpen()) this->logFile->close();
399 this->logFile->setFileName( prefix + ".data");
400 if(this->logFile->open(QIODevice::WriteOnly)) this->logFileStrm = new QTextStream(this->logFile);
401
402 *(this->logFileStrm) << "time V E1 E2 B1 B2 B3" << endl;
403
404 storageEnabled = true;
405
406 }
407
408 void ASMPage::displayOnPlot(float *data, unsigned char num, unsigned char asm_indice_start, double deltaF, unsigned int nbData)
409 {
410 fillDataBuffer( data, num, asm_indice_start, deltaF, nbData );
411
412 switch(num){
413 case 0:
414 wfPlot_asm_b1b1->displayOnPlotFloat(data, nbData);
415 break;
416
417 case 1:
418 wfPlot_asm_b2b2->displayOnPlotFloat(data, nbData);
419 break;
420
421 case 2:
422 wfPlot_asm_b3b3->displayOnPlotFloat(data, nbData);
423 break;
424
425 case 3:
426 wfPlot_asm_e1e1->displayOnPlotFloat(data, nbData);
427 break;
428
429 case 4:
430 wfPlot_asm_e2e2->displayOnPlotFloat(data, nbData);
431 break;
432
433 default:
434 break;
435 }
436 }
437
438 void ASMPage::initDataBuffer()
439 {
440 for (unsigned int i = 0; i < localBufferSize; i++)
441 {
442 dataBuffer[i]->clear();
443 }
444 }
445
446 void ASMPage::fillDataBuffer(float *data, unsigned char num, unsigned char asm_indice_start, double deltaF, unsigned int nbData)
447 {
448 double frequencyBin;
449 QByteArray frequencyBinQByteArray;
450
451 if ( (storageEnabled == true) | (allowDataStorage == true) ) // store data in buffers
452 {
453 switch(num) {
454
455 case 0 :
456 initDataBuffer();
457 frequencyBin = 0;
458 for (unsigned int i=0; i<nbData; i++)
459 {
460 frequencyBin = asm_indice_start * deltaF
461 + deltaF * ((double) i);
462 frequencyBinQByteArray.setNum( frequencyBin, 'f', 10 );
463 dataBuffer[i]->append( frequencyBinQByteArray + ' ' + QByteArray::number(data[i]) );
464 }
465 allowDataStorage = true;
466 break;
467
468 case 1 :
469 case 2 :
470 case 3 :
471 if (allowDataStorage==true) {
472 for (unsigned int i=0; i<nbData; i++)
473 {
474 dataBuffer[i]->append( ' ' + QByteArray::number(data[i]) );
475 }
476 }
477 break;
478
479 case 4 :
480 if (allowDataStorage==true) {
481 for (unsigned int i=0; i<nbData; i++)
482 {
483 dataBuffer[i]->append( ' ' + QByteArray::number(data[i]) );
484 }
485 storeDataBuffer( nbData );
486 allowDataStorage = false;
487 }
488 break;
489
490 default:
491 break;
492
493 }
494 }
495 }
496
497 void ASMPage::storeDataBuffer(unsigned int nbData)
498 {
499 for (unsigned int i = 0; i < nbData; i++ )
500 {
501 *(this->logFileStrm) << *dataBuffer[i] << endl;
502 }
503 if (storageEnabled == false){
504 this->logFileStrm->flush();
505 this->logFile->waitForBytesWritten(3000);
506 this->logFile->close();
507 }
508 }
509
510 void ASMPage::setDefaultStorageDirectory(QString nameOfTheDirectory)
511 {
512 defaultStorageDirectory = nameOfTheDirectory;
513 }
@@ -0,0 +1,97
1 #ifndef ASMPAGE_H
2 #define ASMPAGE_H
3
4 #include <QMainWindow>
5 #include <QFile>
6 #include <QTextStream>
7 #include <QLabel>
8 #include <QRadioButton>
9 #include <QPushButton>
10
11 #include "wfplot.h"
12
13 class ASMPage : public QMainWindow
14 {
15 Q_OBJECT
16 public:
17 explicit ASMPage(QWidget *parent = 0, unsigned int bufferSize = 0, unsigned int xMAX = 0, unsigned int yMAX = 0);
18 ~ASMPage();
19
20 void createToolBar();
21 void buildDockList();
22 void unTabify();
23 void tabify();
24 // STORE
25 void buildFileName();
26
27 bool logFileEn;
28 bool storageEnabled;
29
30 QLabel *logFileName;
31 QLabel *label_storeWfrm;
32
33 QWidget *titleWidgetB1B1;
34 QWidget *titleWidgetB2B2;
35 QWidget *titleWidgetB3B3;
36 QWidget *titleWidgetE1E1;
37 QWidget *titleWidgetE2E2;
38
39 unsigned int localBufferSize;
40 QByteArray **dataBuffer;
41
42 QList<QDockWidget*> dockList;
43
44 QDockWidget *dockB1B1;
45 QDockWidget *dockB2B2;
46 QDockWidget *dockB3B3;
47 QDockWidget *dockE1E1;
48 QDockWidget *dockE2E2;
49
50 QRadioButton *radio_b1b1;
51 QRadioButton *radio_b2b2;
52 QRadioButton *radio_b3b3;
53 QRadioButton *radio_e1e1;
54 QRadioButton *radio_e2e2;
55 QRadioButton *radio_tabify;
56
57 QPushButton *button_selectAll;
58 QPushButton *button_storeWfrm;
59
60 QToolBar *myToolBar;
61
62 WFPlot *wfPlot_asm_b1b1;
63 WFPlot *wfPlot_asm_b2b2;
64 WFPlot *wfPlot_asm_b3b3;
65 WFPlot *wfPlot_asm_e1e1;
66 WFPlot *wfPlot_asm_e2e2;
67
68 QFile *logFile;
69
70 QTextStream *logFileStrm;
71
72 QString pageTitle;
73 QString defaultStorageDirectory;
74
75 void displayOnPlot(float *data, unsigned char num, unsigned char asm_indice_start, double deltaF, unsigned int nbData);
76 void initDataBuffer();
77 void fillDataBuffer(float *data, unsigned char num, unsigned char asm_indice_start, double deltaF, unsigned int nbData);
78 void storeDataBuffer(unsigned int nbData);
79
80 bool allowDataStorage;
81
82 signals:
83
84 public slots:
85 void actionRadioB1B1(bool state);
86 void actionRadioB2B2(bool state);
87 void actionRadioB3B3(bool state);
88 void actionRadioE1E1(bool state);
89 void actionRadioE2E2(bool state);
90 void organizeDocks();
91 void selectAll();
92 void storeWfrm();
93 void setDefaultStorageDirectory(QString nameOfTheDirectory);
94
95 };
96
97 #endif // ASMPAGE_H
This diff has been collapsed as it changes many lines, (580 lines changed) Show them Hide them
@@ -0,0 +1,580
1 #include "pagespectra.h"
2 #include <stdio.h>
3
4 PageSpectra::PageSpectra(QWidget *parent) :
5 QMainWindow(parent)
6 {
7 unsigned int i = 0;
8
9 for (i = 0; i<6; i++)
10 {
11 localIndex[i] = 0;
12 }
13
14 pageTitle = "default";
15 wfPlot_v = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
16 wfPlot_e1 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
17 wfPlot_e2 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
18 wfPlot_b1 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
19 wfPlot_b2 = new WFPlot(this, WFDISPLAY_XMAX, WFDISPLAY_YMAX);
20 //
21 wfPlot_v->customPlot->setTitle("s11");
22 wfPlot_e1->customPlot->setTitle("s22");
23 wfPlot_e2->customPlot->setTitle("s33");
24 wfPlot_b1->customPlot->setTitle("s44");
25 wfPlot_b2->customPlot->setTitle("s55");
26 //
27 /*mainLayout = new QGridLayout;
28 mainLayout->addWidget(wfPlot_v, 0, 0, 1, 1);
29 mainLayout->addWidget(wfPlot_e1, 0, 1, 1, 1);
30 mainLayout->addWidget(wfPlot_e2, 0, 2, 1, 1);
31 mainLayout->addWidget(wfPlot_b1, 1, 0, 1, 1);
32 mainLayout->addWidget(wfPlot_b2, 1, 1, 1, 1);
33 mainLayout->addWidget(wfPlot_b3, 1, 2, 1, 1);*/
34 //
35 dockV = NULL;
36 dockE1 = NULL;
37 dockE2 = NULL;
38 dockB1 = NULL;
39 dockB2 = NULL;
40
41 titleWidgetV = new QWidget();
42 titleWidgetE1 = new QWidget();
43 titleWidgetE2 = new QWidget();
44 titleWidgetB1 = new QWidget();
45 titleWidgetB2 = new QWidget();
46
47 logFileName = new QLabel();
48 logFile = new QFile();
49 logFileV = new QFile();
50 logFileE1 = new QFile();
51 logFileE2 = new QFile();
52 logFileB1 = new QFile();
53 logFileB2 = new QFile();
54
55 logFileEn = false;
56 storageEnabledV = false;
57 storageEnabledE1 = false;
58 storageEnabledE2 = false;
59 storageEnabledB1 = false;
60 storageEnabledB2 = false;
61
62 createToolBar();
63 readSettings();
64 }
65
66 void PageSpectra::displayOnPlot(short *data, unsigned char num)
67 {
68 QByteArray dataByteArray;
69 unsigned int i;
70
71 switch(num){
72 case 0:
73 wfPlot_v->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
74 if ( (storageEnabledV == true) && (logFileV->isOpen()) )
75 {
76 for (i=0; i<DEFAULT_SIZE; i++)
77 {
78 dataByteArray.clear();
79 dataByteArray.append(QByteArray::number(localIndex[0]));
80 dataByteArray.append(' ');
81 dataByteArray.append(QByteArray::number(data[i]));
82 *(this->logFileStrmV) << dataByteArray << endl;
83 localIndex[0]++;
84 }
85 }
86 break;
87 case 1:
88 wfPlot_e1->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
89 break;
90 case 2:
91 wfPlot_e2->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
92 break;
93 case 3:
94 wfPlot_b1->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
95 break;
96 case 4:
97 wfPlot_b2->displayOnPlot(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
98 break;
99 default:
100 break;
101 }
102 }
103
104 void PageSpectra::displayOnPlotFloat(float *data, unsigned char num)
105 {
106 QByteArray dataByteArray;
107 unsigned int i;
108
109 switch(num){
110 case 0:
111 wfPlot_v->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
112 if ( (storageEnabledV == true) && (logFileV->isOpen()) )
113 {
114 for (i=0; i<DEFAULT_SIZE; i++)
115 {
116 dataByteArray.clear();
117 dataByteArray.append(QByteArray::number(localIndex[0]));
118 dataByteArray.append(' ');
119 dataByteArray.append(QByteArray::number(data[i]));
120 *(this->logFileStrmV) << dataByteArray << endl;
121 localIndex[0]++;
122 }
123 }
124 break;
125 case 1:
126 wfPlot_e1->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
127 break;
128 case 2:
129 wfPlot_e2->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
130 break;
131 case 3:
132 wfPlot_b1->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
133 break;
134 case 4:
135 wfPlot_b2->displayOnPlotFloat(data, WFDISPLAY_DEFAULT_SPECTRA_SIZE);
136 break;
137 default:
138 break;
139 }
140 }
141
142 void PageSpectra::createToolBar()
143 {
144 radio_v = new QRadioButton(tr("s11"));
145 radio_e1 = new QRadioButton(tr("s22"));
146 radio_e2 = new QRadioButton(tr("s33"));
147 radio_b1 = new QRadioButton(tr("s44"));
148 radio_b2 = new QRadioButton(tr("s55"));
149 radio_tabify = new QRadioButton(tr("tabify"));
150
151 radio_v->setAutoExclusive(false);
152 radio_e1->setAutoExclusive(false);
153 radio_e2->setAutoExclusive(false);
154 radio_b1->setAutoExclusive(false);
155 radio_b2->setAutoExclusive(false);
156 radio_tabify->setAutoExclusive(false);
157
158 button_selectAll = new QPushButton(tr("select all"));
159 button_storeWfrm = new QPushButton(tr("REC"));
160 button_chooseDir = new QPushButton(tr("choose dir"));
161
162 myToolBar = new QToolBar("select");
163
164 myToolBar->addWidget(radio_v);
165 myToolBar->addWidget(radio_e1);
166 myToolBar->addWidget(radio_e2);
167 myToolBar->addWidget(radio_b1);
168 myToolBar->addWidget(radio_b2);
169 myToolBar->addSeparator();
170 myToolBar->addWidget(button_selectAll);
171 myToolBar->addWidget(radio_tabify);
172 myToolBar->addSeparator();
173 myToolBar->addWidget(button_storeWfrm);
174 myToolBar->addWidget(button_chooseDir);
175
176 addToolBar(Qt::LeftToolBarArea, myToolBar);
177
178 radio_tabify->setChecked(true);
179
180 connect(this->radio_v, SIGNAL(clicked(bool)), this, SLOT(actionRadioV(bool)));
181 connect(this->radio_e1, SIGNAL(clicked(bool)), this, SLOT(actionRadioE1(bool)));
182 connect(this->radio_e2, SIGNAL(clicked(bool)), this, SLOT(actionRadioE2(bool)));
183 connect(this->radio_b1, SIGNAL(clicked(bool)), this, SLOT(actionRadioB1(bool)));
184 connect(this->radio_b2, SIGNAL(clicked(bool)), this, SLOT(actionRadioB2(bool)));
185 connect(this->button_selectAll, SIGNAL(clicked()), this, SLOT(selectAll()));
186 connect(this->radio_tabify, SIGNAL(clicked(bool)), this, SLOT(organizeDocks()));
187 connect(this->button_storeWfrm, SIGNAL(clicked()), this, SLOT(storeWfrm()));
188 connect(this->button_chooseDir, SIGNAL(clicked()), this, SLOT(chooseDir()));
189 }
190
191 void PageSpectra::actionRadioV(bool state)
192 {
193 if (state == true)
194 {
195 if (dockV == NULL)
196 {
197 dockV = new QDockWidget("V", this);
198 dockV->setWidget(wfPlot_v);
199 dockV->setTitleBarWidget(titleWidgetV);
200 }
201 }
202 else
203 {
204 this->removeDockWidget(dockV);
205 }
206 organizeDocks();
207 }
208
209 void PageSpectra::actionRadioE1(bool state)
210 {
211 if (state == true)
212 {
213 if (dockE1 == NULL)
214 {
215 dockE1 = new QDockWidget("E1", this);
216 dockE1->setWidget(wfPlot_e1);
217 dockE1->setTitleBarWidget(titleWidgetE1);
218 }
219 }
220 else
221 {
222 this->removeDockWidget(dockE1);
223 }
224 organizeDocks();
225 }
226
227 void PageSpectra::actionRadioE2(bool state)
228 {
229 if (state == true)
230 {
231 if (dockE2 == NULL)
232 {
233 dockE2 = new QDockWidget("E2", this);
234 dockE2->setWidget(wfPlot_e2);
235 dockE2->setTitleBarWidget(titleWidgetE2);
236 }
237 }
238 else
239 {
240 this->removeDockWidget(dockE2);
241 }
242 organizeDocks();
243 }
244
245 void PageSpectra::actionRadioB1(bool state)
246 {
247 if (state == true)
248 {
249 if (dockB1 == NULL)
250 {
251 dockB1 = new QDockWidget("B1", this);
252 dockB1->setWidget(wfPlot_b1);
253 dockB1->setTitleBarWidget(titleWidgetB1);
254 }
255 }
256 else
257 {
258 this->removeDockWidget(dockB1);
259 }
260 organizeDocks();
261 }
262
263 void PageSpectra::actionRadioB2(bool state)
264 {
265 if (state == true)
266 {
267 if (dockB2 == NULL)
268 {
269 dockB2 = new QDockWidget("B2", this);
270 dockB2->setWidget(wfPlot_b2);
271 dockB2->setTitleBarWidget(titleWidgetB2);
272 }
273 }
274 else
275 {
276 this->removeDockWidget(dockB2);
277 }
278 organizeDocks();
279 }
280
281 void PageSpectra::buildDockList()
282 {
283 dockList.clear();
284
285 if (radio_v->isChecked())
286 {
287 dockList.append(dockV);
288 removeDockWidget(dockV);
289 }
290 if (radio_e1->isChecked())
291 {
292 dockList.append(dockE1);
293 removeDockWidget(dockE1);
294 }
295 if (radio_e2->isChecked())
296 {
297 dockList.append(dockE2);
298 removeDockWidget(dockE2);
299 }
300 if (radio_b1->isChecked())
301 {
302 dockList.append(dockB1);
303 removeDockWidget(dockB1);
304 }
305 if (radio_b2->isChecked())
306 {
307 dockList.append(dockB2);
308 removeDockWidget(dockB2);
309 }
310 }
311
312 void PageSpectra::organizeDocks()
313 {
314 if (radio_tabify->isChecked())
315 {
316 tabify();
317 }
318 else
319 {
320 unTabify();
321 }
322 wfPlot_v->resize(wfPlot_v->minimumSizeHint());
323 wfPlot_e1->resize(wfPlot_e1->minimumSizeHint());
324 wfPlot_e2->resize(wfPlot_e2->minimumSizeHint());
325 wfPlot_b1->resize(wfPlot_b1->minimumSizeHint());
326 wfPlot_b2->resize(wfPlot_b2->minimumSizeHint());
327 this->resize(this->minimumSizeHint());
328 }
329
330 void PageSpectra::unTabify()
331 {
332 buildDockList();
333
334 switch(dockList.size())
335 {
336 case 0:
337 break;
338 case 1:
339 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
340 dockList.at(0)->show();
341 break;
342 case 2:
343 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
344 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
345 dockList.at(0)->show();
346 dockList.at(1)->show();
347 break;
348 case 3:
349 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
350 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
351 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
352 dockList.at(0)->show();
353 dockList.at(1)->show();
354 dockList.at(2)->show();
355 break;
356 case 4:
357 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
358 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
359 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
360 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
361 dockList.at(0)->show();
362 dockList.at(1)->show();
363 dockList.at(2)->show();
364 dockList.at(3)->show();
365 break;
366 case 5:
367 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
368 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
369 addDockWidget(Qt::TopDockWidgetArea, dockList.at(2));
370 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
371 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(4));
372 dockList.at(0)->show();
373 dockList.at(1)->show();
374 dockList.at(2)->show();
375 dockList.at(3)->show();
376 dockList.at(4)->show();
377 break;
378 default:
379 break;
380 }
381 }
382
383 void PageSpectra::tabify()
384 {
385 buildDockList();
386
387 switch(dockList.size())
388 {
389 case 0:
390 break;
391 case 1:
392 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
393 dockList.at(0)->show();
394 break;
395 case 2:
396 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
397 tabifyDockWidget(dockList.at(0), dockList.at(1));
398 dockList.at(0)->show();
399 dockList.at(1)->show();
400 break;
401 case 3:
402 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
403 tabifyDockWidget(dockList.at(0), dockList.at(1));
404 tabifyDockWidget(dockList.at(1), dockList.at(2));
405 dockList.at(0)->show();
406 dockList.at(1)->show();
407 dockList.at(2)->show();
408 break;
409 case 4:
410 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
411 tabifyDockWidget(dockList.at(0), dockList.at(1));
412 tabifyDockWidget(dockList.at(1), dockList.at(2));
413 tabifyDockWidget(dockList.at(2), dockList.at(3));
414 dockList.at(0)->show();
415 dockList.at(1)->show();
416 dockList.at(2)->show();
417 dockList.at(3)->show();
418 break;
419 case 5:
420 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
421 tabifyDockWidget(dockList.at(0), dockList.at(1));
422 tabifyDockWidget(dockList.at(1), dockList.at(2));
423 tabifyDockWidget(dockList.at(2), dockList.at(3));
424 tabifyDockWidget(dockList.at(3), dockList.at(4));
425 dockList.at(0)->show();
426 dockList.at(1)->show();
427 dockList.at(2)->show();
428 dockList.at(3)->show();
429 dockList.at(4)->show();
430 break;
431 case 6:
432 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
433 tabifyDockWidget(dockList.at(0), dockList.at(1));
434 tabifyDockWidget(dockList.at(1), dockList.at(2));
435 tabifyDockWidget(dockList.at(2), dockList.at(3));
436 tabifyDockWidget(dockList.at(3), dockList.at(4));
437 tabifyDockWidget(dockList.at(4), dockList.at(5));
438 dockList.at(0)->show();
439 dockList.at(1)->show();
440 dockList.at(2)->show();
441 dockList.at(3)->show();
442 dockList.at(4)->show();
443 dockList.at(5)->show();
444 break;
445 default:
446 break;
447 }
448 }
449
450 void PageSpectra::selectAll()
451 {
452 radio_v->click();
453 radio_e1->click();
454 radio_e2->click();
455 radio_b1->click();
456 radio_b2->click();
457 }
458
459 void PageSpectra::storeWfrm()
460 {
461 if (logFileEn == false)
462 {
463 buildFileNames();
464 button_storeWfrm->setText(tr("STOP"));
465 logFileEn = true;
466 }
467 else
468 {
469 if(this->logFileV->isOpen()) this->logFileV->close();
470 if(this->logFileE1->isOpen()) this->logFileE1->close();
471 if(this->logFileE2->isOpen()) this->logFileE2->close();
472 // disable all storage
473 storageEnabledV = false;
474 storageEnabledE1 = false;
475 storageEnabledE2 = false;
476 storageEnabledB1 = false;
477 storageEnabledB2 = false;
478 button_storeWfrm->setText(tr("REC"));
479 logFileEn = false;
480 }
481 }
482
483 void PageSpectra::buildFileNames()
484 {
485 QString date;
486 QString time;
487 QString prefix;
488
489 date = QDate::currentDate().toString();
490 time = QTime::currentTime().toString();
491
492 prefix = defaultStorageDirectory + "/" + date + "_" + time + "_" + pageTitle ;
493
494 if (radio_v->isChecked())
495 {
496 if(this->logFileV->isOpen()) this->logFileV->close();
497 this->logFileV->setFileName( prefix + "_V.data");
498 if(this->logFileV->open(QIODevice::WriteOnly)) this->logFileStrmV = new QTextStream(this->logFileV);
499 storageEnabledV = true;
500 }
501 if (radio_e1->isChecked())
502 {
503 if(this->logFileE1->isOpen()) this->logFileE1->close();
504 this->logFileE1->setFileName( prefix + "_E1.data");
505 if(this->logFileE1->open(QIODevice::WriteOnly)) this->logFileStrmE1 = new QTextStream(this->logFileE1);
506 storageEnabledE1 = true;
507 }
508 if (radio_e2->isChecked())
509 {
510 if(this->logFileE2->isOpen()) this->logFileE2->close();
511 this->logFileE2->setFileName( prefix + "_E2.data");
512 if(this->logFileE2->open(QIODevice::WriteOnly)) this->logFileStrmE2 = new QTextStream(this->logFileE2);
513 storageEnabledE2 = true;
514 }
515 if (radio_b1->isChecked())
516 {
517
518 }
519 if (radio_b2->isChecked())
520 {
521
522 }
523 }
524
525 void PageSpectra::logFileEnDisable(bool state)
526 {
527 if(state==true)
528 {
529 this->logFileEn = true;
530 }
531 else if(state==false)
532 {
533 this->logFileEn = false;
534 }
535 }
536
537 bool PageSpectra::islogfileenable()
538 {
539 return this->logFileEn;
540 }
541
542 void PageSpectra::appendToLogFile(const QString & text)
543 {
544 if(this->logFileEn && this->logFile->isOpen())
545 {
546 *(this->logFileStrm) << text << endl;
547 }
548 }
549
550 void PageSpectra::closeEvent(QCloseEvent *event)
551 {
552 if(this->logFile->isOpen())
553 {
554 this->logFileStrm->flush();
555 this->logFile->waitForBytesWritten(3000);
556 this->logFile->close();
557 }
558 writeSettings();
559 event->accept();
560 }
561
562 void PageSpectra::readSettings()
563 {
564 QSettings settings("lpp", "lfrsgse");
565 defaultStorageDirectory = settings.value("defaultStorageDirectory", QDir::homePath()).toString();
566 }
567
568 void PageSpectra::writeSettings()
569 {
570 QSettings settings("lpp", "lfrsgse");
571 settings.setValue("defaultStorageDirectory", defaultStorageDirectory);
572 }
573
574 void PageSpectra::chooseDir()
575 {
576 defaultStorageDirectory = QFileDialog::getExistingDirectory(this,
577 "choose the directory",
578 QDir::homePath(),
579 QFileDialog::ShowDirsOnly);
580 }
@@ -0,0 +1,125
1 #ifndef PAGESPECTRA_H
2 #define PAGESPECTRA_H
3
4 #include <QMainWindow>
5 #include <QRadioButton>
6 #include <QPushButton>
7 #include <QDockWidget>
8 #include <QToolBar>
9 #include <QLabel>
10 #include <QFile>
11 #include <QTextStream>
12 #include <QFileDialog>
13 #include <QSettings>
14
15 #include <wfplot.h>
16 #include <wfdisplay_params.h>
17
18 class PageSpectra : public QMainWindow
19 {
20 Q_OBJECT
21 public:
22 explicit PageSpectra(QWidget *parent = 0);
23
24 void createToolBar();
25 void buildDockList();
26 void unTabify();
27 void tabify();
28 // STORE
29 void buildFileNames();
30 bool islogfileenable();
31 void appendToLogFile(const QString & text);
32 void closeEvent(QCloseEvent *event);
33 void readSettings();
34 void writeSettings();
35
36 bool logFileEn;
37 bool storageEnabledV;
38 bool storageEnabledE1;
39 bool storageEnabledE2;
40 bool storageEnabledB1;
41 bool storageEnabledB2;
42
43 QLabel *logFileName;
44 QLabel *logFileNameV;
45 QLabel *logFileNameE1;
46 QLabel *logFileNameE2;
47 QLabel *logFileNameB1;
48 QLabel *logFileNameB2;
49
50 QWidget *titleWidgetV;
51 QWidget *titleWidgetE1;
52 QWidget *titleWidgetE2;
53 QWidget *titleWidgetB1;
54 QWidget *titleWidgetB2;
55
56 QList<QDockWidget*> dockList;
57
58 QDockWidget *dockV;
59 QDockWidget *dockE1;
60 QDockWidget *dockE2;
61 QDockWidget *dockB1;
62 QDockWidget *dockB2;
63
64 QRadioButton *radio_v;
65 QRadioButton *radio_e1;
66 QRadioButton *radio_e2;
67 QRadioButton *radio_b1;
68 QRadioButton *radio_b2;
69 QRadioButton *radio_tabify;
70
71 QPushButton *button_selectAll;
72 QPushButton *button_storeWfrm;
73 QPushButton *button_chooseDir;
74
75 QToolBar *myToolBar;
76
77 WFPlot *wfPlot_v;
78 WFPlot *wfPlot_e1;
79 WFPlot *wfPlot_e2;
80 WFPlot *wfPlot_b1;
81 WFPlot *wfPlot_b2;
82
83 QFile *logFile;
84 QFile *logFileV;
85 QFile *logFileE1;
86 QFile *logFileE2;
87 QFile *logFileB1;
88 QFile *logFileB2;
89
90 QTextStream *logFileStrm;
91 QTextStream *logFileStrmV;
92 QTextStream *logFileStrmE1;
93 QTextStream *logFileStrmE2;
94 QTextStream *logFileStrmB1;
95 QTextStream *logFileStrmB2;
96
97 QString pageTitle;
98 QString defaultStorageDirectory;
99
100 unsigned int localIndex[5];
101
102 //QGridLayout *mainLayout;
103
104 void displayOnPlot(short *data, unsigned char num);
105 void displayOnPlotFloat(float *data, unsigned char num);
106
107 signals:
108 void setLogFileName(QString FileName);
109
110 public slots:
111 void actionRadioV(bool state);
112 void actionRadioE1(bool state);
113 void actionRadioE2(bool state);
114 void actionRadioB1(bool state);
115 void actionRadioB2(bool state);
116 void organizeDocks();
117 void selectAll();
118 void storeWfrm();
119 void logFileEnDisable(bool state);
120 void chooseDir();
121
122
123 };
124
125 #endif // PAGESPECTRA_H
@@ -0,0 +1,57
1 #include "wfdisplay.h"
2
3
4 WFDisplay::WFDisplay(QWidget *parent, unsigned int bufferSize, unsigned int xMAX, unsigned int yMAX) :
5 QWidget(parent)
6 {
7 waveforms_LAYOUT = new QVBoxLayout;
8
9 spwTabWidget = new QTabWidget;
10
11 page_f0 = new WFPage( 0, bufferSize, xMAX, yMAX );
12 page_f1 = new WFPage( 0, bufferSize, xMAX, yMAX );
13 page_f2 = new WFPage( 0, bufferSize, xMAX, yMAX );
14 page_f3 = new WFPage( 0, bufferSize, xMAX, yMAX );
15
16 page_f0->pageTitle = "NORM_SWF_F0";
17 page_f1->pageTitle = "NORM_SWF_F1";
18 page_f2->pageTitle = "NORM_SWF_F2";
19 page_f3->pageTitle = "NORM_CWF_F3";
20
21 spwTabWidget->addTab(page_f0, tr("f0 (24576 Hz)"));
22 spwTabWidget->addTab(page_f1, tr("f1 (4096 Hz"));
23 spwTabWidget->addTab(page_f2, tr("f2 (256 Hz)"));
24 spwTabWidget->addTab(page_f3, tr("f3 (16 Hz)"));
25
26 waveforms_LAYOUT->addWidget(spwTabWidget);
27
28 this->setLayout(waveforms_LAYOUT);
29
30 }
31
32 void WFDisplay::displayOnPlot(short *data, unsigned char num_page, unsigned char num,
33 unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData)
34 {
35 QVector<double> x(nbData), y(nbData);
36
37 for (unsigned int i=0; i<nbData; ++i)
38 {
39 x[i] = i;
40 y[i] = (double) data[i];
41 }
42 switch(num_page){
43 case 0:
44 page_f0->displayOnPlot(data, num, coarseTime, fineTime, deltaT, nbData);
45 break;
46 case 1:
47 page_f1->displayOnPlot(data, num, coarseTime, fineTime, deltaT, nbData);
48 break;
49 case 2:
50 page_f2->displayOnPlot(data, num, coarseTime, fineTime, deltaT, nbData);
51 break;
52 case 3:
53 page_f3->displayOnPlot(data, num, coarseTime, fineTime, deltaT, nbData);
54 break;
55 }
56
57 }
@@ -0,0 +1,35
1 #ifndef WFDISPLAY_H
2 #define WFDISPLAY_H
3
4 #include <QWidget>
5 #include <QGridLayout>
6 #include <QVBoxLayout>
7 #include <QTabWidget>
8 #include <wfpage.h>
9
10 class WFDisplay : public QWidget
11 {
12 Q_OBJECT
13 public:
14 explicit WFDisplay(QWidget *parent = 0, unsigned int bufferSize = 0, unsigned int xMAX = 0, unsigned int yMAX = 0);
15
16 WFPage * page_f0;
17 WFPage * page_f1;
18 WFPage * page_f2;
19 WFPage * page_f3;
20
21 QTabWidget *spwTabWidget;
22
23 QVBoxLayout *waveforms_LAYOUT;
24
25 void displayOnPlot(short *data, unsigned char num_page, unsigned char num,
26 unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData);
27
28 signals:
29
30 public slots:
31
32 };
33
34
35 #endif // WFDISPLAY_H
@@ -0,0 +1,56
1 #-------------------------------------------------
2 #
3 # Project created by QtCreator 2013-05-31T12:59:38
4 #
5 #-------------------------------------------------
6
7 TARGET = wfdisplay
8 TEMPLATE = lib
9 QT += core xml svg network
10
11 contains(QT_MAJOR_VERSION, 5) {
12
13 QT += widgets
14
15 QT += printsupport
16
17 }
18 INCLUDEPATH += \
19 $${PWD} \
20 $$[QT_INSTALL_HEADERS]/lppmon/common
21
22 LIBS += -llppmoncommon
23
24 DEFINES += WFDISPLAY_LIBRARY
25
26 SOURCES += wfdisplay.cpp \
27 wfplot.cpp \
28 wfpage.cpp \
29 pagespectra.cpp \
30 asmpage.cpp
31
32
33 HEADERS += wfdisplay.h\
34 wfplot.h \
35 wfpage.h \
36 wfdisplay_params.h \
37 pagespectra.h \
38 asmpage.h
39
40
41 header.path = $$[QT_INSTALL_HEADERS]/lppmon/wfdisplay
42 header.files = \
43 wfdisplay.h \
44 wfdisplay_global.h \
45 wfpage.h \
46 wfplot.h \
47 wfdisplay_params.h \
48 pagespectra.h \
49 asmpage.h
50
51 target.path = $$[QT_INSTALL_LIBS]
52 isEmpty(target.path) {
53 target.path = $(QTDIR)/lib
54 }
55
56 INSTALLS += header target
@@ -0,0 +1,10
1 #ifndef WFDISPLAY_PARAMS_H
2 #define WFDISPLAY_PARAMS_H
3
4 #define FONT_SIZE_WAVEFORM_TITLE 10
5 #define WFDISPLAY_XMAX 2048
6 #define WFDISPLAY_YMAX 15000
7 #define DEFAULT_SIZE 2048
8 #define WFDISPLAY_DEFAULT_SPECTRA_SIZE 128
9
10 #endif // WFDISPLAY_PARAMS_H
This diff has been collapsed as it changes many lines, (616 lines changed) Show them Hide them
@@ -0,0 +1,616
1 #include "wfpage.h"
2 #include <stdio.h>
3
4 WFPage::WFPage(QWidget *parent, unsigned int bufferSize, unsigned int xMAX, unsigned int yMAX) :
5 QMainWindow(parent)
6 {
7 unsigned int i;
8 localBufferSize = bufferSize;
9 // memory allocation of the data buffer
10 dataBuffer = (QByteArray**) malloc( localBufferSize * sizeof(QByteArray*) );
11 for (i=0; i<localBufferSize; i++)
12 {
13 dataBuffer[i] = new QByteArray;
14 }
15
16 pageTitle = "default";
17 wfPlot_v = new WFPlot(this, xMAX, yMAX);
18 wfPlot_e1 = new WFPlot(this, xMAX, yMAX);
19 wfPlot_e2 = new WFPlot(this, xMAX, yMAX);
20 wfPlot_b1 = new WFPlot(this, xMAX, yMAX);
21 wfPlot_b2 = new WFPlot(this, xMAX, yMAX);
22 wfPlot_b3 = new WFPlot(this, xMAX, yMAX);
23 //
24 wfPlot_v->customPlot->setTitle("v");
25 wfPlot_e1->customPlot->setTitle("e1");
26 wfPlot_e2->customPlot->setTitle("e2");
27 wfPlot_b1->customPlot->setTitle("b1");
28 wfPlot_b2->customPlot->setTitle("b2");
29 wfPlot_b3->customPlot->setTitle("b3");
30 //
31 dockV = NULL;
32 dockE1 = NULL;
33 dockE2 = NULL;
34 dockB1 = NULL;
35 dockB2 = NULL;
36 dockB3 = NULL;
37
38 titleWidgetV = new QWidget();
39 titleWidgetE1 = new QWidget();
40 titleWidgetE2 = new QWidget();
41 titleWidgetB1 = new QWidget();
42 titleWidgetB2 = new QWidget();
43 titleWidgetB3 = new QWidget();
44
45 logFileName = new QLabel();
46 logFile = new QFile();
47
48 logFileEn = false;
49 storageEnabled = false;
50 allowDataStorage = false;
51
52 createToolBar();
53 readSettings();
54 }
55
56 WFPage::~WFPage()
57 {
58 unsigned int i;
59 // deallocation of the data buffer
60 for (i=0; i<localBufferSize; i++)
61 {
62 delete dataBuffer[i];
63 }
64 free(dataBuffer);
65 }
66
67 void WFPage::displayOnPlot(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData)
68 {
69 fillDataBuffer( data, num, coarseTime, fineTime, deltaT, nbData );
70
71 switch(num){
72 case 0:
73 wfPlot_v->displayOnPlot(data, nbData);
74 break;
75
76 case 1:
77 wfPlot_e1->displayOnPlot(data, nbData);
78 break;
79
80 case 2:
81 wfPlot_e2->displayOnPlot(data, nbData);
82 break;
83
84 case 3:
85 wfPlot_b1->displayOnPlot(data, nbData);
86 break;
87
88 case 4:
89 wfPlot_b2->displayOnPlot(data, nbData);
90 break;
91
92 case 5:
93 wfPlot_b3->displayOnPlot(data, nbData);
94 break;
95 }
96 }
97
98 void WFPage::initDataBuffer()
99 {
100 for (unsigned int i = 0; i < localBufferSize; i++)
101 {
102 dataBuffer[i]->clear();
103 }
104 }
105
106 void WFPage::fillDataBuffer(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData)
107 {
108 double sampleTime;
109 QByteArray sampleTimeQByteArray;
110
111 if ( (storageEnabled == true) | (allowDataStorage==true) ) // store data in buffers
112 {
113 switch(num) {
114
115 case 0 :
116 initDataBuffer();
117 sampleTime = 0;
118 for (unsigned int i=0; i<nbData; i++)
119 {
120 sampleTime = (double) (coarseTime)
121 + ((double) (fineTime)) * 1. / 65536.
122 + deltaT * ((double) i);
123 sampleTimeQByteArray.setNum( sampleTime, 'f', 10 );
124 dataBuffer[i]->append( sampleTimeQByteArray + ' ' + QByteArray::number(data[i]) );
125 }
126 allowDataStorage = true;
127 break;
128
129 case 1 :
130 case 2 :
131 case 3 :
132 case 4 :
133 if (allowDataStorage==true) {
134 for (unsigned int i=0; i<nbData; i++)
135 {
136 dataBuffer[i]->append( ' ' + QByteArray::number(data[i]) );
137 }
138 }
139 break;
140
141 case 5 :
142 if (allowDataStorage==true) {
143 for (unsigned int i=0; i<nbData; i++)
144 {
145 dataBuffer[i]->append( ' ' + QByteArray::number(data[i]) );
146 }
147 storeDataBuffer( nbData );
148 allowDataStorage = false;
149 }
150 break;
151
152 default:
153 break;
154
155 }
156 }
157 }
158
159 void WFPage::storeDataBuffer( unsigned int nbData)
160 {
161 for (unsigned int i = 0; i < nbData; i++ )
162 {
163 *(this->logFileStrm) << *dataBuffer[i] << endl;
164 }
165 if (storageEnabled == false){
166 this->logFileStrm->flush();
167 this->logFile->waitForBytesWritten(3000);
168 this->logFile->close();
169 }
170 }
171
172 void WFPage::createToolBar()
173 {
174 radio_v = new QRadioButton(tr("v"));
175 radio_e1 = new QRadioButton(tr("e1"));
176 radio_e2 = new QRadioButton(tr("e2"));
177 radio_b1 = new QRadioButton(tr("b1"));
178 radio_b2 = new QRadioButton(tr("b2"));
179 radio_b3 = new QRadioButton(tr("b3"));
180 radio_tabify = new QRadioButton(tr("tabify"));
181
182 radio_v->setAutoExclusive(false);
183 radio_e1->setAutoExclusive(false);
184 radio_e2->setAutoExclusive(false);
185 radio_b1->setAutoExclusive(false);
186 radio_b2->setAutoExclusive(false);
187 radio_b3->setAutoExclusive(false);
188 radio_tabify->setAutoExclusive(false);
189
190 button_selectAll = new QPushButton(tr("select all"));
191
192 label_storeWfrm = new QLabel("-");
193
194 myToolBar = new QToolBar("select");
195
196 myToolBar->addWidget(radio_v);
197 myToolBar->addWidget(radio_e1);
198 myToolBar->addWidget(radio_e2);
199 myToolBar->addWidget(radio_b1);
200 myToolBar->addWidget(radio_b2);
201 myToolBar->addWidget(radio_b3);
202 myToolBar->addSeparator();
203 myToolBar->addWidget(button_selectAll);
204 myToolBar->addWidget(radio_tabify);
205 myToolBar->addSeparator();
206 myToolBar->addWidget(label_storeWfrm);
207
208 addToolBar(Qt::LeftToolBarArea, myToolBar);
209
210 radio_tabify->setChecked(true);
211
212 connect(this->radio_v, SIGNAL(clicked(bool)), this, SLOT(actionRadioV(bool)));
213 connect(this->radio_e1, SIGNAL(clicked(bool)), this, SLOT(actionRadioE1(bool)));
214 connect(this->radio_e2, SIGNAL(clicked(bool)), this, SLOT(actionRadioE2(bool)));
215 connect(this->radio_b1, SIGNAL(clicked(bool)), this, SLOT(actionRadioB1(bool)));
216 connect(this->radio_b2, SIGNAL(clicked(bool)), this, SLOT(actionRadioB2(bool)));
217 connect(this->radio_b3, SIGNAL(clicked(bool)), this, SLOT(actionRadioB3(bool)));
218 connect(this->button_selectAll, SIGNAL(clicked()), this, SLOT(selectAll()));
219 connect(this->radio_tabify, SIGNAL(clicked(bool)), this, SLOT(organizeDocks()));
220 }
221
222 void WFPage::actionRadioV(bool state)
223 {
224 if (state == true)
225 {
226 if (dockV == NULL)
227 {
228 dockV = new QDockWidget("V", this);
229 dockV->setWidget(wfPlot_v);
230 dockV->setTitleBarWidget(titleWidgetV);
231 }
232 }
233 else
234 {
235 this->removeDockWidget(dockV);
236 }
237 organizeDocks();
238 }
239
240 void WFPage::actionRadioE1(bool state)
241 {
242 if (state == true)
243 {
244 if (dockE1 == NULL)
245 {
246 dockE1 = new QDockWidget("E1", this);
247 dockE1->setWidget(wfPlot_e1);
248 dockE1->setTitleBarWidget(titleWidgetE1);
249 }
250 }
251 else
252 {
253 this->removeDockWidget(dockE1);
254 }
255 organizeDocks();
256 }
257
258 void WFPage::actionRadioE2(bool state)
259 {
260 if (state == true)
261 {
262 if (dockE2 == NULL)
263 {
264 dockE2 = new QDockWidget("E2", this);
265 dockE2->setWidget(wfPlot_e2);
266 dockE2->setTitleBarWidget(titleWidgetE2);
267 }
268 }
269 else
270 {
271 this->removeDockWidget(dockE2);
272 }
273 organizeDocks();
274 }
275
276 void WFPage::actionRadioB1(bool state)
277 {
278 if (state == true)
279 {
280 if (dockB1 == NULL)
281 {
282 dockB1 = new QDockWidget("B1", this);
283 dockB1->setWidget(wfPlot_b1);
284 dockB1->setTitleBarWidget(titleWidgetB1);
285 }
286 }
287 else
288 {
289 this->removeDockWidget(dockB1);
290 }
291 organizeDocks();
292 }
293
294 void WFPage::actionRadioB2(bool state)
295 {
296 if (state == true)
297 {
298 if (dockB2 == NULL)
299 {
300 dockB2 = new QDockWidget("B2", this);
301 dockB2->setWidget(wfPlot_b2);
302 dockB2->setTitleBarWidget(titleWidgetB2);
303 }
304 }
305 else
306 {
307 this->removeDockWidget(dockB2);
308 }
309 organizeDocks();
310 }
311
312 void WFPage::actionRadioB3(bool state)
313 {
314 if (state == true)
315 {
316 if (dockB3 == NULL)
317 {
318 dockB3 = new QDockWidget("B3", this);
319 dockB3->setWidget(wfPlot_b3);
320 dockB3->setTitleBarWidget(titleWidgetB3);
321 }
322 }
323 else
324 {
325 this->removeDockWidget(dockB3);
326 }
327 organizeDocks();
328 }
329
330 void WFPage::buildDockList()
331 {
332 dockList.clear();
333
334 if (radio_v->isChecked())
335 {
336 dockList.append(dockV);
337 removeDockWidget(dockV);
338 }
339 if (radio_e1->isChecked())
340 {
341 dockList.append(dockE1);
342 removeDockWidget(dockE1);
343 }
344 if (radio_e2->isChecked())
345 {
346 dockList.append(dockE2);
347 removeDockWidget(dockE2);
348 }
349 if (radio_b1->isChecked())
350 {
351 dockList.append(dockB1);
352 removeDockWidget(dockB1);
353 }
354 if (radio_b2->isChecked())
355 {
356 dockList.append(dockB2);
357 removeDockWidget(dockB2);
358 }
359 if (radio_b3->isChecked())
360 {
361 dockList.append(dockB3);
362 removeDockWidget(dockB3);
363 }
364 }
365
366 void WFPage::organizeDocks()
367 {
368 if (radio_tabify->isChecked())
369 {
370 tabify();
371 }
372 else
373 {
374 unTabify();
375 }
376 wfPlot_v->resize(wfPlot_v->minimumSizeHint());
377 wfPlot_e1->resize(wfPlot_e1->minimumSizeHint());
378 wfPlot_e2->resize(wfPlot_e2->minimumSizeHint());
379 wfPlot_b1->resize(wfPlot_b1->minimumSizeHint());
380 wfPlot_b2->resize(wfPlot_b2->minimumSizeHint());
381 wfPlot_b3->resize(wfPlot_b3->minimumSizeHint());
382 this->resize(this->minimumSizeHint());
383 }
384
385 void WFPage::unTabify()
386 {
387 buildDockList();
388
389 switch(dockList.size())
390 {
391 case 0:
392 break;
393 case 1:
394 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
395 dockList.at(0)->show();
396 break;
397 case 2:
398 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
399 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
400 dockList.at(0)->show();
401 dockList.at(1)->show();
402 break;
403 case 3:
404 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
405 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
406 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
407 dockList.at(0)->show();
408 dockList.at(1)->show();
409 dockList.at(2)->show();
410 break;
411 case 4:
412 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
413 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
414 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(2));
415 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
416 dockList.at(0)->show();
417 dockList.at(1)->show();
418 dockList.at(2)->show();
419 dockList.at(3)->show();
420 break;
421 case 5:
422 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
423 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
424 addDockWidget(Qt::TopDockWidgetArea, dockList.at(2));
425 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
426 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(4));
427 dockList.at(0)->show();
428 dockList.at(1)->show();
429 dockList.at(2)->show();
430 dockList.at(3)->show();
431 dockList.at(4)->show();
432 break;
433 case 6:
434 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
435 addDockWidget(Qt::TopDockWidgetArea, dockList.at(1));
436 addDockWidget(Qt::TopDockWidgetArea, dockList.at(2));
437 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(3));
438 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(4));
439 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(5));
440 dockList.at(0)->show();
441 dockList.at(1)->show();
442 dockList.at(2)->show();
443 dockList.at(3)->show();
444 dockList.at(4)->show();
445 dockList.at(5)->show();
446 break;
447 default:
448 break;
449 }
450 }
451
452 void WFPage::tabify()
453 {
454 buildDockList();
455
456 switch(dockList.size())
457 {
458 case 0:
459 break;
460 case 1:
461 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
462 dockList.at(0)->show();
463 break;
464 case 2:
465 addDockWidget(Qt::TopDockWidgetArea, dockList.at(0));
466 tabifyDockWidget(dockList.at(0), dockList.at(1));
467 dockList.at(0)->show();
468 dockList.at(1)->show();
469 break;
470 case 3:
471 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
472 tabifyDockWidget(dockList.at(0), dockList.at(1));
473 tabifyDockWidget(dockList.at(1), dockList.at(2));
474 dockList.at(0)->show();
475 dockList.at(1)->show();
476 dockList.at(2)->show();
477 break;
478 case 4:
479 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
480 tabifyDockWidget(dockList.at(0), dockList.at(1));
481 tabifyDockWidget(dockList.at(1), dockList.at(2));
482 tabifyDockWidget(dockList.at(2), dockList.at(3));
483 dockList.at(0)->show();
484 dockList.at(1)->show();
485 dockList.at(2)->show();
486 dockList.at(3)->show();
487 break;
488 case 5:
489 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
490 tabifyDockWidget(dockList.at(0), dockList.at(1));
491 tabifyDockWidget(dockList.at(1), dockList.at(2));
492 tabifyDockWidget(dockList.at(2), dockList.at(3));
493 tabifyDockWidget(dockList.at(3), dockList.at(4));
494 dockList.at(0)->show();
495 dockList.at(1)->show();
496 dockList.at(2)->show();
497 dockList.at(3)->show();
498 dockList.at(4)->show();
499 break;
500 case 6:
501 addDockWidget(Qt::BottomDockWidgetArea, dockList.at(0));
502 tabifyDockWidget(dockList.at(0), dockList.at(1));
503 tabifyDockWidget(dockList.at(1), dockList.at(2));
504 tabifyDockWidget(dockList.at(2), dockList.at(3));
505 tabifyDockWidget(dockList.at(3), dockList.at(4));
506 tabifyDockWidget(dockList.at(4), dockList.at(5));
507 dockList.at(0)->show();
508 dockList.at(1)->show();
509 dockList.at(2)->show();
510 dockList.at(3)->show();
511 dockList.at(4)->show();
512 dockList.at(5)->show();
513 break;
514 default:
515 break;
516 }
517 }
518
519 void WFPage::selectAll()
520 {
521 radio_v->click();
522 radio_e1->click();
523 radio_e2->click();
524 radio_b1->click();
525 radio_b2->click();
526 radio_b3->click();
527 }
528
529 void WFPage::storeWfrm()
530 {
531 if (logFileEn == false)
532 {
533 buildFileName();
534 label_storeWfrm->setText("Recording...");
535 logFileEn = true;
536 }
537 else
538 {
539 // disable storage
540 storageEnabled = false;
541 label_storeWfrm->setText("-");
542 logFileEn = false;
543 }
544 }
545
546 void WFPage::buildFileName()
547 {
548 QTime time;
549 QDate date;
550 QString dateTime;
551 QString prefix;
552
553 date = QDate::currentDate();
554 time = QTime::currentTime();
555
556 dateTime = QString::number( date.year() ) + "_"
557 + QString::number( date.month() ) + "_"
558 + QString::number( date.day() ) + "-"
559 + QString::number( time.hour() ) + "_"
560 + QString::number( time.minute() ) + "_"
561 + QString::number( time.second() );
562
563 prefix = defaultStorageDirectory + "/" + dateTime + "_" + pageTitle ;
564
565 if(this->logFile->isOpen()) this->logFile->close();
566 this->logFile->setFileName( prefix + ".data");
567 if(this->logFile->open(QIODevice::WriteOnly)) this->logFileStrm = new QTextStream(this->logFile);
568
569 *(this->logFileStrm) << "time V E1 E2 B1 B2 B3" << endl;
570
571 storageEnabled = true;
572
573 }
574
575 void WFPage::logFileEnDisable(bool state)
576 {
577 if(state==true)
578 {
579 this->logFileEn = true;
580 }
581 else if(state==false)
582 {
583 this->logFileEn = false;
584 }
585 }
586
587 void WFPage::closeEvent(QCloseEvent *event)
588 {
589 writeSettings();
590 event->accept();
591 }
592
593 void WFPage::readSettings()
594 {
595 QSettings settings("lpp", "lfrsgse");
596 defaultStorageDirectory = settings.value("defaultStorageDirectory", QDir::homePath()).toString();
597 }
598
599 void WFPage::writeSettings()
600 {
601 QSettings settings("lpp", "lfrsgse");
602 settings.setValue("defaultStorageDirectory", defaultStorageDirectory);
603 }
604
605 void WFPage::chooseDir()
606 {
607 defaultStorageDirectory = QFileDialog::getExistingDirectory(this,
608 "choose the directory",
609 QDir::homePath(),
610 QFileDialog::ShowDirsOnly);
611 }
612
613 void WFPage::setDefaultStorageDirectory(QString nameOfTheDirectory)
614 {
615 defaultStorageDirectory = nameOfTheDirectory;
616 }
@@ -0,0 +1,112
1 #ifndef WFPAGE_H
2 #define WFPAGE_H
3
4 #include <QMainWindow>
5 #include <QRadioButton>
6 #include <QPushButton>
7 #include <QDockWidget>
8 #include <QToolBar>
9 #include <QLabel>
10 #include <QFile>
11 #include <QTextStream>
12 #include <QFileDialog>
13 #include <QSettings>
14
15 #include <wfplot.h>
16 #include <wfdisplay_params.h>
17
18 class WFPage : public QMainWindow
19 {
20 Q_OBJECT
21 public:
22 explicit WFPage(QWidget *parent = 0, unsigned int bufferSize = 0, unsigned int xMAX = 0, unsigned int yMAX = 0);
23 ~WFPage();
24
25 void createToolBar();
26 void buildDockList();
27 void unTabify();
28 void tabify();
29 // STORE
30 void buildFileName();
31 void closeEvent(QCloseEvent *event);
32 void readSettings();
33 void writeSettings();
34
35 bool logFileEn;
36 bool storageEnabled;
37
38 QLabel *logFileName;
39 QLabel *label_storeWfrm;
40
41 QWidget *titleWidgetV;
42 QWidget *titleWidgetE1;
43 QWidget *titleWidgetE2;
44 QWidget *titleWidgetB1;
45 QWidget *titleWidgetB2;
46 QWidget *titleWidgetB3;
47
48 unsigned int localBufferSize;
49 QByteArray **dataBuffer;
50
51 QList<QDockWidget*> dockList;
52
53 QDockWidget *dockV;
54 QDockWidget *dockE1;
55 QDockWidget *dockE2;
56 QDockWidget *dockB1;
57 QDockWidget *dockB2;
58 QDockWidget *dockB3;
59
60 QRadioButton *radio_v;
61 QRadioButton *radio_e1;
62 QRadioButton *radio_e2;
63 QRadioButton *radio_b1;
64 QRadioButton *radio_b2;
65 QRadioButton *radio_b3;
66 QRadioButton *radio_tabify;
67
68 QPushButton *button_selectAll;
69 QPushButton *button_storeWfrm;
70
71 QToolBar *myToolBar;
72
73 WFPlot *wfPlot_v;
74 WFPlot *wfPlot_e1;
75 WFPlot *wfPlot_e2;
76 WFPlot *wfPlot_b1;
77 WFPlot *wfPlot_b2;
78 WFPlot *wfPlot_b3;
79
80 QFile *logFile;
81
82 QTextStream *logFileStrm;
83
84 QString pageTitle;
85 QString defaultStorageDirectory;
86
87 void displayOnPlot(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData);
88 void initDataBuffer();
89 void fillDataBuffer(short *data, unsigned char num, unsigned int coarseTime, unsigned int fineTime, double deltaT, unsigned int nbData);
90 void storeDataBuffer(unsigned int nbData);
91
92 bool allowDataStorage;
93
94 signals:
95
96 public slots:
97 void actionRadioV(bool state);
98 void actionRadioE1(bool state);
99 void actionRadioE2(bool state);
100 void actionRadioB1(bool state);
101 void actionRadioB2(bool state);
102 void actionRadioB3(bool state);
103 void organizeDocks();
104 void selectAll();
105 void storeWfrm();
106 void logFileEnDisable(bool state);
107 void chooseDir();
108 void setDefaultStorageDirectory(QString nameOfTheDirectory);
109
110 };
111
112 #endif // WFPAGE_H
@@ -0,0 +1,61
1 #include "wfplot.h"
2 #include <QFontInfo>
3 #include <wfdisplay_params.h>
4
5 WFPlot::WFPlot(QWidget *parent, unsigned int xmax, unsigned int ymax) :
6 QWidget(parent)
7 {
8 // Create Fonts
9 QFont font;
10 font = QFont(this->fontInfo().family(), FONT_SIZE_WAVEFORM_TITLE, QFont::Light);
11 customPlot = new LppMonPlot();
12 mainLayout = new QVBoxLayout();
13
14 customPlot->setXaxisRange(0, xmax);
15 customPlot->setYaxisRange(-ymax, ymax);
16 //customPlot->setTitleFont(font);
17
18 customPlot->addGraph();
19
20 mainLayout->addWidget(customPlot);
21
22 this->setLayout(mainLayout);
23 }
24
25 void WFPlot::displayOnPlot(short *data, unsigned int size)
26 {
27 QList<QVariant> qListX;
28 QList<QVariant> qListY;
29 qListX.clear();
30 qListY.clear();
31
32 for (unsigned int i=0; i<size; ++i)
33 {
34 qListX.append(i);
35 qListY.append( (double) data[i] );
36 }
37
38 customPlot->setGraphData(0, qListX, qListY);
39 //customPlot->rescaleAxis();
40 }
41
42 void WFPlot::displayOnPlotFloat(float *data, unsigned int size)
43 {
44 QList<QVariant> qListX;
45 QList<QVariant> qListY;
46 qListX.clear();
47 qListY.clear();
48
49 for (unsigned int i=0; i<size; ++i)
50 {
51 qListX.append(i);
52 qListY.append( (double) data[i] );
53 }
54
55 customPlot->setGraphData(0, qListX, qListY);
56 //customPlot->rescaleAxis();
57 }
58
59
60
61
@@ -0,0 +1,26
1 #ifndef WFPLOT_H
2 #define WFPLOT_H
3
4 #include <QWidget>
5 #include <QVBoxLayout>
6 #include <lppmonplot.h>
7
8 class WFPlot : public QWidget
9 {
10 Q_OBJECT
11 public:
12 explicit WFPlot(QWidget *parent = 0, unsigned int xmax = 0, unsigned int ymax = 0);
13
14 void displayOnPlot(short *data, unsigned int size);
15 void displayOnPlotFloat(float *data, unsigned int size);
16
17 LppMonPlot *customPlot;
18 QVBoxLayout *mainLayout;
19
20 signals:
21
22 public slots:
23
24 };
25
26 #endif // WFPLOT_H
@@ -1,10 +1,13
1 TEMPLATE = subdirs
1 TEMPLATE = subdirs
2 CONFIG += ordered
2 CONFIG += ordered
3
3
4 win32:LPPMONCFG = /opt/lppmon
4 win32:LPPMONCFG = /opt/lppmon
5 unix:LPPMONCFG = /etc/lppmon
5 unix:LPPMONCFG = /etc/lppmon
6
6
7 SUBDIRS = \
7 SUBDIRS = \
8 rmapplugin
8 rmapplugin \
9 parameterdump \
10 wfdisplay \
11 paulcommon
9
12
10 #include( $${LPPMONCFG}/lppmonplugin.prf)
13 #include( $${LPPMONCFG}/lppmonplugin.prf)
@@ -1,210 +1,213
1 <?xml version="1.0" encoding="UTF-8"?>
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE QtCreatorProject>
2 <!DOCTYPE QtCreatorProject>
3 <!-- Written by QtCreator 2.8.1, 2013-12-20T07:21:44. -->
3 <!-- Written by QtCreator 3.0.1, 2014-04-14T10:04:11. -->
4 <qtcreator>
4 <qtcreator>
5 <data>
5 <data>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
7 <value type="int">0</value>
7 <value type="int">0</value>
8 </data>
8 </data>
9 <data>
9 <data>
10 <variable>ProjectExplorer.Project.EditorSettings</variable>
10 <variable>ProjectExplorer.Project.EditorSettings</variable>
11 <valuemap type="QVariantMap">
11 <valuemap type="QVariantMap">
12 <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
12 <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
13 <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
13 <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
14 <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
14 <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
15 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
15 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
16 <value type="QString" key="language">Cpp</value>
16 <value type="QString" key="language">Cpp</value>
17 <valuemap type="QVariantMap" key="value">
17 <valuemap type="QVariantMap" key="value">
18 <value type="QString" key="CurrentPreferences">CppGlobal</value>
18 <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
19 </valuemap>
19 </valuemap>
20 </valuemap>
20 </valuemap>
21 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
21 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
22 <value type="QString" key="language">QmlJS</value>
22 <value type="QString" key="language">QmlJS</value>
23 <valuemap type="QVariantMap" key="value">
23 <valuemap type="QVariantMap" key="value">
24 <value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
24 <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
25 </valuemap>
25 </valuemap>
26 </valuemap>
26 </valuemap>
27 <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
27 <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
28 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
28 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
29 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
29 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
30 <value type="int" key="EditorConfiguration.IndentSize">4</value>
30 <value type="int" key="EditorConfiguration.IndentSize">4</value>
31 <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
31 <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
32 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
32 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
33 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
33 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
34 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
34 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
35 <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
35 <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
36 <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
36 <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
37 <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
37 <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
38 <value type="int" key="EditorConfiguration.TabSize">8</value>
38 <value type="int" key="EditorConfiguration.TabSize">8</value>
39 <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
39 <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
40 <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
40 <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
41 <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
41 <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
42 <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
42 <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
43 <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
43 <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
44 <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
44 <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
45 </valuemap>
45 </valuemap>
46 </data>
46 </data>
47 <data>
47 <data>
48 <variable>ProjectExplorer.Project.PluginSettings</variable>
48 <variable>ProjectExplorer.Project.PluginSettings</variable>
49 <valuemap type="QVariantMap"/>
49 <valuemap type="QVariantMap"/>
50 </data>
50 </data>
51 <data>
51 <data>
52 <variable>ProjectExplorer.Project.Target.0</variable>
52 <variable>ProjectExplorer.Project.Target.0</variable>
53 <valuemap type="QVariantMap">
53 <valuemap type="QVariantMap">
54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
56 <value type="QString" 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 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
57 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
58 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
58 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
60 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
60 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
61 <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL</value>
61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
63 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
63 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
64 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
67 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
67 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
69 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
69 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
70 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
70 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
71 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
71 </valuemap>
72 </valuemap>
72 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
73 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
73 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
74 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
74 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
75 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
75 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
76 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
76 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
77 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
77 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
78 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
78 <value type="QString">-w</value>
79 <value type="QString">-w</value>
79 <value type="QString">-r</value>
80 <value type="QString">-r</value>
80 </valuelist>
81 </valuelist>
81 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
82 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w -j4</value>
83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w -j4</value>
83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
84 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
84 </valuemap>
85 </valuemap>
85 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
86 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
86 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
88 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
88 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
89 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
89 </valuemap>
90 </valuemap>
90 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
91 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
91 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
92 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
92 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
93 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
93 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
96 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
96 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
97 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
97 <value type="QString">-w</value>
98 <value type="QString">-w</value>
98 <value type="QString">-r</value>
99 <value type="QString">-r</value>
99 </valuelist>
100 </valuelist>
100 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
101 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
103 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
103 </valuemap>
104 </valuemap>
104 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
105 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
105 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
106 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
106 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
107 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
107 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
108 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
108 </valuemap>
109 </valuemap>
109 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
110 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
110 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
111 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
111 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
112 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
115 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
115 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
116 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
116 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL</value>
117 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
117 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
118 </valuemap>
118 </valuemap>
119 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
119 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
120 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
120 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
122 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
122 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
123 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
123 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
126 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
126 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
127 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
127 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
128 <value type="QString">-w</value>
128 <value type="QString">-w</value>
129 <value type="QString">-r</value>
129 <value type="QString">-r</value>
130 </valuelist>
130 </valuelist>
131 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
131 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
132 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">install</value>
132 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">install</value>
133 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
133 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
134 </valuemap>
134 </valuemap>
135 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
135 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
136 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
136 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
137 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
137 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
138 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
138 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
139 </valuemap>
139 </valuemap>
140 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
140 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
141 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
141 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
142 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
142 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
143 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
143 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
144 </valuemap>
144 </valuemap>
145 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
145 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
146 <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
146 <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
147 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
147 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
148 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
149 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
148 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
150 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
149 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
151 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
150 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
152 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
151 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
153 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
152 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
154 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
153 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
155 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
154 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
156 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
155 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
157 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
156 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
157 <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
158 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
158 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
159 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
159 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
160 <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
161 <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
162 <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
160 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
163 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
161 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
164 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
162 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
165 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
163 <value type="int">0</value>
166 <value type="int">0</value>
164 <value type="int">1</value>
167 <value type="int">1</value>
165 <value type="int">2</value>
168 <value type="int">2</value>
166 <value type="int">3</value>
169 <value type="int">3</value>
167 <value type="int">4</value>
170 <value type="int">4</value>
168 <value type="int">5</value>
171 <value type="int">5</value>
169 <value type="int">6</value>
172 <value type="int">6</value>
170 <value type="int">7</value>
173 <value type="int">7</value>
171 <value type="int">8</value>
174 <value type="int">8</value>
172 <value type="int">9</value>
175 <value type="int">9</value>
173 <value type="int">10</value>
176 <value type="int">10</value>
174 <value type="int">11</value>
177 <value type="int">11</value>
175 <value type="int">12</value>
178 <value type="int">12</value>
176 <value type="int">13</value>
179 <value type="int">13</value>
177 <value type="int">14</value>
180 <value type="int">14</value>
178 </valuelist>
181 </valuelist>
179 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
182 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
180 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
183 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
181 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
184 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
182 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable">lppmon</value>
185 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable">lppmon</value>
183 <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">false</value>
186 <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">false</value>
184 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
187 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
185 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Run lppmon</value>
188 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Run lppmon</value>
186 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
189 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
187 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
190 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
188 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
191 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
189 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
192 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
190 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
193 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
191 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
194 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
192 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
195 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
193 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
196 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
194 </valuemap>
197 </valuemap>
195 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
198 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
196 </valuemap>
199 </valuemap>
197 </data>
200 </data>
198 <data>
201 <data>
199 <variable>ProjectExplorer.Project.TargetCount</variable>
202 <variable>ProjectExplorer.Project.TargetCount</variable>
200 <value type="int">1</value>
203 <value type="int">1</value>
201 </data>
204 </data>
202 <data>
205 <data>
203 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
206 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
204 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
207 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
205 </data>
208 </data>
206 <data>
209 <data>
207 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
210 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
208 <value type="int">14</value>
211 <value type="int">15</value>
209 </data>
212 </data>
210 </qtcreator>
213 </qtcreator>
@@ -1,148 +1,148
1 #ifndef RMAPOPERATIONS_H
1 #ifndef RMAPOPERATIONS_H
2 #define RMAPOPERATIONS_H
2 #define RMAPOPERATIONS_H
3
3
4 #include "qhexspinbox.h"
4 #include <qhexspinbox.h>
5 #include <params.h>
5 #include <params.h>
6
6
7 #define READ_WRITE_MAX_COUNTS 4096 // in words
7 #define READ_WRITE_MAX_COUNTS 4096 // in words
8 #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
8 #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
9 #define RMAP_READ_REPLY_HEADER_LENGTH 12 // in bytes => ECSS
9 #define RMAP_READ_REPLY_HEADER_LENGTH 12 // in bytes => ECSS
10 #define RMAP_READ_COMMAND_HEADER_LENGTH 16 // in bytes => ECSS
10 #define RMAP_READ_COMMAND_HEADER_LENGTH 16 // in bytes => ECSS
11 #define RMAP_DATA_CRC_LENGTH 1 // in bytes => ECSS
11 #define RMAP_DATA_CRC_LENGTH 1 // in bytes => ECSS
12 #define RMAP_MAX_PACKET_LENGTH RMAP_READ_REPLY_HEADER_LENGTH + RMAP_MAX_DATA_LENGTH + RMAP_DATA_CRC_LENGTH
12 #define RMAP_MAX_PACKET_LENGTH RMAP_READ_REPLY_HEADER_LENGTH + RMAP_MAX_DATA_LENGTH + RMAP_DATA_CRC_LENGTH
13
13
14 static const unsigned char RMAP_CRCTable[] = {
14 static const unsigned char RMAP_CRCTable[] = {
15 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75,
15 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75,
16 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b,
16 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b,
17 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69,
17 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69,
18 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67,
18 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67,
19 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d,
19 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d,
20 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43,
20 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43,
21 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51,
21 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51,
22 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f,
22 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f,
23 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05,
23 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05,
24 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b,
24 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b,
25 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19,
25 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19,
26 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17,
26 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17,
27 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d,
27 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d,
28 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33,
28 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33,
29 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21,
29 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21,
30 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f,
30 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f,
31 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95,
31 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95,
32 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b,
32 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b,
33 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89,
33 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89,
34 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87,
34 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87,
35 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad,
35 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad,
36 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3,
36 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3,
37 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1,
37 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1,
38 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf,
38 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf,
39 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5,
39 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5,
40 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb,
40 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb,
41 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9,
41 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9,
42 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7,
42 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7,
43 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd,
43 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd,
44 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3,
44 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3,
45 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1,
45 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1,
46 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf
46 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf
47 };
47 };
48
48
49 enum RMAP_command_codes{
49 enum RMAP_command_codes{
50 invalid0, //0000
50 invalid0, //0000
51 invalid1, //0001
51 invalid1, //0001
52 read_Single, //0010
52 read_Single, //0010
53 read_Inc, //0011
53 read_Inc, //0011
54 invalid2, //0100
54 invalid2, //0100
55 invalid3, //0101
55 invalid3, //0101
56 invalid4, //0110
56 invalid4, //0110
57 readModWri_Inc, //0111
57 readModWri_Inc, //0111
58 writeSingle_noVer_noRep, //1000
58 writeSingle_noVer_noRep, //1000
59 writeInc_noVer_noRep, //1001
59 writeInc_noVer_noRep, //1001
60 writeSingle_noVer_Rep, //1010
60 writeSingle_noVer_Rep, //1010
61 writeInc_noVer_Rep, //1011
61 writeInc_noVer_Rep, //1011
62 writeSingle_ver_noRep, //1100
62 writeSingle_ver_noRep, //1100
63 writeInc_ver_noRep, //1101
63 writeInc_ver_noRep, //1101
64 writeSingle_ver_rep, //1110
64 writeSingle_ver_rep, //1110
65 writeInc_ver_rep //1111
65 writeInc_ver_rep //1111
66 };
66 };
67
67
68 struct rmap_command_format_str
68 struct rmap_command_format_str
69 {
69 {
70 // char tagetSpaceWireAddress[]; // used for path addressing or regional addressing
70 // char tagetSpaceWireAddress[]; // used for path addressing or regional addressing
71 char targetLogicalAddress;
71 char targetLogicalAddress;
72 char protocolIdentifier;
72 char protocolIdentifier;
73 char instruction;
73 char instruction;
74 unsigned char key; // used for command authorization => check Gaisler GRSPW for compliance
74 unsigned char key; // used for command authorization => check Gaisler GRSPW for compliance
75 //char replyAddress[]; // not needed if logical addressing is used (replyAddressLength = 0b00)
75 //char replyAddress[]; // not needed if logical addressing is used (replyAddressLength = 0b00)
76 unsigned char initiatorLogicalAddress;
76 unsigned char initiatorLogicalAddress;
77 char transactionIdentifier1;
77 char transactionIdentifier1;
78 char transactionIdentifier0;
78 char transactionIdentifier0;
79 char extendedAddress;
79 char extendedAddress;
80 char address3;
80 char address3;
81 char address2;
81 char address2;
82 char address1;
82 char address1;
83 char address0;
83 char address0;
84 unsigned char dataLength2;
84 unsigned char dataLength2;
85 unsigned char dataLength1;
85 unsigned char dataLength1;
86 unsigned char dataLength0;
86 unsigned char dataLength0;
87 char headerCRC;
87 char headerCRC;
88 };
88 };
89 typedef struct rmap_command_format_str rmap_command_format_t;
89 typedef struct rmap_command_format_str rmap_command_format_t;
90
90
91 struct rmap_write_reply_str
91 struct rmap_write_reply_str
92 {
92 {
93 unsigned char initiatorLogicalAddress;
93 unsigned char initiatorLogicalAddress;
94 unsigned char protocolIdentifier;
94 unsigned char protocolIdentifier;
95 unsigned char instruction;
95 unsigned char instruction;
96 unsigned char status;
96 unsigned char status;
97 unsigned char targetLogicalAddress;
97 unsigned char targetLogicalAddress;
98 unsigned char transactionIdentifier1;
98 unsigned char transactionIdentifier1;
99 unsigned char transactionIdentifier2;
99 unsigned char transactionIdentifier2;
100 unsigned char headerCRC;
100 unsigned char headerCRC;
101 };
101 };
102 typedef struct rmap_write_reply_str rmap_write_reply_t;
102 typedef struct rmap_write_reply_str rmap_write_reply_t;
103
103
104 struct rmap_read_reply_PcktHdr_str
104 struct rmap_read_reply_PcktHdr_str
105 {
105 {
106 //char replyAddress[]; // not needed if logical addressing is used
106 //char replyAddress[]; // not needed if logical addressing is used
107 char initiatorLogicalAddress;
107 char initiatorLogicalAddress;
108 char protocolIdentifier;
108 char protocolIdentifier;
109 char instruction;
109 char instruction;
110 char status;
110 char status;
111 char targetLogicalAddress;
111 char targetLogicalAddress;
112 char transactionIdentifier1;
112 char transactionIdentifier1;
113 char transactionIdentifier0;
113 char transactionIdentifier0;
114 char reserved;
114 char reserved;
115 unsigned char dataLength2;
115 unsigned char dataLength2;
116 unsigned char dataLength1;
116 unsigned char dataLength1;
117 unsigned char dataLength0;
117 unsigned char dataLength0;
118 char headerCRC;
118 char headerCRC;
119 };
119 };
120 typedef struct rmap_read_reply_PcktHdr_str rmap_read_reply_PcktHdr_t;
120 typedef struct rmap_read_reply_PcktHdr_str rmap_read_reply_PcktHdr_t;
121
121
122 struct rmap_gresb_header_str
122 struct rmap_gresb_header_str
123 {
123 {
124 char GRESBProtocoleID;
124 char GRESBProtocoleID;
125 unsigned char SPWPacketSize2;
125 unsigned char SPWPacketSize2;
126 unsigned char SPWPacketSize1;
126 unsigned char SPWPacketSize1;
127 unsigned char SPWPacketSize0;
127 unsigned char SPWPacketSize0;
128 };
128 };
129 typedef struct rmap_gresb_header_str rmap_gresb_header_str;
129 typedef struct rmap_gresb_header_str rmap_gresb_header_str;
130
130
131 class RMAP
131 class RMAP
132 {
132 {
133 public:
133 public:
134 RMAP(RMAP_command_codes commandCode,
134 RMAP(RMAP_command_codes commandCode,
135 unsigned char targetLogicalAddress,
135 unsigned char targetLogicalAddress,
136 unsigned char initiatorLogicalAddress,
136 unsigned char initiatorLogicalAddress,
137 int startAddress,
137 int startAddress,
138 int nbBytes,
138 int nbBytes,
139 char *data);
139 char *data);
140 unsigned char RMAPCalculateCRC(unsigned char INCR, unsigned char INBYTE); // ECSS-E-ST-50-52C
140 unsigned char RMAPCalculateCRC(unsigned char INCR, unsigned char INBYTE); // ECSS-E-ST-50-52C
141 unsigned char RMAPCalculateHeaderCRC();
141 unsigned char RMAPCalculateHeaderCRC();
142 unsigned char RMAPCalculateDataCRC(char *data, int nbBytes);
142 unsigned char RMAPCalculateDataCRC(char *data, int nbBytes);
143 rmap_gresb_header_str GRESBHeader;
143 rmap_gresb_header_str GRESBHeader;
144 rmap_command_format_t RMAPHeader;
144 rmap_command_format_t RMAPHeader;
145 char dataCRC;
145 char dataCRC;
146 };
146 };
147
147
148 #endif // RMAPOPERATIONS_H
148 #endif // RMAPOPERATIONS_H
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (5362 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (513 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (580 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (616 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now