• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

gui/datawidget.cpp (r4864/r3096)

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 //      tout = TimeoutSpinBox->value();
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);           // Note: As a workaround the ROC_FEET_BURST* and 
00067         lst.addGet(ROC_NX_BURST2);           // ROC_NX_BURST* addresses are the same. In the
00068         lst.addGet(ROC_NX_BURST3);           // future they should be in basics-address space.
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);        // remove "endl"
00106                 switch ( ((message1>>40)&0xf) ){
00107                         case 2:  DataTextEdit->setTextBackgroundColor(Qt::blue); DataTextEdit->setTextColor(Qt::white); break;   // Epoch250
00108                         case 5:  DataTextEdit->setTextBackgroundColor(Qt::green); DataTextEdit->setTextColor(Qt::black); break;  // Epoch156
00109                         case 6:
00110                                 if (msg1.getGet4Edge()==1){ DataTextEdit->setTextBackgroundColor(QColor(0xdf,0xdf,0)); DataTextEdit->setTextColor(Qt::black); break;} // GET4-Hit
00111                                 else { DataTextEdit->setTextBackgroundColor(QColor(0xff,0xff,0x60)); DataTextEdit->setTextColor(Qt::black); break;} // GET4-Hit
00112                         case 7:  DataTextEdit->setTextBackgroundColor(Qt::red); DataTextEdit->setTextColor(Qt::black); break;    // System Messages
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);        // remove "endl"
00121                 switch ( ((message2>>40)&0xf) ){
00122                         case 2:  DataTextEdit->setTextBackgroundColor(Qt::blue); DataTextEdit->setTextColor(Qt::white); break;   // Epoch250
00123                         case 5:  DataTextEdit->setTextBackgroundColor(Qt::green); DataTextEdit->setTextColor(Qt::black); break;  // Epoch156
00124                         case 6:  
00125                                 if (msg2.getGet4Edge()==1){ DataTextEdit->setTextBackgroundColor(QColor(0xdf,0xdf,0)); DataTextEdit->setTextColor(Qt::black); break;} // GET4-Hit
00126                                 else { DataTextEdit->setTextBackgroundColor(QColor(0xff,0xff,0x60)); DataTextEdit->setTextColor(Qt::black); break;} // GET4-Hit
00127                         case 7:  DataTextEdit->setTextBackgroundColor(Qt::red); DataTextEdit->setTextColor(Qt::black); break;    // System Messages
00128                         default: DataTextEdit->setTextBackgroundColor(Qt::white); DataTextEdit->setTextColor(Qt::black); break;
00129                 }
00130                 DataTextEdit->append(qstring);
00131 
00132         }
00133 }
00134 
00135 
00136 

Generated on Tue Dec 10 2013 04:52:22 for ROCsoft by  doxygen 1.7.1