2023-01-25 17:16:14 -05:00
# include "digiSettings.h"
# include <QLabel>
DigiSettings : : DigiSettings ( Digitizer2Gen * digi , unsigned short nDigi , QWidget * parent ) : QWidget ( parent ) {
qDebug ( ) < < " DigiSettings constructor " ;
setWindowTitle ( " Digitizers Settings " ) ;
setGeometry ( 200 , 50 , 1000 , 1000 ) ;
2023-01-25 18:27:05 -05:00
//setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
2023-01-25 17:16:14 -05:00
this - > digi = digi ;
this - > nDigi = nDigi ;
2023-01-26 19:12:18 -05:00
this - > nDigi = 1 ;
2023-01-25 17:16:14 -05:00
std : : vector < std : : vector < std : : string > > info = { { " Serial Num : " , " /par/SerialNum " } ,
{ " IP : " , " /par/IPAddress " } ,
{ " Model Name : " , " /par/ModelName " } ,
2023-01-25 18:27:05 -05:00
{ " FPGA version : " , " /par/FPGA_FwVer " } ,
2023-01-25 17:16:14 -05:00
{ " DPP Type : " , " /par/FwType " } ,
{ " CUP version : " , " /par/cupver " } ,
{ " ADC bits : " , " /par/ADC_Nbit " } ,
{ " ADC rate [Msps] : " , " /par/ADC_SamplRate " } ,
2023-01-25 18:27:05 -05:00
{ " Num. of Channel : " , " /par/NumCh " }
2023-01-25 17:16:14 -05:00
} ;
QVBoxLayout * mainLayout = new QVBoxLayout ( this ) ;
this - > setLayout ( mainLayout ) ;
QTabWidget * tabWidget = new QTabWidget ( this ) ;
mainLayout - > addWidget ( tabWidget ) ;
2023-01-26 19:12:18 -05:00
2023-01-25 17:16:14 -05:00
//============ Tab for each digitizer
2023-01-26 19:12:18 -05:00
for ( unsigned short i = 0 ; i < this - > nDigi ; i + + ) {
2023-01-25 17:16:14 -05:00
QWidget * tab = new QWidget ( tabWidget ) ;
QScrollArea * scrollArea = new QScrollArea ;
scrollArea - > setWidget ( tab ) ;
scrollArea - > setWidgetResizable ( true ) ;
scrollArea - > setSizePolicy ( QSizePolicy : : Expanding , QSizePolicy : : Expanding ) ;
2023-01-26 19:12:18 -05:00
//tabWidget->addTab(scrollArea, "Digi-" + QString::number(digi->GetSerialNumber()));
tabWidget - > addTab ( scrollArea , " Digi-dummy " ) ;
2023-01-25 17:16:14 -05:00
QGridLayout * tabLayout = new QGridLayout ( tab ) ;
tab - > setLayout ( tabLayout ) ;
//-------- Group of Digitizer Info
QGroupBox * infoBox = new QGroupBox ( " Board Info " , tab ) ;
QGridLayout * infoLayout = new QGridLayout ( infoBox ) ;
infoBox - > setLayout ( infoLayout ) ;
2023-01-25 18:27:05 -05:00
tabLayout - > addWidget ( infoBox , 0 , 0 ) ;
2023-01-25 17:16:14 -05:00
for ( unsigned short j = 0 ; j < ( unsigned short ) info . size ( ) ; j + + ) {
QLabel * lab = new QLabel ( QString : : fromStdString ( info [ j ] [ 0 ] ) , tab ) ;
lab - > setAlignment ( Qt : : AlignRight ) ;
QLineEdit * txt = new QLineEdit ( tab ) ;
txt - > setReadOnly ( true ) ;
2023-01-26 19:12:18 -05:00
//txt->setText(QString::fromStdString(digi->ReadValue(info[j][1].c_str())));
2023-01-25 17:16:14 -05:00
//txt->setStyleSheet("color: black;");
2023-01-25 18:27:05 -05:00
infoLayout - > addWidget ( lab , j % 3 , 2 * ( j / 3 ) ) ;
infoLayout - > addWidget ( txt , j % 3 , 2 * ( j / 3 ) + 1 ) ;
2023-01-25 17:16:14 -05:00
}
2023-01-26 19:12:18 -05:00
//------- Group Board status
QGroupBox * statusBox = new QGroupBox ( " Board Status " , tab ) ;
QGridLayout * statusLayout = new QGridLayout ( statusBox ) ;
statusBox - > setLayout ( statusLayout ) ;
tabLayout - > addWidget ( statusBox , 1 , 0 ) ;
2023-01-25 17:16:14 -05:00
//------- Group digitizer settings
QGroupBox * digiBox = new QGroupBox ( " Board Settings " , tab ) ;
2023-01-25 18:27:05 -05:00
QGridLayout * boardLayout = new QGridLayout ( digiBox ) ;
digiBox - > setLayout ( boardLayout ) ;
2023-01-26 19:12:18 -05:00
tabLayout - > addWidget ( digiBox , 2 , 0 ) ;
2023-01-25 18:27:05 -05:00
{
int rowId = 0 ;
//-------------------------------------
2023-01-26 19:12:18 -05:00
QPushButton * bnResetBd = new QPushButton ( " Reset Board " , tab ) ;
boardLayout - > addWidget ( bnResetBd , rowId , 0 , 1 , 2 ) ;
QPushButton * bnDefaultSetting = new QPushButton ( " Set Default Settings " , tab ) ;
boardLayout - > addWidget ( bnDefaultSetting , rowId , 2 , 1 , 2 ) ;
//-------------------------------------
rowId + + ;
2023-01-25 18:27:05 -05:00
QLabel * lbStartSource = new QLabel ( " Start Source : " , tab ) ;
lbStartSource - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbStartSource , rowId , 0 ) ;
QCheckBox * cbStartSource1 = new QCheckBox ( " EncodedClkIn " , tab ) ;
boardLayout - > addWidget ( cbStartSource1 , rowId , 1 ) ;
QCheckBox * cbStartSource2 = new QCheckBox ( " SIN Level " , tab ) ;
boardLayout - > addWidget ( cbStartSource2 , rowId , 2 ) ;
QCheckBox * cbStartSource3 = new QCheckBox ( " SIN Edge " , tab ) ;
boardLayout - > addWidget ( cbStartSource3 , rowId , 3 ) ;
QCheckBox * cbStartSource4 = new QCheckBox ( " LVDS " , tab ) ;
boardLayout - > addWidget ( cbStartSource4 , rowId , 4 ) ;
//-------------------------------------
rowId + + ;
QLabel * lbGlobalTrgSource = new QLabel ( " Global Trigger Source : " , tab ) ;
lbGlobalTrgSource - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbGlobalTrgSource , rowId , 0 ) ;
QCheckBox * cbGlbTrgSource1 = new QCheckBox ( " Trg-IN " , tab ) ;
boardLayout - > addWidget ( cbGlbTrgSource1 , rowId , 1 ) ;
QCheckBox * cbGlbTrgSource2 = new QCheckBox ( " SwTrg " , tab ) ;
boardLayout - > addWidget ( cbGlbTrgSource2 , rowId , 2 ) ;
QCheckBox * cbGlbTrgSource3 = new QCheckBox ( " LVDS " , tab ) ;
boardLayout - > addWidget ( cbGlbTrgSource3 , rowId , 3 ) ;
QCheckBox * cbGlbTrgSource4 = new QCheckBox ( " GPIO " , tab ) ;
boardLayout - > addWidget ( cbGlbTrgSource4 , rowId , 4 ) ;
QCheckBox * cbGlbTrgSource5 = new QCheckBox ( " TestPulse " , tab ) ;
boardLayout - > addWidget ( cbGlbTrgSource5 , rowId , 5 ) ;
//-------------------------------------
rowId + + ;
QLabel * lbTrgOutMode = new QLabel ( " Trg-OUT Mode : " , tab ) ;
lbTrgOutMode - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbTrgOutMode , rowId , 0 ) ;
QComboBox * comTrgOut = new QComboBox ( tab ) ;
boardLayout - > addWidget ( comTrgOut , rowId , 1 , 1 , 2 ) ;
comTrgOut - > addItem ( " Disabled " ) ;
comTrgOut - > addItem ( " TRG-IN " ) ;
comTrgOut - > addItem ( " SwTrg " ) ;
comTrgOut - > addItem ( " LVDS " ) ;
comTrgOut - > addItem ( " Run " ) ;
comTrgOut - > addItem ( " TestPulse " ) ;
comTrgOut - > addItem ( " Busy " ) ;
comTrgOut - > addItem ( " Fixed 0 " ) ;
comTrgOut - > addItem ( " Fixed 1 " ) ;
comTrgOut - > addItem ( " SyncIn signal " ) ;
comTrgOut - > addItem ( " S-IN signal " ) ;
comTrgOut - > addItem ( " GPIO signal " ) ;
comTrgOut - > addItem ( " Accepted triggers " ) ;
comTrgOut - > addItem ( " Trigger Clock signal " ) ;
//-------------------------------------
rowId + + ;
QLabel * lbGPIOMode = new QLabel ( " GPIO Mode : " , tab ) ;
lbGPIOMode - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbGPIOMode , rowId , 0 ) ;
QComboBox * comGPIO = new QComboBox ( tab ) ;
boardLayout - > addWidget ( comGPIO , rowId , 1 , 1 , 2 ) ;
comGPIO - > addItem ( " Disabled " ) ;
comGPIO - > addItem ( " TRG-IN " ) ;
comGPIO - > addItem ( " S-IN " ) ;
comGPIO - > addItem ( " LVDS " ) ;
comGPIO - > addItem ( " SwTrg " ) ;
comGPIO - > addItem ( " Run " ) ;
comGPIO - > addItem ( " TestPulse " ) ;
comGPIO - > addItem ( " Busy " ) ;
comGPIO - > addItem ( " Fixed 0 " ) ;
comGPIO - > addItem ( " Fixed 1 " ) ;
//-------------------------------------
rowId + + ;
QLabel * lbBusyInSource = new QLabel ( " Busy In Source : " , tab ) ;
lbBusyInSource - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbBusyInSource , rowId , 0 ) ;
QComboBox * comBusyIn = new QComboBox ( tab ) ;
boardLayout - > addWidget ( comBusyIn , rowId , 1 , 1 , 2 ) ;
comBusyIn - > addItem ( " Disabled " ) ;
comBusyIn - > addItem ( " GPIO " ) ;
comBusyIn - > addItem ( " LVDS " ) ;
comBusyIn - > addItem ( " LVDS " ) ;
//-------------------------------------
rowId + + ;
QLabel * lbSyncOutMode = new QLabel ( " Sync Out mode : " , tab ) ;
lbSyncOutMode - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbSyncOutMode , rowId , 0 ) ;
QComboBox * comSyncOut = new QComboBox ( tab ) ;
boardLayout - > addWidget ( comSyncOut , rowId , 1 , 1 , 2 ) ;
comSyncOut - > addItem ( " Disabled " ) ;
comSyncOut - > addItem ( " SyncIn " ) ;
comSyncOut - > addItem ( " TestPulse " ) ;
comSyncOut - > addItem ( " Internal 62.5 MHz Clock " ) ;
comSyncOut - > addItem ( " Run " ) ;
2023-01-25 17:16:14 -05:00
2023-01-25 18:27:05 -05:00
//-------------------------------------
rowId + + ;
QLabel * lbBoardVetoSource = new QLabel ( " Board Veto Source : " , tab ) ;
lbBoardVetoSource - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbBoardVetoSource , rowId , 0 ) ;
2023-01-25 17:16:14 -05:00
2023-01-25 18:27:05 -05:00
QComboBox * comBoardVetoSource = new QComboBox ( tab ) ;
boardLayout - > addWidget ( comBoardVetoSource , rowId , 1 , 1 , 2 ) ;
comBoardVetoSource - > addItem ( " Disabled " ) ;
comBoardVetoSource - > addItem ( " S-In " ) ;
comBoardVetoSource - > addItem ( " LVSD " ) ;
comBoardVetoSource - > addItem ( " GPIO " ) ;
QLabel * lbBdVetoWidth = new QLabel ( " Board Veto Width [ns] : " , tab ) ;
lbBdVetoWidth - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbBdVetoWidth , rowId , 3 , 1 , 2 ) ;
QSpinBox * sbBdVetoWidth = new QSpinBox ( tab ) ; // may be QDoubleSpinBox
sbBdVetoWidth - > setMinimum ( 0 ) ;
sbBdVetoWidth - > setSingleStep ( 20 ) ;
boardLayout - > addWidget ( sbBdVetoWidth , rowId , 5 ) ;
QComboBox * comBdVetoPolarity = new QComboBox ( tab ) ;
boardLayout - > addWidget ( comBdVetoPolarity , rowId , 6 ) ;
comBdVetoPolarity - > addItem ( " High " ) ;
comBdVetoPolarity - > addItem ( " Low " ) ;
//-------------------------------------
rowId + + ;
QLabel * lbRunDelay = new QLabel ( " Run Delay [ns] : " , tab ) ;
lbRunDelay - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbRunDelay , rowId , 0 ) ;
QSpinBox * sbRunDelay = new QSpinBox ( tab ) ;
sbRunDelay - > setMinimum ( 0 ) ;
sbRunDelay - > setMaximum ( 524280 ) ;
sbRunDelay - > setSingleStep ( 20 ) ;
boardLayout - > addWidget ( sbRunDelay , rowId , 1 ) ;
//-------------------------------------
rowId + + ;
QLabel * lbAutoDisarmAcq = new QLabel ( " Auto disarm ACQ : " , tab ) ;
lbAutoDisarmAcq - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbAutoDisarmAcq , rowId , 0 ) ;
QComboBox * comAutoDisarmAcq = new QComboBox ( tab ) ;
boardLayout - > addWidget ( comAutoDisarmAcq , rowId , 1 ) ;
comAutoDisarmAcq - > addItem ( " Enabled " ) ;
comAutoDisarmAcq - > addItem ( " Disabled " ) ;
//-------------------------------------
rowId + + ;
QLabel * lbClockOutDelay = new QLabel ( " Clock Out Delay [ps] : " , tab ) ;
lbClockOutDelay - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbClockOutDelay , rowId , 0 ) ;
QDoubleSpinBox * dsbClockOutDelay = new QDoubleSpinBox ( tab ) ;
dsbClockOutDelay - > setMinimum ( - 1888.888 ) ;
dsbClockOutDelay - > setMaximum ( 1888.888 ) ;
dsbClockOutDelay - > setValue ( 0 ) ;
boardLayout - > addWidget ( dsbClockOutDelay , rowId , 1 ) ;
//-------------------------------------
rowId + + ;
QLabel * lbIOLevel = new QLabel ( " IO Level : " , tab ) ;
lbIOLevel - > setAlignment ( Qt : : AlignRight ) ;
boardLayout - > addWidget ( lbIOLevel , rowId , 0 ) ;
QComboBox * comIOLevel = new QComboBox ( tab ) ;
boardLayout - > addWidget ( comIOLevel , rowId , 1 , 1 , 2 ) ;
comIOLevel - > addItem ( " NIM (0 = 0V, 1 = -0.8V) " ) ;
comIOLevel - > addItem ( " TTL (0 = 0V, 1 = 3.3V) " ) ;
//-------------------------------------- Test pulse
}
2023-01-25 17:16:14 -05:00
//------- Group channel settings
QGroupBox * chBox = new QGroupBox ( " Channel Settings " , tab ) ;
QGridLayout * chLayout = new QGridLayout ( chBox ) ;
chBox - > setLayout ( chLayout ) ;
2023-01-25 18:27:05 -05:00
tabLayout - > addWidget ( chBox , 0 , 1 , 10 , 1 ) ;
2023-01-26 19:12:18 -05:00
chLayout - > setVerticalSpacing ( 0 ) ;
2023-01-25 17:16:14 -05:00
2023-01-26 19:12:18 -05:00
//for( unsigned short ch = 0; ch < digi->GetNChannels(); ch++){
for ( unsigned short ch = 0 ; ch < 64 ; ch + + ) {
2023-01-25 17:16:14 -05:00
QLabel * labCh = new QLabel ( QString : : number ( ch ) , tab ) ;
labCh - > setAlignment ( Qt : : AlignRight ) ;
chLayout - > addWidget ( labCh , ch , 0 ) ;
QCheckBox * cbCh = new QCheckBox ( tab ) ;
2023-01-26 19:12:18 -05:00
//std::string onOff = digi->ReadValue(("/ch/" + std::to_string(ch)+ "/par/ChEnable").c_str());
2023-01-25 17:16:14 -05:00
//qDebug() << QString::fromStdString(std::to_string(ch) + ", " + onOff);
2023-01-26 19:12:18 -05:00
//if( onOff == "True"){
// cbCh->setChecked(true);
//}else{
// cbCh->setChecked(false);
//}
2023-01-25 17:16:14 -05:00
chLayout - > addWidget ( cbCh , ch , 1 ) ;
}
2023-01-26 19:12:18 -05:00
//------- Group trigger settings
QGroupBox * triggerBox = new QGroupBox ( " Trigger Map " , tab ) ;
QGridLayout * triggerLayout = new QGridLayout ( triggerBox ) ;
triggerBox - > setLayout ( triggerLayout ) ;
tabLayout - > addWidget ( triggerBox , 3 , 0 ) ;
{
triggerLayout - > setHorizontalSpacing ( 0 ) ;
triggerLayout - > setVerticalSpacing ( 0 ) ;
QLabel * instr = new QLabel ( " Reading: Column (C) represents a trigger channel for Row (R) channel. \n For example, R3C1 = ch-3 trigger source is ch-1. \n " , tab ) ;
triggerLayout - > addWidget ( instr , 0 , 0 , 1 , 64 + 15 ) ;
QSignalMapper * triggerMapper = new QSignalMapper ( tab ) ;
int count = 0 ;
int rowID = 1 ;
int colID = 0 ;
for ( int i = 0 ; i < 64 ; i + + ) {
colID = 0 ;
for ( int j = 0 ; j < 64 ; j + + ) {
bn [ i ] [ j ] = new QPushButton ( tab ) ;
bn [ i ] [ j ] - > setFixedSize ( QSize ( 10 , 10 ) ) ;
bnClickStatus [ i ] [ j ] = false ;
if ( i % 4 ! = 0 & & j = = ( i / 4 ) * 4 ) {
bn [ i ] [ j ] - > setStyleSheet ( " background-color: red; " ) ;
bnClickStatus [ i ] [ j ] = true ;
}
triggerMapper - > setMapping ( bn [ i ] [ j ] , 100 * i + j ) ;
connect ( bn [ i ] [ j ] , SIGNAL ( clicked ( ) ) , triggerMapper , SLOT ( map ( ) ) ) ;
2023-01-25 17:16:14 -05:00
2023-01-26 19:12:18 -05:00
count + + ;
triggerLayout - > addWidget ( bn [ i ] [ j ] , rowID , colID ) ;
colID + + ;
if ( j % 4 = = 3 & & j ! = 63 ) {
QFrame * vSeparator = new QFrame ( tab ) ;
vSeparator - > setFrameShape ( QFrame : : VLine ) ;
triggerLayout - > addWidget ( vSeparator , rowID , colID ) ;
colID + + ;
}
}
rowID + + ;
if ( i % 4 = = 3 & & i ! = 63 ) {
QFrame * hSeparator = new QFrame ( tab ) ;
hSeparator - > setFrameShape ( QFrame : : HLine ) ;
triggerLayout - > addWidget ( hSeparator , rowID , 0 , 1 , 64 + 15 ) ;
rowID + + ;
}
}
//connect(triggerMapper, &QSignalMapper::mappedString, this, &DigiSettings::onTriggerClick);
connect ( triggerMapper , SIGNAL ( mappedInt ( int ) ) , this , SLOT ( onTriggerClick ( int ) ) ) ;
}
} //=== end of tab
2023-01-25 17:16:14 -05:00
}
DigiSettings : : ~ DigiSettings ( ) {
}