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

gui/febwidget.cpp (r4864/r1123)

Go to the documentation of this file.
00001 #include "febwidget.h"
00002 
00003 #include <QGridLayout>
00004 #include <QSignalMapper>
00005 #include <QCheckBox>
00006 #include <QTimer>
00007 
00008 #include "roctabswidget.h"
00009 #include "nxyterwidget.h"
00010 #include "adcwidget.h"
00011 
00012 #include "nxyter/RocNx.h"
00013 
00014 FebWidget::FebWidget(QWidget* parent, nxyter::FebBase* feb) :
00015    SubWidget(parent),
00016    fFeb(feb)
00017 {
00018    setupUi(this);
00019 
00020    QObject::connect(CloseButton, SIGNAL(clicked()), this, SLOT(pressClose()));
00021 
00022    KindLbl->setText(QString("Feb type: %1").arg(fFeb->getFebType()));
00023    NumNxLbl->setText(QString("Num nXYTER: %1").arg(fFeb->numNx()));
00024 
00025    QSignalMapper* map = new QSignalMapper(this);
00026 
00027    QGridLayout* grid = new QGridLayout(EnableNxGroup);
00028    grid->setMargin(3);
00029    grid->setSpacing(3);
00030 
00031    for (int nx=0;nx<fFeb->numNx();nx++) {
00032       QCheckBox* chk = new QCheckBox(this);
00033       chk->setText(QString("Enable NX%1").arg(nx));
00034       grid->addWidget(chk, 0, nx);
00035       fNxEnableChk.push_back(chk);
00036 
00037       QObject::connect(chk, SIGNAL(clicked(bool)), map, SLOT(map()));
00038       map->setMapping(chk, nx);
00039    }
00040 
00041    EnableNxGroup->adjustSize();
00042 
00043    displayMonAdcs();
00044 
00045    QObject::connect(map, SIGNAL(mapped(int)), this, SLOT(enableNxClicked(int)));
00046    QObject::connect(MonAdcChk, SIGNAL(clicked(bool)), this, SLOT(displayMonAdcs()));
00047 }
00048 
00049 FebWidget::~FebWidget()
00050 {
00051    delete fFeb;
00052 }
00053 
00054 void FebWidget::createTabs(RocTabsWidget* tabs)
00055 {
00056    for (int nx=0;nx<fFeb->numNx();nx++) {
00057       NxyterWidget* nxw = new NxyterWidget(tabs, &(fFeb->nx(nx)));
00058       tabs->addTab(nxw, QString("NX%1").arg(nx));
00059       fChilds.push_back(nxw);
00060    }
00061 
00062    AdcWidget* adcw = new AdcWidget(tabs, &(fFeb->adc()));
00063    tabs->addTab(adcw, "ADC");
00064    fChilds.push_back(adcw);
00065 
00066    getSubConfig();
00067 }
00068 
00069 void FebWidget::pressClose()
00070 {
00071    for (unsigned n=0;n<fChilds.size();n++)
00072       delete fChilds[n];
00073    fChilds.clear();
00074 
00075    deleteLater();
00076 }
00077 
00078 bool FebWidget::getSubConfig()
00079 {
00080    fFeb->getFebState();
00081 
00082    for (int nx=0;nx<fFeb->numNx();nx++) {
00083       bool on = !fFeb->getNxOffline(nx);
00084       fNxEnableChk[nx]->setCheckState(on ? Qt::Checked : Qt::Unchecked);
00085    }
00086 
00087    return true;
00088 }
00089 
00090 bool FebWidget::setSubConfig()
00091 {
00092    fFeb->initRoc();
00093 
00094    return true;
00095 }
00096 
00097 bool FebWidget::fillCmdFile(FILE* f)
00098 {
00099    fprintf(f, "\n// FEB relevant settings\n");
00100 
00101    fprintf(f, "feb %d,%s\n", fFeb->getPortNumber(), nxyter::FebBase::typeToString(fFeb->getFebType()));
00102 
00103    for (int nx=0;nx<fFeb->numNx();nx++)
00104       fprintf(f, "setnxoff %d,%d\n", nx, fFeb->getNxOffline(nx));
00105 
00106    fprintf(f, "initfeb\n");
00107 
00108    return true;
00109 }
00110 
00111 
00112 void FebWidget::enableNxClicked(int nx)
00113 {
00114    bool on = fNxEnableChk[nx]->checkState() == Qt::Checked;
00115    fFeb->setNxOffline(nx, !on);
00116 
00117    setSubChanged(true);
00118 }
00119 
00120 void FebWidget::displayMonAdcs()
00121 {
00122    if (!fFeb->monAdcSupport()) {
00123       MonAdcBox->setVisible(false);
00124       return;
00125    }
00126 
00127    if (MonAdcTable->rowCount() != fFeb->getNumMonAdc()) {
00128       while (MonAdcTable->rowCount()>0) MonAdcTable->removeRow(0);
00129       for (int n=0;n<fFeb->getNumMonAdc();n++) {
00130          MonAdcTable->insertRow(n);
00131          MonAdcTable->setItem(n, 0, new QTableWidgetItem(QString("#%1").arg(n)));
00132          MonAdcTable->setItem(n, 1, new QTableWidgetItem(QString("---")));
00133       }
00134    }
00135 
00136    if (MonAdcChk->isChecked()) {
00137 
00138       for (int n=0;n<fFeb->getNumMonAdc();n++) {
00139          uint16_t val(0);
00140          QString str("err");
00141 
00142          if (fFeb->getMonAdc(n, val)==0)
00143             str = QString("%1").arg(val);
00144 
00145          MonAdcTable->item(n,1)->setText(str);
00146       }
00147 
00148       QTimer::singleShot(1000, this, SLOT(displayMonAdcs()));
00149    }
00150 }
00151 

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