add more ANSTYPE for 64-byte or binary

This commit is contained in:
Ryan Tang 2023-03-14 16:40:54 -04:00
parent 74a17b07de
commit c6df41184f
2 changed files with 38 additions and 16 deletions

View File

@ -5,7 +5,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
enum ANSTYPE {INTEGER, FLOAT, LIST, STR, NONE}; enum ANSTYPE {INTEGER, FLOAT, LIST, STR, BYTE, BINARY, NONE};
enum TYPE {CH, DIG, LVDS, VGA}; enum TYPE {CH, DIG, LVDS, VGA};
enum RW { ReadOnly, WriteOnly, ReadWrite}; enum RW { ReadOnly, WriteOnly, ReadWrite};
@ -133,8 +133,8 @@ namespace PHA{
const Reg IPAddress ("IPAddress", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR); const Reg IPAddress ("IPAddress", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR);
const Reg NetMask ("Netmask", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR); const Reg NetMask ("Netmask", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR);
const Reg Gateway ("Gateway", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR); const Reg Gateway ("Gateway", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR);
const Reg LED_status ("LedStatus", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR, "byte"); const Reg LED_status ("LedStatus", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::BINARY, "byte");
const Reg ACQ_status ("AcquisitionStatus", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR, "byte"); const Reg ACQ_status ("AcquisitionStatus", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::BINARY, "byte");
const Reg MaxRawDataSize ("MaxRawDataSize", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR, "byte"); const Reg MaxRawDataSize ("MaxRawDataSize", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR, "byte");
const Reg TempSensAirIn ("TempSensAirIn", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "C"); const Reg TempSensAirIn ("TempSensAirIn", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "C");
const Reg TempSensAirOut ("TempSensAirOut", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "C"); const Reg TempSensAirOut ("TempSensAirOut", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "C");
@ -161,7 +161,7 @@ namespace PHA{
const Reg DutyCycleSensDCDC ("DutyCycleSensDCDC", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "%"); const Reg DutyCycleSensDCDC ("DutyCycleSensDCDC", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "%");
const Reg SpeedSensFan1 ("SpeedSensFan1", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "rpm"); const Reg SpeedSensFan1 ("SpeedSensFan1", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "rpm");
const Reg SpeedSensFan2 ("SpeedSensFan2", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "rpm"); const Reg SpeedSensFan2 ("SpeedSensFan2", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::INTEGER, "rpm");
const Reg ErrorFlags ("ErrorFlags", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::STR, "byte"); const Reg ErrorFlags ("ErrorFlags", RW::ReadOnly, TYPE::DIG, {}, ANSTYPE::BINARY, "byte");
const Reg BoardReady ("BoardReady", RW::ReadOnly, TYPE::DIG, {{"True", "No Error"}, {"False", "Error"}}); const Reg BoardReady ("BoardReady", RW::ReadOnly, TYPE::DIG, {{"True", "No Error"}, {"False", "Error"}});
///============= read write ///============= read write
@ -234,8 +234,8 @@ namespace PHA{
const Reg TestPulseWidth ("TestPulseWidth", RW::ReadWrite, TYPE::DIG, {{"0", ""},{"34359738360", ""}, {"8", ""}}, ANSTYPE::INTEGER, "ns"); const Reg TestPulseWidth ("TestPulseWidth", RW::ReadWrite, TYPE::DIG, {{"0", ""},{"34359738360", ""}, {"8", ""}}, ANSTYPE::INTEGER, "ns");
const Reg TestPulseLowLevel ("TestPulseLowLevel", RW::ReadWrite, TYPE::DIG, {{"0", ""},{"65535", ""}, {"1", ""}}, ANSTYPE::INTEGER, "ns"); const Reg TestPulseLowLevel ("TestPulseLowLevel", RW::ReadWrite, TYPE::DIG, {{"0", ""},{"65535", ""}, {"1", ""}}, ANSTYPE::INTEGER, "ns");
const Reg TestPulseHighLevel ("TestPulseHighLevel", RW::ReadWrite, TYPE::DIG, {{"0", ""},{"65535", ""}, {"1", ""}}, ANSTYPE::INTEGER, "ns"); const Reg TestPulseHighLevel ("TestPulseHighLevel", RW::ReadWrite, TYPE::DIG, {{"0", ""},{"65535", ""}, {"1", ""}}, ANSTYPE::INTEGER, "ns");
const Reg ErrorFlagMask ("ErrorFlagMask", RW::ReadWrite, TYPE::DIG, {}, ANSTYPE::STR); const Reg ErrorFlagMask ("ErrorFlagMask", RW::ReadWrite, TYPE::DIG, {}, ANSTYPE::BINARY);
const Reg ErrorFlagDataMask ("ErrorFlagDataMask", RW::ReadWrite, TYPE::DIG, {}, ANSTYPE::STR); const Reg ErrorFlagDataMask ("ErrorFlagDataMask", RW::ReadWrite, TYPE::DIG, {}, ANSTYPE::BINARY);
const Reg DACoutMode ("DACoutMode", RW::ReadWrite, TYPE::DIG, {{"Static", "DAC fixed level"}, const Reg DACoutMode ("DACoutMode", RW::ReadWrite, TYPE::DIG, {{"Static", "DAC fixed level"},
{"ChInput", "From Channel"}, {"ChInput", "From Channel"},
{"ChSum", "Sum of all Channels"}, {"ChSum", "Sum of all Channels"},
@ -474,7 +474,7 @@ namespace PHA{
{"ChSelfTrigger", "Channel Self-Trigger"}, {"ChSelfTrigger", "Channel Self-Trigger"},
{"Ch64Trigger", "Channel 64-Trigger"}, {"Ch64Trigger", "Channel 64-Trigger"},
{"Disabled", "Disabled"}}); {"Disabled", "Disabled"}});
const Reg ChannelsTriggerMask ("ChannelsTriggerMask", RW::ReadWrite, TYPE::CH, {}, ANSTYPE::STR, "64-bit" ); const Reg ChannelsTriggerMask ("ChannelsTriggerMask", RW::ReadWrite, TYPE::CH, {}, ANSTYPE::BYTE, "64-bit" );
const Reg ChannelVetoSource ("ChannelVetoSource", RW::ReadWrite, TYPE::CH, {{"BoardVeto", "Board Veto"}, const Reg ChannelVetoSource ("ChannelVetoSource", RW::ReadWrite, TYPE::CH, {{"BoardVeto", "Board Veto"},
{"ADCOverSaturation", "ADC Over Saturation"}, {"ADCOverSaturation", "ADC Over Saturation"},
{"ADCUnderSaturation", "ADC Under Saturation"}, {"ADCUnderSaturation", "ADC Under Saturation"},

View File

@ -133,7 +133,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
LEDStatus[iDigi][i] = new QPushButton(tab); LEDStatus[iDigi][i] = new QPushButton(tab);
LEDStatus[iDigi][i]->setEnabled(false); LEDStatus[iDigi][i]->setEnabled(false);
LEDStatus[iDigi][i]->setFixedSize(QSize(30,30)); LEDStatus[iDigi][i]->setFixedSize(QSize(30,30));
LEDStatus[iDigi][i]->setToolTip(LEDToolTip[i]); LEDStatus[iDigi][i]->setToolTip(QString::number(i) + " - " + LEDToolTip[i]);
LEDStatus[iDigi][i]->setToolTipDuration(-1); LEDStatus[iDigi][i]->setToolTipDuration(-1);
//TODO set tooltip position on top //TODO set tooltip position on top
statusLayout->addWidget(LEDStatus[iDigi][i], 0, 1 + 19 - i); statusLayout->addWidget(LEDStatus[iDigi][i], 0, 1 + 19 - i);
@ -149,7 +149,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
ACQStatus[iDigi][i] = new QPushButton(tab); ACQStatus[iDigi][i] = new QPushButton(tab);
ACQStatus[iDigi][i]->setEnabled(false); ACQStatus[iDigi][i]->setEnabled(false);
ACQStatus[iDigi][i]->setFixedSize(QSize(30,30)); ACQStatus[iDigi][i]->setFixedSize(QSize(30,30));
ACQStatus[iDigi][i]->setToolTip(ACQToolTip[i]); ACQStatus[iDigi][i]->setToolTip(QString::number(i) + " - " + ACQToolTip[i]);
ACQStatus[iDigi][i]->setToolTipDuration(-1); ACQStatus[iDigi][i]->setToolTipDuration(-1);
statusLayout->addWidget(ACQStatus[iDigi][i], 1, 1 + 7 - i); statusLayout->addWidget(ACQStatus[iDigi][i], 1, 1 + 7 - i);
} }
@ -753,7 +753,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
chStatus[iDigi][ch][k] = new QPushButton(statusTab); chStatus[iDigi][ch][k] = new QPushButton(statusTab);
chStatus[iDigi][ch][k]->setEnabled(false); chStatus[iDigi][ch][k]->setEnabled(false);
chStatus[iDigi][ch][k]->setFixedSize(QSize(10,25)); chStatus[iDigi][ch][k]->setFixedSize(QSize(10,25));
chStatus[iDigi][ch][k]->setToolTip(chToolTip[k]); chStatus[iDigi][ch][k]->setToolTip(QString::number(k) + " - " + chToolTip[k]);
chStatus[iDigi][ch][k]->setToolTipDuration(-1); chStatus[iDigi][ch][k]->setToolTipDuration(-1);
layout->addWidget(chStatus[iDigi][ch][k], 1 + ch/2, ch%2 * 12 + 9 - k); // arrange backward, so that it is like a bit-wise layout->addWidget(chStatus[iDigi][ch][k], 1 + ch/2, ch%2 * 12 + 9 - k); // arrange backward, so that it is like a bit-wise
} }
@ -2030,12 +2030,22 @@ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
case RW::ReadWrite : type ="Read/Write"; break; case RW::ReadWrite : type ="Read/Write"; break;
} }
leBdSettingsType->setText(type); leBdSettingsType->setText(type);
leBdSettingsRead->setText(QString::fromStdString(digi[cbIQDigi->currentIndex()]->ReadValue(PHA::DIG::AllSettings[cbIndex])));
QString ans = QString::fromStdString(digi[cbIQDigi->currentIndex()]->ReadValue(PHA::DIG::AllSettings[cbIndex]));
ANSTYPE haha = PHA::DIG::AllSettings[cbIndex].GetAnswerType();
if( haha == ANSTYPE::BYTE){
leBdSettingsRead->setText( "0x" + QString::number(ans.toULong(), 16).rightJustified(16, '0'));
}else if( haha == ANSTYPE::BINARY ){
leBdSettingsRead->setText( "0b" + QString::number(ans.toUInt(), 2).rightJustified(18, '0'));
}else{
leBdSettingsRead->setText(ans);
}
leBdSettingsUnit->setText(QString::fromStdString(PHA::DIG::AllSettings[cbIndex].GetUnit())); leBdSettingsUnit->setText(QString::fromStdString(PHA::DIG::AllSettings[cbIndex].GetUnit()));
ANSTYPE haha = PHA::DIG::AllSettings[cbIndex].GetAnswerType();
if( PHA::DIG::AllSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){ if( PHA::DIG::AllSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){
//===== spin box
if( haha == ANSTYPE::FLOAT || haha == ANSTYPE::INTEGER ){ if( haha == ANSTYPE::FLOAT || haha == ANSTYPE::INTEGER ){
cbBdAns->clear(); cbBdAns->clear();
cbBdAns->setEnabled(false); cbBdAns->setEnabled(false);
@ -2049,6 +2059,7 @@ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
sbBdSettingsWrite->setDecimals(0); sbBdSettingsWrite->setDecimals(0);
} }
if( haha == ANSTYPE::FLOAT) sbBdSettingsWrite->setDecimals(3); if( haha == ANSTYPE::FLOAT) sbBdSettingsWrite->setDecimals(3);
//===== combo Box
if( haha == ANSTYPE::LIST){ if( haha == ANSTYPE::LIST){
cbBdAns->setEnabled(true); cbBdAns->setEnabled(true);
cbBdAns->clear(); cbBdAns->clear();
@ -2061,7 +2072,8 @@ void DigiSettingsPanel::ReadBoardSetting(int cbIndex){
leBdSettingsWrite->setEnabled(false); leBdSettingsWrite->setEnabled(false);
leBdSettingsWrite->clear(); leBdSettingsWrite->clear();
} }
if( haha == ANSTYPE::STR){ //===== lineEdit
if( haha == ANSTYPE::STR || haha == ANSTYPE::BYTE || haha == ANSTYPE::BINARY){
cbBdAns->clear(); cbBdAns->clear();
cbBdAns->setEnabled(false); cbBdAns->setEnabled(false);
leBdSettingsWrite->setEnabled(true); leBdSettingsWrite->setEnabled(true);
@ -2098,10 +2110,20 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
case RW::ReadWrite : type ="Read/Write"; break; case RW::ReadWrite : type ="Read/Write"; break;
} }
leChSettingsType->setText(type); leChSettingsType->setText(type);
leChSettingsRead->setText(QString::fromStdString(digi[cbIQDigi->currentIndex()]->ReadValue(PHA::CH::AllSettings[cbIndex], cbIQCh->currentData().toInt())));
QString ans = QString::fromStdString(digi[cbIQDigi->currentIndex()]->ReadValue(PHA::CH::AllSettings[cbIndex], cbIQCh->currentData().toInt()));
ANSTYPE haha = PHA::CH::AllSettings[cbIndex].GetAnswerType();
if( haha == ANSTYPE::BYTE){
leChSettingsRead->setText( "0x" + QString::number(ans.toULong(), 16).rightJustified(16, '0'));
}else if( haha == ANSTYPE::BINARY ){
leChSettingsRead->setText( "0b" + QString::number(ans.toUInt(), 2).rightJustified(18, '0'));
}else{
leChSettingsRead->setText(ans);
}
leChSettingsUnit->setText(QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetUnit())); leChSettingsUnit->setText(QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetUnit()));
ANSTYPE haha = PHA::CH::AllSettings[cbIndex].GetAnswerType();
if( PHA::CH::AllSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){ if( PHA::CH::AllSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){
@ -2130,7 +2152,7 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
leChSettingsWrite->setEnabled(false); leChSettingsWrite->setEnabled(false);
leChSettingsWrite->clear(); leChSettingsWrite->clear();
} }
if( haha == ANSTYPE::STR){ if( haha == ANSTYPE::STR || haha == ANSTYPE::BYTE || haha == ANSTYPE::BINARY){
cbChAns->clear(); cbChAns->clear();
cbChAns->setEnabled(false); cbChAns->setEnabled(false);
leChSettingsWrite->setEnabled(true); leChSettingsWrite->setEnabled(true);