Go to the documentation of this file.00001 #include "datawidget.h"
00002
00003 #include "roctabswidget.h"
00004
00005 #include <QFileDialog>
00006 #include <QTimer>
00007 #include <QApplication>
00008 #include <QColor>
00009
00010 #include "roc/Message.h"
00011 #include <sstream>
00012
00013 #include "roc/defines_roc.h"
00014
00015 DataWidget::DataWidget(QWidget* parent, roc::Board* brd) :
00016 SubWidget(parent),
00017 fBoard(brd)
00018 {
00019 setupUi(this);
00020
00021 QObject::connect(ReadDataPushButton, SIGNAL(clicked()), this, SLOT(getData()));
00022
00023 getSubConfig();
00024 }
00025
00026
00027 bool DataWidget::getSubConfig()
00028 {
00029 return true;
00030 }
00031
00032 bool DataWidget::setSubConfig()
00033 {
00034 return true;
00035 }
00036
00037 bool DataWidget::fillCmdFile(FILE* f)
00038 {
00039 fprintf(f, "\n// Data relevant settings\n");
00040
00041 return true;
00042 }
00043
00044
00045 void DataWidget::getData()
00046 {
00047 bool ok(false);
00048 uint32_t num, tout;
00049 num = NumMsgsSpinBox->value();
00050
00051
00052 roc::Message msg1, msg2;
00053 msg1.setRocNumber(0);
00054 msg2.setRocNumber(0);
00055
00056 std::ostringstream ostr;
00057 QString qstring;
00058
00059 uint64_t value1, value2, value3, message1, message2;
00060 uint64_t rocid;
00061
00062 uint8_t data[6];
00063
00064 base::OperList lst;
00065 lst.addGet(ROC_ROCID);
00066 lst.addGet(ROC_NX_BURST1);
00067 lst.addGet(ROC_NX_BURST2);
00068 lst.addGet(ROC_NX_BURST3);
00069
00070 for (int i=1; i<=num/2; i++){
00071 fBoard->operGen(lst);
00072
00073 rocid = lst.oper(0).value;
00074 rocid = (rocid&0x000000000000FFFF)<<48;
00075
00076 msg1.setRocNumber(rocid);
00077 msg2.setRocNumber(rocid);
00078
00079 value1 = lst.oper(1).value;
00080 value2 = lst.oper(2).value;
00081 value3 = lst.oper(3).value;
00082
00083 message1 = rocid | value1<<16 | (value2&0xffff0000)>>16;
00084 message2 = rocid | (value2&0xffff)<<32 | value3;
00085
00086 data[5] = (message1 ) & 0xFF;
00087 data[4] = (message1 >> 8) & 0xFF;
00088 data[3] = (message1 >> 16) & 0xFF;
00089 data[2] = (message1 >> 24) & 0xFF;
00090 data[1] = (message1 >> 32) & 0xFF;
00091 data[0] = (message1 >> 40) & 0xFF;
00092 msg1.assign(data);
00093
00094 data[5] = message2 & 0xFF;
00095 data[4] = (message2 >> 8) & 0xFF;
00096 data[3] = (message2 >> 16) & 0xFF;
00097 data[2] = (message2 >> 24) & 0xFF;
00098 data[1] = (message2 >> 32) & 0xFF;
00099 data[0] = (message2 >> 40) & 0xFF;
00100 msg2.assign(data);
00101
00102 ostr.str("");
00103 msg1.printData(ostr,7);
00104 qstring = QString::fromStdString(ostr.str());
00105 qstring.chop(1);
00106 switch ( ((message1>>40)&0xf) ){
00107 case 2: DataTextEdit->setTextBackgroundColor(Qt::blue); DataTextEdit->setTextColor(Qt::white); break;
00108 case 5: DataTextEdit->setTextBackgroundColor(Qt::green); DataTextEdit->setTextColor(Qt::black); break;
00109 case 6:
00110 if (msg1.getGet4Edge()==1){ DataTextEdit->setTextBackgroundColor(QColor(0xdf,0xdf,0)); DataTextEdit->setTextColor(Qt::black); break;}
00111 else { DataTextEdit->setTextBackgroundColor(QColor(0xff,0xff,0x60)); DataTextEdit->setTextColor(Qt::black); break;}
00112 case 7: DataTextEdit->setTextBackgroundColor(Qt::red); DataTextEdit->setTextColor(Qt::black); break;
00113 default: DataTextEdit->setTextBackgroundColor(Qt::white); DataTextEdit->setTextColor(Qt::black); break;
00114 }
00115 DataTextEdit->append(qstring);
00116
00117 ostr.str("");
00118 msg2.printData(ostr,7);
00119 qstring = QString::fromStdString(ostr.str());
00120 qstring.chop(1);
00121 switch ( ((message2>>40)&0xf) ){
00122 case 2: DataTextEdit->setTextBackgroundColor(Qt::blue); DataTextEdit->setTextColor(Qt::white); break;
00123 case 5: DataTextEdit->setTextBackgroundColor(Qt::green); DataTextEdit->setTextColor(Qt::black); break;
00124 case 6:
00125 if (msg2.getGet4Edge()==1){ DataTextEdit->setTextBackgroundColor(QColor(0xdf,0xdf,0)); DataTextEdit->setTextColor(Qt::black); break;}
00126 else { DataTextEdit->setTextBackgroundColor(QColor(0xff,0xff,0x60)); DataTextEdit->setTextColor(Qt::black); break;}
00127 case 7: DataTextEdit->setTextBackgroundColor(Qt::red); DataTextEdit->setTextColor(Qt::black); break;
00128 default: DataTextEdit->setTextBackgroundColor(Qt::white); DataTextEdit->setTextColor(Qt::black); break;
00129 }
00130 DataTextEdit->append(qstring);
00131
00132 }
00133 }
00134
00135
00136