| 109,12 → 109,78 |
| |
| static DRS *drs=NULL; |
| |
| |
| DLLEXPORT int DRSCalibrateTiming( ) |
| { |
| DRSBoard *b; |
| if (drs == NULL) drs = new DRS(); |
| if (!drs) return -1; |
| DRSParameters = drssettings::instance(); |
| |
| //fCalMode = 2; |
| if (drs->GetNumberOfBoards() ) { |
| /* continue working with first board only */ |
| b = drs->GetBoard(0); |
| |
| if (b->GetFirmwareVersion() < 13279) |
| printf("Firmware revision 13279 or later\nrequired for timing calibration\n"); |
| else if (b->GetInputRange() != 0) |
| printf("Timing calibration can only be done\nat the -0.5V to +0.5V input range\n"); |
| |
| else { |
| |
| |
| /* remember current settings */ |
| double acalVolt = b->GetAcalVolt(); |
| int acalMode = b->GetAcalMode(); |
| int tcalFreq = b->GetTcalFreq(); |
| int tcalLevel = b->GetTcalLevel(); |
| int tcalSource = b->GetTcalSource(); |
| int flag1 = b->GetTriggerEnable(0); |
| int flag2 = b->GetTriggerEnable(1); |
| int trgSource = b->GetTriggerSource(); |
| int trgDelay = b->GetTriggerDelay(); |
| double range = b->GetInputRange(); |
| int config = b->GetReadoutChannelConfig(); |
| |
| |
| int status = b->CalibrateTiming(NULL); |
| |
| if (!status) |
| printf("Error performing timing calibration, please check waveforms and redo voltage calibration.\n"); |
| else |
| printf("Timing calibration successfully finished.\n"); |
| |
| |
| /* restore old values */ |
| b->EnableAcal(acalMode, acalVolt); |
| b->EnableTcal(tcalFreq, tcalLevel); |
| b->SelectClockSource(tcalSource); |
| b->EnableTrigger(flag1, flag2); |
| b->SetTriggerSource(trgSource); |
| b->SetTriggerDelayPercent(trgDelay); |
| b->SetInputRange(range); |
| b->SetChannelConfig(config, 8, 8); |
| |
| if (b->GetBoardType() == 5) |
| b->SetTranspMode(1); // Evaluation board with build-in trigger |
| else |
| b->SetTranspMode(1); // VPC Mezzanine board |
| |
| return status; |
| } |
| |
| } |
| return -1; |
| } |
| |
| |
| DLLEXPORT int DRSInit() |
| { |
| |
| DRSBoard *b; |
| /* do drsinitial scan */ |
| drs = new DRS(); |
| if (drs == NULL) drs = new DRS(); |
| if (!drs) return -1; |
| DRSParameters = drssettings::instance(); |
| |