fix the inquary tab for different firmware

This commit is contained in:
Ryan Tang 2023-09-25 14:57:21 -04:00
parent dbb950d4df
commit c5c2c69b96

View File

@ -786,7 +786,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
//chBox->setSizePolicy(sizePolicy); //chBox->setSizePolicy(sizePolicy);
tabLayout_V2->addWidget(chBox); tabLayout_V2->addWidget(chBox);
QGridLayout * chLayout = new QGridLayout(chBox); //chBox->setLayout(chLayout); QGridLayout * chLayout = new QGridLayout(chBox); //chBox->setLayout(chLayout);
chBox->setFixedWidth(950); chBox->setFixedWidth(900);
chTabWidget[iDigi] = new QTabWidget(digiTab[iDigi]); chLayout->addWidget(chTabWidget[iDigi]); chTabWidget[iDigi] = new QTabWidget(digiTab[iDigi]); chLayout->addWidget(chTabWidget[iDigi]);
@ -978,13 +978,43 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
ID = index; ID = index;
cbIQCh->clear(); cbIQCh->clear();
for( int i = 0; i < digi[index]->GetNChannels() ; i++ ) cbIQCh->addItem( "Ch-" + QString::number(i), i); for( int i = 0; i < digi[index]->GetNChannels() ; i++ ) cbIQCh->addItem( "Ch-" + QString::number(i), i);
cbBdSettings->clear();
cbChSettings->clear();
if( digi[ID]->GetFPGAType() == DPPType::PHA ){
for( int i = 0; i < (int) PHA::DIG::AllSettings.size(); i++ ){
cbBdSettings->addItem( QString::fromStdString( PHA::DIG::AllSettings[i].GetPara() ), i);
}
for( int i = 0; i < (int) PHA::CH::AllSettings.size(); i++ ){
cbChSettings->addItem( QString::fromStdString( PHA::CH::AllSettings[i].GetPara() ), i);
}
}
if( digi[ID]->GetFPGAType() == DPPType::PSD ){
for( int i = 0; i < (int) PSD::DIG::AllSettings.size(); i++ ){
cbBdSettings->addItem( QString::fromStdString( PSD::DIG::AllSettings[i].GetPara() ), i);
}
for( int i = 0; i < (int) PSD::CH::AllSettings.size(); i++ ){
cbChSettings->addItem( QString::fromStdString( PSD::CH::AllSettings[i].GetPara() ), i);
}
}
enableSignalSlot = true; enableSignalSlot = true;
}); });
cbBdSettings = new RComboBox(ICTab); cbBdSettings = new RComboBox(ICTab);
for( int i = 0; i < (int) PHA::DIG::AllSettings.size(); i++ ){ if( digi[0]->GetFPGAType() == DPPType::PHA ){
cbBdSettings->addItem( QString::fromStdString( PHA::DIG::AllSettings[i].GetPara() ), i); for( int i = 0; i < (int) PHA::DIG::AllSettings.size(); i++ ){
cbBdSettings->addItem( QString::fromStdString( PHA::DIG::AllSettings[i].GetPara() ), i);
}
} }
if( digi[ID]->GetFPGAType() == DPPType::PSD ){
for( int i = 0; i < (int) PSD::DIG::AllSettings.size(); i++ ){
cbBdSettings->addItem( QString::fromStdString( PSD::DIG::AllSettings[i].GetPara() ), i);
}
}
inquiryLayout->addWidget(cbBdSettings, rowID, 1); inquiryLayout->addWidget(cbBdSettings, rowID, 1);
connect(cbBdSettings, &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::ReadBoardSetting); connect(cbBdSettings, &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::ReadBoardSetting);
@ -1103,8 +1133,15 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
connect(cbIQCh, &RComboBox::currentIndexChanged, this, [=](){ ReadChannelSetting(cbChSettings->currentIndex()); }); connect(cbIQCh, &RComboBox::currentIndexChanged, this, [=](){ ReadChannelSetting(cbChSettings->currentIndex()); });
cbChSettings = new RComboBox(ICTab); cbChSettings = new RComboBox(ICTab);
for( int i = 0; i < (int) PHA::CH::AllSettings.size(); i++ ){ if( digi[0]->GetFPGAType() == DPPType::PHA){
cbChSettings->addItem( QString::fromStdString( PHA::CH::AllSettings[i].GetPara() ), i); for( int i = 0; i < (int) PHA::CH::AllSettings.size(); i++ ){
cbChSettings->addItem( QString::fromStdString( PHA::CH::AllSettings[i].GetPara() ), i);
}
}
if( digi[0]->GetFPGAType() == DPPType::PSD){
for( int i = 0; i < (int) PSD::CH::AllSettings.size(); i++ ){
cbChSettings->addItem( QString::fromStdString( PSD::CH::AllSettings[i].GetPara() ), i);
}
} }
inquiryLayout->addWidget(cbChSettings, rowID, 1); inquiryLayout->addWidget(cbChSettings, rowID, 1);
connect(cbChSettings, &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::ReadChannelSetting); connect(cbChSettings, &RComboBox::currentIndexChanged, this, &DigiSettingsPanel::ReadChannelSetting);
@ -3029,18 +3066,34 @@ void DigiSettingsPanel::FillSpinBoxValueFromMemory(RSpinBox *&spb, const Reg par
} }
void DigiSettingsPanel::ReadBoardSetting(int cbIndex){ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
if( enableSignalSlot == false ) return;
enableSignalSlot = false; enableSignalSlot = false;
// PHA and PSD has same board setting, but for furture extension
int ID = cbIQDigi->currentIndex();
std::vector<Reg> bdSettings ;
if( digi[ID]->GetFPGAType() == DPPType::PHA ) {
bdSettings = PHA::DIG::AllSettings;
}else if( digi[ID]->GetFPGAType() == DPPType::PSD ) {
bdSettings = PSD::DIG::AllSettings;
}else{
enableSignalSlot = true;
return;
}
QString type; QString type;
switch (PHA::DIG::AllSettings[cbIndex].ReadWrite()) { switch (bdSettings[cbIndex].ReadWrite()) {
case RW::ReadOnly : type ="Read Only"; break; case RW::ReadOnly : type ="Read Only"; break;
case RW::WriteOnly : type ="Write Only"; break; case RW::WriteOnly : type ="Write Only"; break;
case RW::ReadWrite : type ="Read/Write"; break; case RW::ReadWrite : type ="Read/Write"; break;
} }
leBdSettingsType->setText(type); leBdSettingsType->setText(type);
QString ans = QString::fromStdString(digi[cbIQDigi->currentIndex()]->ReadValue(PHA::DIG::AllSettings[cbIndex])); QString ans = QString::fromStdString(digi[ID]->ReadValue(bdSettings[cbIndex]));
ANSTYPE haha = PHA::DIG::AllSettings[cbIndex].GetAnswerType(); ANSTYPE haha = bdSettings[cbIndex].GetAnswerType();
if( haha == ANSTYPE::BYTE){ if( haha == ANSTYPE::BYTE){
leBdSettingsRead->setText( "0x" + QString::number(ans.toULong(), 16).rightJustified(16, '0')); leBdSettingsRead->setText( "0x" + QString::number(ans.toULong(), 16).rightJustified(16, '0'));
@ -3049,9 +3102,9 @@ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
}else{ }else{
leBdSettingsRead->setText(ans); leBdSettingsRead->setText(ans);
} }
leBdSettingsUnit->setText(QString::fromStdString(PHA::DIG::AllSettings[cbIndex].GetUnit())); leBdSettingsUnit->setText(QString::fromStdString(bdSettings[cbIndex].GetUnit()));
if( PHA::DIG::AllSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){ if( bdSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){
//===== spin box //===== spin box
if( haha == ANSTYPE::FLOAT || haha == ANSTYPE::INTEGER ){ if( haha == ANSTYPE::FLOAT || haha == ANSTYPE::INTEGER ){
@ -3060,9 +3113,9 @@ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
leBdSettingsWrite->setEnabled(false); leBdSettingsWrite->setEnabled(false);
leBdSettingsWrite->clear(); leBdSettingsWrite->clear();
sbBdSettingsWrite->setEnabled(true); sbBdSettingsWrite->setEnabled(true);
sbBdSettingsWrite->setMinimum(atof(PHA::DIG::AllSettings[cbIndex].GetAnswers()[0].first.c_str())); sbBdSettingsWrite->setMinimum(atof(bdSettings[cbIndex].GetAnswers()[0].first.c_str()));
sbBdSettingsWrite->setMaximum(atof(PHA::DIG::AllSettings[cbIndex].GetAnswers()[1].first.c_str())); sbBdSettingsWrite->setMaximum(atof(bdSettings[cbIndex].GetAnswers()[1].first.c_str()));
sbBdSettingsWrite->setSingleStep(atof(PHA::DIG::AllSettings[cbIndex].GetAnswers()[2].first.c_str())); sbBdSettingsWrite->setSingleStep(atof(bdSettings[cbIndex].GetAnswers()[2].first.c_str()));
sbBdSettingsWrite->setValue(00); sbBdSettingsWrite->setValue(00);
sbBdSettingsWrite->setDecimals(0); sbBdSettingsWrite->setDecimals(0);
} }
@ -3073,13 +3126,13 @@ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
cbBdAns->clear(); cbBdAns->clear();
int ansIndex = -1; int ansIndex = -1;
QString ans2 = ""; QString ans2 = "";
for( int i = 0; i < (int) PHA::DIG::AllSettings[cbIndex].GetAnswers().size(); i++){ for( int i = 0; i < (int) bdSettings[cbIndex].GetAnswers().size(); i++){
cbBdAns->addItem(QString::fromStdString(PHA::DIG::AllSettings[cbIndex].GetAnswers()[i].second), cbBdAns->addItem(QString::fromStdString(bdSettings[cbIndex].GetAnswers()[i].second),
QString::fromStdString(PHA::DIG::AllSettings[cbIndex].GetAnswers()[i].first)); QString::fromStdString(bdSettings[cbIndex].GetAnswers()[i].first));
if( ans == QString::fromStdString(PHA::DIG::AllSettings[cbIndex].GetAnswers()[i].first)) { if( ans == QString::fromStdString(bdSettings[cbIndex].GetAnswers()[i].first)) {
ansIndex = i; ansIndex = i;
ans2 = QString::fromStdString(PHA::DIG::AllSettings[cbIndex].GetAnswers()[i].second); ans2 = QString::fromStdString(bdSettings[cbIndex].GetAnswers()[i].second);
} }
} }
cbBdAns->setCurrentIndex(ansIndex); cbBdAns->setCurrentIndex(ansIndex);
@ -3110,8 +3163,8 @@ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
leBdSettingsWrite->clear(); leBdSettingsWrite->clear();
} }
if( PHA::DIG::AllSettings[cbIndex].GetPara() == PHA::DIG::StartSource.GetPara() if( bdSettings[cbIndex].GetPara() == PHA::DIG::StartSource.GetPara()
|| PHA::DIG::AllSettings[cbIndex].GetPara() == PHA::DIG::GlobalTriggerSource.GetPara() ){ || bdSettings[cbIndex].GetPara() == PHA::DIG::GlobalTriggerSource.GetPara() ){
leBdSettingsWrite->setEnabled(true); leBdSettingsWrite->setEnabled(true);
leBdSettingsWrite->clear(); leBdSettingsWrite->clear();
@ -3121,18 +3174,32 @@ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
} }
void DigiSettingsPanel::ReadChannelSetting(int cbIndex){ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
if( enableSignalSlot == false ) return;
enableSignalSlot = false; enableSignalSlot = false;
int ID = cbIQDigi->currentIndex();
std::vector<Reg> chSettings ;
if( digi[ID]->GetFPGAType() == DPPType::PHA ) {
chSettings = PHA::CH::AllSettings;
}else if( digi[ID]->GetFPGAType() == DPPType::PSD ) {
chSettings = PSD::CH::AllSettings;
}else{
enableSignalSlot = true;
return;
}
QString type; QString type;
switch (PHA::CH::AllSettings[cbIndex].ReadWrite()) { switch (chSettings[cbIndex].ReadWrite()) {
case RW::ReadOnly : type ="Read Only"; break; case RW::ReadOnly : type ="Read Only"; break;
case RW::WriteOnly : type ="Write Only"; break; case RW::WriteOnly : type ="Write Only"; break;
case RW::ReadWrite : type ="Read/Write"; break; case RW::ReadWrite : type ="Read/Write"; break;
} }
leChSettingsType->setText(type); leChSettingsType->setText(type);
QString ans = QString::fromStdString(digi[cbIQDigi->currentIndex()]->ReadValue(PHA::CH::AllSettings[cbIndex], cbIQCh->currentData().toInt())); QString ans = QString::fromStdString(digi[ID]->ReadValue(chSettings[cbIndex], cbIQCh->currentData().toInt()));
ANSTYPE haha = PHA::CH::AllSettings[cbIndex].GetAnswerType(); ANSTYPE haha = chSettings[cbIndex].GetAnswerType();
if( haha == ANSTYPE::BYTE){ if( haha == ANSTYPE::BYTE){
leChSettingsRead->setText( "0x" + QString::number(ans.toULong(), 16).rightJustified(16, '0')); leChSettingsRead->setText( "0x" + QString::number(ans.toULong(), 16).rightJustified(16, '0'));
@ -3142,10 +3209,10 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
leChSettingsRead->setText(ans); leChSettingsRead->setText(ans);
} }
leChSettingsUnit->setText(QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetUnit())); leChSettingsUnit->setText(QString::fromStdString(chSettings[cbIndex].GetUnit()));
if( PHA::CH::AllSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){ if( chSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){
if( haha == ANSTYPE::FLOAT || haha == ANSTYPE::INTEGER ){ if( haha == ANSTYPE::FLOAT || haha == ANSTYPE::INTEGER ){
cbChSettingsWrite->clear(); cbChSettingsWrite->clear();
@ -3153,9 +3220,9 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
leChSettingsWrite->setEnabled(false); leChSettingsWrite->setEnabled(false);
leChSettingsWrite->clear(); leChSettingsWrite->clear();
sbChSettingsWrite->setEnabled(true); sbChSettingsWrite->setEnabled(true);
sbChSettingsWrite->setMinimum(atof(PHA::CH::AllSettings[cbIndex].GetAnswers()[0].first.c_str())); sbChSettingsWrite->setMinimum(atof(chSettings[cbIndex].GetAnswers()[0].first.c_str()));
sbChSettingsWrite->setMaximum(atof(PHA::CH::AllSettings[cbIndex].GetAnswers()[1].first.c_str())); sbChSettingsWrite->setMaximum(atof(chSettings[cbIndex].GetAnswers()[1].first.c_str()));
sbChSettingsWrite->setSingleStep(atof(PHA::CH::AllSettings[cbIndex].GetAnswers()[2].first.c_str())); sbChSettingsWrite->setSingleStep(atof(chSettings[cbIndex].GetAnswers()[2].first.c_str()));
sbChSettingsWrite->setValue(ans.toFloat()); sbChSettingsWrite->setValue(ans.toFloat());
sbChSettingsWrite->setDecimals(3); sbChSettingsWrite->setDecimals(3);
} }
@ -3165,13 +3232,13 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
cbChSettingsWrite->clear(); cbChSettingsWrite->clear();
int ansIndex = -1; int ansIndex = -1;
QString ans2 = ""; QString ans2 = "";
for( int i = 0; i < (int) PHA::CH::AllSettings[cbIndex].GetAnswers().size(); i++){ for( int i = 0; i < (int) chSettings[cbIndex].GetAnswers().size(); i++){
cbChSettingsWrite->addItem(QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].second), cbChSettingsWrite->addItem(QString::fromStdString(chSettings[cbIndex].GetAnswers()[i].second),
QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].first)); QString::fromStdString(chSettings[cbIndex].GetAnswers()[i].first));
if( ans == QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].first)) { if( ans == QString::fromStdString(chSettings[cbIndex].GetAnswers()[i].first)) {
ansIndex = i; ansIndex = i;
ans2 = QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].second); ans2 = QString::fromStdString(chSettings[cbIndex].GetAnswers()[i].second);
} }
} }
cbChSettingsWrite->setCurrentIndex(ansIndex); cbChSettingsWrite->setCurrentIndex(ansIndex);
@ -3233,7 +3300,7 @@ void DigiSettingsPanel::CheckRadioAndCheckedButtons(){
for( int i = 0 ; i < MaxNumberOfChannel ; i++){ for( int i = 0 ; i < MaxNumberOfChannel ; i++){
if( chkChTo[i]->isChecked() ){ if( chkChTo[i]->isChecked() ){
isToIndexCleicked = true; isToIndexCleicked = true;
chkChTo[i]->setStyleSheet("color : red;"); chkChTo[i]->setStyleSheet("color : blue;");
}else{ }else{
chkChTo[i]->setStyleSheet(""); chkChTo[i]->setStyleSheet("");
} }