##// END OF EJS Templates
Last comit before installation on pc-coillot
leroy -
r50:47b677d190ee default
parent child
Show More
@@ -0,0 +1,80
1 #include "arbitrarytime.h"
2
3 ArbitraryTime::ArbitraryTime(char option, QWidget *parent) :
4 QWidget(parent)
5 {
6 QRegExp timeToSendRegExp("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]");
7 validator = new QRegExpValidator(timeToSendRegExp);
8
9 packetToSend = new TCPacketToSend();
10
11 timeToSend = new QLineEdit();
12 main_HLAYOUT = new QHBoxLayout;
13 main_VLAYOUT = new QVBoxLayout;
14
15 timeToSend_LABEL = new QLabel("Arbitrary Time: 0x");
16 timeToSend_LABEL->setAlignment(Qt::AlignRight);
17
18 timeToSend->setMaxLength(8);
19 timeToSend->setValidator(validator);
20 timeToSend->setText("80000000");
21 currentTimeToSend = 0x80000000;
22
23 if (option == 1)
24 {
25 main_HLAYOUT->addWidget(timeToSend_LABEL);
26 main_HLAYOUT->addWidget(timeToSend);
27 main_HLAYOUT->addStretch();
28 this->setLayout(main_HLAYOUT);
29 }
30 else
31 {
32 main_VLAYOUT->addWidget(timeToSend_LABEL);
33 main_VLAYOUT->addWidget(timeToSend);
34 main_VLAYOUT->addStretch();
35 this->setLayout(main_VLAYOUT);
36 }
37
38 connect(this->timeToSend, SIGNAL(editingFinished()),
39 this, SLOT(editingFinishedSLOT()));
40 }
41
42 void ArbitraryTime::editingFinishedSLOT()
43 {
44 currentTimeToSend = timeToSend->text().toLong(0, 16);
45 emit (
46 timeToSendChanged( currentTimeToSend)
47 );
48 }
49
50 void ArbitraryTime::sendCurrentTimeToSend()
51 {
52 Packet_TC_LFR_UPDATE_TIME_t packet;
53 unsigned char crcAsTwoBytes[2];
54
55 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
56 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
57 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
58 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
59 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_UPDATE_TIME >> 8);
60 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_UPDATE_TIME );
61
62 packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
63 packet.serviceType = TC_TYPE_LFR_UPDATE_TIME;
64 packet.serviceSubType = TC_SUBTYPE_UPDATE_TIME;
65 packet.sourceID = SID_DEFAULT;
66 packet.cp_rpw_time[0] = (unsigned char) (currentTimeToSend >> 24);
67 packet.cp_rpw_time[1] = (unsigned char) (currentTimeToSend >> 16);
68 packet.cp_rpw_time[2] = (unsigned char) (currentTimeToSend >> 8);
69 packet.cp_rpw_time[3] = (unsigned char) (currentTimeToSend);
70 packet.cp_rpw_time[4] = 0; // fine time MSB
71 packet.cp_rpw_time[5] = 0; // fine time LSB
72
73 packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
74 PACKET_LENGTH_TC_LFR_UPDATE_TIME + CCSDS_TC_TM_PACKET_OFFSET - 2);
75 packet.crc[0] = crcAsTwoBytes[0];
76 packet.crc[1] = crcAsTwoBytes[1];
77
78 emit WriteSPW((char*) &packet, PACKET_LENGTH_TC_LFR_UPDATE_TIME + CCSDS_TC_TM_PACKET_OFFSET,
79 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
80 }
@@ -0,0 +1,43
1 #ifndef ARBITRARYTIME_H
2 #define ARBITRARYTIME_H
3
4 #include "paulcommon_global.h"
5
6 #include <QWidget>
7 #include <QLabel>
8 #include <QHBoxLayout>
9 #include <QVBoxLayout>
10 #include <QLineEdit>
11 #include <QRegExpValidator>
12 #include <tcpackettosend.h>
13
14 class PAULCOMMONSHARED_EXPORT ArbitraryTime : public QWidget
15 {
16 Q_OBJECT
17 public:
18 explicit ArbitraryTime(char option, QWidget *parent = 0);
19
20 long currentTimeToSend;
21
22 TCPacketToSend *packetToSend;
23
24 QLabel *timeToSend_LABEL;
25
26 QHBoxLayout *main_HLAYOUT;
27 QVBoxLayout *main_VLAYOUT;
28
29 QLineEdit *timeToSend;
30
31 QRegExpValidator *validator;
32
33 signals:
34 void timeToSendChanged(long timeToSend);
35 unsigned int WriteSPW(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
36
37 public slots:
38 void editingFinishedSLOT();
39 void sendCurrentTimeToSend();
40
41 };
42
43 #endif // ARBITRARYTIME_H
@@ -0,0 +1,38
1 #-------------------------------------------------
2 #
3 # Project created by QtCreator 2013-09-20T14:01:20
4 #
5 #-------------------------------------------------
6
7 TARGET = paulcommon
8 TEMPLATE = lib
9
10 INCLUDEPATH += \
11 $${PWD} \
12 $$[QT_INSTALL_HEADERS]/lppmon/parameterdump \
13 ../../DEV_PLE/header
14
15 DEFINES += PAULCOMMON_LIBRARY
16
17 SOURCES += systemtime.cpp \
18 arbitrarytime.cpp
19
20 HEADERS += systemtime.h\
21 paulcommon_global.h \
22 arbitrarytime.h \
23 ../../DEV_PLE/header/TC_types.h
24
25 header.path = $$[QT_INSTALL_HEADERS]/lppmon/paulcommon
26 header.files = \
27 systemtime.h\
28 paulcommon_global.h \
29 arbitrarytime.h
30
31 target.path = $$[QT_INSTALL_LIBS]
32 isEmpty(target.path) {
33 target.path = $(QTDIR)/lib
34 }
35
36 LIBS += -lparameterdump
37
38 INSTALLS += header target
@@ -0,0 +1,12
1 #ifndef PAULCOMMON_GLOBAL_H
2 #define PAULCOMMON_GLOBAL_H
3
4 #include <QtCore/qglobal.h>
5
6 #if defined(PAULCOMMON_LIBRARY)
7 # define PAULCOMMONSHARED_EXPORT Q_DECL_EXPORT
8 #else
9 # define PAULCOMMONSHARED_EXPORT Q_DECL_IMPORT
10 #endif
11
12 #endif // PAULCOMMON_GLOBAL_H
@@ -0,0 +1,40
1 #include "systemtime.h"
2
3 SystemTime::SystemTime(QWidget *parent) :
4 QWidget(parent)
5 {
6 main_LAYOUT = new QGridLayout;
7
8 arbitraryTime = new ArbitraryTime(1);
9
10 currentTimePrefix_LABEL = new QLabel(tr("Current System Time: 0x"));
11 currentTime_LABEL = new QLabel(tr("-"));
12
13 currentTimePrefix_LABEL->setAlignment(Qt::AlignRight);
14 currentTime = 0x80000000;
15 currentTime_LABEL->setText(QString::number(currentTime, 16));
16
17 main_LAYOUT->addWidget(currentTimePrefix_LABEL, 0, 0, 1, 1);
18 main_LAYOUT->addWidget(currentTime_LABEL, 0, 1, 1, 1);
19 main_LAYOUT->addWidget(arbitraryTime, 1, 0, 1, 2);
20 main_LAYOUT->setColumnStretch(2, 1);
21 main_LAYOUT->setRowStretch(2, 1);
22
23 this->setLayout(main_LAYOUT);
24
25 connect(this->arbitraryTime, SIGNAL(timeToSendChanged(long)),
26 this, SLOT(editingFinishedSLOT(long)));
27 }
28
29 void SystemTime::editingFinishedSLOT(long time)
30 {
31 emit (
32 timeToSendChanged(time)
33 );
34 }
35
36 void SystemTime::systemTimeHasChanged(long time)
37 {
38 currentTime = time;
39 currentTime_LABEL->setText(QString::number(currentTime, 16));
40 }
@@ -0,0 +1,37
1 #ifndef SYSTEMTIME_H
2 #define SYSTEMTIME_H
3
4 #include "paulcommon_global.h"
5
6 #include <QLabel>
7 #include <QGridLayout>
8 #include <QLineEdit>
9 #include <QRegExpValidator>
10
11 #include "arbitrarytime.h"
12
13 class PAULCOMMONSHARED_EXPORT SystemTime : public QWidget
14 {
15 Q_OBJECT
16 public:
17 explicit SystemTime(QWidget *parent = 0);
18
19 signals:
20 void timeToSendChanged(long timeToSend);
21
22 public slots:
23 void editingFinishedSLOT(long time);
24 void systemTimeHasChanged(long time);
25
26 private:
27 long currentTime;
28
29 QLabel *currentTimePrefix_LABEL;
30 QLabel *currentTime_LABEL;
31
32 QGridLayout *main_LAYOUT;
33
34 ArbitraryTime *arbitraryTime;
35 };
36
37 #endif // SYSTEMTIME_H
@@ -0,0 +1,48
1 #include "systemtime.h"
2
3 SystemTime::SystemTime(QWidget *parent) :
4 QWidget(parent)
5 {
6 QRegExp timeToSendRegExp("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]");
7 validator = new QRegExpValidator(timeToSendRegExp);
8
9 timeToSend = new QLineEdit();
10 main_LAYOUT = new QGridLayout;
11
12 currentTimePrefix_LABEL = new QLabel(tr("Current System Time: 0x"));
13 currentTime_LABEL = new QLabel(tr("-"));
14 timeToSend_LABEL = new QLabel("Arbitrary Time: 0x");
15
16 timeToSend_LABEL->setAlignment(Qt::AlignRight);
17 currentTimePrefix_LABEL->setAlignment(Qt::AlignRight);
18 currentTime = 0x80000000;
19 currentTime_LABEL->setText(QString::number(currentTime, 16));
20 timeToSend->setMaxLength(8);
21 timeToSend->setValidator(validator);
22 timeToSend->setText("80000000");
23
24 main_LAYOUT->addWidget(currentTimePrefix_LABEL, 0, 0, 1, 1);
25 main_LAYOUT->addWidget(currentTime_LABEL, 0, 1, 1, 1);
26 main_LAYOUT->addWidget(timeToSend_LABEL, 1, 0, 1, 1);
27 main_LAYOUT->addWidget(timeToSend, 1, 1, 1, 1);
28 main_LAYOUT->setColumnStretch(3, 1);
29 main_LAYOUT->setRowStretch(2, 1);
30
31 this->setLayout(main_LAYOUT);
32
33 connect(this->timeToSend, SIGNAL(editingFinished()),
34 this, SLOT(editingFinishedSLOT()));
35 }
36
37 void SystemTime::editingFinishedSLOT()
38 {
39 emit (
40 timeToSendChanged(timeToSend->text().toLong(0, 16))
41 );
42 }
43
44 void SystemTime::systemTimeHasChanged(long time)
45 {
46 currentTime = time;
47 currentTime_LABEL->setText(QString::number(currentTime, 16));
48 }
@@ -0,0 +1,37
1 #ifndef SYSTEMTIME_H
2 #define SYSTEMTIME_H
3
4 #include <QWidget>
5 #include <QLabel>
6 #include <QGridLayout>
7 #include <QLineEdit>
8 #include <QRegExpValidator>
9
10 class SystemTime : public QWidget
11 {
12 Q_OBJECT
13 public:
14 explicit SystemTime(QWidget *parent = 0);
15
16 signals:
17 void timeToSendChanged(long timeToSend);
18
19 public slots:
20 void editingFinishedSLOT();
21 void systemTimeHasChanged(long time);
22
23 private:
24 long currentTime;
25
26 QLabel *currentTimePrefix_LABEL;
27 QLabel *currentTime_LABEL;
28 QLabel *timeToSend_LABEL;
29
30 QGridLayout *main_LAYOUT;
31
32 QLineEdit *timeToSend;
33
34 QRegExpValidator *validator;
35 };
36
37 #endif // SYSTEMTIME_H
@@ -1,6 +1,6
1 #############################################################################
1 #############################################################################
2 # Makefile for building: PAULs_LPPMON_PLUGINS
2 # Makefile for building: PAULs_LPPMON_PLUGINS
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jul 31 09:19:17 2013
3 # Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Sep 27 14:11:49 2013
4 # Project: PAULs_LPPMON_PLUGINS.pro
4 # Project: PAULs_LPPMON_PLUGINS.pro
5 # Template: subdirs
5 # Template: subdirs
6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile PAULs_LPPMON_PLUGINS.pro
6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile PAULs_LPPMON_PLUGINS.pro
@@ -78,6 +78,7 Makefile: PAULs_LPPMON_PLUGINS.pro /usr
78 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
78 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
79 /usr/lib64/qt4/mkspecs/features/release.prf \
79 /usr/lib64/qt4/mkspecs/features/release.prf \
80 /usr/lib64/qt4/mkspecs/features/default_post.prf \
80 /usr/lib64/qt4/mkspecs/features/default_post.prf \
81 /usr/lib64/qt4/mkspecs/features/shared.prf \
81 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
82 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
82 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
83 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
83 /usr/lib64/qt4/mkspecs/features/qt.prf \
84 /usr/lib64/qt4/mkspecs/features/qt.prf \
@@ -103,6 +104,7 Makefile: PAULs_LPPMON_PLUGINS.pro /usr
103 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
104 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
104 /usr/lib64/qt4/mkspecs/features/release.prf:
105 /usr/lib64/qt4/mkspecs/features/release.prf:
105 /usr/lib64/qt4/mkspecs/features/default_post.prf:
106 /usr/lib64/qt4/mkspecs/features/default_post.prf:
107 /usr/lib64/qt4/mkspecs/features/shared.prf:
106 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
108 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
107 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
109 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
108 /usr/lib64/qt4/mkspecs/features/qt.prf:
110 /usr/lib64/qt4/mkspecs/features/qt.prf:
@@ -1,6 +1,6
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.0, 2013-09-10T10:37:22. -->
3 <!-- Written by QtCreator 2.8.0, 2013-10-01T11:19:54. -->
4 <qtcreator>
4 <qtcreator>
5 <data>
5 <data>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -1,6 +1,6
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.0, 2013-08-01T09:16:13. -->
3 <!-- Written by QtCreator 2.8.0, 2013-09-23T12:59:08. -->
4 <qtcreator>
4 <qtcreator>
5 <data>
5 <data>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -208,7 +208,7 void ParameterDump::buildSBM2()
208
208
209 void ParameterDump::buildActions()
209 void ParameterDump::buildActions()
210 {
210 {
211 groupbox_ACTIONS = new QGroupBox(tr("Actions"));
211 groupbox_ACTIONS = new QGroupBox(tr("LOAD / DUMP"));
212 layout_ACTIONS = new QGridLayout;
212 layout_ACTIONS = new QGridLayout;
213
213
214 button_loadCommon = new QPushButton(tr("LOAD_COMM"));
214 button_loadCommon = new QPushButton(tr("LOAD_COMM"));
@@ -28,7 +28,8 HEADERS += parameterdump.h \
28 header.path = $$[QT_INSTALL_HEADERS]/lppmon/parameterdump
28 header.path = $$[QT_INSTALL_HEADERS]/lppmon/parameterdump
29 header.files = \
29 header.files = \
30 parameterdump.h \
30 parameterdump.h \
31 parameterdump_global.h
31 parameterdump_global.h \
32 tcpackettosend.h
32
33
33 target.path = $$[QT_INSTALL_LIBS]
34 target.path = $$[QT_INSTALL_LIBS]
34 isEmpty(target.path) {
35 isEmpty(target.path) {
@@ -3,9 +3,10
3
3
4 #include <QObject>
4 #include <QObject>
5
5
6 #include "parameterdump_global.h"
6 #include <TC_types.h>
7 #include <TC_types.h>
7
8
8 class TCPacketToSend : public QObject
9 class PARAMETERDUMPSHARED_EXPORT TCPacketToSend : public QObject
9 {
10 {
10 Q_OBJECT
11 Q_OBJECT
11 public:
12 public:
@@ -1,6 +1,6
1 #############################################################################
1 #############################################################################
2 # Makefile for building: librmapplugin.so.1.0.0
2 # Makefile for building: librmapplugin.so.1.0.0
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Wed Jul 31 09:19:17 2013
3 # Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Sep 20 14:37:48 2013
4 # Project: rmapplugin.pro
4 # Project: rmapplugin.pro
5 # Template: lib
5 # Template: lib
6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile rmapplugin.pro
6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile rmapplugin.pro
@@ -10,13 +10,13
10
10
11 CC = gcc
11 CC = gcc
12 CXX = g++
12 CXX = g++
13 DEFINES = -DPLUGIN=rmapplugin -DPLUGINHEADER="\"rmapplugin.h\"" -Ddriver_Name="\"RMAPPlugin\"" -Ddriver_Author="\"Paul Leroy paul.leroy@lpp.polytechnique.fr\"" -Ddriver_Version="\"1.1.2\"" -Ddriver_Description="\"AHB bus controler, works with Gaisler's AHB plugn' play bus.\"" -Ddriver_can_be_root=1 -Ddriver_can_be_child=0 -Ddriver_VID=0 -Ddriver_PID=0 -DLPPMON_VERSION="\"0.0.1\"" -DUNIXTRANSLATIONPATH -DLPPMON_PLUGINS_INSTALL_PATH="QDir::homePath()+\"/.lppmon/plugins\"" -DLPPMON_CONFIG_PATH="QDir::homePath()+\"/.lppmon/config\"" -DLPPMON_TRANSLATION_PATH="\"/etc/lppmon/translations\"" -DLPPMONPLUGIN_LIBRARY -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
13 DEFINES = -DPLUGIN=rmapplugin -DPLUGINHEADER="\"rmapplugin.h\"" -Ddriver_Name="\"RMAPPlugin\"" -Ddriver_Author="\"Paul Leroy paul.leroy@lpp.polytechnique.fr\"" -Ddriver_Version="\"1.1.2\"" -Ddriver_Description="\"AHB bus controler, works with Gaisler's AHB plugn' play bus.\"" -Ddriver_can_be_root=1 -Ddriver_can_be_child=0 -Ddriver_VID=0 -Ddriver_PID=0 -DLPPMON_VERSION="\"0.0.2\"" -DUNIX -DUNIXTRANSLATIONPATH -DLPPMON_TRANSLATION_PATH="\"/etc/lppmon/translations\"" -DLPPMONPLUGIN_LIBRARY -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
14 CFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
14 CFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
15 CXXFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -I/usr/include/python2.7 -I/usr/include/python2.7 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
15 CXXFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -I/usr/include/python2.7 -I/usr/include/python2.7 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include -I. -I../common_PLE -I../../DEV_PLE/header -I../spw_usb_driver_v2.63/inc -I/usr/include/lppmon/common -I/usr/include/lppmon/wfdisplay -I/usr/include/lppmon/parameterdump -I/usr/include/lppmon/common -I/usr/include/lppmon -I/usr/include/lppmon/pluginsInterface -I/usr/include/PythonQt -Imoc
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include -I. -I../common_PLE -I../../DEV_PLE/header -I../spw_usb_driver_v2.63/inc -I/usr/include/lppmon/common -I/usr/include/lppmon/wfdisplay -I/usr/include/lppmon/parameterdump -I/usr/include/lppmon/paulcommon -I/usr/include/lppmon/common -I/usr/include/lppmon -I/usr/include/lppmon/pluginsInterface -I/usr/include/PythonQt -Imoc
17 LINK = g++
17 LINK = g++
18 LFLAGS = -Wl,-O1 -Wl,-z,relro -shared -Wl,-soname,librmapplugin.so.1
18 LFLAGS = -Wl,-O1 -Wl,-z,relro -shared -Wl,-soname,librmapplugin.so.1
19 LIBS = $(SUBLIBS) -L/usr/lib64 ../spw_usb_driver_v2.63/lib/x86_64/libSpaceWireUSBAPI.so ../spw_usb_driver_v2.63/lib/x86_64/libConfigLibraryUSB.so -llppmoncommon -lwfdisplay -lqwt5-qt4 -lparameterdump -ldl -lutil -lm -lpython2.7 -lPythonQt_QtAll -lPythonQt -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
19 LIBS = $(SUBLIBS) -L/usr/lib64 ../spw_usb_driver_v2.63/lib/x86_64/libSpaceWireUSBAPI.so ../spw_usb_driver_v2.63/lib/x86_64/libConfigLibraryUSB.so -llppmoncommon -lpaulcommon -lwfdisplay -lqwt5-qt4 -lparameterdump -ldl -lutil -lm -lpython2.7 -lPythonQt_QtAll -lPythonQt -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
20 AR = ar cqs
20 AR = ar cqs
21 RANLIB =
21 RANLIB =
22 QMAKE = /usr/bin/qmake-qt4
22 QMAKE = /usr/bin/qmake-qt4
@@ -124,6 +124,8 DIST = /usr/lib64/qt4/mkspecs/c
124 /usr/lib64/qt4/mkspecs/features/default_post.prf \
124 /usr/lib64/qt4/mkspecs/features/default_post.prf \
125 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf \
125 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf \
126 /usr/lib64/qt4/mkspecs/features/pythonqt.prf \
126 /usr/lib64/qt4/mkspecs/features/pythonqt.prf \
127 /usr/lib64/qt4/mkspecs/features/shared.prf \
128 /usr/lib64/qt4/mkspecs/features/dll.prf \
127 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
129 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
128 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
130 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
129 /usr/lib64/qt4/mkspecs/features/qt.prf \
131 /usr/lib64/qt4/mkspecs/features/qt.prf \
@@ -205,6 +207,8 Makefile: rmapplugin.pro /usr/lib64/qt4
205 /usr/lib64/qt4/mkspecs/features/default_post.prf \
207 /usr/lib64/qt4/mkspecs/features/default_post.prf \
206 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf \
208 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf \
207 /usr/lib64/qt4/mkspecs/features/pythonqt.prf \
209 /usr/lib64/qt4/mkspecs/features/pythonqt.prf \
210 /usr/lib64/qt4/mkspecs/features/shared.prf \
211 /usr/lib64/qt4/mkspecs/features/dll.prf \
208 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
212 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
209 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
213 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
210 /usr/lib64/qt4/mkspecs/features/qt.prf \
214 /usr/lib64/qt4/mkspecs/features/qt.prf \
@@ -236,6 +240,8 Makefile: rmapplugin.pro /usr/lib64/qt4
236 /usr/lib64/qt4/mkspecs/features/default_post.prf:
240 /usr/lib64/qt4/mkspecs/features/default_post.prf:
237 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf:
241 /usr/lib64/qt4/mkspecs/features/lppmonplugin.prf:
238 /usr/lib64/qt4/mkspecs/features/pythonqt.prf:
242 /usr/lib64/qt4/mkspecs/features/pythonqt.prf:
243 /usr/lib64/qt4/mkspecs/features/shared.prf:
244 /usr/lib64/qt4/mkspecs/features/dll.prf:
239 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
245 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
240 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
246 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
241 /usr/lib64/qt4/mkspecs/features/qt.prf:
247 /usr/lib64/qt4/mkspecs/features/qt.prf:
@@ -9,10 +9,33 EnterMode::EnterMode(QWidget *parent) :
9 button_enterModeSBM1 = new QPushButton(tr("SBM1"));
9 button_enterModeSBM1 = new QPushButton(tr("SBM1"));
10 button_enterModeSBM2 = new QPushButton(tr("SBM2"));
10 button_enterModeSBM2 = new QPushButton(tr("SBM2"));
11
11
12 button_reset = new QPushButton(tr("RESET"));
13 button_updateInfo = new QPushButton(tr("UPDATE_INFO"));
14 button_enableCalibration = new QPushButton(tr("ENABLE_CAL"));
15 button_disableCalibration = new QPushButton(tr("DISABLE_CAL"));
16 button_updateTime = new QPushButton(tr("UPDATE_TIME"));
17
12 mainLayout = new QGridLayout();
18 mainLayout = new QGridLayout();
13 overallLayout = new QGridLayout();
19 overallLayout = new QGridLayout();
14
20
21 layout_updateTime = new QVBoxLayout();
22 layout_otherTC = new QVBoxLayout();
23
24 arbitraryTime = new ArbitraryTime(0);
25
26 layout_otherTC->addWidget(button_reset);
27 layout_otherTC->addWidget(button_updateInfo);
28 layout_otherTC->addWidget(button_enableCalibration);
29 layout_otherTC->addWidget(button_disableCalibration);
30 layout_otherTC->addStretch();
31
32 layout_updateTime->addWidget(button_updateTime);
33 layout_updateTime->addWidget(arbitraryTime);
34 layout_updateTime->addStretch();
35
15 groupBox = new QGroupBox(tr("ENTER_MODE"));
36 groupBox = new QGroupBox(tr("ENTER_MODE"));
37 groupBox_updateTime = new QGroupBox(tr("UPDATE_TIME"));
38 groupBox_otherTC = new QGroupBox(tr("OTHER TC"));
16
39
17 mainLayout->addWidget(button_enterModeStandby, 0, 0, 1, 1);
40 mainLayout->addWidget(button_enterModeStandby, 0, 0, 1, 1);
18 mainLayout->addWidget(button_enterModeNormal, 1, 0, 1, 1);
41 mainLayout->addWidget(button_enterModeNormal, 1, 0, 1, 1);
@@ -24,16 +47,27 EnterMode::EnterMode(QWidget *parent) :
24 mainLayout->setRowStretch(5, 1);
47 mainLayout->setRowStretch(5, 1);
25
48
26 groupBox->setLayout(mainLayout);
49 groupBox->setLayout(mainLayout);
50 groupBox_otherTC->setLayout(layout_otherTC);
51 groupBox_updateTime->setLayout(layout_updateTime);
27
52
28 parameterDump = new ParameterDump();
53 parameterDump = new ParameterDump();
29
54
55 connect(this->button_reset, SIGNAL(clicked()), this, SLOT(sendReset()));
56
30 connect(this->button_enterModeStandby, SIGNAL(clicked()), this, SLOT(enterModeStandby()));
57 connect(this->button_enterModeStandby, SIGNAL(clicked()), this, SLOT(enterModeStandby()));
31 connect(this->button_enterModeNormal, SIGNAL(clicked()), this, SLOT(enterModeNormal()));
58 connect(this->button_enterModeNormal, SIGNAL(clicked()), this, SLOT(enterModeNormal()));
32 connect(this->button_enterModeBurst, SIGNAL(clicked()), this, SLOT(enterModeBurst()));
59 connect(this->button_enterModeBurst, SIGNAL(clicked()), this, SLOT(enterModeBurst()));
33 connect(this->button_enterModeSBM1, SIGNAL(clicked()), this, SLOT(enterModeSBM1()));
60 connect(this->button_enterModeSBM1, SIGNAL(clicked()), this, SLOT(enterModeSBM1()));
34 connect(this->button_enterModeSBM2, SIGNAL(clicked()), this, SLOT(enterModeSBM2()));
61 connect(this->button_enterModeSBM2, SIGNAL(clicked()), this, SLOT(enterModeSBM2()));
35
62
63 connect(this->button_updateInfo, SIGNAL(clicked()), this, SLOT(sendUpdateInfo()));
64 connect(this->button_enableCalibration, SIGNAL(clicked()), this, SLOT(sendEnableCalibration()));
65 connect(this->button_disableCalibration, SIGNAL(clicked()), this, SLOT(sendDisableCalibration()));
66 connect(this->button_updateTime, SIGNAL(clicked()), this->arbitraryTime, SLOT(sendCurrentTimeToSend()));
67
36 overallLayout->addWidget(groupBox, 0, 0, 1, 1);
68 overallLayout->addWidget(groupBox, 0, 0, 1, 1);
69 overallLayout->addWidget(groupBox_updateTime, 1, 0, 1, 1);
70 overallLayout->addWidget(groupBox_otherTC, 2, 0, 1, 1);
37
71
38 this->setLayout(overallLayout);
72 this->setLayout(overallLayout);
39 }
73 }
@@ -81,15 +115,156 void EnterMode::enterModeNormal()
81 {
115 {
82 sendEnterMode( 1 );
116 sendEnterMode( 1 );
83 }
117 }
118
84 void EnterMode::enterModeBurst()
119 void EnterMode::enterModeBurst()
85 {
120 {
86 sendEnterMode( 2 );
121 sendEnterMode( 2 );
87 }
122 }
123
88 void EnterMode::enterModeSBM1()
124 void EnterMode::enterModeSBM1()
89 {
125 {
90 sendEnterMode( 3 );
126 sendEnterMode( 3 );
91 }
127 }
128
92 void EnterMode::enterModeSBM2()
129 void EnterMode::enterModeSBM2()
93 {
130 {
94 sendEnterMode( 4 );
131 sendEnterMode( 4 );
95 }
132 }
133
134 void EnterMode::sendReset()
135 {
136 Packet_TC_LFR_RESET_t packet;
137 unsigned char crcAsTwoBytes[2];
138
139 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
140 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
141 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
142 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
143 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_RESET >> 8);
144 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_RESET );
145
146 packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
147 packet.serviceType = TC_TYPE_DEFAULT;
148 packet.serviceSubType = TC_SUBTYPE_RESET;
149 packet.sourceID = SID_DEFAULT;
150
151 parameterDump->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
152 PACKET_LENGTH_TC_LFR_RESET + CCSDS_TC_TM_PACKET_OFFSET - 2);
153 packet.crc[0] = crcAsTwoBytes[0];
154 packet.crc[1] = crcAsTwoBytes[1];
155
156 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_RESET + CCSDS_TC_TM_PACKET_OFFSET,
157 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
158 }
159
160 void EnterMode::sendUpdateInfo()
161 {
162 Packet_TC_LFR_UPDATE_INFO_t packet;
163 unsigned char crcAsTwoBytes[2];
164
165 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
166 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
167 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
168 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
169 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_UPDATE_INFO >> 8);
170 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_UPDATE_INFO );
171
172 packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
173 packet.serviceType = TC_TYPE_DEFAULT;
174 packet.serviceSubType = TC_SUBTYPE_UPDATE_INFO;
175 packet.sourceID = SID_DEFAULT;
176
177 packet.set1 = 0x00;
178 packet.set2 = 0x00;
179 packet.set3_bias_setting_set1[0] = 0x00;
180 packet.set3_bias_setting_set1[1] = 0x00;
181 packet.set3_bias_setting_set1[2] = 0x00;
182 packet.set3_bias_setting_set1[3] = 0x00;
183 packet.set3_bias_setting_set1[4] = 0x00;
184 packet.set3_bias_setting_set2[5] = 0x00;
185 packet.set3_bias_voltage[0] = 0x00;
186 packet.set3_bias_voltage[1] = 0x00;
187 packet.set3_bias_voltage[2] = 0x00;
188 packet.set3_bias_voltage[3] = 0x00;
189 packet.set4[0] = 0x00;
190 packet.set4[1] = 0x00;
191 packet.set4[2] = 0x00;
192 packet.set4[3] = 0x00;
193 packet.set4[4] = 0x00;
194 packet.set4[5] = 0x00;
195 packet.set4[6] = 0x00;
196 packet.set4[7] = 0x00;
197 packet.set5 = 0x00;
198 packet.set6 = 0x00;
199 packet.set7[0] = 0x00;
200 packet.set7[1] = 0x00;
201 packet.set7[2] = 0x00;
202 packet.set7[3] = 0x00;
203 packet.set7[4] = 0x00;
204 packet.set7[5] = 0x00;
205 packet.set7[6] = 0x00;
206 packet.set7[7] = 0x00;
207
208 parameterDump->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
209 PACKET_LENGTH_TC_LFR_UPDATE_INFO + CCSDS_TC_TM_PACKET_OFFSET - 2);
210 packet.crc[0] = crcAsTwoBytes[0];
211 packet.crc[1] = crcAsTwoBytes[1];
212
213 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_UPDATE_INFO + CCSDS_TC_TM_PACKET_OFFSET,
214 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
215 }
216
217 void EnterMode::sendEnableCalibration()
218 {
219 Packet_TC_LFR_ENABLE_DISABLE_CALIBRATION_t packet;
220 unsigned char crcAsTwoBytes[2];
221
222 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
223 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
224 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
225 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
226 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_ENABLE_CALIBRATION >> 8);
227 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_ENABLE_CALIBRATION );
228
229 packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
230 packet.serviceType = TC_TYPE_DEFAULT;
231 packet.serviceSubType = TC_SUBTYPE_ENABLE_CALIBRATION;
232 packet.sourceID = SID_DEFAULT;
233
234 parameterDump->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
235 PACKET_LENGTH_TC_LFR_ENABLE_CALIBRATION + CCSDS_TC_TM_PACKET_OFFSET - 2);
236 packet.crc[0] = crcAsTwoBytes[0];
237 packet.crc[1] = crcAsTwoBytes[1];
238
239 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_ENABLE_CALIBRATION + CCSDS_TC_TM_PACKET_OFFSET,
240 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
241 }
242
243 void EnterMode::sendDisableCalibration()
244 {
245 Packet_TC_LFR_ENABLE_DISABLE_CALIBRATION_t packet;
246 unsigned char crcAsTwoBytes[2];
247
248 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
249 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
250 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
251 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
252 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_DISABLE_CALIBRATION >> 8);
253 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_DISABLE_CALIBRATION );
254
255 packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
256 packet.serviceType = TC_TYPE_DEFAULT;
257 packet.serviceSubType = TC_SUBTYPE_DISABLE_CALIBRATION;
258 packet.sourceID = SID_DEFAULT;
259
260 parameterDump->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
261 PACKET_LENGTH_TC_LFR_DISABLE_CALIBRATION + CCSDS_TC_TM_PACKET_OFFSET - 2);
262 packet.crc[0] = crcAsTwoBytes[0];
263 packet.crc[1] = crcAsTwoBytes[1];
264
265 emit WriteSPWSig((char*) &packet, PACKET_LENGTH_TC_LFR_DISABLE_CALIBRATION + CCSDS_TC_TM_PACKET_OFFSET,
266 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
267 }
268
269
270
@@ -5,9 +5,11
5 #include <QPushButton>
5 #include <QPushButton>
6 #include <QGridLayout>
6 #include <QGridLayout>
7 #include <QGroupBox>
7 #include <QGroupBox>
8 #include <QVBoxLayout>
8
9
9 #include <TC_types.h>
10 #include <TC_types.h>
10 #include <parameterdump.h>
11 #include <parameterdump.h>
12 #include <arbitrarytime.h>
11
13
12 class EnterMode : public QWidget
14 class EnterMode : public QWidget
13 {
15 {
@@ -23,12 +25,25 public:
23 QPushButton *button_enterModeSBM1;
25 QPushButton *button_enterModeSBM1;
24 QPushButton *button_enterModeSBM2;
26 QPushButton *button_enterModeSBM2;
25
27
28 QPushButton *button_reset;
29 QPushButton *button_updateInfo;
30 QPushButton *button_enableCalibration;
31 QPushButton *button_disableCalibration;
32 QPushButton *button_updateTime;
33
26 QGridLayout *mainLayout;
34 QGridLayout *mainLayout;
27 QGridLayout *overallLayout;
35 QGridLayout *overallLayout;
28
36
37 QVBoxLayout *layout_updateTime;
38 QVBoxLayout *layout_otherTC;
39
29 QGroupBox *groupBox;
40 QGroupBox *groupBox;
41 QGroupBox *groupBox_updateTime;
42 QGroupBox *groupBox_otherTC;
30
43
31 ParameterDump *parameterDump;
44 ParameterDump *parameterDump;
45
46 ArbitraryTime *arbitraryTime;
32
47
33 signals:
48 signals:
34 unsigned int WriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
49 unsigned int WriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
@@ -39,6 +54,13 public slots:
39 void enterModeBurst();
54 void enterModeBurst();
40 void enterModeSBM1();
55 void enterModeSBM1();
41 void enterModeSBM2();
56 void enterModeSBM2();
57
58 void sendUpdateTime();
59
60 void sendReset();
61 void sendUpdateInfo();
62 void sendEnableCalibration();
63 void sendDisableCalibration();
42
64
43 };
65 };
44
66
@@ -21,6 +21,8 LFRActions::LFRActions(QWidget *parent)
21 this, SLOT(reEmitWriteSPWSig(char*,uint,char,char)));
21 this, SLOT(reEmitWriteSPWSig(char*,uint,char,char)));
22 connect(this->parameterDump, SIGNAL(WriteSPWSig(char*,uint,char,char)),
22 connect(this->parameterDump, SIGNAL(WriteSPWSig(char*,uint,char,char)),
23 this, SLOT(reEmitWriteSPWSig(char*,uint,char,char)));
23 this, SLOT(reEmitWriteSPWSig(char*,uint,char,char)));
24 connect(this->enterMode->arbitraryTime, SIGNAL(WriteSPW(char*,uint,char,char)),
25 this, SLOT(reEmitWriteSPWSig(char*,uint,char,char)));
24 }
26 }
25
27
26 void LFRActions::reEmitWriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication){
28 void LFRActions::reEmitWriteSPWSig(char *Value, unsigned int count, char targetLogicalAddress, char userApplication){
@@ -135,6 +135,7 rmapplugin::~rmapplugin()
135 default:
135 default:
136 break;
136 break;
137 }
137 }
138 this->UI->tmStatistics->writeSettings();
138 }
139 }
139
140
140 unsigned int rmapplugin::Write(unsigned int *Value, unsigned int count, unsigned int address)
141 unsigned int rmapplugin::Write(unsigned int *Value, unsigned int count, unsigned int address)
@@ -252,10 +253,10 void rmapplugin::receivePacketFromBridge
252 this->UI->tmEchoBridge->sendTMPacketLESIA(packet);
253 this->UI->tmEchoBridge->sendTMPacketLESIA(packet);
253
254
254 this->generalCCSDSPacketStore.append(packet);
255 this->generalCCSDSPacketStore.append(packet);
255 if (this->generalCCSDSPacketStore.size() > 1000)
256 if (this->generalCCSDSPacketStore.size() > 200)
256 {
257 {
257 this->generalCCSDSPacketStore.erase(generalCCSDSPacketStore.begin(),
258 this->generalCCSDSPacketStore.erase(generalCCSDSPacketStore.begin(),
258 generalCCSDSPacketStore.begin() + 500);
259 generalCCSDSPacketStore.begin() + 100);
259 }
260 }
260 this->UI->nbPacketInStore->setText("nb packets in store: " + QString::number(generalCCSDSPacketStore.size()));
261 this->UI->nbPacketInStore->setText("nb packets in store: " + QString::number(generalCCSDSPacketStore.size()));
261 processPacketStore();
262 processPacketStore();
@@ -291,27 +292,6 void rmapplugin::preProcessPacket(TMPack
291 {
292 {
292 this->UI->lfrActions->parameterDump->updateParameterDump(packet);
293 this->UI->lfrActions->parameterDump->updateParameterDump(packet);
293 }
294 }
294
295 //****************************************
296 // if the packet is a waveform, display it
297 /*if ( (typ == 21) & (sub == 3) )
298 {
299 sid = packet->Value[20]; // SID
300 switch (sid){
301 case SID_NORMAL_SWF_F0:
302 buildWFAndDisplay(packet, &wfPacketNormal[0], 0);
303 break;
304 case SID_NORMAL_SWF_F1:
305 buildWFAndDisplay(packet, &wfPacketNormal[1], 1);
306 break;
307 case SID_NORMAL_SWF_F2:
308 buildWFAndDisplay(packet, &wfPacketNormal[2], 2);
309 break;
310 case SID_NORMAL_CWF_F3:
311 buildWFAndDisplay(packet, &wfPacketNormal[3], 3);
312 break;
313 }
314 }*/
315 }
295 }
316
296
317 void rmapplugin::nbPacketHasChanged(int nb)
297 void rmapplugin::nbPacketHasChanged(int nb)
@@ -32,9 +32,10 INCLUDEPATH += \
32 $${QT_INSTALL_HEADER} \
32 $${QT_INSTALL_HEADER} \
33 $$[QT_INSTALL_HEADERS]/lppmon/common \
33 $$[QT_INSTALL_HEADERS]/lppmon/common \
34 $$[QT_INSTALL_HEADERS]/lppmon/wfdisplay \
34 $$[QT_INSTALL_HEADERS]/lppmon/wfdisplay \
35 $$[QT_INSTALL_HEADERS]/lppmon/parameterdump
35 $$[QT_INSTALL_HEADERS]/lppmon/parameterdump \
36 $$[QT_INSTALL_HEADERS]/lppmon/paulcommon
36
37
37 LIBS += -llppmoncommon -lwfdisplay -lqwt5-qt4 -lparameterdump
38 LIBS += -llppmoncommon -lpaulcommon -lwfdisplay -lqwt5-qt4 -lparameterdump
38
39
39
40
40 HEADERS += \
41 HEADERS += \
@@ -133,6 +133,7 rmapPluginUI::rmapPluginUI(QWidget *pare
133 selectionLayout->addWidget(generalParameters_GROUPBOX);
133 selectionLayout->addWidget(generalParameters_GROUPBOX);
134 selectionLayout->addWidget(gresb_GROUPBOX);
134 selectionLayout->addWidget(gresb_GROUPBOX);
135 selectionLayout->addWidget(stardundee_GROUPBOX);
135 selectionLayout->addWidget(stardundee_GROUPBOX);
136 selectionLayout->addStretch(1);
136
137
137 //********
138 //********
138 // CONSOLE
139 // CONSOLE
@@ -132,9 +132,13 TMStatistics::TMStatistics(QWidget *pare
132
132
133 // QPushButton
133 // QPushButton
134 button_reset_stat = new QPushButton("reset stat");
134 button_reset_stat = new QPushButton("reset stat");
135 button_record = new QPushButton("REC");
136 button_chooseDir = new QPushButton("choose dir");
135 button_chooseDir = new QPushButton("choose dir");
137
136
137 //QCheckBox
138 checkbox_record = new QCheckBox("Record packets");
139 checkbox_packetLog = new QCheckBox("Log packets");
140 label_currentDir = new QLabel("Current Dir: -");
141
138 //**********
142 //**********
139 // QGroupBox
143 // QGroupBox
140 this->setStyleSheet("QGroupBox {border: 1px solid black; }");
144 this->setStyleSheet("QGroupBox {border: 1px solid black; }");
@@ -147,17 +151,11 TMStatistics::TMStatistics(QWidget *pare
147 groupbox_last = new QGroupBox("Last TM received");
151 groupbox_last = new QGroupBox("Last TM received");
148 groupbox_record = new QGroupBox("Packet recording");
152 groupbox_record = new QGroupBox("Packet recording");
149
153
150 groupbox_stat->setFont(font);
151 groupbox_NORM->setFont(font);
152 groupbox_BURST->setFont(font);
153 groupbox_SBM1->setFont(font);
154 groupbox_SBM2->setFont(font);
155 groupbox_last->setFont(font);
156 groupbox_record->setFont(font);
157
158 readSettings();
154 readSettings();
159 logFile = new QFile();
155 logFile = new QFile();
156 packetLogFile = new QFile();
160 logFileEn = false;
157 logFileEn = false;
158 packetLogFileEn = false;
161
159
162 initConstants();
160 initConstants();
163
161
@@ -167,9 +165,19 TMStatistics::TMStatistics(QWidget *pare
167 buildMonitor_SBM2();
165 buildMonitor_SBM2();
168 buildMonitor();
166 buildMonitor();
169
167
168 groupbox_stat->setFont(font);
169 groupbox_NORM->setFont(font);
170 groupbox_BURST->setFont(font);
171 groupbox_SBM1->setFont(font);
172 groupbox_SBM2->setFont(font);
173 groupbox_last->setFont(font);
174 groupbox_record->setFont(font);
175
170 connect(this->button_reset_stat, SIGNAL(clicked()), this, SLOT(resetStatistics()));
176 connect(this->button_reset_stat, SIGNAL(clicked()), this, SLOT(resetStatistics()));
171 connect(this->button_record, SIGNAL(clicked()), this, SLOT(storePackets()));
172 connect(this->button_chooseDir, SIGNAL(clicked()), this, SLOT(chooseDir()));
177 connect(this->button_chooseDir, SIGNAL(clicked()), this, SLOT(chooseDir()));
178
179 connect(this->checkbox_record, SIGNAL(stateChanged(int)), this, SLOT(storePackets(int)));
180 connect(this->checkbox_packetLog, SIGNAL(stateChanged(int)), this, SLOT(logPackets(int)));
173 }
181 }
174
182
175 void TMStatistics::initConstants()
183 void TMStatistics::initConstants()
@@ -347,9 +355,11 void TMStatistics::buildMonitor()
347 layout_last->addWidget(label_UNKNOWN, 3, 0, 1, 1);
355 layout_last->addWidget(label_UNKNOWN, 3, 0, 1, 1);
348 layout_last->addWidget(label_UNKNOWN_nb, 3, 1, 1, 1);
356 layout_last->addWidget(label_UNKNOWN_nb, 3, 1, 1, 1);
349
357
350 layout_record->addWidget(button_record);
358 layout_record->addWidget(checkbox_record);
359 layout_record->addWidget(checkbox_packetLog);
351 layout_record->addWidget(button_chooseDir);
360 layout_record->addWidget(button_chooseDir);
352 layout_record->insertStretch(2, 1);
361 layout_record->addWidget(label_currentDir);
362 layout_record->insertStretch(4, 1);
353
363
354 //***********
364 //***********
355 // groupboxes
365 // groupboxes
@@ -417,7 +427,7 void TMStatistics::updateStatistics(unsi
417 unsigned int sid, unsigned int length,
427 unsigned int sid, unsigned int length,
418 unsigned int coarse_t, unsigned int fine_t)
428 unsigned int coarse_t, unsigned int fine_t)
419 {
429 {
420 if (cat == 1)
430 if (cat == TM_PACKET_CAT_TC_EXE)
421 {
431 {
422 if (typ == TM_TYPE_TC_EXE)
432 if (typ == TM_TYPE_TC_EXE)
423 {
433 {
@@ -460,7 +470,7 void TMStatistics::updateStatistics(unsi
460 else
470 else
461 incrementUnknown();
471 incrementUnknown();
462 }
472 }
463 else if (cat == 4)
473 else if (cat == TM_PACKET_CAT_HK)
464 {
474 {
465 if (typ == TM_TYPE_HK)
475 if (typ == TM_TYPE_HK)
466 {
476 {
@@ -484,7 +494,7 void TMStatistics::updateStatistics(unsi
484 incrementUnknown();
494 incrementUnknown();
485 }
495 }
486 }
496 }
487 else if (cat == 9)
497 else if (cat == TM_PACKET_CAT_PARAMETER_DUMP)
488 {
498 {
489 if (typ == TM_TYPE_PARAMETER_DUMP)
499 if (typ == TM_TYPE_PARAMETER_DUMP)
490 {
500 {
@@ -508,11 +518,11 void TMStatistics::updateStatistics(unsi
508 incrementUnknown();
518 incrementUnknown();
509 }
519 }
510 }
520 }
511 else if (cat == 12)
521 else if (cat == TM_PACKET_CAT_SCIENCE)
512 {
522 {
513 if (typ == 21)
523 if (typ == TM_TYPE_LFR_SCIENCE)
514 {
524 {
515 if (sub == 3)
525 if (sub == TM_SUBTYPE_SCIENCE)
516 {
526 {
517 if (sid == SID_NORM_CWF_F3)
527 if (sid == SID_NORM_CWF_F3)
518 {
528 {
@@ -656,16 +666,24 unsigned int TMStatistics::getSID(TMPack
656 {
666 {
657 unsigned int sid = 0;
667 unsigned int sid = 0;
658 QByteArray packetAsAnArray;
668 QByteArray packetAsAnArray;
669 QString packetName;
670 QTime currentTime;
671 QDate currentDate;
659
672
660 if ((pid == 76) & (cat == 1) & (typ == TM_TYPE_TC_EXE) & (sub == TM_SUBTYPE_EXE_NOK))
673 if ((pid == TM_PACKET_PID_DEFAULT) & (cat == TM_PACKET_CAT_TC_EXE)
674 & (typ == TM_TYPE_TC_EXE) & (sub == TM_SUBTYPE_EXE_NOK))
661 sid = packet->Value[20] * 256 + packet->Value[21];
675 sid = packet->Value[20] * 256 + packet->Value[21];
662 else if ((pid == 76) & (cat == 4) & (typ == TM_TYPE_HK) & (sub == TM_SUBTYPE_HK))
676 else if ((pid == TM_PACKET_PID_DEFAULT) & (cat == TM_PACKET_CAT_HK)
677 & (typ == TM_TYPE_HK) & (sub == TM_SUBTYPE_HK))
663 sid = SID_HK;
678 sid = SID_HK;
664 else if ((pid == 76) & (cat == 9) & (typ == TM_TYPE_PARAMETER_DUMP) & (sub == TM_SUBTYPE_PARAMETER_DUMP))
679 else if ((pid == TM_PACKET_PID_DEFAULT) & (cat == TM_PACKET_CAT_PARAMETER_DUMP)
680 & (typ == TM_TYPE_PARAMETER_DUMP) & (sub == TM_SUBTYPE_PARAMETER_DUMP))
665 sid = SID_PARAMETER_DUMP;
681 sid = SID_PARAMETER_DUMP;
666 else if ((pid == 76) & (cat == 12) & (typ == TM_TYPE_LFR_SCIENCE) & (sub == TM_SUBTYPE_LFR_SCIENCE))
682 else if ((pid == TM_PACKET_PID_DEFAULT) & (cat == TM_PACKET_CAT_SCIENCE)
683 & (typ == TM_TYPE_LFR_SCIENCE) & (sub == TM_SUBTYPE_LFR_SCIENCE))
667 sid = packet->Value[20];
684 sid = packet->Value[20];
668 else if ((pid == 79) & (cat == 12) & (typ == TM_TYPE_LFR_SCIENCE) & (sub == TM_SUBTYPE_LFR_SCIENCE))
685 else if ((pid == TM_PACKET_PID_BURST_SBM1_SBM2) & (cat == TM_PACKET_CAT_SCIENCE)
686 & (typ == TM_TYPE_LFR_SCIENCE) & (sub == TM_SUBTYPE_LFR_SCIENCE))
669 sid = packet->Value[20];
687 sid = packet->Value[20];
670
688
671 if (logFileEn == true)
689 if (logFileEn == true)
@@ -679,6 +697,26 unsigned int TMStatistics::getSID(TMPack
679 << endl;
697 << endl;
680 }
698 }
681
699
700 if (packetLogFileEn == true)
701 {
702 currentTime = QTime::currentTime();
703 currentDate = QDate::currentDate();
704 packetName = getPacketName( typ, sub, sid);
705
706 *(this->packetLogFileStrm)
707 << QString::number(currentDate.year()) + " "
708 << QString::number(currentDate.month()) + " "
709 << QString::number(currentDate.day()) + " "
710 << QTime::currentTime().toString() + ":"
711 << QString::number(currentTime.msec()) + " "
712 << packetName
713 << " time = 0x " + QString::number(
714 (packet->Value[14] << 24) + (packet->Value[15] << 16) + (packet->Value[16] << 8) + packet->Value[17],
715 16).right(8)
716 << " " + QString::number( (packet->Value[18] << 8) + packet->Value[19], 16)
717 << endl;
718 }
719
682 return sid;
720 return sid;
683 }
721 }
684
722
@@ -693,32 +731,60 void TMStatistics::buildFileName()
693
731
694 prefix = defaultStorageDirectory + "/" + date + "_" + time + "_" ;
732 prefix = defaultStorageDirectory + "/" + date + "_" + time + "_" ;
695
733
696
697 if(this->logFile->isOpen()) this->logFile->close();
734 if(this->logFile->isOpen()) this->logFile->close();
698 this->logFile->setFileName( prefix + "packet_record.data");
735 this->logFile->setFileName( prefix + "packet_record.data");
699 if(this->logFile->open(QIODevice::WriteOnly)) this->logFileStrm = new QTextStream(this->logFile);
736 if(this->logFile->open(QIODevice::WriteOnly)) this->logFileStrm = new QTextStream(this->logFile);
700 }
737 }
701
738
702 void TMStatistics::storePackets()
739 void TMStatistics::buildPacketLogFileName()
703 {
740 {
704 if (logFileEn == false)
741 QString date;
742 QString time;
743 QString prefix;
744
745 date = QDate::currentDate().toString();
746 time = QTime::currentTime().toString();
747
748 prefix = defaultStorageDirectory + "/" + date + "_" + time + "_" ;
749
750 if(this->packetLogFile->isOpen()) this->packetLogFile->close();
751 this->packetLogFile->setFileName( prefix + "packet_log.data");
752 if(this->packetLogFile->open(QIODevice::WriteOnly)) this->packetLogFileStrm = new QTextStream(this->packetLogFile);
753 }
754
755 void TMStatistics::storePackets( int state )
756 {
757 if (state == Qt::Checked)
705 {
758 {
706 buildFileName();
759 buildFileName();
707 button_record->setText(tr("STOP"));
708 logFileEn = true;
760 logFileEn = true;
709 }
761 }
710 else
762 else
711 {
763 {
712 if(this->logFile->isOpen()) this->logFile->close();
764 if(this->logFile->isOpen()) this->logFile->close();
713 button_record->setText(tr("REC"));
714 logFileEn = false;
765 logFileEn = false;
715 }
766 }
716 }
767 }
717
768
769 void TMStatistics::logPackets( int state )
770 {
771 if (state == Qt::Checked)
772 {
773 buildPacketLogFileName();
774 packetLogFileEn = true;
775 }
776 else
777 {
778 if(this->packetLogFile->isOpen()) this->packetLogFile->close();
779 packetLogFileEn = false;
780 }
781 }
782
718 void TMStatistics::readSettings()
783 void TMStatistics::readSettings()
719 {
784 {
720 QSettings settings("lpp", "lfrsgse");
785 QSettings settings("lpp", "lfrsgse");
721 defaultStorageDirectory = settings.value("defaultStorageDirectory", QDir::homePath()).toString();
786 defaultStorageDirectory = settings.value("defaultStorageDirectory", QDir::homePath()).toString();
787 label_currentDir->setText(defaultStorageDirectory);
722 }
788 }
723
789
724 void TMStatistics::writeSettings()
790 void TMStatistics::writeSettings()
@@ -733,6 +799,7 void TMStatistics::chooseDir()
733 "choose the directory",
799 "choose the directory",
734 QDir::homePath(),
800 QDir::homePath(),
735 QFileDialog::ShowDirsOnly);
801 QFileDialog::ShowDirsOnly);
802 label_currentDir->setText(defaultStorageDirectory);
736 }
803 }
737
804
738 void TMStatistics::closeEvent(QCloseEvent *event)
805 void TMStatistics::closeEvent(QCloseEvent *event)
@@ -747,3 +814,61 void TMStatistics::closeEvent(QCloseEven
747 event->accept();
814 event->accept();
748 }
815 }
749
816
817 QString TMStatistics::getPacketName(unsigned char type, unsigned char subtype, unsigned int sid)
818 {
819 QString packetName = "default";
820 if (type == TM_TYPE_TC_EXE)
821 {
822 if (subtype== TM_SUBTYPE_EXE_OK) packetName = "TM_LFR_TC_EXE_SUCCESS";
823 if (subtype == TM_SUBTYPE_EXE_NOK)
824 {
825 if (sid == SID_EXE_INC) packetName = "TM_LFR_TC_EXE_INCONSISTENT";
826 if (sid == SID_NOT_EXE) packetName = "TM_LFR_TC_EXE_NOT_EXECUTABLE";
827 if (sid == SID_NOT_IMP) packetName = "TM_LFR_TC_EXE_NOT_IMPLEMENTED";
828 if (sid == SID_EXE_ERR) packetName = "TM_LFR_TC_EXE_ERROR";
829 if (sid == SID_EXE_CORR) packetName = "TM_LFR_TC_EXE_CORRUPTED";
830 }
831 }
832 if (type == TM_TYPE_HK)
833 {
834 if (subtype == TM_SUBTYPE_HK)
835 {
836 if (sid == SID_HK) packetName = "TM_LFR_HK";
837 if (sid == SID_PARAMETER_DUMP) packetName = "TM_LFR_PARAMETER_DUMP";
838 }
839 }
840 if (type == TM_TYPE_LFR_SCIENCE)
841 {
842 if (subtype == TM_SUBTYPE_SCIENCE)
843 {
844 if (sid == SID_NORM_SWF_F0) packetName = "TM_LFR_SCIENCE_NORMAL_SWF_F0";
845 if (sid == SID_NORM_SWF_F1) packetName = "TM_LFR_SCIENCE_NORMAL_SWF_F1";
846 if (sid == SID_NORM_SWF_F2) packetName = "TM_LFR_SCIENCE_NORMAL_SWF_F2";
847 if (sid == SID_NORM_CWF_F3) packetName = "TM_LFR_SCIENCE_NORMAL_CWF_F3";
848 if (sid == SID_BURST_CWF_F2) packetName = "TM_LFR_SCIENCE_BURST_CWF_F2";
849 if (sid == SID_SBM1_CWF_F1) packetName = "TM_LFR_SCIENCE_SBM1_CWF_F1";
850 if (sid == SID_SBM2_CWF_F2) packetName = "TM_LFR_SCIENCE_SBM2_CWF_F2";
851 if (sid == SID_NORM_ASM_F0) packetName = "TM_LFR_SCIENCE_NORMAL_ASM_F0";
852 if (sid == SID_NORM_ASM_F1) packetName = "TM_LFR_SCIENCE_NORMAL_ASM_F1";
853 if (sid == SID_NORM_ASM_F2) packetName = "TM_LFR_SCIENCE_NORMAL_ASM_F2";
854 if (sid == SID_NORM_BP1_F0) packetName = "TM_LFR_SCIENCE_NORMAL_BP1_F0";
855 if (sid == SID_NORM_BP1_F1) packetName = "TM_LFR_SCIENCE_NORMAL_BP1_F1";
856 if (sid == SID_NORM_BP1_F2) packetName = "TM_LFR_SCIENCE_NORMAL_BP1_F2";
857 if (sid == SID_NORM_BP2_F0) packetName = "TM_LFR_SCIENCE_NORMAL_BP2_F0";
858 if (sid == SID_NORM_BP2_F1) packetName = "TM_LFR_SCIENCE_NORMAL_BP2_F1";
859 if (sid == SID_NORM_BP2_F2) packetName = "TM_LFR_SCIENCE_NORMAL_BP2_F2";
860 if (sid == SID_BURST_BP1_F0) packetName = "TM_LFR_SCIENCE_BURST_BP1_F0";
861 if (sid == SID_BURST_BP2_F0) packetName = "TM_LFR_SCIENCE_BURST_BP2_F0";
862 if (sid == SID_BURST_BP1_F1) packetName = "TM_LFR_SCIENCE_BURST_BP1_F1";
863 if (sid == SID_BURST_BP2_F1) packetName = "TM_LFR_SCIENCE_BURST_BP2_F1";
864 if (sid == SID_SBM1_BP1_F0) packetName = "TM_LFR_SCIENCE_SBM1_BP1_F0";
865 if (sid == SID_SBM1_BP2_F0) packetName = "TM_LFR_SCIENCE_SBM1_BP2_F0";
866 if (sid == SID_SBM2_BP1_F0) packetName = "TM_LFR_SCIENCE_SBM2_BP1_F0";
867 if (sid == SID_SBM2_BP2_F0) packetName = "TM_LFR_SCIENCE_SBM2_BP2_F0";
868 if (sid == SID_SBM2_BP1_F1) packetName = "TM_LFR_SCIENCE_SBM2_BP1_F1";
869 if (sid == SID_SBM2_BP2_F1) packetName = "TM_LFR_SCIENCE_SBM2_BP2_F1";
870 }
871 }
872
873 return packetName;
874 }
@@ -11,6 +11,8
11 #include <QTextStream>
11 #include <QTextStream>
12 #include <tmpackettoread.h>
12 #include <tmpackettoread.h>
13 #include <ccsds_types.h>
13 #include <ccsds_types.h>
14 #include <QMap>
15 #include <QCheckBox>
14
16
15 #define STATISTICS_FONT_SIZE 9
17 #define STATISTICS_FONT_SIZE 9
16
18
@@ -37,6 +39,7 public:
37 unsigned int getCoarseTime(TMPacketToRead *packet);
39 unsigned int getCoarseTime(TMPacketToRead *packet);
38 unsigned int getFineTime(TMPacketToRead *packet);
40 unsigned int getFineTime(TMPacketToRead *packet);
39 unsigned int getSID(TMPacketToRead *packet, unsigned char pid, unsigned char cat, unsigned char typ, unsigned char sub);
41 unsigned int getSID(TMPacketToRead *packet, unsigned char pid, unsigned char cat, unsigned char typ, unsigned char sub);
42 QString getPacketName(unsigned char type, unsigned char subtype, unsigned int sid);
40 void closeEvent(QCloseEvent *event);
43 void closeEvent(QCloseEvent *event);
41
44
42 unsigned int UNKNOWN_nb;
45 unsigned int UNKNOWN_nb;
@@ -80,6 +83,7 public:
80 // QLabel
83 // QLabel
81 QLabel *label_UNKNOWN;
84 QLabel *label_UNKNOWN;
82 QLabel *label_UNKNOWN_nb;
85 QLabel *label_UNKNOWN_nb;
86 QLabel *label_currentDir;
83
87
84 //***************
88 //***************
85 // TM_LFR_TC_EXE_
89 // TM_LFR_TC_EXE_
@@ -201,12 +205,18 public:
201
205
202 // QPushButton
206 // QPushButton
203 QPushButton *button_reset_stat;
207 QPushButton *button_reset_stat;
204 QPushButton *button_record;
205 QPushButton *button_chooseDir;
208 QPushButton *button_chooseDir;
206
209
210 //QCheckBox
211 QCheckBox *checkbox_record;
212 QCheckBox *checkbox_packetLog;
213
207 QFile *logFile;
214 QFile *logFile;
215 QFile *packetLogFile;
208 QTextStream *logFileStrm;
216 QTextStream *logFileStrm;
217 QTextStream *packetLogFileStrm;
209 bool logFileEn;
218 bool logFileEn;
219 bool packetLogFileEn;
210 QString defaultStorageDirectory;
220 QString defaultStorageDirectory;
211
221
212 // QGroupBox
222 // QGroupBox
@@ -226,8 +236,10 public slots:
226 unsigned char typ, unsigned char sub,
236 unsigned char typ, unsigned char sub,
227 unsigned int sid, unsigned int length,
237 unsigned int sid, unsigned int length,
228 unsigned int coarse_t, unsigned int fine_t);
238 unsigned int coarse_t, unsigned int fine_t);
229 void storePackets();
239 void storePackets(int state);
240 void logPackets(int state);
230 void buildFileName();
241 void buildFileName();
242 void buildPacketLogFileName();
231 void readSettings();
243 void readSettings();
232 void writeSettings();
244 void writeSettings();
233 void chooseDir();
245 void chooseDir();
@@ -1,6 +1,6
1 #############################################################################
1 #############################################################################
2 # Makefile for building: spwtimegenerator
2 # Makefile for building: spwtimegenerator
3 # Generated by qmake (2.01a) (Qt 4.8.4) on: Fri Mar 29 09:01:03 2013
3 # Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Sep 20 14:17:00 2013
4 # Project: spwtimegenerator.pro
4 # Project: spwtimegenerator.pro
5 # Template: app
5 # Template: app
6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile spwtimegenerator.pro
6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile spwtimegenerator.pro
@@ -11,12 +11,12
11 CC = gcc
11 CC = gcc
12 CXX = g++
12 CXX = g++
13 DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
13 DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
14 CFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT $(DEFINES)
14 CFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT $(DEFINES)
15 CXXFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT $(DEFINES)
15 CXXFLAGS = -pipe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -O2 -Wall -W -D_REENTRANT $(DEFINES)
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -I../spw_usb_driver_v2.61/inc -I.
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include -I. -I../spw_usb_driver_v2.61/inc -I../parameterdump -I../../DEV_PLE/header -I/usr/include/lppmon/paulcommon -I.
17 LINK = g++
17 LINK = g++
18 LFLAGS = -Wl,-O1 -Wl,-z,relro
18 LFLAGS = -Wl,-O1 -Wl,-z,relro
19 LIBS = $(SUBLIBS) -L/usr/lib64 ../spw_usb_driver_v2.62/lib/x86_64/libSpaceWireUSBAPI.so ../spw_usb_driver_v2.62/lib/x86_64/libConfigLibraryUSB.so -lQtGui -lQtCore -lpthread
19 LIBS = $(SUBLIBS) -L/usr/lib64 -lpaulcommon ../spw_usb_driver_v2.62/lib/x86_64/libSpaceWireUSBAPI.so ../spw_usb_driver_v2.62/lib/x86_64/libConfigLibraryUSB.so -lQtGui -lQtCore -lpthread
20 AR = ar cqs
20 AR = ar cqs
21 RANLIB =
21 RANLIB =
22 QMAKE = /usr/bin/qmake-qt4
22 QMAKE = /usr/bin/qmake-qt4
@@ -45,13 +45,17 OBJECTS_DIR = ./
45
45
46 SOURCES = main.cpp \
46 SOURCES = main.cpp \
47 mainwindow.cpp \
47 mainwindow.cpp \
48 mainwindowui.cpp moc_mainwindow.cpp \
48 mainwindowui.cpp \
49 moc_mainwindowui.cpp
49 ../parameterdump/tcpackettosend.cpp moc_mainwindow.cpp \
50 moc_mainwindowui.cpp \
51 moc_tcpackettosend.cpp
50 OBJECTS = main.o \
52 OBJECTS = main.o \
51 mainwindow.o \
53 mainwindow.o \
52 mainwindowui.o \
54 mainwindowui.o \
55 tcpackettosend.o \
53 moc_mainwindow.o \
56 moc_mainwindow.o \
54 moc_mainwindowui.o
57 moc_mainwindowui.o \
58 moc_tcpackettosend.o
55 DIST = /usr/lib64/qt4/mkspecs/common/unix.conf \
59 DIST = /usr/lib64/qt4/mkspecs/common/unix.conf \
56 /usr/lib64/qt4/mkspecs/common/linux.conf \
60 /usr/lib64/qt4/mkspecs/common/linux.conf \
57 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
61 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
@@ -59,13 +63,14 DIST = /usr/lib64/qt4/mkspecs/c
59 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
63 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
60 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
64 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
61 /usr/lib64/qt4/mkspecs/qconfig.pri \
65 /usr/lib64/qt4/mkspecs/qconfig.pri \
62 /usr/lib64/qt4/mkspecs/modules/qt_webkit_version.pri \
66 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
63 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
67 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
64 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
68 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
65 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
69 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
66 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
70 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
67 /usr/lib64/qt4/mkspecs/features/release.prf \
71 /usr/lib64/qt4/mkspecs/features/release.prf \
68 /usr/lib64/qt4/mkspecs/features/default_post.prf \
72 /usr/lib64/qt4/mkspecs/features/default_post.prf \
73 /usr/lib64/qt4/mkspecs/features/shared.prf \
69 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
74 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
70 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
75 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
71 /usr/lib64/qt4/mkspecs/features/qt.prf \
76 /usr/lib64/qt4/mkspecs/features/qt.prf \
@@ -115,13 +120,14 Makefile: spwtimegenerator.pro /usr/lib
115 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
120 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
116 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
121 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
117 /usr/lib64/qt4/mkspecs/qconfig.pri \
122 /usr/lib64/qt4/mkspecs/qconfig.pri \
118 /usr/lib64/qt4/mkspecs/modules/qt_webkit_version.pri \
123 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
119 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
124 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
120 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
125 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
121 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
126 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
122 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
127 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
123 /usr/lib64/qt4/mkspecs/features/release.prf \
128 /usr/lib64/qt4/mkspecs/features/release.prf \
124 /usr/lib64/qt4/mkspecs/features/default_post.prf \
129 /usr/lib64/qt4/mkspecs/features/default_post.prf \
130 /usr/lib64/qt4/mkspecs/features/shared.prf \
125 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
131 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
126 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
132 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
127 /usr/lib64/qt4/mkspecs/features/qt.prf \
133 /usr/lib64/qt4/mkspecs/features/qt.prf \
@@ -142,13 +148,14 Makefile: spwtimegenerator.pro /usr/lib
142 /usr/lib64/qt4/mkspecs/common/g++-base.conf:
148 /usr/lib64/qt4/mkspecs/common/g++-base.conf:
143 /usr/lib64/qt4/mkspecs/common/g++-unix.conf:
149 /usr/lib64/qt4/mkspecs/common/g++-unix.conf:
144 /usr/lib64/qt4/mkspecs/qconfig.pri:
150 /usr/lib64/qt4/mkspecs/qconfig.pri:
145 /usr/lib64/qt4/mkspecs/modules/qt_webkit_version.pri:
151 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri:
146 /usr/lib64/qt4/mkspecs/features/qt_functions.prf:
152 /usr/lib64/qt4/mkspecs/features/qt_functions.prf:
147 /usr/lib64/qt4/mkspecs/features/qt_config.prf:
153 /usr/lib64/qt4/mkspecs/features/qt_config.prf:
148 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf:
154 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf:
149 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
155 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
150 /usr/lib64/qt4/mkspecs/features/release.prf:
156 /usr/lib64/qt4/mkspecs/features/release.prf:
151 /usr/lib64/qt4/mkspecs/features/default_post.prf:
157 /usr/lib64/qt4/mkspecs/features/default_post.prf:
158 /usr/lib64/qt4/mkspecs/features/shared.prf:
152 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
159 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
153 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
160 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
154 /usr/lib64/qt4/mkspecs/features/qt.prf:
161 /usr/lib64/qt4/mkspecs/features/qt.prf:
@@ -166,7 +173,7 qmake: FORCE
166
173
167 dist:
174 dist:
168 @$(CHK_DIR_EXISTS) .tmp/spwtimegenerator1.0.0 || $(MKDIR) .tmp/spwtimegenerator1.0.0
175 @$(CHK_DIR_EXISTS) .tmp/spwtimegenerator1.0.0 || $(MKDIR) .tmp/spwtimegenerator1.0.0
169 $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/spwtimegenerator1.0.0/ && $(COPY_FILE) --parents mainwindow.h mainwindowui.h ../spw_usb_driver_v2.61/inc/spw_usb_api.h ../spw_usb_driver_v2.61/inc/spw_config_library.h .tmp/spwtimegenerator1.0.0/ && $(COPY_FILE) --parents main.cpp mainwindow.cpp mainwindowui.cpp .tmp/spwtimegenerator1.0.0/ && (cd `dirname .tmp/spwtimegenerator1.0.0` && $(TAR) spwtimegenerator1.0.0.tar spwtimegenerator1.0.0 && $(COMPRESS) spwtimegenerator1.0.0.tar) && $(MOVE) `dirname .tmp/spwtimegenerator1.0.0`/spwtimegenerator1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/spwtimegenerator1.0.0
176 $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/spwtimegenerator1.0.0/ && $(COPY_FILE) --parents mainwindow.h mainwindowui.h ../spw_usb_driver_v2.61/inc/spw_usb_api.h ../spw_usb_driver_v2.61/inc/spw_config_library.h ../../DEV_PLE/header/ccsds_types.h ../../DEV_PLE/header/TC_types.h ../parameterdump/tcpackettosend.h .tmp/spwtimegenerator1.0.0/ && $(COPY_FILE) --parents main.cpp mainwindow.cpp mainwindowui.cpp ../parameterdump/tcpackettosend.cpp .tmp/spwtimegenerator1.0.0/ && (cd `dirname .tmp/spwtimegenerator1.0.0` && $(TAR) spwtimegenerator1.0.0.tar spwtimegenerator1.0.0 && $(COMPRESS) spwtimegenerator1.0.0.tar) && $(MOVE) `dirname .tmp/spwtimegenerator1.0.0`/spwtimegenerator1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/spwtimegenerator1.0.0
170
177
171
178
172 clean:compiler_clean
179 clean:compiler_clean
@@ -187,16 +194,21 mocclean: compiler_moc_header_clean comp
187
194
188 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
195 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
189
196
190 compiler_moc_header_make_all: moc_mainwindow.cpp moc_mainwindowui.cpp
197 compiler_moc_header_make_all: moc_mainwindow.cpp moc_mainwindowui.cpp moc_tcpackettosend.cpp
191 compiler_moc_header_clean:
198 compiler_moc_header_clean:
192 -$(DEL_FILE) moc_mainwindow.cpp moc_mainwindowui.cpp
199 -$(DEL_FILE) moc_mainwindow.cpp moc_mainwindowui.cpp moc_tcpackettosend.cpp
193 moc_mainwindow.cpp: mainwindowui.h \
200 moc_mainwindow.cpp: mainwindowui.h \
201 systemtime.h \
194 mainwindow.h
202 mainwindow.h
195 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) mainwindow.h -o moc_mainwindow.cpp
203 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) mainwindow.h -o moc_mainwindow.cpp
196
204
197 moc_mainwindowui.cpp: mainwindowui.h
205 moc_mainwindowui.cpp: systemtime.h \
206 mainwindowui.h
198 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) mainwindowui.h -o moc_mainwindowui.cpp
207 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) mainwindowui.h -o moc_mainwindowui.cpp
199
208
209 moc_tcpackettosend.cpp: ../parameterdump/tcpackettosend.h
210 /usr/lib64/qt4/bin/moc $(DEFINES) $(INCPATH) ../parameterdump/tcpackettosend.h -o moc_tcpackettosend.cpp
211
200 compiler_rcc_make_all:
212 compiler_rcc_make_all:
201 compiler_rcc_clean:
213 compiler_rcc_clean:
202 compiler_image_collection_make_all: qmake_image_collection.cpp
214 compiler_image_collection_make_all: qmake_image_collection.cpp
@@ -217,22 +229,31 compiler_clean: compiler_moc_header_clea
217 ####### Compile
229 ####### Compile
218
230
219 main.o: main.cpp mainwindow.h \
231 main.o: main.cpp mainwindow.h \
220 mainwindowui.h
232 mainwindowui.h \
233 systemtime.h
221 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
234 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
222
235
223 mainwindow.o: mainwindow.cpp mainwindow.h \
236 mainwindow.o: mainwindow.cpp mainwindow.h \
224 mainwindowui.h
237 mainwindowui.h \
238 systemtime.h
225 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
239 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
226
240
227 mainwindowui.o: mainwindowui.cpp mainwindowui.h
241 mainwindowui.o: mainwindowui.cpp mainwindowui.h \
242 systemtime.h
228 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindowui.o mainwindowui.cpp
243 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindowui.o mainwindowui.cpp
229
244
245 tcpackettosend.o: ../parameterdump/tcpackettosend.cpp ../parameterdump/tcpackettosend.h
246 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o tcpackettosend.o ../parameterdump/tcpackettosend.cpp
247
230 moc_mainwindow.o: moc_mainwindow.cpp
248 moc_mainwindow.o: moc_mainwindow.cpp
231 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
249 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
232
250
233 moc_mainwindowui.o: moc_mainwindowui.cpp
251 moc_mainwindowui.o: moc_mainwindowui.cpp
234 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindowui.o moc_mainwindowui.cpp
252 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindowui.o moc_mainwindowui.cpp
235
253
254 moc_tcpackettosend.o: moc_tcpackettosend.cpp
255 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_tcpackettosend.o moc_tcpackettosend.cpp
256
236 ####### Install
257 ####### Install
237
258
238 install: FORCE
259 install: FORCE
@@ -6,12 +6,23 MainWindow::MainWindow(QWidget *parent)
6 hDevice = NULL;
6 hDevice = NULL;
7 UI = new mainwindowui();
7 UI = new mainwindowui();
8 time = new QTimer();
8 time = new QTimer();
9 systemTime = 0x80000000;
10 flag_sendTimePacket = false;
11
12 packetToSend = new TCPacketToSend();
13
14 time->setInterval(1000);
9
15
10 connect(UI->starDundeeStatusQueryRetryButton, SIGNAL(clicked()), this, SLOT(reTestSPWLink()));
16 connect(UI->starDundeeStatusQueryRetryButton, SIGNAL(clicked()), this, SLOT(reTestSPWLink()));
11 connect(UI->startTimeButton, SIGNAL(clicked()), this, SLOT(startSpacewireTime()));
17 connect(this, SIGNAL(sendMessage(QString)), this->UI, SLOT(displayMessage(QString)));
18 connect(this, SIGNAL(systemTimeHasChanged(long)), this->UI->systemTime, SLOT(systemTimeHasChanged(long)));
19
20 connect(UI->startTimeButton, SIGNAL(clicked()), this, SLOT(sendTimecodesPeriodically()));
12 connect(UI->sendTimecodeButton, SIGNAL(clicked()), this, SLOT(sendOneTimecode()));
21 connect(UI->sendTimecodeButton, SIGNAL(clicked()), this, SLOT(sendOneTimecode()));
13 connect(UI->sendPacketAndTimecodeButton, SIGNAL(clicked()), this, SLOT(sendOnePacketAndOneTimecode()));
22 connect(UI->button_sendSystemTime, SIGNAL(clicked()), this, SLOT(sendSystemTime()));
14 connect(this, SIGNAL(sendMessage(QString)), this->UI, SLOT(displayMessage(QString)));
23 connect(UI->button_sendArbitraryTime, SIGNAL(clicked()), this, SLOT(sendArbitraryTime()));
24
25 connect(this->time, SIGNAL(timeout()), this, SLOT(periodicalTimecodeTimeout()));
15
26
16 this->setLayout(UI->layout());
27 this->setLayout(UI->layout());
17
28
@@ -22,25 +33,6 MainWindow::~MainWindow()
22
33
23 }
34 }
24
35
25 void MainWindow::startSpacewireTime()
26 {
27 unsigned int result;
28 if (hDevice==NULL)
29 {
30 result = Open();
31 }
32 if (getLinkStatus(UI->linkNumber_SPINBOX->value()))
33 {
34 emit sendMessage("OK *** in Start *** start sending packet periodically");
35 return;
36 }
37 else
38 {
39 emit sendMessage("ERR *** in Start *** ");
40 return;
41 }
42 }
43
44 void MainWindow::sendOneTimecode()
36 void MainWindow::sendOneTimecode()
45 {
37 {
46 unsigned int result;
38 unsigned int result;
@@ -50,26 +42,24 void MainWindow::sendOneTimecode()
50 {
42 {
51 result = Open();
43 result = Open();
52 }
44 }
53 if (getLinkStatus(UI->linkNumber_SPINBOX->value()))
45
54 {
46 if (!getLinkStatus(UI->linkNumber_SPINBOX->value()))
55 emit sendMessage("OK *** in sendOneTimecode *** stardundee brick running");
56 }
57 else
58 {
47 {
59 emit sendMessage("ERR *** in sendOneTimecode *** stardundee brick not running");
48 emit sendMessage("ERR *** in sendOneTimecode *** stardundee brick not running");
60 }
49 }
50
61 if(!USBSpaceWire_TC_EnableExternalTimecodeSelection(hDevice,0))
51 if(!USBSpaceWire_TC_EnableExternalTimecodeSelection(hDevice,0))
62 {
52 {
63 emit sendMessage("ERR *** disable external timecode selection");
53 emit sendMessage("ERR *** disable external timecode selection");
64 return;
54 return;
65 }
55 }
66 emit sendMessage("OK *** in sendOneTimecode *** next valid tick will be performed");
56
67 if(!USBSpaceWire_TC_PerformTickIn(hDevice, 0))
57 if(!USBSpaceWire_TC_PerformTickIn(hDevice, 0))
68 {
58 {
69 emit sendMessage("ERR *** in sendOneTimecode *** perform TickIn");
59 emit sendMessage("ERR *** in sendOneTimecode *** perform TickIn");
70 return;
60 return;
71 }
61 }
72 emit sendMessage("OK *** in sendOneTimecode *** tick performed");
62
73 // Read the timecode register
63 // Read the timecode register
74 if (CFGSpaceWire_GetTimecodeRegister(hDevice, &timecodeReg) != CFG_TRANSFER_SUCCESS)
64 if (CFGSpaceWire_GetTimecodeRegister(hDevice, &timecodeReg) != CFG_TRANSFER_SUCCESS)
75 {
65 {
@@ -78,16 +68,56 void MainWindow::sendOneTimecode()
78 else
68 else
79 {
69 {
80 CFGSpaceWire_TCGetValue(timecodeReg, &val);
70 CFGSpaceWire_TCGetValue(timecodeReg, &val);
81 emit sendMessage("The timecode value is currently: " + QString::number(val));
71 //emit sendMessage("The timecode value is currently: " + QString::number(val));
72 this->UI->currentTimecodeValue_LABEL->setText("Current Timecode Value: " + QString::number(val));
82 CFGSpaceWire_TCGetFlags(timecodeReg, &val);
73 CFGSpaceWire_TCGetFlags(timecodeReg, &val);
83 emit sendMessage("The timecode flag value is currently: " + QString::number(val));
74 this->UI->currentTimecodeFlag_LABEL->setText("Current Timecode Flag: " + QString::number(val));
75 //emit sendMessage("The timecode flag value is currently: " + QString::number(val));
84 }
76 }
85
77
86 }
78 }
87
79
88 void MainWindow::sendOnePacketAndOneTimecode()
80 void MainWindow::sendTimecodesPeriodically()
81 {
82 if(time->isActive())
83 {
84 time->stop();
85 this->UI->startTimeButton->setText("start sending timecodes periodically");
86 }
87 else
88 {
89 time->start();
90 this->UI->startTimeButton->setText("stop sending timecodes periodically");
91 }
92 }
93
94 void MainWindow::periodicalTimecodeTimeout()
89 {
95 {
96 sendOneTimecode();
97 systemTime = systemTime + 1;
98 if (flag_sendTimePacket == true)
99 {
100 flag_sendTimePacket = false;
101 QTimer::singleShot(700, this, SLOT(sendTimePacketTimeout()));
102 }
103 emit(systemTimeHasChanged(systemTime));
104 }
90
105
106 void MainWindow::sendTimePacketTimeout()
107 {
108 sendUpdateTime( systemTime + 1 );
109 }
110
111 void MainWindow::sendSystemTime()
112 {
113 flag_sendTimePacket = true;
114 }
115
116 void MainWindow::sendArbitraryTime()
117 {
118 flag_sendTimePacket = true;
119 systemTime = this->UI->arbitraryTime;
120 emit (systemTimeHasChanged( systemTime));
91 }
121 }
92
122
93 unsigned int MainWindow::Open()
123 unsigned int MainWindow::Open()
@@ -116,11 +146,11 unsigned int MainWindow::Open()
116 {
146 {
117 return UI->starDundeeStatusQueryDialog->exec();
147 return UI->starDundeeStatusQueryDialog->exec();
118 }
148 }
149
119 if (!USBSpaceWire_TC_Reset(hDevice))
150 if (!USBSpaceWire_TC_Reset(hDevice))
120 {
151 {
121 emit sendMessage("ERR *** in Open *** Could not reset timecodes\n");
152 emit sendMessage("ERR *** in Open *** Could not reset timecodes\n");
122 }
153 }
123 emit sendMessage("OK *** in Open *** reset timecodes");
124
154
125 // Clear the tick enable register
155 // Clear the tick enable register
126 if (CFGSpaceWire_SetTickEnableStatus(hDevice, 6) != CFG_TRANSFER_SUCCESS)
156 if (CFGSpaceWire_SetTickEnableStatus(hDevice, 6) != CFG_TRANSFER_SUCCESS)
@@ -135,10 +165,17 unsigned int MainWindow::Open()
135
165
136 unsigned int MainWindow::getLinkStatus(unsigned char link)
166 unsigned int MainWindow::getLinkStatus(unsigned char link)
137 {
167 {
168 unsigned int resultOpen;
169
138 U32 statusControl = 0, errorStatus = 0, portType = 0;
170 U32 statusControl = 0, errorStatus = 0, portType = 0;
139 U32 linkStatus = 0, operatingSpeed = 0, outputPortConnection = 0;
171 U32 linkStatus = 0, operatingSpeed = 0, outputPortConnection = 0;
140 char isLinkRunning = 0, isAutoStart = 0, isStart = 0, isDisabled = 0, isTristate = 0;
172 char isLinkRunning = 0, isAutoStart = 0, isStart = 0, isDisabled = 0, isTristate = 0;
141
173
174 if (hDevice==NULL)
175 {
176 resultOpen = Open();
177 }
178
142 // Read the link status control register
179 // Read the link status control register
143 if (CFGSpaceWire_GetLinkStatusControl(hDevice, 1, &statusControl) != CFG_TRANSFER_SUCCESS)
180 if (CFGSpaceWire_GetLinkStatusControl(hDevice, 1, &statusControl) != CFG_TRANSFER_SUCCESS)
144 {
181 {
@@ -191,3 +228,91 void MainWindow::reTestSPWLink() // SLOT
191 UI->starDundeeStatusQueryDialog->accept();
228 UI->starDundeeStatusQueryDialog->accept();
192 }
229 }
193 }
230 }
231
232 void MainWindow::sendUpdateTime(long time)
233 {
234 Packet_TC_LFR_UPDATE_TIME_t packet;
235 unsigned char crcAsTwoBytes[2];
236
237 packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
238 packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
239 packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
240 packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
241 packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_UPDATE_TIME >> 8);
242 packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_UPDATE_TIME );
243
244 packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
245 packet.serviceType = TC_TYPE_LFR_UPDATE_TIME;
246 packet.serviceSubType = TC_SUBTYPE_UPDATE_TIME;
247 packet.sourceID = SID_DEFAULT;
248 packet.cp_rpw_time[0] = (unsigned char) (time >> 24);
249 packet.cp_rpw_time[1] = (unsigned char) (time >> 16);
250 packet.cp_rpw_time[2] = (unsigned char) (time >> 8);
251 packet.cp_rpw_time[3] = (unsigned char) (time);
252 packet.cp_rpw_time[4] = 0; // fine time MSB
253 packet.cp_rpw_time[5] = 0; // fine time LSB
254
255 packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
256 PACKET_LENGTH_TC_LFR_UPDATE_TIME + CCSDS_TC_TM_PACKET_OFFSET - 2);
257 packet.crc[0] = crcAsTwoBytes[0];
258 packet.crc[1] = crcAsTwoBytes[1];
259
260 WriteSPW((char*) &packet, PACKET_LENGTH_TC_LFR_UPDATE_TIME + CCSDS_TC_TM_PACKET_OFFSET,
261 CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
262 }
263
264 unsigned int MainWindow::WriteSPW(char *Value, unsigned int count, char targetLogicalAddress, char userApplication)
265 {
266 char protocoleIdentifier = 0x02;
267 char reserved = 0x00;
268 char *SPWData;
269 unsigned int totalSize;
270
271 if (count>248)
272 {
273 emit sendMessage("WARNING === in function WRITE of rmapplugin *** CCSDS packet size > 248 bytes\n");
274 return 1;
275 }
276
277 if ( getLinkStatus( this->UI->linkNumber_SPINBOX->value() ) == 0 )
278 {
279 emit sendMessage("WARNING === in function WriteSPW of StarDundee *** SPW link not running\n");
280 return 1;
281 }
282
283 totalSize = count + 4 + PATH_ADDRESSING_OFFSET; // The StarDundee brick is in PATH addressing
284 SPWData = (char*) malloc(totalSize);
285 // SPW HEADER
286 SPWData[0] = this->UI->linkNumber_SPINBOX->value(); // 1 by default, value can be 1 or 2
287 SPWData[0+PATH_ADDRESSING_OFFSET] = targetLogicalAddress;
288 SPWData[1+PATH_ADDRESSING_OFFSET] = protocoleIdentifier;
289 SPWData[2+PATH_ADDRESSING_OFFSET] = reserved;
290 SPWData[3+PATH_ADDRESSING_OFFSET] = userApplication;
291 // CCSDS PACKET
292 for (unsigned int i = 0; i<count; i++)
293 {
294 SPWData[i+4+PATH_ADDRESSING_OFFSET] = Value[i];
295 }
296
297 //****************
298 // SEND THE PACKET
299 result = USBSpaceWire_SendPacket(hDevice,
300 SPWData,
301 totalSize,
302 BWAIT_1, &pIdentifier);
303 if (result != TRANSFER_SUCCESS)
304 {
305 emit sendMessage("ERROR *** WriteSPW when sending packet of size "
306 + QString::number(totalSize) +", with code: " + QString::number(result));
307 USBSpaceWire_FreeSend(hDevice, pIdentifier);
308 free(SPWData);
309 return 0;
310 }
311
312 //**************
313 // Free the send
314 USBSpaceWire_FreeSend(hDevice, pIdentifier);
315 free(SPWData);
316
317 return 1;
318 }
@@ -1,14 +1,22
1 #ifndef MAINWINDOW_H
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
2 #define MAINWINDOW_H
3
3
4 #include <mainwindowui.h>
5
4 #include <QtGui/QMainWindow>
6 #include <QtGui/QMainWindow>
5 #include "spw_usb_api.h"
6 #include "spw_config_library.h"
7 #include <mainwindowui.h>
8 #include <QDialog>
7 #include <QDialog>
9 #include <QObject>
8 #include <QObject>
10 #include <QTimer>
9 #include <QTimer>
11
10
11 #include "spw_usb_api.h"
12 #include "spw_config_library.h"
13 #include "TC_types.h"
14 #include "tcpackettosend.h"
15
16 #define BWAIT_0 0
17 #define BWAIT_1 1
18 #define PATH_ADDRESSING_OFFSET 1
19
12 class MainWindow : public QWidget
20 class MainWindow : public QWidget
13 {
21 {
14 Q_OBJECT
22 Q_OBJECT
@@ -16,24 +24,36 class MainWindow : public QWidget
16 public:
24 public:
17 MainWindow(QWidget *parent = 0);
25 MainWindow(QWidget *parent = 0);
18 ~MainWindow();
26 ~MainWindow();
27 unsigned int WriteSPW(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
28 TCPacketToSend *packetToSend;
19
29
20 private:
30 private:
21 unsigned int getLinkStatus(unsigned char link);
31 unsigned int getLinkStatus(unsigned char link);
22
32
33 USB_SPACEWIRE_ID pIdentifier;
34 USB_SPACEWIRE_STATUS result; // The result of the send operation
23 star_device_handle hDevice; // Handle to the SpaceWire device
35 star_device_handle hDevice; // Handle to the SpaceWire device
24 bool isRunning;
36 bool isRunning;
25
37
26 mainwindowui *UI;
38 mainwindowui *UI;
27 QTimer *time;
39 QTimer *time;
28
40
41 long systemTime;
42 bool flag_sendTimePacket;
43
29 signals:
44 signals:
30 void sendMessage(QString);
45 void sendMessage(QString);
46 void systemTimeHasChanged(long time);
31
47
32 public slots:
48 public slots:
33 unsigned int Open();
49 unsigned int Open();
34 void startSpacewireTime();
35 void sendOneTimecode();
50 void sendOneTimecode();
36 void sendOnePacketAndOneTimecode();
51 void sendTimecodesPeriodically();
52 void periodicalTimecodeTimeout();
53 void sendTimePacketTimeout();
54 void sendSystemTime();
55 void sendArbitraryTime();
56 void sendUpdateTime(long time);
37 void reTestSPWLink();
57 void reTestSPWLink();
38 };
58 };
39
59
@@ -3,6 +3,8
3 mainwindowui::mainwindowui(QWidget *parent) :
3 mainwindowui::mainwindowui(QWidget *parent) :
4 QWidget(parent)
4 QWidget(parent)
5 {
5 {
6 arbitraryTime = 0x80000000;
7
6 starDundeeStatusQueryDialog = new QDialog;
8 starDundeeStatusQueryDialog = new QDialog;
7
9
8 connection_LAYOUT = new QGridLayout;
10 connection_LAYOUT = new QGridLayout;
@@ -10,13 +12,16 mainwindowui::mainwindowui(QWidget *pare
10 usbDeviceNumber_LABEL = new QLabel(tr("USB device number: "));
12 usbDeviceNumber_LABEL = new QLabel(tr("USB device number: "));
11 linkNumber_LABEL = new QLabel(tr("SpaceWire link number: "));
13 linkNumber_LABEL = new QLabel(tr("SpaceWire link number: "));
12 starDundeeStatusQueryDialogLabel = new QLabel(tr("SpaceWire link not running"));
14 starDundeeStatusQueryDialogLabel = new QLabel(tr("SpaceWire link not running"));
15 currentTimecodeValue_LABEL = new QLabel(tr("Current Timecode Value: -"));
16 currentTimecodeFlag_LABEL = new QLabel(tr("Current Timecode Flag: -"));
13
17
14 //*** QPUSHBUTTON ***//
18 //*** QPUSHBUTTON ***//
19 button_sendSystemTime = new QPushButton(tr("Send System Time"));
20 button_sendArbitraryTime = new QPushButton(tr("Send Arbitrary Time"));
15 starDundeeStatusQueryRetryButton = new QPushButton(tr("Retry"));
21 starDundeeStatusQueryRetryButton = new QPushButton(tr("Retry"));
16 starDundeeStatusQueryAbortButton = new QPushButton(tr("Abort"));
22 starDundeeStatusQueryAbortButton = new QPushButton(tr("Abort"));
17 startTimeButton = new QPushButton(tr("start sending time packets and timecodes periodically"));
23 startTimeButton = new QPushButton(tr("start sending timecodes periodically"));
18 sendTimecodeButton = new QPushButton(tr("send one timecode"));
24 sendTimecodeButton = new QPushButton(tr("send one timecode"));
19 sendPacketAndTimecodeButton = new QPushButton(tr("send time packet and timecode"));
20
25
21 usbDeviceNumber_SPINBOX = new QSpinBox;
26 usbDeviceNumber_SPINBOX = new QSpinBox;
22 usbDeviceNumber_SPINBOX->setRange(0,32);
27 usbDeviceNumber_SPINBOX->setRange(0,32);
@@ -26,6 +31,7 mainwindowui::mainwindowui(QWidget *pare
26 linkNumber_SPINBOX->setValue(1);
31 linkNumber_SPINBOX->setValue(1);
27
32
28 console = new QTextEdit;
33 console = new QTextEdit;
34 systemTime = new SystemTime;
29
35
30 // STAR DUNDEE STATUS QUERY DIALOG
36 // STAR DUNDEE STATUS QUERY DIALOG
31 starDundeeStatusQueryDialogLayout = new QGridLayout;
37 starDundeeStatusQueryDialogLayout = new QGridLayout;
@@ -39,9 +45,13 mainwindowui::mainwindowui(QWidget *pare
39 connection_LAYOUT->addWidget(linkNumber_LABEL, 1, 0, 1, 1);
45 connection_LAYOUT->addWidget(linkNumber_LABEL, 1, 0, 1, 1);
40 connection_LAYOUT->addWidget(linkNumber_SPINBOX, 1, 1, 1, 1);
46 connection_LAYOUT->addWidget(linkNumber_SPINBOX, 1, 1, 1, 1);
41 connection_LAYOUT->addWidget(sendTimecodeButton, 2, 0, 1, 2);
47 connection_LAYOUT->addWidget(sendTimecodeButton, 2, 0, 1, 2);
42 connection_LAYOUT->addWidget(sendPacketAndTimecodeButton, 3, 0, 1, 2);
48 connection_LAYOUT->addWidget(startTimeButton, 3, 0, 1, 2);
43 connection_LAYOUT->addWidget(startTimeButton, 4, 0, 1, 2);
49 connection_LAYOUT->addWidget(currentTimecodeValue_LABEL, 4, 0, 1, 2);
44 connection_LAYOUT->addWidget(console, 5, 0, 3, 3);
50 connection_LAYOUT->addWidget(currentTimecodeFlag_LABEL, 5, 0, 1, 2);
51 connection_LAYOUT->addWidget(button_sendSystemTime, 6, 0, 1, 1);
52 connection_LAYOUT->addWidget(button_sendArbitraryTime, 6, 1, 1, 1);
53 connection_LAYOUT->addWidget(systemTime, 7, 0, 1, 2);
54 connection_LAYOUT->addWidget(console, 0, 2, 7, 2);
45
55
46 //connection_LAYOUT->setRowStretch(6, 1);
56 //connection_LAYOUT->setRowStretch(6, 1);
47 connection_LAYOUT->setColumnStretch(2, 1);
57 connection_LAYOUT->setColumnStretch(2, 1);
@@ -49,9 +59,15 mainwindowui::mainwindowui(QWidget *pare
49 this->setLayout(connection_LAYOUT);
59 this->setLayout(connection_LAYOUT);
50
60
51 connect(starDundeeStatusQueryAbortButton, SIGNAL(clicked()), starDundeeStatusQueryDialog, SLOT(reject()));
61 connect(starDundeeStatusQueryAbortButton, SIGNAL(clicked()), starDundeeStatusQueryDialog, SLOT(reject()));
62 connect(this->systemTime, SIGNAL(timeToSendChanged(long)), this, SLOT(updateTimeToSend(long)));
52 }
63 }
53
64
54 void mainwindowui::displayMessage(QString message)
65 void mainwindowui::displayMessage(QString message)
55 {
66 {
56 this->console->append(message);
67 this->console->append(message);
57 }
68 }
69
70 void::mainwindowui::updateTimeToSend(long timeToSend)
71 {
72 arbitraryTime = timeToSend;
73 }
@@ -9,6 +9,8
9 #include <QTextEdit>
9 #include <QTextEdit>
10 #include <QDialog>
10 #include <QDialog>
11
11
12 #include "systemtime.h"
13
12 class mainwindowui : public QWidget
14 class mainwindowui : public QWidget
13 {
15 {
14 Q_OBJECT
16 Q_OBJECT
@@ -19,11 +21,17 signals:
19
21
20 public slots:
22 public slots:
21 void displayMessage(QString message);
23 void displayMessage(QString message);
24 void updateTimeToSend(long timeToSend);
22
25
23 public:
26 public:
27 long arbitraryTime;
28
24 QLabel *usbDeviceNumber_LABEL;
29 QLabel *usbDeviceNumber_LABEL;
25 QLabel *linkNumber_LABEL;
30 QLabel *linkNumber_LABEL;
26 QLabel *starDundeeStatusQueryDialogLabel;
31 QLabel *starDundeeStatusQueryDialogLabel;
32 QLabel *currentTimecodeValue_LABEL;
33 QLabel *currentTimecodeFlag_LABEL;
34
27
35
28 QSpinBox *usbDeviceNumber_SPINBOX;
36 QSpinBox *usbDeviceNumber_SPINBOX;
29 QSpinBox *linkNumber_SPINBOX;
37 QSpinBox *linkNumber_SPINBOX;
@@ -33,12 +41,15 public:
33
41
34 QDialog *starDundeeStatusQueryDialog;
42 QDialog *starDundeeStatusQueryDialog;
35
43
44 QPushButton *button_sendSystemTime;
45 QPushButton *button_sendArbitraryTime;
36 QPushButton *startTimeButton;
46 QPushButton *startTimeButton;
37 QPushButton *sendTimecodeButton;
47 QPushButton *sendTimecodeButton;
38 QPushButton *sendPacketAndTimecodeButton;
39 QPushButton *starDundeeStatusQueryRetryButton;
48 QPushButton *starDundeeStatusQueryRetryButton;
40 QPushButton *starDundeeStatusQueryAbortButton;
49 QPushButton *starDundeeStatusQueryAbortButton;
41
50
51 SystemTime *systemTime;
52
42 QTextEdit* console;
53 QTextEdit* console;
43 };
54 };
44
55
1 NO CONTENT: modified file, binary diff hidden
NO CONTENT: modified file, binary diff hidden
@@ -9,18 +9,29 QT += core gui
9 TARGET = spwtimegenerator
9 TARGET = spwtimegenerator
10 TEMPLATE = app
10 TEMPLATE = app
11
11
12 INCLUDEPATH += \
13 $${PWD} \
14 ../spw_usb_driver_v2.61/inc \
15 ../parameterdump \
16 ../../DEV_PLE/header \
17 $$[QT_INSTALL_HEADERS]/lppmon/paulcommon
18
12 SOURCES += main.cpp\
19 SOURCES += main.cpp\
13 mainwindow.cpp \
20 mainwindow.cpp \
14 mainwindowui.cpp
21 mainwindowui.cpp \
22 ../parameterdump/tcpackettosend.cpp
15
23
16 HEADERS += mainwindow.h \
24 HEADERS += mainwindow.h \
17 mainwindowui.h \
25 mainwindowui.h \
18 ../spw_usb_driver_v2.61/inc/spw_usb_api.h \
26 ../spw_usb_driver_v2.61/inc/spw_usb_api.h \
19 ../spw_usb_driver_v2.61/inc/spw_config_library.h
27 ../spw_usb_driver_v2.61/inc/spw_config_library.h \
28 ../../DEV_PLE/header/ccsds_types.h \
29 ../../DEV_PLE/header/TC_types.h \
30 ../parameterdump/tcpackettosend.h
31
32 LIBS += -lpaulcommon
20
33
21 LIBS += ../spw_usb_driver_v2.62/lib/x86_64/libSpaceWireUSBAPI.so \
34 LIBS += ../spw_usb_driver_v2.62/lib/x86_64/libSpaceWireUSBAPI.so \
22 ../spw_usb_driver_v2.62/lib/x86_64/libConfigLibraryUSB.so
35 ../spw_usb_driver_v2.62/lib/x86_64/libConfigLibraryUSB.so
23
36
24 INCLUDEPATH += \
37
25 $${PWD} \
26 ../spw_usb_driver_v2.61/inc
@@ -1,6 +1,6
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 Qt Creator 2.4.1, 2013-05-03T15:28:00. -->
3 <!-- Written by QtCreator 2.8.0, 2013-09-20T16:01:50. -->
4 <qtcreator>
4 <qtcreator>
5 <data>
5 <data>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -11,6 +11,7
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 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
15 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
15 <value type="QString" key="language">Cpp</value>
16 <value type="QString" key="language">Cpp</value>
16 <valuemap type="QVariantMap" key="value">
17 <valuemap type="QVariantMap" key="value">
@@ -27,6 +28,7
27 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
28 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
28 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
29 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
29 <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>
30 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
32 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
31 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
33 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
32 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
34 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
@@ -49,16 +51,16
49 <data>
51 <data>
50 <variable>ProjectExplorer.Project.Target.0</variable>
52 <variable>ProjectExplorer.Project.Target.0</variable>
51 <valuemap type="QVariantMap">
53 <valuemap type="QVariantMap">
52 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
53 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Target.DesktopTarget</value>
56 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
55 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
57 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
56 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
58 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
57 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
58 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
60 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
59 <value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-64bit./usr/bin/gdb</value>
60 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
63 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
62 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
63 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
@@ -68,9 +70,14
68 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
70 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
69 </valuemap>
71 </valuemap>
70 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
72 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
73 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
71 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
74 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
72 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
75 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
73 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
76 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
77 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
78 <value type="QString">-w</value>
79 <value type="QString">-r</value>
80 </valuelist>
74 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
81 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
75 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
76 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
@@ -82,9 +89,14
82 </valuemap>
89 </valuemap>
83 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
90 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
84 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
91 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
92 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
85 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
93 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
86 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
96 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
97 <value type="QString">-w</value>
98 <value type="QString">-r</value>
99 </valuelist>
88 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
100 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
89 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
90 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
@@ -102,13 +114,12
102 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
103 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
115 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
104 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL/spwtimegenerator</value>
116 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL/spwtimegenerator</value>
105 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">1</value>
106 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
117 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
107 </valuemap>
118 </valuemap>
108 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
119 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
109 <value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-64bit./usr/bin/gdb</value>
110 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
120 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
111 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
122 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
@@ -118,9 +129,14
118 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
129 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
119 </valuemap>
130 </valuemap>
120 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
131 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
132 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
121 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
133 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
122 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
134 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
135 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
136 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
137 <value type="QString">-w</value>
138 <value type="QString">-r</value>
139 </valuelist>
124 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
140 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
125 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
141 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
126 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
142 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
@@ -132,9 +148,14
132 </valuemap>
148 </valuemap>
133 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
149 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
134 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
150 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
151 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
135 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
152 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
136 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
153 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
137 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
154 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
155 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
156 <value type="QString">-w</value>
157 <value type="QString">-r</value>
158 </valuelist>
138 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
159 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
139 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
160 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
140 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
161 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
@@ -152,7 +173,6
152 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
173 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
153 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
174 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
154 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL/spwtimegenerator</value>
175 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/LPPMON_PLUGINS_PAUL/spwtimegenerator</value>
155 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">1</value>
156 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
176 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
157 </valuemap>
177 </valuemap>
158 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
178 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
@@ -169,34 +189,21
169 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
189 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
170 </valuemap>
190 </valuemap>
171 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
191 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
192 <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
172 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
193 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
173 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
194 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
174 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
175 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
176 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
195 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
177 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
196 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
178 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
179 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
180 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
197 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
181 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
198 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
182 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
183 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
184 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
199 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
185 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
200 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
186 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
187 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
201 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
188 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
189 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
190 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
202 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
191 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
203 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
192 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
193 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
194 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
204 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
195 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
205 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
196 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
197 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
206 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
198 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
199 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
200 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
207 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
201 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
208 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
202 <value type="int">0</value>
209 <value type="int">0</value>
@@ -215,35 +222,20
215 <value type="int">13</value>
222 <value type="int">13</value>
216 <value type="int">14</value>
223 <value type="int">14</value>
217 </valuelist>
224 </valuelist>
218 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
225 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
219 <value type="int">0</value>
226 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
220 <value type="int">1</value>
221 <value type="int">2</value>
222 <value type="int">3</value>
223 <value type="int">4</value>
224 <value type="int">5</value>
225 <value type="int">6</value>
226 <value type="int">7</value>
227 <value type="int">8</value>
228 <value type="int">9</value>
229 <value type="int">10</value>
230 <value type="int">11</value>
231 <value type="int">12</value>
232 <value type="int">13</value>
233 <value type="int">14</value>
234 </valuelist>
235 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">spwtimegenerator</value>
227 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">spwtimegenerator</value>
236 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
228 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
237 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration</value>
229 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/opt/LPPMON_PLUGINS_PAUL/spwtimegenerator/spwtimegenerator.pro</value>
238 <value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
239 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
230 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
240 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">spwtimegenerator.pro</value>
231 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">spwtimegenerator.pro</value>
241 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
232 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
242 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
233 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
243 <valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
244 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
234 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
245 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
235 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
246 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
236 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
237 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
238 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
247 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
239 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
248 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
240 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
249 </valuemap>
241 </valuemap>
@@ -256,10 +248,10
256 </data>
248 </data>
257 <data>
249 <data>
258 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
250 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
259 <value type="QString">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
251 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
260 </data>
252 </data>
261 <data>
253 <data>
262 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
254 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
263 <value type="int">10</value>
255 <value type="int">14</value>
264 </data>
256 </data>
265 </qtcreator>
257 </qtcreator>
General Comments 0
You need to be logged in to leave comments. Login now