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

gui/rocfeetwidget.cpp (r4864/r3096)

Go to the documentation of this file.
00001 #include "rocfeetwidget.h"
00002 
00003 #include "feet/defines_feet.h"
00004 #include <unistd.h>
00005 
00006 
00007 RocFeetWidget::RocFeetWidget(QWidget* parent, roc::Board* brd) :
00008    SubWidget(parent),
00009    fBoard(brd)
00010 {
00011    setupUi(this);
00012 
00013    QObject::connect(FallingEdgeEdit, SIGNAL(textChanged(const QString &)), this, SLOT(setSubChangedOn()));
00014    QObject::connect(Epoch250EnCheckBox, SIGNAL(stateChanged(int)), this, SLOT(setEpoch250En()));
00015    QObject::connect(SupressEpochsEdit, SIGNAL(textChanged(const QString &)), this, SLOT(setSubChangedOn()));
00016    QObject::connect(ReceiveMaskEdit, SIGNAL(textChanged(const QString &)), this, SLOT(setSubChangedOn()));
00017    QObject::connect(ResetFifoButton, SIGNAL(clicked()), this, SLOT(resetFifo()));
00018 
00019    QObject::connect(DatagenMaskEdit, SIGNAL(textChanged(const QString &)), this, SLOT(setSubChangedOn()));
00020    QObject::connect(DatagenInitEdit, SIGNAL(textChanged(const QString &)), this, SLOT(setSubChangedOn()));
00021    QObject::connect(DatagenEnablePushButton, SIGNAL(clicked()), this, SLOT(enableDatagen()));
00022 
00023    QObject::connect(TransmitMaskEdit, SIGNAL(textChanged(const QString &)), this, SLOT(setSubChangedOn()));
00024    QObject::connect(InitFeetButton, SIGNAL(clicked()), this, SLOT(initFeet()));
00025    QObject::connect(CmdToFeetButton, SIGNAL(clicked()), this, SLOT(sendCmdToFeet()));
00026 
00027    QObject::connect(ResetFrontendButton, SIGNAL(clicked()), this, SLOT(resetFrontend()));
00028 
00029    getSubConfig();
00030 }
00031 
00032 bool RocFeetWidget::getSubConfig()
00033 {
00034    base::OperList lst;
00035 
00036    lst.addGet(ROC_FEET_HWV);                                                    // 0
00037    lst.addGet(ROC_FEET_RECEIVE_MASK);                           // 1
00038    lst.addGet(ROC_FEET_TRANSMIT_MASK);                          // 2
00039    lst.addGet(ROC_FEET_SAMPLE_FALLING_EDGE);            // 3
00040    lst.addGet(ROC_FEET_RADTOL);                                         // 4
00041    lst.addGet(ROC_FEET_NR_OF_FEETS);                            // 5
00042    lst.addGet(ROC_FEET_SUPRESS_EPOCHS);                 // 6
00043    lst.addGet(ROC_FEET_DATAGEN_MASK);                           // 7
00044    lst.addGet(ROC_FEET_DATAGEN_INIT);                           // 8
00045    lst.addGet(ROC_FEET_EPOCH250_EN);                            // 9
00046 
00047    fBoard->operGen(lst);
00048 
00049    fHwVers = lst.oper(0).value;
00050    VersionLbl->setText(QString("FEET version: %1").arg(roc::Board::versionToString(fHwVers), 0, 16));
00051 
00052         NrOfFeetsLbl->setText(QString("Number of FEETs: %1").arg(lst.oper(5).value, 0, 16));
00053 
00054         fRadTol = (lst.oper(4).value==1);
00055 
00056    SupressEpochsEdit->setText(QString("%1").arg(lst.oper(6).value, 0, 16));
00057 
00058         ReceiveMaskEdit->setText(QString("%1").arg(lst.oper(1).value, 0, 16));
00059 
00060    TransmitMaskEdit->setText(QString("%1").arg(lst.oper(2).value, 0, 16));
00061    
00062         DatagenMaskEdit->setText(QString("%1").arg(lst.oper(7).value, 0, 16));
00063    
00064         DatagenInitEdit->setText(QString("%1").arg(lst.oper(8).value, 0, 16));
00065 
00066         FallingEdgeEdit->setText(QString("%1").arg(lst.oper(3).value, 0, 16));
00067 
00068         Epoch250EnCheckBox->setChecked(lst.oper(9).value==1);
00069 
00070    if (fRadTol){
00071                 RadTolLbl->setText(QString("Radiation mitigated: Yes"));
00072                 Epoch250EnCheckBox->setChecked(false);
00073                 Epoch250EnCheckBox->setEnabled(false);
00074                 DatagenMaskLabel->setEnabled(false);
00075                 DatagenInitLabel->setEnabled(false);
00076                 DatagenMaskEdit->setEnabled(false);
00077                 DatagenInitEdit->setEnabled(false);
00078                 DatagenEnablePushButton->setEnabled(false);
00079                 groupBox_2->setEnabled(false);
00080         } else {
00081                 RadTolLbl->setText(QString("Radiation mitigated: No"));
00082         }
00083 
00084    return true;
00085 
00086 }
00087 
00088 bool RocFeetWidget::setSubConfig()
00089 {
00090    base::OperList lst;
00091 
00092    uint32_t value;
00093    bool ok(false);
00094 
00095    value = ReceiveMaskEdit->text().toUInt(&ok, 16);
00096    if (!ok) return false;
00097    lst.addPut(ROC_FEET_RECEIVE_MASK, value);
00098 
00099    value = TransmitMaskEdit->text().toUInt(&ok, 16);
00100    if (!ok) return false;
00101    lst.addPut(ROC_FEET_TRANSMIT_MASK, value);
00102 
00103    value = FallingEdgeEdit->text().toUInt(&ok, 16);
00104    if (!ok) return false;
00105    lst.addPut(ROC_FEET_SAMPLE_FALLING_EDGE, value);
00106 
00107    value = SupressEpochsEdit->text().toUInt(&ok, 16);
00108    if (!ok) return false;
00109    lst.addPut(ROC_FEET_SUPRESS_EPOCHS, value);
00110 
00111    value = DatagenMaskEdit->text().toUInt(&ok, 16);
00112    if (!ok) return false;
00113    if(!fRadTol) lst.addPut(ROC_FEET_DATAGEN_MASK, value);
00114 
00115    value = DatagenInitEdit->text().toUInt(&ok, 16);
00116    if (!ok) return false;
00117    if(!fRadTol) lst.addPut(ROC_FEET_DATAGEN_INIT, value);
00118 
00119 
00120    fBoard->operGen(lst);
00121 
00122    return true;
00123 }
00124 
00125 bool RocFeetWidget::setSubToDefault()
00126 {
00127    SupressEpochsEdit->setText("0");
00128    ReceiveMaskEdit->setText("0");
00129    TransmitMaskEdit->setText("ffffffff");
00130    DatagenMaskEdit->setText("ffffffff");
00131    DatagenInitEdit->setText("e555555f");
00132         FallingEdgeEdit->setText("0");
00133         Epoch250EnCheckBox->setChecked(!fRadTol);
00134 
00135    setSubChangedOn();
00136 
00137    return true;
00138 }
00139 
00140 bool RocFeetWidget::fillCmdFile(FILE* f)
00141 {
00142    fprintf(f, "\n// ROC-FEET relevant settings\n");
00143 
00144    return true;
00145 }
00146 
00147 //void RocFeetWidget::setFallingEdge()
00148 //{
00149 //      if(FallingEdgeCheckBox->isChecked()) 
00150 //              fBoard->put(ROC_FEET_SAMPLE_FALLING_EDGE,1);
00151 //      else 
00152 //              fBoard->put(ROC_FEET_SAMPLE_FALLING_EDGE,0);
00153 //}
00154 
00155 void RocFeetWidget::setEpoch250En()
00156 {
00157         if(!fRadTol) 
00158                 if(Epoch250EnCheckBox->isChecked()) 
00159                         fBoard->put(ROC_FEET_EPOCH250_EN,1);
00160                 else 
00161                         fBoard->put(ROC_FEET_EPOCH250_EN,0);
00162 }
00163 
00164 void RocFeetWidget::initFeet()
00165 {
00166    fBoard->put(ROC_FEET_CMD_TO_FEET, 0);
00167 
00168    usleep(10000);
00169 
00170    fBoard->put(ROC_FEET_CMD_TO_FEET, 0x10);
00171 }
00172 
00173 void RocFeetWidget::resetFifo()
00174 {
00175    fBoard->operPP(ROC_FEET_FIFO_RESET, 1,
00176                   ROC_FEET_FIFO_RESET, 0);
00177 }
00178 
00179 void RocFeetWidget::resetFrontend()
00180 {
00181    fBoard->put(ROC_FEET_RESET, 0);
00182 }
00183 
00184 void RocFeetWidget::enableDatagen()
00185 {
00186 
00187         if (DatagenEnablePushButton->isChecked()) {
00188                 fBoard->put(ROC_FEET_DATAGEN_EN, 1);
00189         DatagenMaskEdit->setEnabled(false);
00190         DatagenInitEdit->setEnabled(false);
00191         } else {
00192                 fBoard->put(ROC_FEET_DATAGEN_EN, 0);
00193         DatagenMaskEdit->setEnabled(true);
00194         DatagenInitEdit->setEnabled(true);
00195         }
00196 }
00197 
00198 void RocFeetWidget::sendCmdToFeet()
00199 {
00200    uint32_t value;
00201    bool ok(false);
00202 
00203    value = CmdToFeetEdit->text().toUInt(&ok, 16);
00204    if (!ok) return;
00205         fBoard->put(ROC_FEET_CMD_TO_FEET, value);
00206 }
00207 
00208 

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