From 48b81168492a7063351c9a2dbd407eff0cffd982 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 17 Jun 2020 09:30:51 +0200 Subject: [PATCH 01/10] removed settings file option for gotthard and jungfrau, also removed ghost functiosn writesettingsfile and savesettingsfile in module --- slsDetectorSoftware/src/Module.cpp | 106 +---------------------------- slsDetectorSoftware/src/Module.h | 8 +-- 2 files changed, 4 insertions(+), 110 deletions(-) diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 11e8ac25c..b3a77081a 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -872,27 +872,14 @@ void Module::loadSettingsFile(const std::string &fname) { ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec << getSerialNumber(); } + } else { + throw RuntimeError("not implemented for this detector"); } fn = ostfn.str(); auto myMod = readSettingsFile(fn); setModule(myMod); } -void Module::saveSettingsFile(const std::string &fname) { - std::string fn = fname; - std::ostringstream ostfn; - ostfn << fname; - - // find specific file if it has detid in file name (.snxxx) - if (shm()->myDetectorType == EIGER) { - ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec - << getSerialNumber(); - } - fn = ostfn.str(); - sls_detector_module myMod = getModule(); - writeSettingsFile(fn, myMod); -} - slsDetectorDefs::runStatus Module::getRunStatus() const { runStatus retval = ERROR; LOG(logDEBUG1) << "Getting status"; @@ -3142,98 +3129,11 @@ sls_detector_module Module::readSettingsFile(const std::string &fname, int tb) { } } - // gotthard, jungfrau else { - auto names = getSettingsFileDacNames(); - size_t idac = 0; - std::string str; - while (infile.good()) { - getline(infile, str); - if (str.empty()) { - break; - } - LOG(logDEBUG1) << str; - std::string sargname; - int ival = 0; - std::istringstream ssstr(str); - ssstr >> sargname >> ival; - bool found = false; - for (size_t i = 0; i < names.size(); ++i) { - if (sargname == names[i]) { - myMod.dacs[i] = ival; - found = true; - LOG(logDEBUG1) << names[i] << "(" << i << "): " << ival; - ++idac; - } - } - if (!found) { - throw RuntimeError("readSettingsFile: Unknown dac: " + - sargname); - } - } - // not all read - if (idac != names.size()) { - throw RuntimeError("Could read only " + std::to_string(idac) + - " dacs. Expected " + - std::to_string(names.size()) + " dacs"); - } + throw RuntimeError("Not implemented for this detector"); } LOG(logINFO) << "Settings file loaded: " << fname.c_str(); return myMod; } -void Module::writeSettingsFile(const std::string &fname, - sls_detector_module &mod) { - LOG(logDEBUG1) << "Write settings file " << fname; - - std::ofstream outfile; - if (shm()->myDetectorType == EIGER) { - outfile.open(fname.c_str(), std::ofstream::binary); - } else { - outfile.open(fname.c_str(), std::ios_base::out); - } - if (!outfile.is_open()) { - throw RuntimeError("Could not open settings file for writing: " + - fname); - } - if (shm()->myDetectorType == EIGER) { - for (int i = 0; i < mod.ndac; ++i) { - LOG(logINFO) << "dac " << i << ":" << mod.dacs[i]; - } - LOG(logINFO) << "iodelay: " << mod.iodelay; - LOG(logINFO) << "tau: " << mod.tau; - - outfile.write(reinterpret_cast(mod.dacs), - sizeof(int) * (mod.ndac)); - outfile.write(reinterpret_cast(&mod.iodelay), - sizeof(mod.iodelay)); - outfile.write(reinterpret_cast(&mod.tau), sizeof(mod.tau)); - outfile.write(reinterpret_cast(mod.chanregs), - sizeof(int) * (mod.nchan)); - } - // gotthard, jungfrau - else { - auto names = getSettingsFileDacNames(); - for (int i = 0; i < mod.ndac; ++i) { - LOG(logDEBUG1) << "dac " << i << ": " << mod.dacs[i]; - outfile << names[i] << " " << mod.dacs[i] << std::endl; - } - } -} - -std::vector Module::getSettingsFileDacNames() { - switch (shm()->myDetectorType) { - case GOTTHARD: - return {"Vref", "VcascN", "VcascP", "Vout", - "Vcasc", "Vin", "Vref_comp", "Vib_test"}; - case JUNGFRAU: - return {"VDAC0", "VDAC1", "VDAC2", "VDAC3", "VDAC4", "VDAC5", - "VDAC6", "VDAC7", "VDAC8", "VDAC9", "VDAC10", "VDAC11", - "VDAC12", "VDAC13", "VDAC14", "VDAC15"}; - default: - throw RuntimeError( - "Unknown detector type - unknown format for settings file"); - } -} - } // namespace sls \ No newline at end of file diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index 255ec15c1..8cc17fe20 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -318,15 +318,9 @@ class Module : public virtual slsDetectorDefs { */ std::string setSettingsDir(const std::string &dir); + /** [Eiger][Mythen3] */ void loadSettingsFile(const std::string &fname); - /** - * Saves the modules settings/trimbits to a specific file - * file name extension is automatically generated. - * @param fname specific settings/trimbits file - */ - void saveSettingsFile(const std::string &fname); - /** * Get run status of the detector * @returns the status of the detector From e09fc8cd2b194528d692ffdc9416c9c03c3c9846 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 17 Jun 2020 09:33:39 +0200 Subject: [PATCH 02/10] from previous --- slsDetectorSoftware/src/Module.h | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index 8cc17fe20..af596c2b3 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -1743,19 +1743,6 @@ class Module : public virtual slsDetectorDefs { sls_detector_module readSettingsFile(const std::string &fname, int tb = 1); - /** - * writes a trim/settings file - * @param fname name of the file to be written - * @param mod module structure which has to be written to file - */ - void writeSettingsFile(const std::string &fname, sls_detector_module &mod); - - /** - * Get Names of dacs in settings file - * @returns vector dac names expected in settings file - */ - std::vector getSettingsFileDacNames(); - /** Module Id or position in the detectors list */ const int detId; From b5781e1f9b3d77df17a966a90d86b5903e5c58a9 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 17 Jun 2020 09:57:56 +0200 Subject: [PATCH 03/10] multisize to numberofdetectors --- .../src/slsDetectorServer_funcs.c | 2 +- slsDetectorSoftware/src/DetectorImpl.cpp | 2 +- slsDetectorSoftware/src/Module.cpp | 20 ++++++++++--------- slsDetectorSoftware/src/Module.h | 10 ++-------- slsReceiverSoftware/src/ClientInterface.cpp | 10 ++++++---- slsReceiverSoftware/src/Implementation.cpp | 6 +++--- slsReceiverSoftware/src/Implementation.h | 4 ++-- slsSupportLib/include/sls_detector_defs.h | 2 +- 8 files changed, 27 insertions(+), 29 deletions(-) diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 6f5f1963e..d47e0a816 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -6916,7 +6916,7 @@ int get_receiver_parameters(int file_des) { n += sendData(file_des, &i32, sizeof(i32), INT32); if (n < 0) return printSocketReadError(); - // multisize + // numberOfDetector i32 = 0; n += sendData(file_des, &i32, sizeof(i32), INT32); if (n < 0) diff --git a/slsDetectorSoftware/src/DetectorImpl.cpp b/slsDetectorSoftware/src/DetectorImpl.cpp index b83b72f4e..97aa617ee 100644 --- a/slsDetectorSoftware/src/DetectorImpl.cpp +++ b/slsDetectorSoftware/src/DetectorImpl.cpp @@ -315,7 +315,7 @@ void DetectorImpl::updateDetectorSize() { << multi_shm()->numberOfChannels.y; for (auto &d : detectors) { - d->updateMultiSize(multi_shm()->numberOfDetector); + d->updateNumberOfDetector(multi_shm()->numberOfDetector); } } diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index b3a77081a..09c62596c 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -375,8 +375,8 @@ void Module::initializeDetectorStructure(detectorType type) { shm()->shmversion = SLS_SHMVERSION; memset(shm()->hostname, 0, MAX_STR_LENGTH); shm()->myDetectorType = type; - shm()->multiSize.x = 0; - shm()->multiSize.y = 0; + shm()->numberOfDetector.x = 0; + shm()->numberOfDetector.y = 0; shm()->controlPort = DEFAULT_PORTNO; shm()->stopPort = DEFAULT_PORTNO + 1; sls::strcpy_safe(shm()->settingsDir, getenv("HOME")); @@ -558,9 +558,9 @@ void Module::setReadNLines(const int value) { int Module::getReadNLines() { return sendToDetector(F_GET_READ_N_LINES); } -void Module::updateMultiSize(slsDetectorDefs::xy det) { - shm()->multiSize = det; - int args[2] = {shm()->multiSize.y, detId}; +void Module::updateNumberOfDetector(slsDetectorDefs::xy det) { + shm()->numberOfDetector = det; + int args[2] = {shm()->numberOfDetector.y, detId}; sendToDetector(F_SET_POSITION, args, nullptr); } @@ -1434,15 +1434,17 @@ void Module::setReceiverHostname(const std::string &receiverIP) { // populate from shared memory retval.detType = shm()->myDetectorType; - retval.multiSize.x = shm()->multiSize.x; - retval.multiSize.y = shm()->multiSize.y; + retval.numberOfDetector.x = shm()->numberOfDetector.x; + retval.numberOfDetector.y = shm()->numberOfDetector.y; retval.detId = detId; memset(retval.hostname, 0, sizeof(retval.hostname)); strcpy_safe(retval.hostname, shm()->hostname); LOG(logDEBUG1) << "detType:" << retval.detType << std::endl - << "multiSize.x:" << retval.multiSize.x << std::endl - << "multiSize.y:" << retval.multiSize.y << std::endl + << "numberOfDetector.x:" << retval.numberOfDetector.x + << std::endl + << "numberOfDetector.y:" << retval.numberOfDetector.y + << std::endl << "detId:" << retval.detId << std::endl << "hostname:" << retval.hostname << std::endl << "udpInterfaces:" << retval.udpInterfaces << std::endl diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index af596c2b3..2df993f46 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -26,20 +26,14 @@ struct sharedSlsDetector { /* FIXED PATTERN FOR STATIC FUNCTIONS. DO NOT CHANGE, ONLY APPEND ------*/ - /** shared memory version */ int shmversion; - - /** is the hostname (or IP address) of the detector. needs to be set - * before starting the communication */ char hostname[MAX_STR_LENGTH]; - - /** detector type \ see :: detectorType*/ slsDetectorDefs::detectorType myDetectorType; /** END OF FIXED PATTERN -----------------------------------------------*/ /** Number of detectors in multi list in x dir and y dir */ - slsDetectorDefs::xy multiSize; + slsDetectorDefs::xy numberOfDetector; /** is the port used for control functions */ int controlPort; @@ -212,7 +206,7 @@ class Module : public virtual slsDetectorDefs { * Set Detector offset in shared memory in dimension d * @param det detector size */ - void updateMultiSize(slsDetectorDefs::xy det); + void updateNumberOfDetector(slsDetectorDefs::xy det); int setControlPort(int port_number); diff --git a/slsReceiverSoftware/src/ClientInterface.cpp b/slsReceiverSoftware/src/ClientInterface.cpp index ef9dbfc52..d1300c9b1 100644 --- a/slsReceiverSoftware/src/ClientInterface.cpp +++ b/slsReceiverSoftware/src/ClientInterface.cpp @@ -339,8 +339,10 @@ int ClientInterface::get_version(Interface &socket) { int ClientInterface::setup_receiver(Interface &socket) { auto arg = socket.Receive(); LOG(logDEBUG) << "detType:" << arg.detType << std::endl - << "multiSize.x:" << arg.multiSize.x << std::endl - << "multiSize.y:" << arg.multiSize.y << std::endl + << "numberOfDetector.x:" << arg.numberOfDetector.x + << std::endl + << "numberOfDetector.y:" << arg.numberOfDetector.y + << std::endl << "detId:" << arg.detId << std::endl << "hostname:" << arg.hostname << std::endl << "udpInterfaces:" << arg.udpInterfaces << std::endl @@ -389,8 +391,8 @@ int ClientInterface::setup_receiver(Interface &socket) { // basic setup setDetectorType(arg.detType); { - int msize[2] = {arg.multiSize.x, arg.multiSize.y}; - impl()->setMultiDetectorSize(msize); + int msize[2] = {arg.numberOfDetector.x, arg.numberOfDetector.y}; + impl()->setDetectorSize(msize); } impl()->setDetectorPositionId(arg.detId); impl()->setDetectorHostname(arg.hostname); diff --git a/slsReceiverSoftware/src/Implementation.cpp b/slsReceiverSoftware/src/Implementation.cpp index 31e7304ca..6cc9c63be 100644 --- a/slsReceiverSoftware/src/Implementation.cpp +++ b/slsReceiverSoftware/src/Implementation.cpp @@ -315,12 +315,12 @@ void Implementation::setDetectorType(const detectorType d) { LOG(logDEBUG) << " Detector type set to " << sls::ToString(d); } -int *Implementation::getMultiDetectorSize() const { +int *Implementation::getDetectorSize() const { LOG(logDEBUG3) << __SHORT_AT__ << " called"; return (int *)numDet; } -void Implementation::setMultiDetectorSize(const int *size) { +void Implementation::setDetectorSize(const int *size) { LOG(logDEBUG3) << __SHORT_AT__ << " called"; std::string log_message = "Detector Size (ports): ("; for (int i = 0; i < MAX_DIMENSIONS; ++i) { @@ -1062,7 +1062,7 @@ void Implementation::setNumberofUDPInterfaces(const int n) { SetThreadPriorities(); // update (from 1 to 2 interface) & also for printout - setMultiDetectorSize(numDet); + setDetectorSize(numDet); // update row and column in dataprocessor setDetectorPositionId(detID); diff --git a/slsReceiverSoftware/src/Implementation.h b/slsReceiverSoftware/src/Implementation.h index 5f6e94374..889fed2c3 100644 --- a/slsReceiverSoftware/src/Implementation.h +++ b/slsReceiverSoftware/src/Implementation.h @@ -28,8 +28,8 @@ class Implementation : private virtual slsDetectorDefs { * ************************************************/ void setDetectorType(const detectorType d); - int *getMultiDetectorSize() const; - void setMultiDetectorSize(const int *size); + int *getDetectorSize() const; + void setDetectorSize(const int *size); int getDetectorPositionId() const; void setDetectorPositionId(const int id); std::string getDetectorHostname() const; diff --git a/slsSupportLib/include/sls_detector_defs.h b/slsSupportLib/include/sls_detector_defs.h index 52ce82470..78528006a 100644 --- a/slsSupportLib/include/sls_detector_defs.h +++ b/slsSupportLib/include/sls_detector_defs.h @@ -445,7 +445,7 @@ typedef struct { */ struct rxParameters { detectorType detType{GENERIC}; - xy multiSize; + xy numberOfDetector; int detId{0}; char hostname[MAX_STR_LENGTH]; int udpInterfaces{1}; From 1f3fd010a7e860970d5c8cfbd2611fd7284e2bf7 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 17 Jun 2020 15:25:59 +0200 Subject: [PATCH 04/10] reordering WIP --- slsDetectorSoftware/include/Detector.h | 2 +- slsDetectorSoftware/src/Detector.cpp | 23 +- slsDetectorSoftware/src/Module.cpp | 1786 +++++++++---------- slsDetectorSoftware/src/Module.h | 739 ++------ slsReceiverSoftware/src/ClientInterface.cpp | 46 +- slsReceiverSoftware/src/Implementation.cpp | 29 +- slsReceiverSoftware/src/Implementation.h | 6 +- slsSupportLib/include/ToString.h | 3 + slsSupportLib/include/sls_detector_defs.h | 2 +- slsSupportLib/src/ToString.cpp | 52 + 10 files changed, 1148 insertions(+), 1540 deletions(-) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index c03e9638d..6ea27deae 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -43,7 +43,7 @@ class Detector { * ************************************************/ /* Free the shared memory of this detector and all modules - * belonging to it.*/ + * belonging to it */ void freeSharedMemory(); void loadConfig(const std::string &fname); diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index ce698f575..cf91efb03 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -376,25 +376,25 @@ void Detector::setClockDivider(int clkIndex, int value, Positions pos) { } Result Detector::getHighVoltage(Positions pos) const { - return pimpl->Parallel(&Module::setDAC, pos, -1, defs::HIGH_VOLTAGE, 0); + return pimpl->Parallel(&Module::getDAC, pos, defs::HIGH_VOLTAGE, false); } void Detector::setHighVoltage(int value, Positions pos) { - pimpl->Parallel(&Module::setDAC, pos, value, defs::HIGH_VOLTAGE, 0); + pimpl->Parallel(&Module::setDAC, pos, value, defs::HIGH_VOLTAGE, false); } Result Detector::getPowerChip(Positions pos) const { - return pimpl->Parallel(&Module::powerChip, pos, -1); + return pimpl->Parallel(&Module::getPowerChip, pos); } void Detector::setPowerChip(bool on, Positions pos) { if ((pos.empty() || pos[0] == -1) && on && pimpl->size() > 3) { for (int i = 0; i != pimpl->size(); ++i) { - pimpl->Parallel(&Module::powerChip, {i}, static_cast(on)); + pimpl->Parallel(&Module::setPowerChip, {i}, on); usleep(1000 * 1000); } } else { - pimpl->Parallel(&Module::powerChip, pos, static_cast(on)); + pimpl->Parallel(&Module::setPowerChip, pos, on); } } @@ -486,7 +486,7 @@ std::vector Detector::getDacList() const { Result Detector::getDAC(defs::dacIndex index, bool mV, Positions pos) const { - return pimpl->Parallel(&Module::setDAC, pos, -1, index, mV); + return pimpl->Parallel(&Module::getDAC, pos, index, mV); } void Detector::setDAC(defs::dacIndex index, int value, bool mV, Positions pos) { @@ -690,12 +690,11 @@ Result Detector::printRxConfiguration(Positions pos) const { } Result Detector::getTenGiga(Positions pos) const { - return pimpl->Parallel(&Module::enableTenGigabitEthernet, pos, -1); + return pimpl->Parallel(&Module::getTenGiga, pos); } void Detector::setTenGiga(bool value, Positions pos) { - pimpl->Parallel(&Module::enableTenGigabitEthernet, pos, - static_cast(value)); + pimpl->Parallel(&Module::setTenGiga, pos, value); } Result Detector::getTenGigaFlowControl(Positions pos) const { @@ -780,7 +779,7 @@ void Detector::setRxPort(int port, int module_id) { } Result Detector::getRxFifoDepth(Positions pos) const { - return pimpl->Parallel(&Module::setReceiverFifoDepth, pos, -1); + return pimpl->Parallel(&Module::getReceiverFifoDepth, pos); } void Detector::setRxFifoDepth(int nframes, Positions pos) { @@ -1440,7 +1439,7 @@ Result Detector::getVoltage(defs::dacIndex index, Positions pos) const { default: throw RuntimeError("Unknown Voltage Index"); } - return pimpl->Parallel(&Module::setDAC, pos, -1, index, 1); + return pimpl->Parallel(&Module::getDAC, pos, index, true); } void Detector::setVoltage(defs::dacIndex index, int value, Positions pos) { @@ -1456,7 +1455,7 @@ void Detector::setVoltage(defs::dacIndex index, int value, Positions pos) { default: throw RuntimeError("Unknown Voltage Index"); } - pimpl->Parallel(&Module::setDAC, pos, value, index, 1); + pimpl->Parallel(&Module::setDAC, pos, value, index, true); } Result Detector::getADCEnableMask(Positions pos) const { diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 09c62596c..bcf01e5be 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -20,9 +20,11 @@ namespace sls { -// create shm -Module::Module(detectorType type, int multi_id, int det_id, bool verify) - : detId(det_id), shm(multi_id, det_id) { +// Configuration + +// creating new shm +Module::Module(detectorType type, int det_id, int module_id, bool verify) + : moduleId(module_id), shm(det_id, module_id) { // ensure shared memory was not created before if (shm.IsExisting()) { @@ -32,68 +34,50 @@ Module::Module(detectorType type, int multi_id, int det_id, bool verify) shm.RemoveSharedMemory(); } - initSharedMemory(type, multi_id, verify); + initSharedMemory(type, det_id, verify); } -// pick up from shm -Module::Module(int multi_id, int det_id, bool verify) - : detId(det_id), shm(multi_id, det_id) { +// opening existing shm +Module::Module(int det_id, int module_id, bool verify) + : moduleId(module_id), shm(det_id, module_id) { - // getDetectorType From shm will check if it was already existing - detectorType type = getDetectorTypeFromShm(multi_id, verify); - initSharedMemory(type, multi_id, verify); + // getDetectorType From shm will check if existing + detectorType type = getDetectorTypeFromShm(det_id, verify); + initSharedMemory(type, det_id, verify); } Module::~Module() = default; +void Module::freeSharedMemory() { + if (shm.IsExisting()) { + shm.RemoveSharedMemory(); + } +} + bool Module::isFixedPatternSharedMemoryCompatible() { return (shm()->shmversion >= SLS_SHMAPIVERSION); } -void Module::checkDetectorVersionCompatibility() { - int fnum = F_CHECK_VERSION; - int64_t arg = 0; +std::string Module::getHostname() const { return shm()->hostname; } - // get api version number for detector server - switch (shm()->myDetectorType) { - case EIGER: - arg = APIEIGER; - break; - case JUNGFRAU: - arg = APIJUNGFRAU; - break; - case GOTTHARD: - arg = APIGOTTHARD; - break; - case CHIPTESTBOARD: - arg = APICTB; - break; - case MOENCH: - arg = APIMOENCH; - break; - case MYTHEN3: - arg = APIMYTHEN3; - break; - case GOTTHARD2: - arg = APIGOTTHARD2; - break; - default: - throw NotImplementedError( - "Check version compatibility is not implemented for this detector"); +void Module::setHostname(const std::string &hostname, + const bool initialChecks) { + sls::strcpy_safe(shm()->hostname, hostname.c_str()); + auto client = DetectorSocket(shm()->hostname, shm()->controlPort); + client.close(); + try { + checkDetectorVersionCompatibility(); + LOG(logINFO) << "Detector Version Compatibility - Success"; + } catch (const DetectorError &e) { + if (!initialChecks) { + LOG(logWARNING) << "Bypassing Initial Checks at your own risk!"; + } else { + throw; + } + } + if (shm()->myDetectorType == EIGER) { + setActivate(true); } - LOG(logDEBUG1) << "Checking version compatibility with detector with value " - << std::hex << arg << std::dec; - - sendToDetector(fnum, arg, nullptr); - sendToDetectorStop(fnum, arg, nullptr); -} - -void Module::checkReceiverVersionCompatibility() { - // TODO! Verify that this works as intended when version don't match - int64_t arg = APIRECEIVER; - LOG(logDEBUG1) << "Checking version compatibility with receiver with value " - << std::hex << arg << std::dec; - sendToReceiver(F_RECEIVER_CHECK_VERSION, arg, nullptr); } int64_t Module::getFirmwareVersion() { @@ -115,6 +99,659 @@ int64_t Module::getReceiverSoftwareVersion() const { return -1; } +// static function +slsDetectorDefs::detectorType +Module::getTypeFromDetector(const std::string &hostname, int cport) { + int fnum = F_GET_DETECTOR_TYPE; + int ret = FAIL; + detectorType retval = GENERIC; + LOG(logDEBUG1) << "Getting detector type "; + sls::ClientSocket cs("Detector", hostname, cport); + cs.Send(reinterpret_cast(&fnum), sizeof(fnum)); + cs.Receive(reinterpret_cast(&ret), sizeof(ret)); + cs.Receive(reinterpret_cast(&retval), sizeof(retval)); + LOG(logDEBUG1) << "Detector type is " << retval; + return retval; +} + +slsDetectorDefs::detectorType Module::getDetectorType() const { + return shm()->myDetectorType; +} + +void Module::updateNumberOfChannels() { + if (shm()->myDetectorType == CHIPTESTBOARD || + shm()->myDetectorType == MOENCH) { + std::array retvals{}; + sendToDetector(F_GET_NUM_CHANNELS, nullptr, retvals); + shm()->nChan.x = retvals[0]; + shm()->nChan.y = retvals[1]; + } +} + +slsDetectorDefs::xy Module::getNumberOfChannels() const { + slsDetectorDefs::xy coord{}; + coord.x = (shm()->nChan.x * shm()->nChip.x); + coord.y = (shm()->nChan.y * shm()->nChip.y); + return coord; +} + +void Module::updateNumberOfDetector(slsDetectorDefs::xy det) { + shm()->numberOfDetector = det; + int args[2] = {shm()->numberOfDetector.y, moduleId}; + sendToDetector(F_SET_POSITION, args, nullptr); +} + +slsDetectorDefs::detectorSettings Module::getSettings() { + auto r = sendToDetector(F_SET_SETTINGS, -1); + return static_cast(r); +} + +void Module::setSettings(detectorSettings isettings) { + if (shm()->myDetectorType == EIGER) { + throw RuntimeError( + "Cannot set settings for Eiger. Use threshold energy."); + } + sendToDetector(F_SET_SETTINGS, static_cast(isettings)); +} + +void Module::loadSettingsFile(const std::string &fname) { + std::string fn = fname; + std::ostringstream ostfn; + ostfn << fname; + + // find specific file if it has detid in file name (.snxxx) + if (shm()->myDetectorType == EIGER || shm()->myDetectorType == MYTHEN3) { + if (fname.find(".sn") == std::string::npos && + fname.find(".trim") == std::string::npos && + fname.find(".settings") == std::string::npos) { + ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec + << getSerialNumber(); + } + } else { + throw RuntimeError("not implemented for this detector"); + } + fn = ostfn.str(); + auto myMod = readSettingsFile(fn); + setModule(myMod); +} + +int Module::getAllTrimbits() { + return sendToDetector(F_SET_ALL_TRIMBITS, -1); +} + +void Module::setAllTrimbits(int val) { + sendToDetector(F_SET_ALL_TRIMBITS, val); +} + +int64_t Module::getNumberOfFrames() { + return sendToDetector(F_GET_NUM_FRAMES); +} + +void Module::setNumberOfFrames(int64_t value) { + sendToDetector(F_SET_NUM_FRAMES, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_NUM_FRAMES, value, nullptr); + } +} + +int64_t Module::getNumberOfTriggers() { + return sendToDetector(F_GET_NUM_TRIGGERS); +} + +void Module::setNumberOfTriggers(int64_t value) { + sendToDetector(F_SET_NUM_TRIGGERS, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_NUM_TRIGGERS, value, nullptr); + } +} + +int64_t Module::getPeriod() { return sendToDetector(F_GET_PERIOD); } + +void Module::setPeriod(int64_t value) { + sendToDetector(F_SET_PERIOD, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_PERIOD, value, nullptr); + } +} + +int64_t Module::getDelayAfterTrigger() { + return sendToDetector(F_GET_DELAY_AFTER_TRIGGER); +} + +void Module::setDelayAfterTrigger(int64_t value) { + sendToDetector(F_SET_DELAY_AFTER_TRIGGER, value, nullptr); +} + +int64_t Module::getNumberOfFramesLeft() const { + int64_t retval = -1; + sendToDetectorStop(F_GET_FRAMES_LEFT, nullptr, retval); + return retval; +} + +int64_t Module::getNumberOfTriggersLeft() const { + int64_t retval = -1; + sendToDetectorStop(F_GET_TRIGGERS_LEFT, nullptr, retval); + return retval; +} + +int64_t Module::getDelayAfterTriggerLeft() const { + int64_t retval = -1; + sendToDetectorStop(F_GET_DELAY_AFTER_TRIGGER_LEFT, nullptr, retval); + return retval; +} + +int64_t Module::getPeriodLeft() const { + int64_t retval = -1; + sendToDetectorStop(F_GET_PERIOD_LEFT, nullptr, retval); + return retval; +} + +slsDetectorDefs::timingMode Module::getTimingMode() { + return sendToDetector(F_SET_TIMING_MODE, -1); +} + +void Module::setTimingMode(timingMode value) { + timingMode retval = GET_TIMING_MODE; + sendToDetector(F_SET_TIMING_MODE, static_cast(value), retval); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_TIMING_MODE, value, nullptr); + } +} + +int Module::getClockDivider(int clkIndex) { + return sendToDetector(F_GET_CLOCK_DIVIDER, clkIndex); +} + +void Module::setClockDivider(int clkIndex, int value) { + int args[]{clkIndex, value}; + sendToDetector(F_SET_CLOCK_DIVIDER, args, nullptr); +} + +int Module::getClockPhase(int clkIndex, bool inDegrees) { + int args[]{clkIndex, static_cast(inDegrees)}; + return sendToDetector(F_GET_CLOCK_PHASE, args); +} + +void Module::setClockPhase(int clkIndex, int value, bool inDegrees) { + int args[]{clkIndex, value, static_cast(inDegrees)}; + sendToDetector(F_SET_CLOCK_PHASE, args, nullptr); +} + +int Module::getMaxClockPhaseShift(int clkIndex) { + return sendToDetector(F_GET_MAX_CLOCK_PHASE_SHIFT, clkIndex); +} + +int Module::getClockFrequency(int clkIndex) { + return sendToDetector(F_GET_CLOCK_FREQUENCY, clkIndex); +} + +void Module::setClockFrequency(int clkIndex, int value) { + int args[]{clkIndex, value}; + sendToDetector(F_SET_CLOCK_FREQUENCY, args, nullptr); +} + +int Module::getDAC(dacIndex index, bool mV) { + int args[]{static_cast(index), static_cast(mV), -1}; + return sendToDetector(F_SET_DAC, args); +} + +void Module::setDAC(int val, dacIndex index, bool mV) { + int args[]{static_cast(index), static_cast(mV), val}; + sendToDetector(F_SET_DAC, args); +} + +bool Module::getPowerChip() { + int arg = -1; + return sendToDetector(F_POWER_CHIP, arg); +} + +void Module::setPowerChip(bool on) { + sendToDetector(F_POWER_CHIP, static_cast(on)); +} + +int Module::getImageTestMode() { + return sendToDetector(F_GET_IMAGE_TEST_MODE); +} + +void Module::setImageTestMode(const int value) { + sendToDetector(F_SET_IMAGE_TEST_MODE, value, nullptr); +} + +int Module::getADC(dacIndex index) { + return sendToDetector(F_GET_ADC, static_cast(index)); +} + +int Module::getOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex) { + int args[]{static_cast(index), chipIndex}; + return sendToDetector(F_GET_ON_CHIP_DAC, args); +} + +void Module::setOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex, + int value) { + int args[]{static_cast(index), chipIndex, value}; + sendToDetector(F_SET_ON_CHIP_DAC, args, nullptr); +} + +void Module::startReceiver() { + shm()->stoppedFlag = false; + sendToReceiver(F_START_RECEIVER, nullptr, nullptr); +} + +void Module::stopReceiver() { + int arg = static_cast(shm()->stoppedFlag); + sendToReceiver(F_STOP_RECEIVER, arg, nullptr); +} + +void Module::prepareAcquisition() { sendToDetector(F_PREPARE_ACQUISITION); } + +void Module::startAcquisition() { + shm()->stoppedFlag = false; + sendToDetector(F_START_ACQUISITION); +} + +void Module::stopAcquisition() { + // get status before stopping acquisition + runStatus s = ERROR, r = ERROR; + bool zmqstreaming = false; + if (shm()->useReceiverFlag && getReceiverStreaming()) { + zmqstreaming = true; + s = getRunStatus(); + r = getReceiverStatus(); + } + sendToDetectorStop(F_STOP_ACQUISITION); + shm()->stoppedFlag = true; + // if rxr streaming and acquisition finished, restream dummy stop packet + if (zmqstreaming && (s == IDLE) && (r == IDLE)) { + restreamStopFromReceiver(); + } +} + +slsDetectorDefs::runStatus Module::getRunStatus() const { + return sendToDetectorStop(F_GET_RUN_STATUS); +} + +slsDetectorDefs::runStatus Module::getReceiverStatus() const { + return sendToReceiver(F_GET_RECEIVER_STATUS); +} + +int64_t Module::getFramesCaughtByReceiver() const { + return sendToReceiver(F_GET_RECEIVER_FRAMES_CAUGHT); +} + +std::vector Module::getNumMissingPackets() const { + // TODO!(Erik) Refactor + LOG(logDEBUG1) << "Getting num missing packets"; + if (shm()->useReceiverFlag) { + int fnum = F_GET_NUM_MISSING_PACKETS; + int ret = FAIL; + auto client = ReceiverSocket(shm()->rxHostname, shm()->rxTCPPort); + client.Send(&fnum, sizeof(fnum)); + client.Receive(&ret, sizeof(ret)); + if (ret == FAIL) { + char mess[MAX_STR_LENGTH]{}; + client.Receive(mess, MAX_STR_LENGTH); + throw RuntimeError("Receiver " + std::to_string(moduleId) + + " returned error: " + std::string(mess)); + } else { + int nports = -1; + client.Receive(&nports, sizeof(nports)); + uint64_t mp[nports]; + memset(mp, 0, sizeof(mp)); + client.Receive(mp, sizeof(mp)); + std::vector retval(mp, mp + nports); + LOG(logDEBUG1) << "Missing packets of Receiver" << moduleId << ": " + << sls::ToString(retval); + return retval; + } + } + throw RuntimeError("No receiver to get missing packets."); +} + +uint64_t Module::getStartingFrameNumber() { + return sendToDetector(F_GET_STARTING_FRAME_NUMBER); +} + +void Module::setStartingFrameNumber(uint64_t value) { + sendToDetector(F_SET_STARTING_FRAME_NUMBER, value, nullptr); +} + +void Module::sendSoftwareTrigger() { sendToDetectorStop(F_SOFTWARE_TRIGGER); } + +int Module::getNumberofUDPInterfacesFromShm() { + return shm()->numUDPInterfaces; +} + +int Module::getNumberofUDPInterfaces() { + shm()->numUDPInterfaces = sendToDetector(F_GET_NUM_INTERFACES); + return shm()->numUDPInterfaces; +} + +void Module::setNumberofUDPInterfaces(int n) { + sendToDetector(F_SET_NUM_INTERFACES, n, nullptr); + shm()->numUDPInterfaces = n; + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_NUM_INTERFACES, n, nullptr); + } +} + +int Module::getSelectedUDPInterface() { + return sendToDetector(F_GET_INTERFACE_SEL); +} + +void Module::selectUDPInterface(int n) { + sendToDetector(F_SET_INTERFACE_SEL, n, nullptr); +} + +sls::IpAddr Module::getSourceUDPIP() { + return sendToDetector(F_GET_SOURCE_UDP_IP); +} + +void Module::setSourceUDPIP(const IpAddr ip) { + if (ip == 0) { + throw RuntimeError("Invalid source udp ip address"); + } + sendToDetector(F_SET_SOURCE_UDP_IP, ip, nullptr); +} + +sls::IpAddr Module::getSourceUDPIP2() { + return sendToDetector(F_GET_SOURCE_UDP_IP2); +} + +void Module::setSourceUDPIP2(const IpAddr ip) { + if (ip == 0) { + throw RuntimeError("Invalid source udp ip address2"); + } + sendToDetector(F_SET_SOURCE_UDP_IP2, ip, nullptr); +} + +sls::MacAddr Module::getSourceUDPMAC() { + return sendToDetector(F_GET_SOURCE_UDP_MAC); +} + +void Module::setSourceUDPMAC(const sls::MacAddr mac) { + if (mac == 0) { + throw RuntimeError("Invalid source udp mac address"); + } + sendToDetector(F_SET_SOURCE_UDP_MAC, mac, nullptr); +} + +sls::MacAddr Module::getSourceUDPMAC2() { + return sendToDetector(F_GET_SOURCE_UDP_MAC2); +} + +void Module::setSourceUDPMAC2(const sls::MacAddr mac) { + if (mac == 0) { + throw RuntimeError("Invalid source udp mac address2"); + } + sendToDetector(F_SET_SOURCE_UDP_MAC2, mac, nullptr); +} + +sls::IpAddr Module::getDestinationUDPIP() { + return sendToDetector(F_GET_DEST_UDP_IP); +} + +void Module::setDestinationUDPIP(const IpAddr ip) { + if (ip == 0) { + throw RuntimeError("Invalid destination udp ip address"); + } + sendToDetector(F_SET_DEST_UDP_IP, ip, nullptr); + if (shm()->useReceiverFlag) { + sls::MacAddr retval(0LU); + sendToReceiver(F_SET_RECEIVER_UDP_IP, ip, retval); + LOG(logINFO) << "Setting destination udp mac of detector " << moduleId + << " to " << retval; + sendToDetector(F_SET_DEST_UDP_MAC, retval, nullptr); + } +} + +sls::IpAddr Module::getDestinationUDPIP2() { + return sendToDetector(F_GET_DEST_UDP_IP2); +} + +void Module::setDestinationUDPIP2(const IpAddr ip) { + LOG(logDEBUG1) << "Setting destination udp ip2 to " << ip; + if (ip == 0) { + throw RuntimeError("Invalid destination udp ip address2"); + } + + sendToDetector(F_SET_DEST_UDP_IP2, ip, nullptr); + if (shm()->useReceiverFlag) { + sls::MacAddr retval(0LU); + sendToReceiver(F_SET_RECEIVER_UDP_IP2, ip, retval); + LOG(logINFO) << "Setting destination udp mac2 of detector " << moduleId + << " to " << retval; + sendToDetector(F_SET_DEST_UDP_MAC2, retval, nullptr); + } +} + +sls::MacAddr Module::getDestinationUDPMAC() { + return sendToDetector(F_GET_DEST_UDP_MAC); +} + +void Module::setDestinationUDPMAC(const MacAddr mac) { + if (mac == 0) { + throw RuntimeError("Invalid destination udp mac address"); + } + sendToDetector(F_SET_DEST_UDP_MAC, mac, nullptr); +} + +sls::MacAddr Module::getDestinationUDPMAC2() { + return sendToDetector(F_GET_DEST_UDP_MAC2); +} + +void Module::setDestinationUDPMAC2(const MacAddr mac) { + if (mac == 0) { + throw RuntimeError("Invalid desinaion udp mac address2"); + } + sendToDetector(F_SET_DEST_UDP_MAC2, mac, nullptr); +} + +int Module::getDestinationUDPPort() { + return sendToDetector(F_GET_DEST_UDP_PORT); +} + +void Module::setDestinationUDPPort(const int port) { + sendToDetector(F_SET_DEST_UDP_PORT, port, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_UDP_PORT, port, nullptr); + } +} + +int Module::getDestinationUDPPort2() { + return sendToDetector(F_GET_DEST_UDP_PORT2); +} + +void Module::setDestinationUDPPort2(const int port) { + sendToDetector(F_SET_DEST_UDP_PORT2, port, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_UDP_PORT2, port, nullptr); + } +} + +std::string Module::printReceiverConfiguration() { + std::ostringstream os; + os << "\n\nDetector " << moduleId << "\nReceiver Hostname:\t" + << getReceiverHostname(); + + if (shm()->myDetectorType == JUNGFRAU) { + os << "\nNumber of Interfaces:\t" << getNumberofUDPInterfaces() + << "\nSelected Interface:\t" << getSelectedUDPInterface(); + } + + os << "\nDetector UDP IP:\t" << getSourceUDPIP() << "\nDetector UDP MAC:\t" + << getSourceUDPMAC() << "\nReceiver UDP IP:\t" << getDestinationUDPIP() + << "\nReceiver UDP MAC:\t" << getDestinationUDPMAC(); + + if (shm()->myDetectorType == JUNGFRAU) { + os << "\nDetector UDP IP2:\t" << getSourceUDPIP2() + << "\nDetector UDP MAC2:\t" << getSourceUDPMAC2() + << "\nReceiver UDP IP2:\t" << getDestinationUDPIP2() + << "\nReceiver UDP MAC2:\t" << getDestinationUDPMAC2(); + } + os << "\nReceiver UDP Port:\t" << getDestinationUDPPort(); + if (shm()->myDetectorType == JUNGFRAU || shm()->myDetectorType == EIGER) { + os << "\nReceiver UDP Port2:\t" << getDestinationUDPPort2(); + } + os << "\n"; + return os.str(); +} + +bool Module::getTenGiga() { + int arg = -1; + return static_cast(sendToDetector(F_ENABLE_TEN_GIGA, arg)); +} + +void Module::setTenGiga(bool value) { + int arg = static_cast(value); + int retval = -1; + sendToDetector(F_ENABLE_TEN_GIGA, arg, retval); + sendToDetectorStop(F_ENABLE_TEN_GIGA, arg); + arg = retval; + if (shm()->useReceiverFlag && arg != -1) { + sendToReceiver(F_ENABLE_RECEIVER_TEN_GIGA, arg); + } +} + +bool Module::getTenGigaFlowControl() { + return sendToDetector(F_GET_TEN_GIGA_FLOW_CONTROL); +} + +void Module::setTenGigaFlowControl(bool enable) { + int arg = static_cast(enable); + sendToDetector(F_SET_TEN_GIGA_FLOW_CONTROL, arg, nullptr); +} + +int Module::getTransmissionDelayFrame() { + return sendToDetector(F_GET_TRANSMISSION_DELAY_FRAME); +} + +void Module::setTransmissionDelayFrame(int value) { + sendToDetector(F_SET_TRANSMISSION_DELAY_FRAME, value, nullptr); +} + +int Module::getTransmissionDelayLeft() { + return sendToDetector(F_GET_TRANSMISSION_DELAY_LEFT); +} + +void Module::setTransmissionDelayLeft(int value) { + sendToDetector(F_SET_TRANSMISSION_DELAY_LEFT, value, nullptr); +} + +int Module::getTransmissionDelayRight() { + return sendToDetector(F_GET_TRANSMISSION_DELAY_RIGHT); +} + +void Module::setTransmissionDelayRight(int value) { + sendToDetector(F_SET_TRANSMISSION_DELAY_RIGHT, value, nullptr); +} + +bool Module::getUseReceiverFlag() const { return shm()->useReceiverFlag; } + +std::string Module::getReceiverHostname() const { + return std::string(shm()->rxHostname); +} + +void Module::setReceiverHostname(const std::string &receiverIP) { + LOG(logDEBUG1) << "Setting up Receiver with " << receiverIP; + // recieverIP is none + if (receiverIP == "none") { + memset(shm()->rxHostname, 0, MAX_STR_LENGTH); + sls::strcpy_safe(shm()->rxHostname, "none"); + shm()->useReceiverFlag = false; + } + + // stop acquisition if running + if (getRunStatus() == RUNNING) { + LOG(logWARNING) << "Acquisition already running, Stopping it."; + stopAcquisition(); + } + + // start updating + std::string host = receiverIP; + auto res = sls::split(host, ':'); + if (res.size() > 1) { + host = res[0]; + shm()->rxTCPPort = std::stoi(res[1]); + } + sls::strcpy_safe(shm()->rxHostname, host.c_str()); + shm()->useReceiverFlag = true; + checkReceiverVersionCompatibility(); + + // populate parameters from detector + rxParameters retval; + sendToDetector(F_GET_RECEIVER_PARAMETERS, nullptr, retval); + + // populate from shared memory + retval.detType = shm()->myDetectorType; + retval.numberOfDetector.x = shm()->numberOfDetector.x; + retval.numberOfDetector.y = shm()->numberOfDetector.y; + retval.moduleId = moduleId; + memset(retval.hostname, 0, sizeof(retval.hostname)); + strcpy_safe(retval.hostname, shm()->hostname); + + sls::MacAddr retvals[2]; + sendToReceiver(F_SETUP_RECEIVER, retval, retvals); + // update detectors with dest mac + if (retval.udp_dstmac == 0 && retvals[0] != 0) { + LOG(logINFO) << "Setting destination udp mac of " + "detector " + << moduleId << " to " << retvals[0]; + sendToDetector(F_SET_DEST_UDP_MAC, retvals[0], nullptr); + } + if (retval.udp_dstmac2 == 0 && retvals[1] != 0) { + LOG(logINFO) << "Setting destination udp mac2 of " + "detector " + << moduleId << " to " << retvals[1]; + sendToDetector(F_SET_DEST_UDP_MAC2, retvals[1], nullptr); + } + + // update numinterfaces if different + shm()->numUDPInterfaces = retval.udpInterfaces; + + if (shm()->myDetectorType == MOENCH) { + setAdditionalJsonParameter("adcmask_1g", + std::to_string(retval.adcMask)); + setAdditionalJsonParameter("adcmask_10g", + std::to_string(retval.adc10gMask)); + } + + // to use rx_hostname if empty and also update client zmqip + updateReceiverStreamingIP(); +} + +int Module::getReceiverPort() const { return shm()->rxTCPPort; } + +int Module::setReceiverPort(int port_number) { + if (port_number >= 0 && port_number != shm()->rxTCPPort) { + if (shm()->useReceiverFlag) { + int retval = -1; + sendToReceiver(F_SET_RECEIVER_PORT, port_number, retval); + shm()->rxTCPPort = retval; + } else { + shm()->rxTCPPort = port_number; + } + } + return shm()->rxTCPPort; +} + +int Module::getReceiverFifoDepth() { + int arg = -1; + return sendToReceiver(F_SET_RECEIVER_FIFO_DEPTH, arg); +} + +void Module::setReceiverFifoDepth(int n_frames) { + sendToReceiver(F_SET_RECEIVER_FIFO_DEPTH, n_frames); +} + +bool Module::getReceiverSilentMode() { + return sendToReceiver(F_GET_RECEIVER_SILENT_MODE); +} + +void Module::setReceiverSilentMode(bool enable) { + sendToReceiver(F_SET_RECEIVER_SILENT_MODE, static_cast(enable), + nullptr); +} + void Module::sendToDetector(int fnum, const void *args, size_t args_size, void *retval, size_t retval_size) { auto client = DetectorSocket(shm()->hostname, shm()->controlPort); @@ -124,17 +761,31 @@ void Module::sendToDetector(int fnum, const void *args, size_t args_size, template void Module::sendToDetector(int fnum, const Arg &args, Ret &retval) { + LOG(logDEBUG1) << "Sending: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " + << sizeof(Ret) << "]"; sendToDetector(fnum, &args, sizeof(args), &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << ToString(retval); } template void Module::sendToDetector(int fnum, const Arg &args, std::nullptr_t) { + LOG(logDEBUG1) << "Sending: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << typeid(Arg).name() << ", " << sizeof(Arg) + << ", nullptr, 0 ]"; sendToDetector(fnum, &args, sizeof(args), nullptr, 0); } template void Module::sendToDetector(int fnum, std::nullptr_t, Ret &retval) { + LOG(logDEBUG1) << "Sending: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " + << sizeof(Ret) << "]"; sendToDetector(fnum, nullptr, 0, &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << ToString(retval); } void Module::sendToDetector(int fnum) { @@ -182,46 +833,111 @@ void Module::sendToDetectorStop(int fnum, const void *args, size_t args_size, template void Module::sendToDetectorStop(int fnum, const Arg &args, Ret &retval) { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << args << ", " << sizeof(args) << ", " + << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; sendToDetectorStop(fnum, &args, sizeof(args), &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << ToString(retval); } template void Module::sendToDetectorStop(int fnum, const Arg &args, Ret &retval) const { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << args << ", " << sizeof(args) << ", " + << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; sendToDetectorStop(fnum, &args, sizeof(args), &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << ToString(retval); } template void Module::sendToDetectorStop(int fnum, const Arg &args, std::nullptr_t) { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << typeid(Arg).name() << ", " << sizeof(Arg) + << ", nullptr, 0 ]"; sendToDetectorStop(fnum, &args, sizeof(args), nullptr, 0); } template void Module::sendToDetectorStop(int fnum, const Arg &args, std::nullptr_t) const { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << typeid(Arg).name() << ", " << sizeof(Arg) + << ", nullptr, 0 ]"; sendToDetectorStop(fnum, &args, sizeof(args), nullptr, 0); } template void Module::sendToDetectorStop(int fnum, std::nullptr_t, Ret &retval) { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " + << sizeof(Ret) << "]"; sendToDetectorStop(fnum, nullptr, 0, &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << retval; } template void Module::sendToDetectorStop(int fnum, std::nullptr_t, Ret &retval) const { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " + << sizeof(Ret) << "]"; sendToDetectorStop(fnum, nullptr, 0, &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << retval; } void Module::sendToDetectorStop(int fnum) { - LOG(logDEBUG1) << "Sending to detector stop: [" + LOG(logDEBUG1) << "Sending to Stop: [" << getFunctionNameFromEnum(static_cast(fnum)) - << "]"; + << ", nullptr, 0, nullptr, 0]"; sendToDetectorStop(fnum, nullptr, 0, nullptr, 0); } void Module::sendToDetectorStop(int fnum) const { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, nullptr, 0]"; sendToDetectorStop(fnum, nullptr, 0, nullptr, 0); } +template Ret Module::sendToDetectorStop(int fnum) { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " + << sizeof(Ret) << "]"; + Ret retval{}; + sendToDetectorStop(fnum, nullptr, 0, &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << retval; + return retval; +} + +template Ret Module::sendToDetectorStop(int fnum) const { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " + << sizeof(Ret) << "]"; + Ret retval{}; + sendToDetectorStop(fnum, nullptr, 0, &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << retval; + return retval; +} + +template +Ret Module::sendToDetectorStop(int fnum, const Arg &args) { + LOG(logDEBUG1) << "Sending to Stop: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << args << ", " << sizeof(args) << ", " + << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; + Ret retval{}; + sendToDetectorStop(fnum, &args, sizeof(args), &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << ToString(retval); + return retval; +} + void Module::sendToReceiver(int fnum, const void *args, size_t args_size, void *retval, size_t retval_size) { static_cast(*this).sendToReceiver(fnum, args, args_size, @@ -243,36 +959,64 @@ void Module::sendToReceiver(int fnum, const void *args, size_t args_size, template void Module::sendToReceiver(int fnum, const Arg &args, Ret &retval) { + LOG(logDEBUG1) << "Sending to Receiver: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << args << ", " << sizeof(args) << ", " + << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; sendToReceiver(fnum, &args, sizeof(args), &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << retval; } template void Module::sendToReceiver(int fnum, const Arg &args, Ret &retval) const { + LOG(logDEBUG1) << "Sending to Receiver: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << args << ", " << sizeof(args) << ", " + << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; sendToReceiver(fnum, &args, sizeof(args), &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << ToString(retval); } template void Module::sendToReceiver(int fnum, const Arg &args, std::nullptr_t) { + LOG(logDEBUG1) << "Sending to Receiver: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << typeid(Arg).name() << ", " << sizeof(Arg) + << ", nullptr, 0 ]"; sendToReceiver(fnum, &args, sizeof(args), nullptr, 0); } template void Module::sendToReceiver(int fnum, const Arg &args, std::nullptr_t) const { + LOG(logDEBUG1) << "Sending to Receiver: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", " << typeid(Arg).name() << ", " << sizeof(Arg) + << ", nullptr, 0 ]"; sendToReceiver(fnum, &args, sizeof(args), nullptr, 0); } template void Module::sendToReceiver(int fnum, std::nullptr_t, Ret &retval) { + LOG(logDEBUG1) << "Sending to Receiver: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " + << sizeof(Ret) << "]"; sendToReceiver(fnum, nullptr, 0, &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << ToString(retval); } template void Module::sendToReceiver(int fnum, std::nullptr_t, Ret &retval) const { + LOG(logDEBUG1) << "Sending to Receiver: [" + << getFunctionNameFromEnum(static_cast(fnum)) + << ", nullptr, 0, " << typeid(Ret).name() << ", " + << sizeof(Ret) << "]"; sendToReceiver(fnum, nullptr, 0, &retval, sizeof(retval)); + LOG(logDEBUG1) << "Got back: " << ToString(retval); } template Ret Module::sendToReceiver(int fnum) { - LOG(logDEBUG1) << "Sending: [" + LOG(logDEBUG1) << "Sending to Receiver: [" << getFunctionNameFromEnum(static_cast(fnum)) << ", nullptr, 0, " << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; @@ -283,7 +1027,7 @@ template Ret Module::sendToReceiver(int fnum) { } template Ret Module::sendToReceiver(int fnum) const { - LOG(logDEBUG1) << "Sending: [" + LOG(logDEBUG1) << "Sending to Receiver: [" << getFunctionNameFromEnum(static_cast(fnum)) << ", nullptr, 0, " << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; @@ -295,7 +1039,7 @@ template Ret Module::sendToReceiver(int fnum) const { template Ret Module::sendToReceiver(int fnum, const Arg &args) { - LOG(logDEBUG1) << "Sending: [" + LOG(logDEBUG1) << "Sending to Receiver: [" << getFunctionNameFromEnum(static_cast(fnum)) << ", " << args << ", " << sizeof(args) << ", " << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; @@ -307,7 +1051,7 @@ Ret Module::sendToReceiver(int fnum, const Arg &args) { template Ret Module::sendToReceiver(int fnum, const Arg &args) const { - LOG(logDEBUG1) << "Sending: [" + LOG(logDEBUG1) << "Sending to Receiver: [" << getFunctionNameFromEnum(static_cast(fnum)) << ", " << args << ", " << sizeof(args) << ", " << typeid(Ret).name() << ", " << sizeof(Ret) << "]"; @@ -317,44 +1061,30 @@ Ret Module::sendToReceiver(int fnum, const Arg &args) const { return retval; } -// void Module::sendToReceiver(int fnum) { -// sendToReceiver(fnum, nullptr, 0, nullptr, 0); -// } - -// void Module::sendToReceiver(int fnum) const { -// sendToReceiver(fnum, nullptr, 0, nullptr, 0); -// } - -void Module::freeSharedMemory() { - if (shm.IsExisting()) { - shm.RemoveSharedMemory(); +slsDetectorDefs::detectorType Module::getDetectorTypeFromShm(int det_id, + bool verify) { + if (!shm.IsExisting()) { + throw SharedMemoryError("Shared memory " + shm.GetName() + + "does not exist.\n Corrupted Multi Shared " + "memory. Please free shared memory."); } + + shm.OpenSharedMemory(); + if (verify && shm()->shmversion != SLS_SHMVERSION) { + std::ostringstream ss; + ss << "Single shared memory (" << det_id << "-" << moduleId + << ":)version mismatch (expected 0x" << std::hex << SLS_SHMVERSION + << " but got 0x" << shm()->shmversion << ")" << std::dec + << ". Clear Shared memory to continue."; + shm.UnmapSharedMemory(); + throw SharedMemoryError(ss.str()); + } + auto type = shm()->myDetectorType; + return type; } -void Module::setHostname(const std::string &hostname, - const bool initialChecks) { - sls::strcpy_safe(shm()->hostname, hostname.c_str()); - auto client = DetectorSocket(shm()->hostname, shm()->controlPort); - client.close(); - try { - checkDetectorVersionCompatibility(); - LOG(logINFO) << "Detector Version Compatibility - Success"; - } catch (const DetectorError &e) { - if (!initialChecks) { - LOG(logWARNING) << "Bypassing Initial Checks at your own risk!"; - } else { - throw; - } - } - if (shm()->myDetectorType == EIGER) { - setActivate(true); - } -} - -std::string Module::getHostname() const { return shm()->hostname; } - -void Module::initSharedMemory(detectorType type, int multi_id, bool verify) { - shm = SharedMemory(multi_id, detId); +void Module::initSharedMemory(detectorType type, int det_id, bool verify) { + shm = SharedMemory(det_id, moduleId); if (!shm.IsExisting()) { shm.CreateSharedMemory(); initializeDetectorStructure(type); @@ -362,7 +1092,7 @@ void Module::initSharedMemory(detectorType type, int multi_id, bool verify) { shm.OpenSharedMemory(); if (verify && shm()->shmversion != SLS_SHMVERSION) { std::ostringstream ss; - ss << "Single shared memory (" << multi_id << "-" << detId + ss << "Single shared memory (" << det_id << "-" << moduleId << ":) version mismatch (expected 0x" << std::hex << SLS_SHMVERSION << " but got 0x" << shm()->shmversion << ")" << std::dec << ". Clear Shared memory to continue."; @@ -384,7 +1114,7 @@ void Module::initializeDetectorStructure(detectorType type) { shm()->rxTCPPort = DEFAULT_PORTNO + 2; shm()->useReceiverFlag = false; shm()->zmqport = DEFAULT_ZMQ_CL_PORTNO + - (detId * ((shm()->myDetectorType == EIGER) ? 2 : 1)); + (moduleId * ((shm()->myDetectorType == EIGER) ? 2 : 1)); shm()->zmqip = IpAddr{}; shm()->numUDPInterfaces = 1; shm()->stoppedFlag = false; @@ -398,6 +1128,52 @@ void Module::initializeDetectorStructure(detectorType type) { shm()->nDacs = parameters.nDacs; } +void Module::checkDetectorVersionCompatibility() { + int fnum = F_CHECK_VERSION; + int64_t arg = 0; + + // get api version number for detector server + switch (shm()->myDetectorType) { + case EIGER: + arg = APIEIGER; + break; + case JUNGFRAU: + arg = APIJUNGFRAU; + break; + case GOTTHARD: + arg = APIGOTTHARD; + break; + case CHIPTESTBOARD: + arg = APICTB; + break; + case MOENCH: + arg = APIMOENCH; + break; + case MYTHEN3: + arg = APIMYTHEN3; + break; + case GOTTHARD2: + arg = APIGOTTHARD2; + break; + default: + throw NotImplementedError( + "Check version compatibility is not implemented for this detector"); + } + LOG(logDEBUG1) << "Checking version compatibility with detector with value " + << std::hex << arg << std::dec; + + sendToDetector(fnum, arg, nullptr); + sendToDetectorStop(fnum, arg, nullptr); +} + +void Module::checkReceiverVersionCompatibility() { + // TODO! Verify that this works as intended when version don't match + int64_t arg = APIRECEIVER; + LOG(logDEBUG1) << "Checking version compatibility with receiver with value " + << std::hex << arg << std::dec; + sendToReceiver(F_RECEIVER_CHECK_VERSION, arg, nullptr); +} + int Module::sendModule(sls_detector_module *myMod, sls::ClientSocket &client) { TLogLevel level = logDEBUG1; LOG(level) << "Sending Module"; @@ -474,67 +1250,6 @@ int Module::receiveModule(sls_detector_module *myMod, return ts; } -slsDetectorDefs::detectorType Module::getDetectorTypeFromShm(int multi_id, - bool verify) { - if (!shm.IsExisting()) { - throw SharedMemoryError("Shared memory " + shm.GetName() + - "does not exist.\n Corrupted Multi Shared " - "memory. Please free shared memory."); - } - - shm.OpenSharedMemory(); - if (verify && shm()->shmversion != SLS_SHMVERSION) { - std::ostringstream ss; - ss << "Single shared memory (" << multi_id << "-" << detId - << ":)version mismatch (expected 0x" << std::hex << SLS_SHMVERSION - << " but got 0x" << shm()->shmversion << ")" << std::dec - << ". Clear Shared memory to continue."; - shm.UnmapSharedMemory(); - throw SharedMemoryError(ss.str()); - } - auto type = shm()->myDetectorType; - return type; -} - -// static function -slsDetectorDefs::detectorType -Module::getTypeFromDetector(const std::string &hostname, int cport) { - int fnum = F_GET_DETECTOR_TYPE; - int ret = FAIL; - detectorType retval = GENERIC; - LOG(logDEBUG1) << "Getting detector type "; - sls::ClientSocket cs("Detector", hostname, cport); - cs.Send(reinterpret_cast(&fnum), sizeof(fnum)); - cs.Receive(reinterpret_cast(&ret), sizeof(ret)); - cs.Receive(reinterpret_cast(&retval), sizeof(retval)); - LOG(logDEBUG1) << "Detector type is " << retval; - return retval; -} - -slsDetectorDefs::detectorType Module::getDetectorType() const { - return shm()->myDetectorType; -} - -void Module::updateNumberOfChannels() { - if (shm()->myDetectorType == CHIPTESTBOARD || - shm()->myDetectorType == MOENCH) { - LOG(logDEBUG1) << "Updating number of channels"; - std::array retvals{}; - sendToDetector(F_GET_NUM_CHANNELS, nullptr, retvals); - LOG(logDEBUG1) << "Number of channels retval: [" << retvals[0] << ", " - << retvals[1] << ']'; - shm()->nChan.x = retvals[0]; - shm()->nChan.y = retvals[1]; - } -} - -slsDetectorDefs::xy Module::getNumberOfChannels() const { - slsDetectorDefs::xy coord{}; - coord.x = (shm()->nChan.x * shm()->nChip.x); - coord.y = (shm()->nChan.y * shm()->nChip.y); - return coord; -} - bool Module::getQuad() { return sendToDetector(F_GET_QUAD) != 0; } void Module::setQuad(const bool enable) { @@ -558,12 +1273,6 @@ void Module::setReadNLines(const int value) { int Module::getReadNLines() { return sendToDetector(F_GET_READ_N_LINES); } -void Module::updateNumberOfDetector(slsDetectorDefs::xy det) { - shm()->numberOfDetector = det; - int args[2] = {shm()->numberOfDetector.y, detId}; - sendToDetector(F_SET_POSITION, args, nullptr); -} - int Module::setControlPort(int port_number) { int retval = -1; LOG(logDEBUG1) << "Setting control port to " << port_number; @@ -594,24 +1303,6 @@ int Module::setStopPort(int port_number) { return shm()->stopPort; } -int Module::setReceiverPort(int port_number) { - LOG(logDEBUG1) << "Setting reciever port to " << port_number; - if (port_number >= 0 && port_number != shm()->rxTCPPort) { - if (shm()->useReceiverFlag) { - int retval = -1; - sendToReceiver(F_SET_RECEIVER_PORT, port_number, retval); - shm()->rxTCPPort = retval; - LOG(logDEBUG1) << "Receiver port: " << retval; - - } else { - shm()->rxTCPPort = port_number; - } - } - return shm()->rxTCPPort; -} - -int Module::getReceiverPort() const { return shm()->rxTCPPort; } - int Module::getControlPort() const { return shm()->controlPort; } int Module::getStopPort() const { return shm()->stopPort; } @@ -633,7 +1324,7 @@ void Module::execCommand(const std::string &cmd) { LOG(logDEBUG1) << "Sending command to detector " << arg; sendToDetector(F_EXEC_COMMAND, arg, retval); if (strlen(retval) != 0U) { - LOG(logINFO) << "Detector " << detId << " returned:\n" << retval; + LOG(logINFO) << "Detector " << moduleId << " returned:\n" << retval; } } @@ -705,28 +1396,12 @@ std::vector Module::getConfigFileCommands() { std::vector commands; for (const auto &cmd : base) { std::ostringstream os; - os << detId << ':' << cmd; + os << moduleId << ':' << cmd; commands.emplace_back(os.str()); } return commands; } -slsDetectorDefs::detectorSettings Module::getSettings() { - auto r = sendToDetector(F_SET_SETTINGS, -1); - return static_cast(r); -} - -void Module::setSettings(detectorSettings isettings) { - if (shm()->myDetectorType == EIGER) { - throw RuntimeError( - "Cannot set settings for Eiger. Use threshold energy."); - } - int arg = static_cast(isettings); - int retval = -1; - LOG(logDEBUG1) << "Setting settings to " << arg; - sendToDetector(F_SET_SETTINGS, arg, retval); -} - int Module::getThresholdEnergy() { // moench - get threshold energy from processor (due to different clients, // diff shm) @@ -859,63 +1534,6 @@ std::string Module::setSettingsDir(const std::string &dir) { return shm()->settingsDir; } -void Module::loadSettingsFile(const std::string &fname) { - std::string fn = fname; - std::ostringstream ostfn; - ostfn << fname; - - // find specific file if it has detid in file name (.snxxx) - if (shm()->myDetectorType == EIGER || shm()->myDetectorType == MYTHEN3) { - if (fname.find(".sn") == std::string::npos && - fname.find(".trim") == std::string::npos && - fname.find(".settings") == std::string::npos) { - ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec - << getSerialNumber(); - } - } else { - throw RuntimeError("not implemented for this detector"); - } - fn = ostfn.str(); - auto myMod = readSettingsFile(fn); - setModule(myMod); -} - -slsDetectorDefs::runStatus Module::getRunStatus() const { - runStatus retval = ERROR; - LOG(logDEBUG1) << "Getting status"; - sendToDetectorStop(F_GET_RUN_STATUS, nullptr, retval); - LOG(logDEBUG1) << "Detector status: " << ToString(retval); - return retval; -} - -void Module::prepareAcquisition() { sendToDetector(F_PREPARE_ACQUISITION); } - -void Module::startAcquisition() { - shm()->stoppedFlag = false; - sendToDetector(F_START_ACQUISITION); -} - -void Module::stopAcquisition() { - // get status before stopping acquisition - runStatus s = ERROR, r = ERROR; - bool zmqstreaming = false; - if (shm()->useReceiverFlag && getReceiverStreaming()) { - zmqstreaming = true; - s = getRunStatus(); - r = getReceiverStatus(); - } - LOG(logDEBUG1) << "Stopping Acquisition"; - sendToDetectorStop(F_STOP_ACQUISITION); - shm()->stoppedFlag = true; - LOG(logDEBUG1) << "Stopping Acquisition successful"; - // if rxr streaming and acquisition finished, restream dummy stop packet - if (zmqstreaming && (s == IDLE) && (r == IDLE)) { - restreamStopFromReceiver(); - } -} - -void Module::sendSoftwareTrigger() { sendToDetectorStop(F_SOFTWARE_TRIGGER); } - void Module::startAndReadAll() { shm()->stoppedFlag = false; sendToDetector(F_START_AND_READ_ALL); @@ -925,41 +1543,6 @@ void Module::startReadOut() { sendToDetector(F_START_READOUT); } void Module::readAll() { sendToDetector(F_READ_ALL); } -void Module::setStartingFrameNumber(uint64_t value) { - LOG(logDEBUG1) << "Setting starting frame number to " << value; - sendToDetector(F_SET_STARTING_FRAME_NUMBER, value, nullptr); -} - -uint64_t Module::getStartingFrameNumber() { - return sendToDetector(F_GET_STARTING_FRAME_NUMBER); -} - -int64_t Module::getNumberOfFrames() { - return sendToDetector(F_GET_NUM_FRAMES); -} - -void Module::setNumberOfFrames(int64_t value) { - LOG(logDEBUG1) << "Setting number of frames to " << value; - sendToDetector(F_SET_NUM_FRAMES, value, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending number of frames to Receiver: " << value; - sendToReceiver(F_RECEIVER_SET_NUM_FRAMES, value, nullptr); - } -} - -int64_t Module::getNumberOfTriggers() { - return sendToDetector(F_GET_NUM_TRIGGERS); -} - -void Module::setNumberOfTriggers(int64_t value) { - LOG(logDEBUG1) << "Setting number of triggers to " << value; - sendToDetector(F_SET_NUM_TRIGGERS, value, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending number of triggers to Receiver: " << value; - sendToReceiver(F_SET_RECEIVER_NUM_TRIGGERS, value, nullptr); - } -} - int64_t Module::getNumberOfBursts() { return sendToDetector(F_GET_NUM_BURSTS); } @@ -1072,26 +1655,6 @@ std::array Module::getGateDelayForAllGates() { return sendToDetector>(F_GET_GATE_DELAY_ALL_GATES); } -int64_t Module::getPeriod() { return sendToDetector(F_GET_PERIOD); } - -void Module::setPeriod(int64_t value) { - LOG(logDEBUG1) << "Setting period to " << value << "ns"; - sendToDetector(F_SET_PERIOD, value, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending period to Receiver: " << value; - sendToReceiver(F_RECEIVER_SET_PERIOD, value, nullptr); - } -} - -int64_t Module::getDelayAfterTrigger() { - return sendToDetector(F_GET_DELAY_AFTER_TRIGGER); -} - -void Module::setDelayAfterTrigger(int64_t value) { - LOG(logDEBUG1) << "Setting delay after trigger to " << value << "ns"; - sendToDetector(F_SET_DELAY_AFTER_TRIGGER, value, nullptr); -} - int64_t Module::getBurstPeriod() { return sendToDetector(F_GET_BURST_PERIOD); } @@ -1143,27 +1706,6 @@ void Module::setStorageCellDelay(int64_t value) { sendToDetector(F_SET_STORAGE_CELL_DELAY, value, nullptr); } -int64_t Module::getNumberOfFramesLeft() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_FRAMES_LEFT, nullptr, retval); - LOG(logDEBUG1) << "number of frames left :" << retval; - return retval; -} - -int64_t Module::getNumberOfTriggersLeft() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_TRIGGERS_LEFT, nullptr, retval); - LOG(logDEBUG1) << "number of triggers left :" << retval; - return retval; -} - -int64_t Module::getDelayAfterTriggerLeft() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_DELAY_AFTER_TRIGGER_LEFT, nullptr, retval); - LOG(logDEBUG1) << "delay after trigger left :" << retval << "ns"; - return retval; -} - int64_t Module::getExptimeLeft() const { int64_t retval = -1; sendToDetectorStop(F_GET_EXPTIME_LEFT, nullptr, retval); @@ -1171,13 +1713,6 @@ int64_t Module::getExptimeLeft() const { return retval; } -int64_t Module::getPeriodLeft() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_PERIOD_LEFT, nullptr, retval); - LOG(logDEBUG1) << "period left :" << retval << "ns"; - return retval; -} - int64_t Module::getMeasuredPeriod() const { int64_t retval = -1; sendToDetectorStop(F_GET_MEASURED_PERIOD, nullptr, retval); @@ -1213,20 +1748,6 @@ int64_t Module::getMeasurementTime() const { return retval; } -slsDetectorDefs::timingMode Module::getTimingMode() { - return sendToDetector(F_SET_TIMING_MODE, -1); -} - -void Module::setTimingMode(timingMode value) { - timingMode retval = GET_TIMING_MODE; - LOG(logDEBUG1) << "Setting timing mode to " << value; - sendToDetector(F_SET_TIMING_MODE, static_cast(value), retval); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending timing mode to Receiver: " << value; - sendToReceiver(F_SET_RECEIVER_TIMING_MODE, value, nullptr); - } -} - int Module::getDynamicRange() { return sendToDetector(F_SET_DYNAMIC_RANGE, -1); } @@ -1266,38 +1787,6 @@ void Module::setDynamicRange(int n) { } } -int Module::setDAC(int val, dacIndex index, int mV) { - int args[]{static_cast(index), mV, val}; - int retval = -1; - LOG(logDEBUG1) << "Setting DAC " << index << " to " << val - << (mV != 0 ? "mV" : "dac units"); - sendToDetector(F_SET_DAC, args, retval); - LOG(logDEBUG1) << "Dac index " << index << ": " << retval - << (mV != 0 ? "mV" : "dac units"); - return retval; -} - -int Module::getOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex) { - int args[]{static_cast(index), chipIndex}; - int retval = -1; - sendToDetector(F_GET_ON_CHIP_DAC, args, retval); - LOG(logDEBUG1) << "On chip DAC " << index << " (chip index:" << chipIndex - << "): " << retval; - return retval; -} - -void Module::setOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex, - int value) { - int args[]{static_cast(index), chipIndex, value}; - LOG(logDEBUG1) << "Setting On chip DAC " << index - << " (chip index:" << chipIndex << ") to " << value; - sendToDetector(F_SET_ON_CHIP_DAC, args, nullptr); -} - -int Module::getADC(dacIndex index) { - return sendToDetector(F_GET_ADC, static_cast(index)); -} - slsDetectorDefs::externalSignalFlag Module::getExternalSignalFlags(int signalIndex) { return sendToDetector( @@ -1402,290 +1891,6 @@ uint32_t Module::clearBit(uint32_t addr, int n) { } } -void Module::setReceiverHostname(const std::string &receiverIP) { - LOG(logDEBUG1) << "Setting up Receiver with " << receiverIP; - // recieverIP is none - if (receiverIP == "none") { - memset(shm()->rxHostname, 0, MAX_STR_LENGTH); - sls::strcpy_safe(shm()->rxHostname, "none"); - shm()->useReceiverFlag = false; - } - - // stop acquisition if running - if (getRunStatus() == RUNNING) { - LOG(logWARNING) << "Acquisition already running, Stopping it."; - stopAcquisition(); - } - - // start updating - std::string host = receiverIP; - auto res = sls::split(host, ':'); - if (res.size() > 1) { - host = res[0]; - shm()->rxTCPPort = std::stoi(res[1]); - } - sls::strcpy_safe(shm()->rxHostname, host.c_str()); - shm()->useReceiverFlag = true; - checkReceiverVersionCompatibility(); - - // populate parameters from detector - rxParameters retval; - sendToDetector(F_GET_RECEIVER_PARAMETERS, nullptr, retval); - - // populate from shared memory - retval.detType = shm()->myDetectorType; - retval.numberOfDetector.x = shm()->numberOfDetector.x; - retval.numberOfDetector.y = shm()->numberOfDetector.y; - retval.detId = detId; - memset(retval.hostname, 0, sizeof(retval.hostname)); - strcpy_safe(retval.hostname, shm()->hostname); - - LOG(logDEBUG1) << "detType:" << retval.detType << std::endl - << "numberOfDetector.x:" << retval.numberOfDetector.x - << std::endl - << "numberOfDetector.y:" << retval.numberOfDetector.y - << std::endl - << "detId:" << retval.detId << std::endl - << "hostname:" << retval.hostname << std::endl - << "udpInterfaces:" << retval.udpInterfaces << std::endl - << "udp_dstport:" << retval.udp_dstport << std::endl - << "udp_dstip:" << sls::IpAddr(retval.udp_dstip) << std::endl - << "udp_dstmac:" << sls::MacAddr(retval.udp_dstmac) - << std::endl - << "udp_dstport2:" << retval.udp_dstport2 << std::endl - << "udp_dstip2:" << sls::IpAddr(retval.udp_dstip2) - << std::endl - << "udp_dstmac2:" << sls::MacAddr(retval.udp_dstmac2) - << std::endl - << "frames:" << retval.frames << std::endl - << "triggers:" << retval.triggers << std::endl - << "bursts:" << retval.bursts << std::endl - << "analogSamples:" << retval.analogSamples << std::endl - << "digitalSamples:" << retval.digitalSamples << std::endl - << "expTimeNs:" << retval.expTimeNs << std::endl - << "periodNs:" << retval.periodNs << std::endl - << "subExpTimeNs:" << retval.subExpTimeNs << std::endl - << "subDeadTimeNs:" << retval.subDeadTimeNs << std::endl - << "activate:" << retval.activate << std::endl - << "quad:" << retval.quad << std::endl - << "dynamicRange:" << retval.dynamicRange << std::endl - << "timMode:" << retval.timMode << std::endl - << "tenGiga:" << retval.tenGiga << std::endl - << "roMode:" << retval.roMode << std::endl - << "adcMask:" << retval.adcMask << std::endl - << "adc10gMask:" << retval.adc10gMask << std::endl - << "roi.xmin:" << retval.roi.xmin << std::endl - << "roi.xmax:" << retval.roi.xmax << std::endl - << "countermask:" << retval.countermask << std::endl - << "burstType:" << retval.burstType << std::endl - << "exptime1:" << retval.expTime1Ns << std::endl - << "exptime2:" << retval.expTime2Ns << std::endl - << "exptime3:" << retval.expTime3Ns << std::endl - << "gateDelay1:" << retval.gateDelay1Ns << std::endl - << "gateDelay2:" << retval.gateDelay2Ns << std::endl - << "gateDelay3:" << retval.gateDelay3Ns << std::endl - << "gates:" << retval.gates << std::endl; - - sls::MacAddr retvals[2]; - sendToReceiver(F_SETUP_RECEIVER, retval, retvals); - // update detectors with dest mac - if (retval.udp_dstmac == 0 && retvals[0] != 0) { - LOG(logINFO) << "Setting destination udp mac of " - "detector " - << detId << " to " << retvals[0]; - sendToDetector(F_SET_DEST_UDP_MAC, retvals[0], nullptr); - } - if (retval.udp_dstmac2 == 0 && retvals[1] != 0) { - LOG(logINFO) << "Setting destination udp mac2 of " - "detector " - << detId << " to " << retvals[1]; - sendToDetector(F_SET_DEST_UDP_MAC2, retvals[1], nullptr); - } - - // update numinterfaces if different - shm()->numUDPInterfaces = retval.udpInterfaces; - - if (shm()->myDetectorType == MOENCH) { - setAdditionalJsonParameter("adcmask_1g", - std::to_string(retval.adcMask)); - setAdditionalJsonParameter("adcmask_10g", - std::to_string(retval.adc10gMask)); - } - - // to use rx_hostname if empty and also update client zmqip - updateReceiverStreamingIP(); -} - -std::string Module::getReceiverHostname() const { - return std::string(shm()->rxHostname); -} - -void Module::setSourceUDPMAC(const sls::MacAddr mac) { - LOG(logDEBUG1) << "Setting source udp mac to " << mac; - if (mac == 0) { - throw RuntimeError("Invalid source udp mac address"); - } - sendToDetector(F_SET_SOURCE_UDP_MAC, mac, nullptr); -} - -sls::MacAddr Module::getSourceUDPMAC() { - return sendToDetector(F_GET_SOURCE_UDP_MAC); -} - -void Module::setSourceUDPMAC2(const sls::MacAddr mac) { - LOG(logDEBUG1) << "Setting source udp mac2 to " << mac; - if (mac == 0) { - throw RuntimeError("Invalid source udp mac address2"); - } - sendToDetector(F_SET_SOURCE_UDP_MAC2, mac, nullptr); -} - -sls::MacAddr Module::getSourceUDPMAC2() { - return sendToDetector(F_GET_SOURCE_UDP_MAC2); -} - -void Module::setSourceUDPIP(const IpAddr ip) { - LOG(logDEBUG1) << "Setting source udp ip to " << ip; - if (ip == 0) { - throw RuntimeError("Invalid source udp ip address"); - } - sendToDetector(F_SET_SOURCE_UDP_IP, ip, nullptr); -} - -sls::IpAddr Module::getSourceUDPIP() { - return sendToDetector(F_GET_SOURCE_UDP_IP); -} - -void Module::setSourceUDPIP2(const IpAddr ip) { - LOG(logDEBUG1) << "Setting source udp ip2 to " << ip; - if (ip == 0) { - throw RuntimeError("Invalid source udp ip address2"); - } - sendToDetector(F_SET_SOURCE_UDP_IP2, ip, nullptr); -} - -sls::IpAddr Module::getSourceUDPIP2() { - return sendToDetector(F_GET_SOURCE_UDP_IP2); -} - -void Module::setDestinationUDPIP(const IpAddr ip) { - LOG(logDEBUG1) << "Setting destination udp ip to " << ip; - if (ip == 0) { - throw RuntimeError("Invalid destination udp ip address"); - } - sendToDetector(F_SET_DEST_UDP_IP, ip, nullptr); - if (shm()->useReceiverFlag) { - sls::MacAddr retval(0LU); - sendToReceiver(F_SET_RECEIVER_UDP_IP, ip, retval); - LOG(logINFO) << "Setting destination udp mac of detector " << detId - << " to " << retval; - sendToDetector(F_SET_DEST_UDP_MAC, retval, nullptr); - } -} - -sls::IpAddr Module::getDestinationUDPIP() { - return sendToDetector(F_GET_DEST_UDP_IP); -} - -void Module::setDestinationUDPIP2(const IpAddr ip) { - LOG(logDEBUG1) << "Setting destination udp ip2 to " << ip; - if (ip == 0) { - throw RuntimeError("Invalid destination udp ip address2"); - } - - sendToDetector(F_SET_DEST_UDP_IP2, ip, nullptr); - if (shm()->useReceiverFlag) { - sls::MacAddr retval(0LU); - sendToReceiver(F_SET_RECEIVER_UDP_IP2, ip, retval); - LOG(logINFO) << "Setting destination udp mac2 of detector " << detId - << " to " << retval; - sendToDetector(F_SET_DEST_UDP_MAC2, retval, nullptr); - } -} - -sls::IpAddr Module::getDestinationUDPIP2() { - return sendToDetector(F_GET_DEST_UDP_IP2); -} - -void Module::setDestinationUDPMAC(const MacAddr mac) { - LOG(logDEBUG1) << "Setting destination udp mac to " << mac; - if (mac == 0) { - throw RuntimeError("Invalid destination udp mac address"); - } - sendToDetector(F_SET_DEST_UDP_MAC, mac, nullptr); -} - -sls::MacAddr Module::getDestinationUDPMAC() { - return sendToDetector(F_GET_DEST_UDP_MAC); -} - -void Module::setDestinationUDPMAC2(const MacAddr mac) { - LOG(logDEBUG1) << "Setting destination udp mac2 to " << mac; - if (mac == 0) { - throw RuntimeError("Invalid desinaion udp mac address2"); - } - sendToDetector(F_SET_DEST_UDP_MAC2, mac, nullptr); -} - -sls::MacAddr Module::getDestinationUDPMAC2() { - return sendToDetector(F_GET_DEST_UDP_MAC2); -} - -void Module::setDestinationUDPPort(const int port) { - LOG(logDEBUG1) << "Setting destination udp port to " << port; - sendToDetector(F_SET_DEST_UDP_PORT, port, nullptr); - if (shm()->useReceiverFlag) { - sendToReceiver(F_SET_RECEIVER_UDP_PORT, port, nullptr); - } -} - -int Module::getDestinationUDPPort() { - return sendToDetector(F_GET_DEST_UDP_PORT); -} - -void Module::setDestinationUDPPort2(const int port) { - LOG(logDEBUG1) << "Setting destination udp port2 to " << port; - sendToDetector(F_SET_DEST_UDP_PORT2, port, nullptr); - if (shm()->useReceiverFlag) { - sendToReceiver(F_SET_RECEIVER_UDP_PORT2, port, nullptr); - } -} - -int Module::getDestinationUDPPort2() { - return sendToDetector(F_GET_DEST_UDP_PORT2); -} - -void Module::setNumberofUDPInterfaces(int n) { - LOG(logDEBUG1) << "Setting number of udp interfaces to " << n; - sendToDetector(F_SET_NUM_INTERFACES, n, nullptr); - shm()->numUDPInterfaces = n; - if (shm()->useReceiverFlag) { - sendToReceiver(F_SET_RECEIVER_NUM_INTERFACES, n, nullptr); - } -} - -int Module::getNumberofUDPInterfacesFromShm() { - return shm()->numUDPInterfaces; -} - -int Module::getNumberofUDPInterfaces() { - int retval = -1; - LOG(logDEBUG1) << "Getting number of udp interfaces"; - sendToDetector(F_GET_NUM_INTERFACES, nullptr, retval); - LOG(logDEBUG1) << "Number of udp interfaces: " << retval; - shm()->numUDPInterfaces = retval; - return shm()->numUDPInterfaces; -} - -void Module::selectUDPInterface(int n) { - LOG(logDEBUG1) << "Setting selected udp interface to " << n; - sendToDetector(F_SET_INTERFACE_SEL, n, nullptr); -} - -int Module::getSelectedUDPInterface() { - return sendToDetector(F_GET_INTERFACE_SEL); -} - void Module::setClientStreamingPort(int port) { shm()->zmqport = port; } int Module::getClientStreamingPort() { return shm()->zmqport; } @@ -1731,49 +1936,12 @@ void Module::updateReceiverStreamingIP() { if (ip == 0) { ip = HostnameToIp(shm()->rxHostname); } - LOG(logINFO) << "Setting default receiver " << detId + LOG(logINFO) << "Setting default receiver " << moduleId << " streaming zmq ip to " << ip; } setReceiverStreamingIP(ip); } -bool Module::getTenGigaFlowControl() { - return sendToDetector(F_GET_TEN_GIGA_FLOW_CONTROL); -} - -void Module::setTenGigaFlowControl(bool enable) { - int arg = static_cast(enable); - LOG(logDEBUG1) << "Setting ten giga flow control to " << arg; - sendToDetector(F_SET_TEN_GIGA_FLOW_CONTROL, arg, nullptr); -} - -int Module::getTransmissionDelayFrame() { - return sendToDetector(F_GET_TRANSMISSION_DELAY_FRAME); -} - -void Module::setTransmissionDelayFrame(int value) { - LOG(logDEBUG1) << "Setting transmission delay frame to " << value; - sendToDetector(F_SET_TRANSMISSION_DELAY_FRAME, value, nullptr); -} - -int Module::getTransmissionDelayLeft() { - return sendToDetector(F_GET_TRANSMISSION_DELAY_LEFT); -} - -void Module::setTransmissionDelayLeft(int value) { - LOG(logDEBUG1) << "Setting transmission delay left to " << value; - sendToDetector(F_SET_TRANSMISSION_DELAY_LEFT, value, nullptr); -} - -int Module::getTransmissionDelayRight() { - return sendToDetector(F_GET_TRANSMISSION_DELAY_RIGHT); -} - -void Module::setTransmissionDelayRight(int value) { - LOG(logDEBUG1) << "Setting transmission delay right to " << value; - sendToDetector(F_SET_TRANSMISSION_DELAY_RIGHT, value, nullptr); -} - void Module::setAdditionalJsonHeader( const std::map &jsonHeader) { if (!shm()->useReceiverFlag) { @@ -1812,7 +1980,7 @@ void Module::setAdditionalJsonHeader( if (ret == FAIL) { char mess[MAX_STR_LENGTH]{}; client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Receiver " + std::to_string(detId) + + throw RuntimeError("Receiver " + std::to_string(moduleId) + " returned error: " + std::string(mess)); } } @@ -1831,7 +1999,7 @@ std::map Module::getAdditionalJsonHeader() { if (ret == FAIL) { char mess[MAX_STR_LENGTH]{}; client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Receiver " + std::to_string(detId) + + throw RuntimeError("Receiver " + std::to_string(moduleId) + " returned error: " + std::string(mess)); } else { client.Receive(&size, sizeof(size)); @@ -1895,15 +2063,6 @@ void Module::executeBusTest() { sendToDetector(F_SET_BUS_TEST); } -int Module::getImageTestMode() { - return sendToDetector(F_GET_IMAGE_TEST_MODE); -} - -void Module::setImageTestMode(const int value) { - LOG(logDEBUG1) << "Sending image test mode " << value; - sendToDetector(F_SET_IMAGE_TEST_MODE, value, nullptr); -} - std::array Module::getInjectChannel() { std::array retvals{}; sendToDetector(F_GET_INJECT_CHANNEL, nullptr, retvals); @@ -1930,7 +2089,7 @@ std::vector Module::getVetoPhoton(const int chipIndex) { if (ret == FAIL) { char mess[MAX_STR_LENGTH]{}; client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Detector " + std::to_string(detId) + + throw RuntimeError("Detector " + std::to_string(moduleId) + " returned error: " + std::string(mess)); } else { int nch = -1; @@ -2043,7 +2202,7 @@ void Module::setVetoPhoton(const int chipIndex, const int numPhotons, if (ret == FAIL) { char mess[MAX_STR_LENGTH]{}; client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Detector " + std::to_string(detId) + + throw RuntimeError("Detector " + std::to_string(moduleId) + " returned error: " + std::string(mess)); } } @@ -2276,14 +2435,6 @@ void Module::setFlippedDataX(bool value) { sendToReceiver(F_SET_FLIPPED_DATA_RECEIVER, static_cast(value)); } -int Module::getAllTrimbits() { - return sendToDetector(F_SET_ALL_TRIMBITS, -1); -} - -void Module::setAllTrimbits(int val) { - sendToDetector(F_SET_ALL_TRIMBITS, val); -} - int Module::setTrimEn(const std::vector &energies) { if (shm()->myDetectorType != EIGER) { throw RuntimeError("setTrimEn not implemented for this detector."); @@ -2379,7 +2530,7 @@ void Module::programFPGAviaBlackfin(std::vector buffer) { int ret = FAIL; char mess[MAX_STR_LENGTH] = {0}; LOG(logINFO) << "Sending programming binary (from pof) to detector " - << detId << " (" << shm()->hostname << ")"; + << moduleId << " (" << shm()->hostname << ")"; auto client = DetectorSocket(shm()->hostname, shm()->controlPort); client.Send(&fnum, sizeof(fnum)); @@ -2389,13 +2540,13 @@ void Module::programFPGAviaBlackfin(std::vector buffer) { if (ret == FAIL) { client.Receive(mess, sizeof(mess)); std::ostringstream os; - os << "Detector " << detId << " (" << shm()->hostname << ")" + os << "Detector " << moduleId << " (" << shm()->hostname << ")" << " returned error: " << mess; throw RuntimeError(os.str()); } // erasing flash - LOG(logINFO) << "Erasing Flash for detector " << detId << " (" + LOG(logINFO) << "Erasing Flash for detector " << moduleId << " (" << shm()->hostname << ")"; printf("%d%%\r", 0); std::cout << std::flush; @@ -2413,7 +2564,7 @@ void Module::programFPGAviaBlackfin(std::vector buffer) { std::cout << std::flush; } printf("\n"); - LOG(logINFO) << "Writing to Flash to detector " << detId << " (" + LOG(logINFO) << "Writing to Flash to detector " << moduleId << " (" << shm()->hostname << ")"; printf("%d%%\r", 0); std::cout << std::flush; @@ -2436,7 +2587,7 @@ void Module::programFPGAviaBlackfin(std::vector buffer) { printf("\n"); client.Receive(mess, sizeof(mess)); std::ostringstream os; - os << "Detector " << detId << " (" << shm()->hostname << ")" + os << "Detector " << moduleId << " (" << shm()->hostname << ")" << " returned error: " << mess; throw RuntimeError(os.str()); } @@ -2461,7 +2612,7 @@ void Module::programFPGAviaNios(std::vector buffer) { int ret = FAIL; char mess[MAX_STR_LENGTH] = {0}; LOG(logINFO) << "Sending programming binary (from rbf) to detector " - << detId << " (" << shm()->hostname << ")"; + << moduleId << " (" << shm()->hostname << ")"; auto client = DetectorSocket(shm()->hostname, shm()->controlPort); client.Send(&fnum, sizeof(fnum)); @@ -2471,7 +2622,7 @@ void Module::programFPGAviaNios(std::vector buffer) { if (ret == FAIL) { client.Receive(mess, sizeof(mess)); std::ostringstream os; - os << "Detector " << detId << " (" << shm()->hostname << ")" + os << "Detector " << moduleId << " (" << shm()->hostname << ")" << " returned error: " << mess; throw RuntimeError(os.str()); } @@ -2481,7 +2632,7 @@ void Module::programFPGAviaNios(std::vector buffer) { if (ret == FAIL) { client.Receive(mess, sizeof(mess)); std::ostringstream os; - os << "Detector " << detId << " (" << shm()->hostname << ")" + os << "Detector " << moduleId << " (" << shm()->hostname << ")" << " returned error: " << mess; throw RuntimeError(os.str()); } @@ -2507,10 +2658,6 @@ void Module::rebootController() { LOG(logINFO) << "Controller rebooted successfully!"; } -int Module::powerChip(int ival) { - return sendToDetector(F_POWER_CHIP, ival); -} - int Module::setAutoComparatorDisableMode(int ival) { return sendToDetector(F_AUTO_COMP_DISABLE, ival); } @@ -2531,7 +2678,7 @@ void Module::setModule(sls_detector_module &module, int tb) { if (ret == FAIL) { char mess[MAX_STR_LENGTH] = {0}; client.Receive(mess, sizeof(mess)); - throw RuntimeError("Detector " + std::to_string(detId) + + throw RuntimeError("Detector " + std::to_string(moduleId) + " returned error: " + mess); } } @@ -2565,36 +2712,6 @@ void Module::updateRateCorrection() { sendToDetector(F_UPDATE_RATE_CORRECTION); } -std::string Module::printReceiverConfiguration() { - std::ostringstream os; - os << "\n\nDetector " << detId << "\nReceiver Hostname:\t" - << getReceiverHostname(); - - if (shm()->myDetectorType == JUNGFRAU) { - os << "\nNumber of Interfaces:\t" << getNumberofUDPInterfaces() - << "\nSelected Interface:\t" << getSelectedUDPInterface(); - } - - os << "\nDetector UDP IP:\t" << getSourceUDPIP() << "\nDetector UDP MAC:\t" - << getSourceUDPMAC() << "\nReceiver UDP IP:\t" << getDestinationUDPIP() - << "\nReceiver UDP MAC:\t" << getDestinationUDPMAC(); - - if (shm()->myDetectorType == JUNGFRAU) { - os << "\nDetector UDP IP2:\t" << getSourceUDPIP2() - << "\nDetector UDP MAC2:\t" << getSourceUDPMAC2() - << "\nReceiver UDP IP2:\t" << getDestinationUDPIP2() - << "\nReceiver UDP MAC2:\t" << getDestinationUDPMAC2(); - } - os << "\nReceiver UDP Port:\t" << getDestinationUDPPort(); - if (shm()->myDetectorType == JUNGFRAU || shm()->myDetectorType == EIGER) { - os << "\nReceiver UDP Port2:\t" << getDestinationUDPPort2(); - } - os << "\n"; - return os.str(); -} - -bool Module::getUseReceiverFlag() const { return shm()->useReceiverFlag; } - int Module::lockReceiver(int lock) { return sendToReceiver(F_LOCK_RECEIVER, lock); } @@ -2689,55 +2806,6 @@ void Module::setPartialFramesPadding(bool padding) { sendToReceiver(F_SET_RECEIVER_PADDING, static_cast(padding), nullptr); } -void Module::startReceiver() { - LOG(logDEBUG1) << "Starting Receiver"; - shm()->stoppedFlag = false; - sendToReceiver(F_START_RECEIVER, nullptr, nullptr); -} - -void Module::stopReceiver() { - LOG(logDEBUG1) << "Stopping Receiver"; - int arg = static_cast(shm()->stoppedFlag); - sendToReceiver(F_STOP_RECEIVER, arg, nullptr); -} - -slsDetectorDefs::runStatus Module::getReceiverStatus() const { - return sendToReceiver(F_GET_RECEIVER_STATUS); -} - -int64_t Module::getFramesCaughtByReceiver() const { - return sendToReceiver(F_GET_RECEIVER_FRAMES_CAUGHT); -} - -std::vector Module::getNumMissingPackets() const { - // TODO!(Erik) Refactor - LOG(logDEBUG1) << "Getting num missing packets"; - if (shm()->useReceiverFlag) { - int fnum = F_GET_NUM_MISSING_PACKETS; - int ret = FAIL; - auto client = ReceiverSocket(shm()->rxHostname, shm()->rxTCPPort); - client.Send(&fnum, sizeof(fnum)); - client.Receive(&ret, sizeof(ret)); - if (ret == FAIL) { - char mess[MAX_STR_LENGTH]{}; - client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Receiver " + std::to_string(detId) + - " returned error: " + std::string(mess)); - } else { - int nports = -1; - client.Receive(&nports, sizeof(nports)); - uint64_t mp[nports]; - memset(mp, 0, sizeof(mp)); - client.Receive(mp, sizeof(mp)); - std::vector retval(mp, mp + nports); - LOG(logDEBUG1) << "Missing packets of Receiver" << detId << ": " - << sls::ToString(retval); - return retval; - } - } - throw RuntimeError("No receiver to get missing packets."); -} - uint64_t Module::getReceiverCurrentFrameIndex() const { return sendToReceiver(F_GET_RECEIVER_FRAME_INDEX); } @@ -2795,44 +2863,6 @@ void Module::setReceiverStreaming(bool enable) { sendToReceiver(F_SET_RECEIVER_STREAMING, static_cast(enable), nullptr); } -bool Module::enableTenGigabitEthernet(int value) { - int retval = -1; - LOG(logDEBUG1) << "Enabling / Disabling 10Gbe: " << value; - sendToDetector(F_ENABLE_TEN_GIGA, value, retval); - if (value != -1) { - int stopRetval = -1; - sendToDetectorStop(F_ENABLE_TEN_GIGA, value, stopRetval); - } - LOG(logDEBUG1) << "10Gbe: " << retval; - value = retval; - if (shm()->useReceiverFlag && value != -1) { - int retval = -1; - LOG(logDEBUG1) << "Sending 10Gbe enable to receiver: " << value; - sendToReceiver(F_ENABLE_RECEIVER_TEN_GIGA, value, retval); - LOG(logDEBUG1) << "Receiver 10Gbe enable: " << retval; - } - return static_cast(retval); -} - -int Module::setReceiverFifoDepth(int n_frames) { - int retval = -1; - LOG(logDEBUG1) << "Sending Receiver Fifo Depth: " << n_frames; - if (shm()->useReceiverFlag) { - sendToReceiver(F_SET_RECEIVER_FIFO_DEPTH, n_frames, retval); - LOG(logDEBUG1) << "Receiver Fifo Depth: " << retval; - } - return retval; -} - -bool Module::getReceiverSilentMode() { - return sendToReceiver(F_GET_RECEIVER_SILENT_MODE); -} - -void Module::setReceiverSilentMode(bool enable) { - sendToReceiver(F_SET_RECEIVER_SILENT_MODE, static_cast(enable), - nullptr); -} - void Module::restreamStopFromReceiver() { LOG(logDEBUG1) << "Restream stop dummy from Receiver via zmq"; if (shm()->useReceiverFlag) { @@ -2941,48 +2971,6 @@ void Module::setDigitalIODelay(uint64_t pinMask, int delay) { LOG(logDEBUG1) << "Digital IO Delay successful"; } -int Module::getClockFrequency(int clkIndex) { - return sendToDetector(F_GET_CLOCK_FREQUENCY, clkIndex); -} - -void Module::setClockFrequency(int clkIndex, int value) { - int args[]{clkIndex, value}; - LOG(logDEBUG1) << "Setting Clock " << clkIndex << " frequency to " << value; - sendToDetector(F_SET_CLOCK_FREQUENCY, args, nullptr); -} - -int Module::getClockPhase(int clkIndex, bool inDegrees) { - int args[]{clkIndex, static_cast(inDegrees)}; - int retval = -1; - LOG(logDEBUG1) << "Getting Clock " << clkIndex << " phase " - << (inDegrees ? "in degrees" : ""); - sendToDetector(F_GET_CLOCK_PHASE, args, retval); - LOG(logDEBUG1) << "Clock " << clkIndex << " frequency: " << retval - << (inDegrees ? "degrees" : ""); - return retval; -} - -void Module::setClockPhase(int clkIndex, int value, bool inDegrees) { - int args[]{clkIndex, value, static_cast(inDegrees)}; - LOG(logDEBUG1) << "Setting Clock " << clkIndex << " phase to " << value - << (inDegrees ? "degrees" : ""); - sendToDetector(F_SET_CLOCK_PHASE, args, nullptr); -} - -int Module::getMaxClockPhaseShift(int clkIndex) { - return sendToDetector(F_GET_MAX_CLOCK_PHASE_SHIFT, clkIndex); -} - -int Module::getClockDivider(int clkIndex) { - return sendToDetector(F_GET_CLOCK_DIVIDER, clkIndex); -} - -void Module::setClockDivider(int clkIndex, int value) { - int args[]{clkIndex, value}; - LOG(logDEBUG1) << "Setting Clock " << clkIndex << " divider to " << value; - sendToDetector(F_SET_CLOCK_DIVIDER, args, nullptr); -} - int Module::getPipeline(int clkIndex) { return sendToDetector(F_GET_PIPELINE, clkIndex); } diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index 2df993f46..c95527704 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -32,151 +32,194 @@ struct sharedSlsDetector { /** END OF FIXED PATTERN -----------------------------------------------*/ - /** Number of detectors in multi list in x dir and y dir */ slsDetectorDefs::xy numberOfDetector; - - /** is the port used for control functions */ int controlPort; - - /** is the port used to stop the acquisition */ int stopPort; - - /** path of the trimbits/settings files */ char settingsDir[MAX_STR_LENGTH]; - /** list of the energies at which the detector has been trimmed */ sls::StaticVector trimEnergies; - - /** number of channels per chip in one direction */ + /** number of channels per chip */ slsDetectorDefs::xy nChan; - - /** number of chips per module in one direction */ slsDetectorDefs::xy nChip; - - /** number of dacs per module*/ int nDacs; - - /** ip address/hostname of the receiver for client control via TCP */ char rxHostname[MAX_STR_LENGTH]; - - /** is the TCP port used to communicate between client and the receiver */ int rxTCPPort; - - /** is set if the receiver hostname given and is connected, - * unset if socket connection is not possible */ + /** if rxHostname and rxTCPPort can be connected to */ bool useReceiverFlag; - - /** tcp port from gui/different process to receiver (only data) */ + /** Listening tcp port from gui (only data) */ int zmqport; - - /** zmq tcp src ip address in client (only data) **/ + /** Listening tcp ip address from gui (only data) **/ sls::IpAddr zmqip; - - /** num udp interfaces */ int numUDPInterfaces; - - /** stopped flag to inform rxr */ + /** to inform rxr when stopping rxr */ bool stoppedFlag; }; class Module : public virtual slsDetectorDefs { public: - /** - * Constructor called when creating new shared memory - * @param type detector type - * @param multi_id multi detector shared memory id - * @param id sls detector id (position in detectors list) - * @param verify true to verify if shared memory version matches existing - * one - */ - explicit Module(detectorType type, int multi_id = 0, int det_id = 0, + /************************************************** + * * + * Configuration * + * * + * ************************************************/ + + /** creating new shared memory + @param verify if shared memory version matches existing one */ + explicit Module(detectorType type, int det_id = 0, int module_id = 0, bool verify = true); - /** - * Constructor called when opening existing shared memory - * @param multi_id multi detector shared memory id - * @param id sls detector id (position in detectors list) - * @param verify true to verify if shared memory version matches existing - * one - */ - explicit Module(int multi_id = 0, int det_id = 0, bool verify = true); + /** opening existing shared memory + @param verify if shared memory version matches existing one */ + explicit Module(int det_id = 0, int module_id = 0, bool verify = true); - /** - * Destructor - */ virtual ~Module(); - /** - * Returns false if it cannot get fixed pattern from an old version of shm - * (hostname, type), else true - */ - bool isFixedPatternSharedMemoryCompatible(); - - /** - * Check version compatibility with receiver software - */ - void checkReceiverVersionCompatibility(); - - /** - * Check version compatibility with detector software - */ - void checkDetectorVersionCompatibility(); - - int64_t getFirmwareVersion(); - - int64_t getDetectorServerVersion(); - - int64_t getSerialNumber(); - - /** - * Get Receiver Software version - */ - int64_t getReceiverSoftwareVersion() const; - - /** - * Free shared memory and delete shared memory structure - * occupied by the sharedSlsDetector structure - * Is only safe to call if one deletes the Module object afterward - * and frees multi shared memory/updates - * thisMultiDetector->numberOfDetectors - */ + /** Frees shared memory and deletes shared memory structure + Safe to call only if detector shm also deleted or its numberOfDetectors is + updated */ void freeSharedMemory(); - - /** - * Sets the hostname, if online flag is set connects to update the detector - * @param name hostname - * @param initialChecks enable or disable initial compatibility checks - * and other server start up checks. Enabled by default. Disable only - * for advanced users! - */ - void setHostname(const std::string &hostname, const bool initialChecks); - - /** - * Gets the hostname of detector - * @returns hostname - */ + bool isFixedPatternSharedMemoryCompatible(); std::string getHostname() const; - /** - * Get detector type by connecting to the detector - * @returns detector tpe or GENERIC if failed - */ + /** @param initialChecks enable or disable initial compatibility checks and + other server start up checks. Enabled by default. Disable only for advanced + users! */ + void setHostname(const std::string &hostname, const bool initialChecks); + + int64_t getFirmwareVersion(); + int64_t getDetectorServerVersion(); + int64_t getSerialNumber(); + int64_t getReceiverSoftwareVersion() const; static detectorType getTypeFromDetector(const std::string &hostname, int cport = DEFAULT_PORTNO); - /** - * Get Detector type from shared memory variable - * @returns detector type from shared memory variable - */ + /** Get Detector type from shared memory */ detectorType getDetectorType() const; - - /** - * Update total number of channels (chiptestboard or moench) - * from the detector server - */ void updateNumberOfChannels(); - slsDetectorDefs::xy getNumberOfChannels() const; + void updateNumberOfDetector(slsDetectorDefs::xy det); + detectorSettings getSettings(); + void setSettings(detectorSettings isettings); + void loadSettingsFile(const std::string &fname); + int getAllTrimbits(); + void setAllTrimbits(int val); + + /************************************************** + * * + * Acquisition Parameters * + * * + * ************************************************/ + int64_t getNumberOfFrames(); + void setNumberOfFrames(int64_t value); + int64_t getNumberOfTriggers(); + void setNumberOfTriggers(int64_t value); + /** [Mythen3] gatIndex: 0-2, [Others]: -1 always */ + int64_t getExptime(int gateIndex); + /** [Mythen3] gatIndex: -1 for all, 0-2, [Others]: -1 always */ + void setExptime(int gateIndex, int64_t value); + int64_t getPeriod(); + void setPeriod(int64_t value); + int64_t getDelayAfterTrigger(); + void setDelayAfterTrigger(int64_t value); + int64_t getNumberOfFramesLeft() const; + int64_t getNumberOfTriggersLeft() const; + int64_t getDelayAfterTriggerLeft() const; + int64_t getPeriodLeft() const; + timingMode getTimingMode(); + void setTimingMode(timingMode value); + int getClockDivider(int clkIndex); + void setClockDivider(int clkIndex, int value); + int getClockPhase(int clkIndex, bool inDegrees); + void setClockPhase(int clkIndex, int value, bool inDegrees); + int getMaxClockPhaseShift(int clkIndex); + int getClockFrequency(int clkIndex); + void setClockFrequency(int clkIndex, int value); + int getDAC(dacIndex index, bool mV); + void setDAC(int val, dacIndex index, bool mV); + bool getPowerChip(); + void setPowerChip(bool on); + int getImageTestMode(); + void setImageTestMode(const int value); + /* temperature in millidegrees */ + int getADC(dacIndex index); + int getOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex); + void setOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex, + int value); + + /************************************************** + * * + * Acquisition * + * * + * ************************************************/ + void startReceiver(); + void stopReceiver(); + void prepareAcquisition(); + void startAcquisition(); + void stopAcquisition(); + runStatus getRunStatus() const; + runStatus getReceiverStatus() const; + int64_t getFramesCaughtByReceiver() const; + std::vector getNumMissingPackets() const; + uint64_t getStartingFrameNumber(); + void setStartingFrameNumber(uint64_t value); + void sendSoftwareTrigger(); + + /************************************************** + * * + * Network Configuration (Detector<->Receiver) * + * * + * ************************************************/ + int getNumberofUDPInterfacesFromShm(); + int getNumberofUDPInterfaces(); + void setNumberofUDPInterfaces(int n); + int getSelectedUDPInterface(); + void selectUDPInterface(int n); + sls::IpAddr getSourceUDPIP(); + void setSourceUDPIP(const sls::IpAddr ip); + sls::IpAddr getSourceUDPIP2(); + void setSourceUDPIP2(const sls::IpAddr ip); + sls::MacAddr getSourceUDPMAC(); + void setSourceUDPMAC(const sls::MacAddr mac); + sls::MacAddr getSourceUDPMAC2(); + void setSourceUDPMAC2(const sls::MacAddr mac); + sls::IpAddr getDestinationUDPIP(); + void setDestinationUDPIP(const sls::IpAddr ip); + sls::IpAddr getDestinationUDPIP2(); + void setDestinationUDPIP2(const sls::IpAddr ip); + sls::MacAddr getDestinationUDPMAC(); + void setDestinationUDPMAC(const sls::MacAddr mac); + sls::MacAddr getDestinationUDPMAC2(); + void setDestinationUDPMAC2(const sls::MacAddr mac); + int getDestinationUDPPort(); + void setDestinationUDPPort(int udpport); + int getDestinationUDPPort2(); + void setDestinationUDPPort2(int udpport); + std::string printReceiverConfiguration(); + bool getTenGiga(); + void setTenGiga(bool value); + bool getTenGigaFlowControl(); + void setTenGigaFlowControl(bool enable); + int getTransmissionDelayFrame(); + void setTransmissionDelayFrame(int value); + int getTransmissionDelayLeft(); + void setTransmissionDelayLeft(int value); + int getTransmissionDelayRight(); + void setTransmissionDelayRight(int value); + + /************************************************** + * * + * Receiver Config * + * * + * ************************************************/ + bool getUseReceiverFlag() const; + std::string getReceiverHostname() const; + void setReceiverHostname(const std::string &receiver); + int getReceiverPort() const; + int setReceiverPort(int port_number); + int getReceiverFifoDepth(); + void setReceiverFifoDepth(int n_frames); + bool getReceiverSilentMode(); + void setReceiverSilentMode(bool enable); /** * Get Quad Type (Only for Eiger Quad detector hardware) @@ -206,7 +249,6 @@ class Module : public virtual slsDetectorDefs { * Set Detector offset in shared memory in dimension d * @param det detector size */ - void updateNumberOfDetector(slsDetectorDefs::xy det); int setControlPort(int port_number); @@ -224,14 +266,6 @@ class Module : public virtual slsDetectorDefs { */ int getStopPort() const; - int setReceiverPort(int port_number); - - /** - * Returns the receiver TCP port \sa sharedSlsDetector - * @returns the receiver TCP port - */ - int getReceiverPort() const; - /** * Lock server for this client IP * @param p 0 to unlock, 1 to lock (-1 gets) @@ -263,17 +297,6 @@ class Module : public virtual slsDetectorDefs { */ std::vector getConfigFileCommands(); - detectorSettings getSettings(); - - /** [Jungfrau] Options:DYNAMICGAIN, DYNAMICHG0, FIXGAIN1, FIXGAIN2, - * FORCESWITCHG1, FORCESWITCHG2 [Gotthard] Options: DYNAMICGAIN, HIGHGAIN, - * LOWGAIN, MEDIUMGAIN, VERYHIGHGAIN [Gotthard2] Options: DYNAMICGAIN, - * FIXGAIN1, FIXGAIN2 [Moench] Options: G1_HIGHGAIN, G1_LOWGAIN, - * G2_HIGHCAP_HIGHGAIN, G2_HIGHCAP_LOWGAIN, G2_LOWCAP_HIGHGAIN, - * G2_LOWCAP_LOWGAIN, G4_HIGHGAIN, G4_LOWGAIN - */ - void setSettings(detectorSettings isettings); - /** * Get threshold energy (Mythen and Eiger) * @returns current threshold value in ev (-1 failed) @@ -312,35 +335,6 @@ class Module : public virtual slsDetectorDefs { */ std::string setSettingsDir(const std::string &dir); - /** [Eiger][Mythen3] */ - void loadSettingsFile(const std::string &fname); - - /** - * Get run status of the detector - * @returns the status of the detector - */ - runStatus getRunStatus() const; - - /** - * Prepares detector for acquisition (Eiger) - */ - void prepareAcquisition(); - - /** - * Start detector acquisition (Non blocking) - */ - void startAcquisition(); - - /** - * Stop detector acquisition - */ - void stopAcquisition(); - - /** - * Give an internal software trigger to the detector (Eiger only) - */ - void sendSoftwareTrigger(); - /** * Start detector acquisition and read all data (Blocking until end of * acquisition) @@ -363,26 +357,6 @@ class Module : public virtual slsDetectorDefs { */ void configureMAC(); - /** - * Set starting frame number for the next acquisition - * @param val starting frame number - */ - void setStartingFrameNumber(uint64_t value); - - /** - * Get starting frame number for the next acquisition - * @returns starting frame number - */ - uint64_t getStartingFrameNumber(); - - int64_t getNumberOfFrames(); - - void setNumberOfFrames(int64_t value); - - int64_t getNumberOfTriggers(); - - void setNumberOfTriggers(int64_t value); - /** [Gotthard2] only in burst mode and in auto timing mode */ int64_t getNumberOfBursts(); @@ -413,12 +387,6 @@ class Module : public virtual slsDetectorDefs { /** [Mythen3] */ void setNumberOfGates(int value); - /** [Mythen3] gatIndex: 0-2, [Others]: -1 always */ - int64_t getExptime(int gateIndex); - - /** [Mythen3] gatIndex: -1 for all, 0-2, [Others]: -1 always */ - void setExptime(int gateIndex, int64_t value); - /** [Mythen3] for all gates */ std::array getExptimeForAllGates(); @@ -431,16 +399,6 @@ class Module : public virtual slsDetectorDefs { /** [Mythen3] for all gates */ std::array getGateDelayForAllGates(); - int64_t getPeriod(); - - void setPeriod(int64_t value); - - /** [Gotthard][Jungfrau][CTB][Moench][Mythen3][Gotthard2] */ - int64_t getDelayAfterTrigger(); - - /** [Gotthard][Jungfrau][CTB][Moench][Mythen3][Gotthard2] */ - void setDelayAfterTrigger(int64_t value); - /** [Gotthard2] only in burst mode and in auto timing mode */ int64_t getBurstPeriod(); @@ -466,24 +424,9 @@ class Module : public virtual slsDetectorDefs { * Options: (0-1638375 ns (resolution of 25ns) */ void setStorageCellDelay(int64_t value); - /** [Gotthard][Jungfrau][CTB][Moench][Mythen3] - * [Gotthard2] only in continuous mode */ - int64_t getNumberOfFramesLeft() const; - - /** [Gotthard][Jungfrau][CTB][Moench][Mythen3] - * [Gotthard2] only in continuous mode */ - int64_t getNumberOfTriggersLeft() const; - - /** [Gotthard][Jungfrau][CTB][Moench] - * [Gotthard2] only in continuous mode */ - int64_t getDelayAfterTriggerLeft() const; - /** [Gotthard] */ int64_t getExptimeLeft() const; - /** [Gotthard][Jungfrau][CTB][Moench][Mythen3][Gotthard2] */ - int64_t getPeriodLeft() const; - /** [Eiger] minimum two frames */ int64_t getMeasuredPeriod() const; @@ -502,9 +445,6 @@ class Module : public virtual slsDetectorDefs { * [Gotthard2] only in continuous mode */ int64_t getMeasurementTime() const; - timingMode getTimingMode(); - void setTimingMode(timingMode value); - int getDynamicRange(); /** * Set/get dynamic range @@ -513,30 +453,6 @@ class Module : public virtual slsDetectorDefs { */ void setDynamicRange(int n); - /** - * Set/get dacs value - * @param val value (in V) - * @param index DAC index - * @param mV 0 in dac units or 1 in mV - * @returns current DAC value - */ - int setDAC(int val, dacIndex index, int mV); - - /* [Gotthard2] */ - int getOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex); - - /* [Gotthard2] */ - void setOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex, - int value); - - /** - * Get adc value - * @param index adc(DAC) index - * @returns current adc value (temperature for eiger and jungfrau in - * millidegrees) - */ - int getADC(dacIndex index); - externalSignalFlag getExternalSignalFlags(int signalIndex); void setExternalSignalFlags(int signalIndex, externalSignalFlag type); @@ -632,183 +548,7 @@ class Module : public virtual slsDetectorDefs { */ uint32_t clearBit(uint32_t addr, int n); - /** - * Validates and sets the receiver. - * Also updates the receiver with all the shared memory parameters - * significant for the receiver Also configures the detector to the receiver - * as UDP destination - * @param receiver receiver hostname or IP address - */ - void setReceiverHostname(const std::string &receiver); - void test(); - /** - * Returns the receiver IP address\sa sharedSlsDetector - * @returns the receiver IP address - */ - std::string getReceiverHostname() const; - - /** - * Validates the format of the detector MAC address and sets it - * @param mac detector MAC address - */ - void setSourceUDPMAC(const sls::MacAddr mac); - - /** - * Returns the detector MAC address - * @returns the detector MAC address - */ - sls::MacAddr getSourceUDPMAC(); - - /** - * Validates the format of the detector MAC address (bottom half) and sets - * it (Jungfrau only) - * @param mac detector MAC address (bottom half) - */ - void setSourceUDPMAC2(const sls::MacAddr mac); - - /** - * Returns the detector MAC address (bottom half) Jungfrau only - * @returns the detector MAC address (bottom half) - */ - sls::MacAddr getSourceUDPMAC2(); - - /** - * Validates the format of the detector IP address and sets it - * @param ip detector IP address - */ - void setSourceUDPIP(const sls::IpAddr ip); - - /** - * Returns the detector IP address - * @returns the detector IP address - */ - sls::IpAddr getSourceUDPIP(); - - /** - * Validates the format of the detector IP address (bottom half) and sets it - * (Jungfrau only) - * @param ip detector IP address (bottom half) - */ - void setSourceUDPIP2(const sls::IpAddr ip); - - /** - * Returns the detector IP address (bottom half) Jungfrau only - * @returns the detector IP address (bottom half) - */ - sls::IpAddr getSourceUDPIP2(); - - /** - * Validates the format of the receiver UDP IP address and sets it - * If slsReceiver used, Gets receiver udp mac address and sends it to the - * detector - * @param ip receiver UDP IP address - */ - void setDestinationUDPIP(const sls::IpAddr ip); - - /** - * Returns the receiver UDP IP address - * If slsReceiver used, Gets receiver udp mac address and sends it to the - * detector - * @returns the receiver UDP IP address - */ - sls::IpAddr getDestinationUDPIP(); - - /** - * Validates the format of the receiver UDP IP address (bottom half) and - * sets it(Jungfrau only) - * If slsReceiver used, Gets receiver udp mac address2 and sends it to the - * detector - * @param ip receiver UDP IP address (bottom half) - */ - void setDestinationUDPIP2(const sls::IpAddr ip); - - /** - * Returns the receiver UDP IP address (bottom half) Jungfrau only - * If slsReceiver used, Gets receiver udp mac address2 and sends it to the - * detector - * @returns the receiver UDP IP address (bottom half) - */ - sls::IpAddr getDestinationUDPIP2(); - - /** - * Validates the format of the receiver UDP MAC address and sets it - * @param mac receiver UDP MAC address - */ - void setDestinationUDPMAC(const sls::MacAddr mac); - - /** - * Returns the receiver UDP MAC address - * @returns the receiver UDP MAC address - */ - sls::MacAddr getDestinationUDPMAC(); - - /** - * Validates the format of the receiver UDP MAC address (bottom half) and - * sets it (Jungfrau only) - * @param mac receiver UDP MAC address (bottom half) - */ - void setDestinationUDPMAC2(const sls::MacAddr mac); - - /** - * Returns the receiver UDP MAC address (bottom half) Jungfrau only - * @returns the receiver UDP MAC address (bottom half) - */ - sls::MacAddr getDestinationUDPMAC2(); - - /** - * Sets the receiver UDP port\sa sharedSlsDetector - * @param udpport receiver UDP port - */ - void setDestinationUDPPort(int udpport); - - /** - * Returns the receiver UDP port\sa sharedSlsDetector - * @returns the receiver UDP port - */ - int getDestinationUDPPort(); - - /** - * Sets the receiver UDP port 2\sa sharedSlsDetector (Eiger and Jungfrau - * only) - * @param udpport receiver UDP port 2 - */ - void setDestinationUDPPort2(int udpport); - - /** - * Returns the receiver UDP port 2 of same interface\sa sharedSlsDetector - * (Eiger and Jungfrau only) - * @returns the receiver UDP port 2 of same interface - */ - int getDestinationUDPPort2(); - - /** [Jungfrau][Gotthard2] */ - void setNumberofUDPInterfaces(int n); - - /** Returns the number of udp interfaces from shared memory */ - int getNumberofUDPInterfacesFromShm(); - - /** - * Returns the number of UDP interfaces to stream data from detector - * (Jungfrau only) - * @returns the number of interfaces - */ - int getNumberofUDPInterfaces(); - - /** - * Selects the UDP interfaces to stream data from detector. Effective only - * when number of interfaces is 1. (Jungfrau only) - * @param n selected interface. Options 1 or 2. - * @returns the interface selected - */ - void selectUDPInterface(int n); - - /** - * Returns the UDP interfaces to stream data from detector. Effective only - * when number of interfaces is 1. (Jungfrau only) - * @returns the interface selected - */ - int getSelectedUDPInterface(); /** * Sets the client zmq port\sa sharedSlsDetector @@ -863,43 +603,6 @@ class Module : public virtual slsDetectorDefs { */ void updateReceiverStreamingIP(); - /** [Eiger, Jungfrau] */ - bool getTenGigaFlowControl(); - - /** [Eiger, Jungfrau] */ - void setTenGigaFlowControl(bool enable); - - /** [Eiger, Jungfrau] */ - int getTransmissionDelayFrame(); - - /** - * [Jungfrau]: Sets the transmission delay of the first UDP packet being - * streamed out of the module. Options: 0 - 31, each value represenets 1 ms - * [Eiger]: Sets the transmission delay of entire frame streamed out for - * both left and right UDP ports. Options: //TODO possible values - */ - void setTransmissionDelayFrame(int value); - - /** [Eiger] */ - int getTransmissionDelayLeft(); - - /** - * [Eiger] - * Sets the transmission delay of first packet streamed out of the left UDP - * port - */ - void setTransmissionDelayLeft(int value); - - /** [Eiger] */ - int getTransmissionDelayRight(); - - /** - * [Eiger] - * Sets the transmission delay of first packet streamed ut of the right UDP - * port - */ - void setTransmissionDelayRight(int value); - /** empty vector deletes entire additional json header */ void setAdditionalJsonHeader( const std::map &jsonHeader); @@ -937,15 +640,6 @@ class Module : public virtual slsDetectorDefs { /** [Gotthard][Jungfrau][CTB][Moench] */ void executeBusTest(); - /** [Gotthard][Eiger virtual] */ - int getImageTestMode(); - - /** [Gotthard] If 1, adds channel intensity with precalculated values. - * Default is 0 - * [Eiger virtual] If 1, pixels are saturated. If 0, increasing intensity - * Only for virtual servers */ - void setImageTestMode(const int value); - /** [Gotthard2] */ std::array getInjectChannel(); @@ -1110,9 +804,6 @@ class Module : public virtual slsDetectorDefs { */ void setFlippedDataX(bool value); - int getAllTrimbits(); - void setAllTrimbits(int val); - /** * Sets the number of trim energies and their value (Eiger) * \sa sharedSlsDetector @@ -1210,13 +901,6 @@ class Module : public virtual slsDetectorDefs { */ void rebootController(); - /** - * Power on/off Chip (Jungfrau) - * @param ival on is 1, off is 0, -1 to get - * @returns OK or FAIL - */ - int powerChip(int ival = -1); - /** * Automatic comparator disable (Jungfrau) * @param ival on is 1, off is 0, -1 to get @@ -1273,17 +957,6 @@ class Module : public virtual slsDetectorDefs { */ void updateRateCorrection(); - /** - * Prints receiver configuration - * @returns receiver configuration - */ - std::string printReceiverConfiguration(); - - /** - * Gets the use receiver flag from shared memory - */ - bool getUseReceiverFlag() const; - /** * Locks/Unlocks the connection to the receiver * @param lock sets (1), usets (0), gets (-1) the lock @@ -1321,31 +994,6 @@ class Module : public virtual slsDetectorDefs { bool getPartialFramesPadding(); void setPartialFramesPadding(bool padding); - /** - * Receiver starts listening to packets - */ - void startReceiver(); - - /** - * Stops the listening mode of receiver - */ - void stopReceiver(); - - /** - * Gets the status of the listening mode of receiver - * @returns status - */ - runStatus getReceiverStatus() const; - - /** - * Gets the number of frames caught by receiver - * @returns number of frames caught by receiver - */ - int64_t getFramesCaughtByReceiver() const; - - /** Gets number of missing packets */ - std::vector getNumMissingPackets() const; - /** * Gets the current frame index of receiver * @returns current frame index of receiver @@ -1385,23 +1033,6 @@ class Module : public virtual slsDetectorDefs { void setReceiverStreaming(bool enable); - /** - * Enable/disable or 10Gbe - * @param i is -1 to get, 0 to disable and 1 to enable - * @returns if 10Gbe is enabled - */ - bool enableTenGigabitEthernet(int value = -1); - - /** - * Set/get receiver fifo depth - * @param i is -1 to get, any other value to set the fifo deph - * @returns the receiver fifo depth - */ - int setReceiverFifoDepth(int n_frames = -1); - - bool getReceiverSilentMode(); - void setReceiverSilentMode(bool enable); - /** * If data streaming in receiver is enabled, * restream the stop dummy packet from receiver @@ -1516,27 +1147,6 @@ class Module : public virtual slsDetectorDefs { */ void setDigitalIODelay(uint64_t pinMask, int delay); - /** [Mythen3][Gotthard2] */ - int getClockFrequency(int clkIndex); - - /** [Mythen3][Gotthard2] */ - void setClockFrequency(int clkIndex, int value); - - /** [Mythen3][Gotthard2] */ - int getClockPhase(int clkIndex, bool inDegrees); - - /** [Mythen3][Gotthard2] */ - void setClockPhase(int clkIndex, int value, bool inDegrees); - - /** [Mythen3][Gotthard2] */ - int getMaxClockPhaseShift(int clkIndex); - - /** [Mythen3][Gotthard2] */ - int getClockDivider(int clkIndex); - - /** [Mythen3][Gotthard2] */ - void setClockDivider(int clkIndex, int value); - /** [Ctb][Moench] */ int getPipeline(int clkIndex); @@ -1610,6 +1220,13 @@ class Module : public virtual slsDetectorDefs { void sendToDetectorStop(int fnum) const; + template Ret sendToDetectorStop(int fnum); + + template Ret sendToDetectorStop(int fnum) const; + + template + Ret sendToDetectorStop(int fnum, const Arg &args); + /** * Send function parameters to receiver * @param fnum function enum @@ -1652,31 +1269,21 @@ class Module : public virtual slsDetectorDefs { template Ret sendToReceiver(int fnum, const Arg &args) const; - /** - * Get Detector Type from Shared Memory (opening shm without verifying size) - * @param multi_id multi detector Id - * @param verify true to verify if shm size matches existing one - * @returns detector type - */ - detectorType getDetectorTypeFromShm(int multi_id, bool verify = true); + /** Get Detector Type from Shared Memory + @param verify if shm size matches existing one */ + detectorType getDetectorTypeFromShm(int det_id, bool verify = true); - /** - * Initialize shared memory - * @param created true if shared memory must be created, else false to open - * @param type type of detector - * @param multi_id multi detector Id - * @param verify true to verify if shm size matches existing one - * @returns true if the shared memory was created now - */ - void initSharedMemory(detectorType type, int multi_id, bool verify = true); + /** Initialize shared memory + @param verify if shm size matches existing one */ + void initSharedMemory(detectorType type, int det_id, bool verify = true); - /** - * Initialize detector structure to defaults - * Called when new shared memory is created - * @param type type of detector - */ + /** Initialize detector structure to defaults, + Called when new shared memory is created */ void initializeDetectorStructure(detectorType type); + void checkDetectorVersionCompatibility(); + void checkReceiverVersionCompatibility(); + /** * Send a sls_detector_module structure over socket * @param myMod module structure to send @@ -1738,7 +1345,7 @@ class Module : public virtual slsDetectorDefs { sls_detector_module readSettingsFile(const std::string &fname, int tb = 1); /** Module Id or position in the detectors list */ - const int detId; + const int moduleId; /** Shared Memory object */ mutable sls::SharedMemory shm{0, 0}; diff --git a/slsReceiverSoftware/src/ClientInterface.cpp b/slsReceiverSoftware/src/ClientInterface.cpp index d1300c9b1..ca884d96c 100644 --- a/slsReceiverSoftware/src/ClientInterface.cpp +++ b/slsReceiverSoftware/src/ClientInterface.cpp @@ -338,49 +338,7 @@ int ClientInterface::get_version(Interface &socket) { int ClientInterface::setup_receiver(Interface &socket) { auto arg = socket.Receive(); - LOG(logDEBUG) << "detType:" << arg.detType << std::endl - << "numberOfDetector.x:" << arg.numberOfDetector.x - << std::endl - << "numberOfDetector.y:" << arg.numberOfDetector.y - << std::endl - << "detId:" << arg.detId << std::endl - << "hostname:" << arg.hostname << std::endl - << "udpInterfaces:" << arg.udpInterfaces << std::endl - << "udp_dstport:" << arg.udp_dstport << std::endl - << "udp_dstip:" << sls::IpAddr(arg.udp_dstip) << std::endl - << "udp_dstmac:" << sls::MacAddr(arg.udp_dstmac) << std::endl - << "udp_dstport2:" << arg.udp_dstport2 << std::endl - << "udp_dstip2:" << sls::IpAddr(arg.udp_dstip2) << std::endl - << "udp_dstmac2:" << sls::MacAddr(arg.udp_dstmac2) - << std::endl - << "frames:" << arg.frames << std::endl - << "triggers:" << arg.triggers << std::endl - << "bursts:" << arg.bursts << std::endl - << "analogSamples:" << arg.analogSamples << std::endl - << "digitalSamples:" << arg.digitalSamples << std::endl - << "expTimeNs:" << arg.expTimeNs << std::endl - << "periodNs:" << arg.periodNs << std::endl - << "subExpTimeNs:" << arg.subExpTimeNs << std::endl - << "subDeadTimeNs:" << arg.subDeadTimeNs << std::endl - << "activate:" << arg.activate << std::endl - << "quad:" << arg.quad << std::endl - << "dynamicRange:" << arg.dynamicRange << std::endl - << "timMode:" << arg.timMode << std::endl - << "tenGiga:" << arg.tenGiga << std::endl - << "roMode:" << arg.roMode << std::endl - << "adcMask:" << arg.adcMask << std::endl - << "adc10gMask:" << arg.adc10gMask << std::endl - << "roi.xmin:" << arg.roi.xmin << std::endl - << "roi.xmax:" << arg.roi.xmax << std::endl - << "countermask:" << arg.countermask << std::endl - << "burstType:" << arg.burstType << std::endl - << "exptime1:" << arg.expTime1Ns << std::endl - << "exptime2:" << arg.expTime2Ns << std::endl - << "exptime3:" << arg.expTime3Ns << std::endl - << "gateDelay1:" << arg.gateDelay1Ns << std::endl - << "gateDelay2:" << arg.gateDelay2Ns << std::endl - << "gateDelay3:" << arg.gateDelay3Ns << std::endl - << "gates:" << arg.gates << std::endl; + LOG(logDEBUG) << sls::ToString(arg); // if object exists, verify unlocked and idle, else only verify lock // (connecting first time) @@ -394,7 +352,7 @@ int ClientInterface::setup_receiver(Interface &socket) { int msize[2] = {arg.numberOfDetector.x, arg.numberOfDetector.y}; impl()->setDetectorSize(msize); } - impl()->setDetectorPositionId(arg.detId); + impl()->setModulePositionId(arg.moduleId); impl()->setDetectorHostname(arg.hostname); // udp setup diff --git a/slsReceiverSoftware/src/Implementation.cpp b/slsReceiverSoftware/src/Implementation.cpp index 6cc9c63be..621bdbcc4 100644 --- a/slsReceiverSoftware/src/Implementation.cpp +++ b/slsReceiverSoftware/src/Implementation.cpp @@ -55,7 +55,7 @@ void Implementation::InitializeMembers() { myDetectorType = GENERIC; for (int i = 0; i < MAX_DIMENSIONS; ++i) numDet[i] = 0; - detID = 0; + modulePos = 0; detHostname = ""; silentMode = false; fifoDepth = 0; @@ -350,31 +350,32 @@ void Implementation::setDetectorSize(const int *size) { LOG(logINFO) << log_message; } -int Implementation::getDetectorPositionId() const { +int Implementation::getModulePositionId() const { LOG(logDEBUG3) << __SHORT_AT__ << " called"; - return detID; + return modulePos; } -void Implementation::setDetectorPositionId(const int id) { +void Implementation::setModulePositionId(const int id) { LOG(logDEBUG3) << __SHORT_AT__ << " called"; - detID = id; - LOG(logINFO) << "Detector Position Id:" << detID; + modulePos = id; + LOG(logINFO) << "Module Position Id:" << modulePos; // update zmq port streamingPort = - DEFAULT_ZMQ_RX_PORTNO + (detID * (myDetectorType == EIGER ? 2 : 1)); + DEFAULT_ZMQ_RX_PORTNO + (modulePos * (myDetectorType == EIGER ? 2 : 1)); for (unsigned int i = 0; i < dataProcessor.size(); ++i) { dataProcessor[i]->SetupFileWriter( fileWriteEnable, (int *)numDet, &framesPerFile, &fileName, - &filePath, &fileIndex, &overwriteEnable, &detID, &numThreads, + &filePath, &fileIndex, &overwriteEnable, &modulePos, &numThreads, &numberOfTotalFrames, &dynamicRange, &udpPortNum[i], generalData); } assert(numDet[1] != 0); for (unsigned int i = 0; i < listener.size(); ++i) { uint16_t row = 0, col = 0; - row = (detID % numDet[1]) * ((numUDPInterfaces == 2) ? 2 : 1); // row - col = (detID / numDet[1]) * ((myDetectorType == EIGER) ? 2 : 1) + + row = + (modulePos % numDet[1]) * ((numUDPInterfaces == 2) ? 2 : 1); // row + col = (modulePos / numDet[1]) * ((myDetectorType == EIGER) ? 2 : 1) + i; // col for horiz. udp ports listener[i]->SetHardCodedPosition(row, col); } @@ -555,9 +556,9 @@ void Implementation::setFileWriteEnable(const bool b) { for (unsigned int i = 0; i < dataProcessor.size(); ++i) { dataProcessor[i]->SetupFileWriter( fileWriteEnable, (int *)numDet, &framesPerFile, &fileName, - &filePath, &fileIndex, &overwriteEnable, &detID, &numThreads, - &numberOfTotalFrames, &dynamicRange, &udpPortNum[i], - generalData); + &filePath, &fileIndex, &overwriteEnable, &modulePos, + &numThreads, &numberOfTotalFrames, &dynamicRange, + &udpPortNum[i], generalData); } } @@ -1064,7 +1065,7 @@ void Implementation::setNumberofUDPInterfaces(const int n) { // update (from 1 to 2 interface) & also for printout setDetectorSize(numDet); // update row and column in dataprocessor - setDetectorPositionId(detID); + setModulePositionId(modulePos); // update call backs if (rawDataReadyCallBack) { diff --git a/slsReceiverSoftware/src/Implementation.h b/slsReceiverSoftware/src/Implementation.h index 889fed2c3..403ceb412 100644 --- a/slsReceiverSoftware/src/Implementation.h +++ b/slsReceiverSoftware/src/Implementation.h @@ -30,8 +30,8 @@ class Implementation : private virtual slsDetectorDefs { void setDetectorType(const detectorType d); int *getDetectorSize() const; void setDetectorSize(const int *size); - int getDetectorPositionId() const; - void setDetectorPositionId(const int id); + int getModulePositionId() const; + void setModulePositionId(const int id); std::string getDetectorHostname() const; void setDetectorHostname(const std::string &c); bool getSilentMode() const; @@ -265,7 +265,7 @@ class Implementation : private virtual slsDetectorDefs { int numThreads; detectorType myDetectorType; int numDet[MAX_DIMENSIONS]; - int detID; + int modulePos; std::string detHostname; bool silentMode; uint32_t fifoDepth; diff --git a/slsSupportLib/include/ToString.h b/slsSupportLib/include/ToString.h index 7d7517e85..ff2db057f 100644 --- a/slsSupportLib/include/ToString.h +++ b/slsSupportLib/include/ToString.h @@ -41,6 +41,9 @@ std::string ToString(const defs::timingSourceType s); std::string ToString(const slsDetectorDefs::ROI &roi); std::ostream &operator<<(std::ostream &os, const slsDetectorDefs::ROI &roi); +std::string ToString(const slsDetectorDefs::rxParameters &r); +std::ostream &operator<<(std::ostream &os, + const slsDetectorDefs::rxParameters &r); const std::string &ToString(const std::string &s); /** Convert std::chrono::duration with specified output unit */ diff --git a/slsSupportLib/include/sls_detector_defs.h b/slsSupportLib/include/sls_detector_defs.h index 78528006a..373f0707f 100644 --- a/slsSupportLib/include/sls_detector_defs.h +++ b/slsSupportLib/include/sls_detector_defs.h @@ -446,7 +446,7 @@ typedef struct { struct rxParameters { detectorType detType{GENERIC}; xy numberOfDetector; - int detId{0}; + int moduleId{0}; char hostname[MAX_STR_LENGTH]; int udpInterfaces{1}; int udp_dstport{0}; diff --git a/slsSupportLib/src/ToString.cpp b/slsSupportLib/src/ToString.cpp index 8b33f553d..e57727957 100644 --- a/slsSupportLib/src/ToString.cpp +++ b/slsSupportLib/src/ToString.cpp @@ -1,4 +1,5 @@ #include "ToString.h" +#include "network_utils.h" namespace sls { @@ -12,6 +13,57 @@ std::ostream &operator<<(std::ostream &os, const slsDetectorDefs::ROI &roi) { return os << ToString(roi); } +std::string ToString(const slsDetectorDefs::rxParameters &r) { + std::ostringstream oss; + oss << '[' << "detType:" << r.detType << std::endl + << "numberOfDetector.x:" << r.numberOfDetector.x << std::endl + << "numberOfDetector.y:" << r.numberOfDetector.y << std::endl + << "moduleId:" << r.moduleId << std::endl + << "hostname:" << r.hostname << std::endl + << "udpInterfaces:" << r.udpInterfaces << std::endl + << "udp_dstport:" << r.udp_dstport << std::endl + << "udp_dstip:" << sls::IpAddr(r.udp_dstip) << std::endl + << "udp_dstmac:" << sls::MacAddr(r.udp_dstmac) << std::endl + << "udp_dstport2:" << r.udp_dstport2 << std::endl + << "udp_dstip2:" << sls::IpAddr(r.udp_dstip2) << std::endl + << "udp_dstmac2:" << sls::MacAddr(r.udp_dstmac2) << std::endl + << "frames:" << r.frames << std::endl + << "triggers:" << r.triggers << std::endl + << "bursts:" << r.bursts << std::endl + << "analogSamples:" << r.analogSamples << std::endl + << "digitalSamples:" << r.digitalSamples << std::endl + << "expTimeNs:" << r.expTimeNs << std::endl + << "periodNs:" << r.periodNs << std::endl + << "subExpTimeNs:" << r.subExpTimeNs << std::endl + << "subDeadTimeNs:" << r.subDeadTimeNs << std::endl + << "activate:" << r.activate << std::endl + << "quad:" << r.quad << std::endl + << "dynamicRange:" << r.dynamicRange << std::endl + << "timMode:" << r.timMode << std::endl + << "tenGiga:" << r.tenGiga << std::endl + << "roMode:" << r.roMode << std::endl + << "adcMask:" << r.adcMask << std::endl + << "adc10gMask:" << r.adc10gMask << std::endl + << "roi.xmin:" << r.roi.xmin << std::endl + << "roi.xmax:" << r.roi.xmax << std::endl + << "countermask:" << r.countermask << std::endl + << "burstType:" << r.burstType << std::endl + << "exptime1:" << r.expTime1Ns << std::endl + << "exptime2:" << r.expTime2Ns << std::endl + << "exptime3:" << r.expTime3Ns << std::endl + << "gateDelay1:" << r.gateDelay1Ns << std::endl + << "gateDelay2:" << r.gateDelay2Ns << std::endl + << "gateDelay3:" << r.gateDelay3Ns << std::endl + << "gates:" << r.gates << std::endl + << ']'; + return oss.str(); +} + +std::ostream &operator<<(std::ostream &os, + const slsDetectorDefs::rxParameters &r) { + return os << ToString(r); +} + std::string ToString(const defs::runStatus s) { switch (s) { case defs::ERROR: From a57f7943ee3a75238c45cb7f6ed24b5be18cfbd2 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 17 Jun 2020 18:30:25 +0200 Subject: [PATCH 05/10] WIP --- slsDetectorSoftware/include/Detector.h | 30 +- slsDetectorSoftware/src/Detector.cpp | 61 +- slsDetectorSoftware/src/Module.cpp | 1193 ++++++++++++------------ slsDetectorSoftware/src/Module.h | 554 +++-------- 4 files changed, 784 insertions(+), 1054 deletions(-) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 6ea27deae..b7b4540d2 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -327,6 +327,21 @@ class Detector { void setOnChipDAC(defs::dacIndex index, int chipIndex, int value, Positions pos = {}); + /** [Gotthard] signal index is 0 + * [Mythen3] signal index 0-3 for master input, 4-7 master output signals */ + Result + getExternalSignalFlags(int signalIndex, Positions pos = {}) const; + + /** [Gotthard] signal index is 0 + * Options: TRIGGER_IN_RISING_EDGE, TRIGGER_IN_FALLING_EDGE + * [Mythen3] signal index 0 is master input trigger signal, 1-3 for master + * input gate signals, 4 is busy out signal, 5-7 is master output gate + * signals. + * Options: TRIGGER_IN_RISING_EDGE, TRIGGER_IN_FALLING_EDGE (for + * master input trigger only), INVERSION_ON, INVERSION_OFF */ + void setExternalSignalFlags(int signalIndex, defs::externalSignalFlag value, + Positions pos = {}); + /************************************************** * * * Acquisition * @@ -925,21 +940,6 @@ class Detector { /** [Gotthard] */ Result getExptimeLeft(Positions pos = {}) const; - /** [Gotthard] signal index is 0 - * [Mythen3] signal index 0-3 for master input, 4-7 master output signals */ - Result - getExternalSignalFlags(int signalIndex, Positions pos = {}) const; - - /** [Gotthard] signal index is 0 - * Options: TRIGGER_IN_RISING_EDGE, TRIGGER_IN_FALLING_EDGE - * [Mythen3] signal index 0 is master input trigger signal, 1-3 for master - * input gate signals, 4 is busy out signal, 5-7 is master output gate - * signals. - * Options: TRIGGER_IN_RISING_EDGE, TRIGGER_IN_FALLING_EDGE (for - * master input trigger only), INVERSION_ON, INVERSION_OFF */ - void setExternalSignalFlags(int signalIndex, defs::externalSignalFlag value, - Positions pos = {}); - /************************************************** * * * Gotthard2 Specific * diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index cf91efb03..1d53c48be 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -503,6 +503,17 @@ void Detector::setOnChipDAC(defs::dacIndex index, int chipIndex, int value, pimpl->Parallel(&Module::setOnChipDAC, pos, index, chipIndex, value); } +Result +Detector::getExternalSignalFlags(int signalIndex, Positions pos) const { + return pimpl->Parallel(&Module::getExternalSignalFlags, pos, signalIndex); +} + +void Detector::setExternalSignalFlags(int signalIndex, + defs::externalSignalFlag value, + Positions pos) { + pimpl->Parallel(&Module::setExternalSignalFlags, pos, signalIndex, value); +} + // Acquisition void Detector::acquire() { pimpl->acquire(); } @@ -826,11 +837,11 @@ Result Detector::getRxRealUDPSocketBufferSize(Positions pos) const { } Result Detector::getRxLock(Positions pos) { - return pimpl->Parallel(&Module::lockReceiver, pos, -1); + return pimpl->Parallel(&Module::getReceiverLock, pos); } void Detector::setRxLock(bool value, Positions pos) { - pimpl->Parallel(&Module::lockReceiver, pos, static_cast(value)); + pimpl->Parallel(&Module::setReceiverLock, pos, value); } Result Detector::getRxLastClientIP(Positions pos) const { @@ -927,7 +938,7 @@ void Detector::setRxZmqFrequency(int freq, Positions pos) { } Result Detector::getRxZmqTimer(Positions pos) const { - return pimpl->Parallel(&Module::setReceiverStreamingTimer, pos, -1); + return pimpl->Parallel(&Module::getReceiverStreamingTimer, pos); } void Detector::setRxZmqTimer(int time_in_ms, Positions pos) { @@ -1130,16 +1141,11 @@ void Detector::setRxPadDeactivatedMode(bool pad, Positions pos) { } Result Detector::getPartialReset(Positions pos) const { - auto res = pimpl->Parallel(&Module::setCounterBit, pos, -1); - Result t(res.size()); - for (unsigned int i = 0; i < res.size(); ++i) { - t[i] = !res[i]; - } - return t; + return pimpl->Parallel(&Module::getCounterBit, pos); } void Detector::setPartialReset(bool value, Positions pos) { - pimpl->Parallel(&Module::setCounterBit, pos, !value); + pimpl->Parallel(&Module::setCounterBit, pos, value); } void Detector::pulsePixel(int n, defs::xy pixel, Positions pos) { @@ -1169,41 +1175,35 @@ void Detector::setQuad(const bool enable) { // Jungfrau Specific Result Detector::getThresholdTemperature(Positions pos) const { - auto res = pimpl->Parallel(&Module::setThresholdTemperature, pos, -1); - for (auto &it : res) { - it /= 1000; - } - return res; + return pimpl->Parallel(&Module::getThresholdTemperature, pos); } void Detector::setThresholdTemperature(int temp, Positions pos) { - pimpl->Parallel(&Module::setThresholdTemperature, pos, temp * 1000); + pimpl->Parallel(&Module::setThresholdTemperature, pos, temp); } Result Detector::getTemperatureControl(Positions pos) const { - return pimpl->Parallel(&Module::setTemperatureControl, pos, -1); + return pimpl->Parallel(&Module::getTemperatureControl, pos); } void Detector::setTemperatureControl(bool enable, Positions pos) { - pimpl->Parallel(&Module::setTemperatureControl, pos, - static_cast(enable)); + pimpl->Parallel(&Module::setTemperatureControl, pos, enable); } Result Detector::getTemperatureEvent(Positions pos) const { - return pimpl->Parallel(&Module::setTemperatureEvent, pos, -1); + return pimpl->Parallel(&Module::getTemperatureEvent, pos); } void Detector::resetTemperatureEvent(Positions pos) { - pimpl->Parallel(&Module::setTemperatureEvent, pos, 0); + pimpl->Parallel(&Module::resetTemperatureEvent, pos); } Result Detector::getAutoCompDisable(Positions pos) const { - return pimpl->Parallel(&Module::setAutoComparatorDisableMode, pos, -1); + return pimpl->Parallel(&Module::getAutoComparatorDisableMode, pos); } void Detector::setAutoCompDisable(bool value, Positions pos) { - pimpl->Parallel(&Module::setAutoComparatorDisableMode, pos, - static_cast(value)); + pimpl->Parallel(&Module::setAutoComparatorDisableMode, pos, value); } Result Detector::getNumberOfAdditionalStorageCells(Positions pos) const { @@ -1215,7 +1215,7 @@ void Detector::setNumberOfAdditionalStorageCells(int value) { } Result Detector::getStorageCellStart(Positions pos) const { - return pimpl->Parallel(&Module::setStorageCellStart, pos, -1); + return pimpl->Parallel(&Module::getStorageCellStart, pos); } void Detector::setStorageCellStart(int cell, Positions pos) { @@ -1251,17 +1251,6 @@ Result Detector::getExptimeLeft(Positions pos) const { return pimpl->Parallel(&Module::getExptimeLeft, pos); } -Result -Detector::getExternalSignalFlags(int signalIndex, Positions pos) const { - return pimpl->Parallel(&Module::getExternalSignalFlags, pos, signalIndex); -} - -void Detector::setExternalSignalFlags(int signalIndex, - defs::externalSignalFlag value, - Positions pos) { - pimpl->Parallel(&Module::setExternalSignalFlags, pos, signalIndex, value); -} - // Gotthard2 Specific Result Detector::getNumberOfBursts(Positions pos) const { diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index bcf01e5be..2ac00bddc 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -332,6 +332,19 @@ void Module::setOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex, sendToDetector(F_SET_ON_CHIP_DAC, args, nullptr); } +slsDetectorDefs::externalSignalFlag +Module::getExternalSignalFlags(int signalIndex) { + return sendToDetector( + F_GET_EXTERNAL_SIGNAL_FLAG, signalIndex); +} + +void Module::setExternalSignalFlags(int signalIndex, externalSignalFlag type) { + int args[]{signalIndex, static_cast(type)}; + sendToDetector(F_SET_EXTERNAL_SIGNAL_FLAG, args, nullptr); +} + +// Acquisition + void Module::startReceiver() { shm()->stoppedFlag = false; sendToReceiver(F_START_RECEIVER, nullptr, nullptr); @@ -417,6 +430,8 @@ void Module::setStartingFrameNumber(uint64_t value) { void Module::sendSoftwareTrigger() { sendToDetectorStop(F_SOFTWARE_TRIGGER); } +// Network Configuration (Detector<->Receiver) + int Module::getNumberofUDPInterfacesFromShm() { return shm()->numUDPInterfaces; } @@ -645,6 +660,8 @@ void Module::setTransmissionDelayRight(int value) { sendToDetector(F_SET_TRANSMISSION_DELAY_RIGHT, value, nullptr); } +// Receiver Config + bool Module::getUseReceiverFlag() const { return shm()->useReceiverFlag; } std::string Module::getReceiverHostname() const { @@ -752,6 +769,576 @@ void Module::setReceiverSilentMode(bool enable) { nullptr); } +slsDetectorDefs::frameDiscardPolicy Module::getReceiverFramesDiscardPolicy() { + return static_cast( + sendToReceiver(F_GET_RECEIVER_DISCARD_POLICY)); +} + +void Module::setReceiverFramesDiscardPolicy(frameDiscardPolicy f) { + sendToReceiver(F_SET_RECEIVER_DISCARD_POLICY, static_cast(f), nullptr); +} + +bool Module::getPartialFramesPadding() { + return sendToReceiver(F_GET_RECEIVER_PADDING); +} + +void Module::setPartialFramesPadding(bool padding) { + sendToReceiver(F_SET_RECEIVER_PADDING, static_cast(padding), nullptr); +} + +int64_t Module::getReceiverUDPSocketBufferSize() const { + int arg = -1; + return sendToReceiver(F_RECEIVER_UDP_SOCK_BUF_SIZE, arg); +} + +int64_t Module::getReceiverRealUDPSocketBufferSize() const { + return sendToReceiver(F_RECEIVER_REAL_UDP_SOCK_BUF_SIZE); +} + +void Module::setReceiverUDPSocketBufferSize(int64_t udpsockbufsize) { + sendToReceiver(F_RECEIVER_UDP_SOCK_BUF_SIZE, udpsockbufsize); +} + +bool Module::getReceiverLock() { + int arg = -1; + return static_cast(sendToReceiver(F_LOCK_RECEIVER, arg)); +} + +void Module::setReceiverLock(bool lock) { + sendToReceiver(F_LOCK_RECEIVER, static_cast(lock)); +} + +sls::IpAddr Module::getReceiverLastClientIP() const { + return sendToReceiver(F_GET_LAST_RECEIVER_CLIENT_IP); +} + +std::array Module::getReceiverThreadIds() const { + return sendToReceiver>( + F_GET_RECEIVER_THREAD_IDS); +} + +// File + +slsDetectorDefs::fileFormat Module::getFileFormat() { + return static_cast( + sendToReceiver(F_GET_RECEIVER_FILE_FORMAT)); +} + +void Module::setFileFormat(fileFormat f) { + sendToReceiver(F_SET_RECEIVER_FILE_FORMAT, static_cast(f), nullptr); +} + +std::string Module::getFilePath() { + char ret[MAX_STR_LENGTH]{}; + sendToReceiver(F_GET_RECEIVER_FILE_PATH, nullptr, ret); + return ret; +} + +void Module::setFilePath(const std::string &path) { + if (path.empty()) { + throw RuntimeError("Cannot set empty file path"); + } + char args[MAX_STR_LENGTH]{}; + sls::strcpy_safe(args, path.c_str()); + sendToReceiver(F_SET_RECEIVER_FILE_PATH, args, nullptr); +} + +std::string Module::getFileName() { + char retvals[MAX_STR_LENGTH]{}; + sendToReceiver(F_GET_RECEIVER_FILE_NAME, nullptr, retvals); + return std::string(retvals); +} + +void Module::setFileName(const std::string &fname) { + if (fname.empty()) { + throw RuntimeError("Cannot set empty file name prefix"); + } + char args[MAX_STR_LENGTH]{}; + sls::strcpy_safe(args, fname.c_str()); + sendToReceiver(F_SET_RECEIVER_FILE_NAME, args, nullptr); +} + +int64_t Module::getFileIndex() { + return sendToReceiver(F_GET_RECEIVER_FILE_INDEX); +} + +void Module::setFileIndex(int64_t file_index) { + sendToReceiver(F_SET_RECEIVER_FILE_INDEX, file_index, nullptr); +} + +void Module::incrementFileIndex() { + sendToReceiver(F_INCREMENT_FILE_INDEX, nullptr, nullptr); +} + +bool Module::getFileWrite() { + return sendToReceiver(F_GET_RECEIVER_FILE_WRITE); +} + +void Module::setFileWrite(bool value) { + sendToReceiver(F_SET_RECEIVER_FILE_WRITE, static_cast(value), nullptr); +} + +bool Module::getMasterFileWrite() { + return sendToReceiver(F_GET_RECEIVER_MASTER_FILE_WRITE); +} + +void Module::setMasterFileWrite(bool value) { + sendToReceiver(F_SET_RECEIVER_MASTER_FILE_WRITE, static_cast(value), + nullptr); +} + +bool Module::getFileOverWrite() { + return sendToReceiver(F_GET_RECEIVER_OVERWRITE); +} + +void Module::setFileOverWrite(bool value) { + sendToReceiver(F_SET_RECEIVER_OVERWRITE, static_cast(value), nullptr); +} + +int Module::getFramesPerFile() { + return sendToReceiver(F_GET_RECEIVER_FRAMES_PER_FILE); +} + +void Module::setFramesPerFile(int n_frames) { + sendToReceiver(F_SET_RECEIVER_FRAMES_PER_FILE, n_frames, nullptr); +} + +// ZMQ Streaming Parameters (Receiver<->Client) + +bool Module::getReceiverStreaming() { + return sendToReceiver(F_GET_RECEIVER_STREAMING); +} + +void Module::setReceiverStreaming(bool enable) { + sendToReceiver(F_SET_RECEIVER_STREAMING, static_cast(enable), nullptr); +} + +int Module::getReceiverStreamingFrequency() { + return sendToReceiver(F_GET_RECEIVER_STREAMING_FREQUENCY); +} + +void Module::setReceiverStreamingFrequency(int freq) { + if (freq < 0) { + throw RuntimeError("Invalid streaming frequency " + + std::to_string(freq)); + } + sendToReceiver(F_SET_RECEIVER_STREAMING_FREQUENCY, freq, nullptr); +} + +int Module::getReceiverStreamingTimer() { + int arg = -1; + return sendToReceiver(F_RECEIVER_STREAMING_TIMER, arg); +} + +void Module::setReceiverStreamingTimer(int time_in_ms) { + sendToReceiver(F_RECEIVER_STREAMING_TIMER, time_in_ms); +} + +int Module::getReceiverStreamingPort() { + return sendToReceiver(F_GET_RECEIVER_STREAMING_PORT); +} + +void Module::setReceiverStreamingPort(int port) { + sendToReceiver(F_SET_RECEIVER_STREAMING_PORT, port, nullptr); +} + +sls::IpAddr Module::getReceiverStreamingIP() { + return sendToReceiver(F_GET_RECEIVER_STREAMING_SRC_IP); +} + +void Module::setReceiverStreamingIP(const sls::IpAddr ip) { + if (ip == 0) { + throw RuntimeError("Invalid receiver zmq ip address"); + } + // if client zmqip is empty, update it + if (shm()->zmqip == 0) { + shm()->zmqip = ip; + } + sendToReceiver(F_SET_RECEIVER_STREAMING_SRC_IP, ip, nullptr); +} + +int Module::getClientStreamingPort() { return shm()->zmqport; } + +void Module::setClientStreamingPort(int port) { shm()->zmqport = port; } + +sls::IpAddr Module::getClientStreamingIP() { return shm()->zmqip; } + +void Module::setClientStreamingIP(const sls::IpAddr ip) { + if (ip == 0) { + throw RuntimeError("Invalid client zmq ip address"); + } + shm()->zmqip = ip; +} + +// Eiger Specific + +int Module::getDynamicRange() { + return sendToDetector(F_SET_DYNAMIC_RANGE, -1); +} + +void Module::setDynamicRange(int n) { + int prev_val = n; + if (shm()->myDetectorType == EIGER) { + prev_val = getDynamicRange(); + } + + auto retval = sendToDetector(F_SET_DYNAMIC_RANGE, n); + if (shm()->useReceiverFlag) { + int arg = retval; + sendToReceiver(F_SET_RECEIVER_DYNAMIC_RANGE, arg); + } + + // changes in dr + if (n != prev_val) { + // update speed for usability + if (n == 32) { + LOG(logINFO) << "Setting Clock to Quarter Speed to cope with " + "Dynamic Range of 32"; + setClockDivider(RUN_CLOCK, 2); + } else if (prev_val == 32) { + LOG(logINFO) << "Setting Clock to Full Speed for Dynamic Range of " + << n; + setClockDivider(RUN_CLOCK, 0); + } + updateRateCorrection(); + } +} + +int64_t Module::getSubExptime() { + return sendToDetector(F_GET_SUB_EXPTIME); +} + +void Module::setSubExptime(int64_t value) { + int64_t prevVal = value; + if (shm()->myDetectorType == EIGER) { + prevVal = getSubExptime(); + } + sendToDetector(F_SET_SUB_EXPTIME, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_SUB_EXPTIME, value, nullptr); + } + if (prevVal != value) { + updateRateCorrection(); + } +} + +int64_t Module::getSubDeadTime() { + return sendToDetector(F_GET_SUB_DEADTIME); +} + +void Module::setSubDeadTime(int64_t value) { + sendToDetector(F_SET_SUB_DEADTIME, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_SUB_DEADTIME, value, nullptr); + } +} + +int Module::getThresholdEnergy() { + // moench - get threshold energy from json header + if (shm()->myDetectorType == MOENCH) { + getAdditionalJsonHeader(); + std::string result = getAdditionalJsonParameter("threshold"); + // convert to integer + try { + return std::stoi(result); + } + // not found or cannot scan integer + catch (...) { + return -1; + } + } + return sendToDetector(F_GET_THRESHOLD_ENERGY); +} + +void Module::setThresholdEnergy(int e_eV, detectorSettings isettings, + bool trimbits) { + // check as there is client processing + if (shm()->myDetectorType == EIGER) { + setThresholdEnergyAndSettings(e_eV, isettings, trimbits); + } + // moench - send threshold energy to processor + else if (shm()->myDetectorType == MOENCH) { + setAdditionalJsonParameter("threshold", std::to_string(e_eV)); + } else { + throw RuntimeError( + "Set threshold energy not implemented for this detector"); + } +} + +std::string Module::getSettingsDir() { return std::string(shm()->settingsDir); } + +std::string Module::setSettingsDir(const std::string &dir) { + sls::strcpy_safe(shm()->settingsDir, dir.c_str()); + return shm()->settingsDir; +} + +bool Module::getParallelMode() { + auto r = sendToDetector(F_GET_PARALLEL_MODE); + return static_cast(r); +} + +void Module::setParallelMode(const bool enable) { + sendToDetector(F_SET_PARALLEL_MODE, static_cast(enable), nullptr); +} + +bool Module::getOverFlowMode() { + auto r = sendToDetector(F_GET_OVERFLOW_MODE); + return static_cast(r); +} + +void Module::setOverFlowMode(const bool enable) { + int arg = static_cast(enable); + sendToDetector(F_SET_OVERFLOW_MODE, arg, nullptr); +} + +bool Module::getStoreInRamMode() { + auto r = sendToDetector(F_GET_STOREINRAM_MODE); + return static_cast(r); +} + +void Module::setStoreInRamMode(const bool enable) { + int arg = static_cast(enable); + sendToDetector(F_SET_STOREINRAM_MODE, arg, nullptr); +} + +bool Module::getFlippedDataX() { + return sendToReceiver(F_SET_FLIPPED_DATA_RECEIVER, -1); +} + +void Module::setFlippedDataX(bool value) { + sendToReceiver(F_SET_FLIPPED_DATA_RECEIVER, static_cast(value)); +} + +std::vector Module::getTrimEn() { + if (shm()->myDetectorType != EIGER) { + throw RuntimeError("getTrimEn not implemented for this detector."); + } + return std::vector(shm()->trimEnergies.begin(), + shm()->trimEnergies.end()); +} + +int Module::setTrimEn(const std::vector &energies) { + if (shm()->myDetectorType != EIGER) { + throw RuntimeError("setTrimEn not implemented for this detector."); + } + if (energies.size() > MAX_TRIMEN) { + std::ostringstream os; + os << "Size of trim energies: " << energies.size() + << " exceeds what can be stored in shared memory: " << MAX_TRIMEN + << "\n"; + throw RuntimeError(os.str()); + } + shm()->trimEnergies = energies; + return shm()->trimEnergies.size(); +} + +int64_t Module::getRateCorrection() { + return sendToDetector(F_GET_RATE_CORRECT); +} + +void Module::setDefaultRateCorrection() { + int64_t arg = -1; + sendToDetector(F_SET_RATE_CORRECT, arg, nullptr); +} + +void Module::setRateCorrection(int64_t t) { + sendToDetector(F_SET_RATE_CORRECT, t, nullptr); +} + +int Module::getReadNLines() { return sendToDetector(F_GET_READ_N_LINES); } + +void Module::setReadNLines(const int value) { + sendToDetector(F_SET_READ_N_LINES, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_READ_N_LINES, value, nullptr); + } +} + +bool Module::getInterruptSubframe() { + auto r = sendToDetector(F_GET_INTERRUPT_SUBFRAME); + return static_cast(r); +} + +void Module::setInterruptSubframe(const bool enable) { + int arg = static_cast(enable); + sendToDetector(F_SET_INTERRUPT_SUBFRAME, arg, nullptr); +} + +int64_t Module::getMeasuredPeriod() const { + return sendToDetectorStop(F_GET_MEASURED_PERIOD); +} + +int64_t Module::getMeasuredSubFramePeriod() const { + return sendToDetectorStop(F_GET_MEASURED_SUBPERIOD); +} + +bool Module::getActivate() { + int arg = -1; + auto retval = sendToDetector(F_ACTIVATE, arg); + auto retval2 = sendToDetectorStop(F_ACTIVATE, arg); + if (retval != retval2) { + std::ostringstream oss; + oss << "Inconsistent activate state. Control Server: " << retval + << ". Stop Server: " << retval2; + throw RuntimeError(oss.str()); + } + return retval; +} + +void Module::setActivate(const bool enable) { + int arg = static_cast(enable); + auto retval = sendToDetector(F_ACTIVATE, arg); + sendToDetectorStop(F_ACTIVATE, arg); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_ACTIVATE, retval, nullptr); + } +} + +bool Module::getDeactivatedRxrPaddingMode() { + return sendToReceiver(F_GET_RECEIVER_DEACTIVATED_PADDING); +} + +void Module::setDeactivatedRxrPaddingMode(bool padding) { + sendToReceiver(F_SET_RECEIVER_DEACTIVATED_PADDING, + static_cast(padding), nullptr); +} + +bool Module::getCounterBit() { + int arg = -1; + return (!static_cast(sendToDetector(F_SET_COUNTER_BIT, arg))); +} + +void Module::setCounterBit(bool cb) { + sendToDetector(F_SET_COUNTER_BIT, static_cast(!cb)); +} + +void Module::pulsePixel(int n, int x, int y) { + int args[]{n, x, y}; + sendToDetector(F_PULSE_PIXEL, args, nullptr); +} + +void Module::pulsePixelNMove(int n, int x, int y) { + int args[]{n, x, y}; + sendToDetector(F_PULSE_PIXEL_AND_MOVE, args, nullptr); +} + +void Module::pulseChip(int n_pulses) { + sendToDetector(F_PULSE_CHIP, n_pulses, nullptr); +} + +bool Module::getQuad() { return sendToDetector(F_GET_QUAD) != 0; } + +void Module::setQuad(const bool enable) { + int value = enable ? 1 : 0; + sendToDetector(F_SET_QUAD, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_QUAD, value, nullptr); + } +} + +// Jungfrau Specific + +int Module::getThresholdTemperature() { + int arg = -1; + auto retval = sendToDetectorStop(F_THRESHOLD_TEMP, arg); + if (retval != 0) { + retval /= 1000; + } + return retval; +} + +void Module::setThresholdTemperature(int val) { + if (val <= 0) { + throw RuntimeError("Invalid threshold temperature " + + std::to_string(val)); + } + val *= 1000; + sendToDetectorStop(F_THRESHOLD_TEMP, val); +} + +bool Module::getTemperatureControl() { + int arg = -1; + return static_cast(sendToDetectorStop(F_TEMP_CONTROL, arg)); +} + +void Module::setTemperatureControl(bool val) { + sendToDetectorStop(F_TEMP_CONTROL, static_cast(val)); +} + +int Module::getTemperatureEvent() { + int arg = -1; + return sendToDetectorStop(F_TEMP_EVENT, arg); +} + +void Module::resetTemperatureEvent() { + int arg = 0; + sendToDetectorStop(F_TEMP_EVENT, arg); +} + +bool Module::getAutoComparatorDisableMode() { + int arg = -1; + return static_cast(sendToDetector(F_AUTO_COMP_DISABLE, arg)); +} + +void Module::setAutoComparatorDisableMode(bool val) { + sendToDetector(F_AUTO_COMP_DISABLE, static_cast(val)); +} + +int Module::getNumberOfAdditionalStorageCells() { + return sendToDetector(F_GET_NUM_ADDITIONAL_STORAGE_CELLS); +} + +void Module::setNumberOfAdditionalStorageCells(int value) { + sendToDetector(F_SET_NUM_ADDITIONAL_STORAGE_CELLS, value, nullptr); +} + +int Module::getStorageCellStart() { + int arg = -1; + return sendToDetector(F_STORAGE_CELL_START, arg); +} + +void Module::setStorageCellStart(int pos) { + sendToDetector(F_STORAGE_CELL_START, pos); +} + +int64_t Module::getStorageCellDelay() { + return sendToDetector(F_GET_STORAGE_CELL_DELAY); +} + +void Module::setStorageCellDelay(int64_t value) { + sendToDetector(F_SET_STORAGE_CELL_DELAY, value, nullptr); +} + +// Gotthard Specific + +slsDetectorDefs::ROI Module::getROI() { + return sendToDetector(F_GET_ROI); +} + +void Module::setROI(slsDetectorDefs::ROI arg) { + if (arg.xmin < 0 || arg.xmax >= getNumberOfChannels().x) { + arg.xmin = -1; + arg.xmax = -1; + } + sendToDetector(F_SET_ROI, arg, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_ROI, arg, nullptr); + } +} + +void Module::clearROI() { setROI(slsDetectorDefs::ROI{}); } + +int64_t Module::getExptimeLeft() const { + int64_t retval = -1; + sendToDetectorStop(F_GET_EXPTIME_LEFT, nullptr, retval); + LOG(logDEBUG1) << "exptime left :" << retval << "ns"; + return retval; +} + +// Gotthard2 Specific + +// private + void Module::sendToDetector(int fnum, const void *args, size_t args_size, void *retval, size_t retval_size) { auto client = DetectorSocket(shm()->hostname, shm()->controlPort); @@ -1250,29 +1837,6 @@ int Module::receiveModule(sls_detector_module *myMod, return ts; } -bool Module::getQuad() { return sendToDetector(F_GET_QUAD) != 0; } - -void Module::setQuad(const bool enable) { - int value = enable ? 1 : 0; - LOG(logDEBUG1) << "Setting Quad type to " << value; - sendToDetector(F_SET_QUAD, value, nullptr); - LOG(logDEBUG1) << "Setting Quad type to " << value << " in Receiver"; - if (shm()->useReceiverFlag) { - sendToReceiver(F_SET_RECEIVER_QUAD, value, nullptr); - } -} - -void Module::setReadNLines(const int value) { - LOG(logDEBUG1) << "Setting read n lines to " << value; - sendToDetector(F_SET_READ_N_LINES, value, nullptr); - LOG(logDEBUG1) << "Setting read n lines to " << value << " in Receiver"; - if (shm()->useReceiverFlag) { - sendToReceiver(F_SET_RECEIVER_READ_N_LINES, value, nullptr); - } -} - -int Module::getReadNLines() { return sendToDetector(F_GET_READ_N_LINES); } - int Module::setControlPort(int port_number) { int retval = -1; LOG(logDEBUG1) << "Setting control port to " << port_number; @@ -1402,44 +1966,8 @@ std::vector Module::getConfigFileCommands() { return commands; } -int Module::getThresholdEnergy() { - // moench - get threshold energy from processor (due to different clients, - // diff shm) - if (shm()->myDetectorType == MOENCH) { - // get json from rxr, parse for threshold and update shm - getAdditionalJsonHeader(); - std::string result = getAdditionalJsonParameter("threshold"); - // convert to integer - try { - return std::stoi(result); - } - // not found or cannot scan integer - catch (...) { - return -1; - } - } - return sendToDetector(F_GET_THRESHOLD_ENERGY); -} - -void Module::setThresholdEnergy(int e_eV, detectorSettings isettings, int tb) { - // check as there is client processing - if (shm()->myDetectorType == EIGER) { - setThresholdEnergyAndSettings(e_eV, isettings, tb); - } - - // moench - send threshold energy to processor - else if (shm()->myDetectorType == MOENCH) { - setAdditionalJsonParameter("threshold", std::to_string(e_eV)); - } - - else { - throw RuntimeError( - "Set threshold energy not implemented for this detector"); - } -} - void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, - int tb) { + bool trimbits) { // if settings provided, use that, else use the shared memory variable detectorSettings is = @@ -1461,7 +1989,7 @@ void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, if (!interpolate) { std::string settingsfname = getTrimbitFilename(is, e_eV); LOG(logDEBUG1) << "Settings File is " << settingsfname; - myMod = readSettingsFile(settingsfname, tb); + myMod = readSettingsFile(settingsfname, trimbits); } else { // find the trim values int trim1 = -1, trim2 = -1; @@ -1476,13 +2004,13 @@ void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, std::string settingsfname2 = getTrimbitFilename(is, trim2); LOG(logDEBUG1) << "Settings Files are " << settingsfname1 << " and " << settingsfname2; - auto myMod1 = readSettingsFile(settingsfname1, tb); - auto myMod2 = readSettingsFile(settingsfname2, tb); + auto myMod1 = readSettingsFile(settingsfname1, trimbits); + auto myMod2 = readSettingsFile(settingsfname2, trimbits); if (myMod1.iodelay != myMod2.iodelay) { throw RuntimeError("setThresholdEnergyAndSettings: Iodelays do not " "match between files"); } - myMod = interpolateTrim(&myMod1, &myMod2, e_eV, trim1, trim2, tb); + myMod = interpolateTrim(&myMod1, &myMod2, e_eV, trim1, trim2, trimbits); myMod.iodelay = myMod1.iodelay; myMod.tau = linearInterpolation(e_eV, trim1, trim2, myMod1.tau, myMod2.tau); @@ -1490,7 +2018,7 @@ void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, myMod.reg = is; myMod.eV = e_eV; - setModule(myMod, tb); + setModule(myMod, trimbits); if (getSettings() != is) { throw RuntimeError("setThresholdEnergyAndSettings: Could not set " "settings in detector"); @@ -1527,13 +2055,6 @@ std::string Module::getTrimbitFilename(detectorSettings s, int e_eV) { return ostfn.str(); } -std::string Module::getSettingsDir() { return std::string(shm()->settingsDir); } - -std::string Module::setSettingsDir(const std::string &dir) { - sls::strcpy_safe(shm()->settingsDir, dir.c_str()); - return shm()->settingsDir; -} - void Module::startAndReadAll() { shm()->stoppedFlag = false; sendToDetector(F_START_AND_READ_ALL); @@ -1556,15 +2077,6 @@ void Module::setNumberOfBursts(int64_t value) { } } -int Module::getNumberOfAdditionalStorageCells() { - return sendToDetector(F_GET_NUM_ADDITIONAL_STORAGE_CELLS); -} - -void Module::setNumberOfAdditionalStorageCells(int value) { - LOG(logDEBUG1) << "Setting number of storage cells to " << value; - sendToDetector(F_SET_NUM_ADDITIONAL_STORAGE_CELLS, value, nullptr); -} - int Module::getNumberOfAnalogSamples() { return sendToDetector(F_GET_NUM_ANALOG_SAMPLES); } @@ -1664,68 +2176,7 @@ void Module::setBurstPeriod(int64_t value) { sendToDetector(F_SET_BURST_PERIOD, value, nullptr); } -int64_t Module::getSubExptime() { - return sendToDetector(F_GET_SUB_EXPTIME); -} - -void Module::setSubExptime(int64_t value) { - int64_t prevVal = value; - if (shm()->myDetectorType == EIGER) { - prevVal = getSubExptime(); - } - LOG(logDEBUG1) << "Setting sub exptime to " << value << "ns"; - sendToDetector(F_SET_SUB_EXPTIME, value, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending sub exptime to Receiver: " << value; - sendToReceiver(F_RECEIVER_SET_SUB_EXPTIME, value, nullptr); - } - if (prevVal != value) { - updateRateCorrection(); - } -} - -int64_t Module::getSubDeadTime() { - return sendToDetector(F_GET_SUB_DEADTIME); -} - -void Module::setSubDeadTime(int64_t value) { - LOG(logDEBUG1) << "Setting sub deadtime to " << value << "ns"; - sendToDetector(F_SET_SUB_DEADTIME, value, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending sub deadtime to Receiver: " << value; - sendToReceiver(F_RECEIVER_SET_SUB_DEADTIME, value, nullptr); - } -} - -int64_t Module::getStorageCellDelay() { - return sendToDetector(F_GET_STORAGE_CELL_DELAY); -} - -void Module::setStorageCellDelay(int64_t value) { - LOG(logDEBUG1) << "Setting storage cell delay to " << value << "ns"; - sendToDetector(F_SET_STORAGE_CELL_DELAY, value, nullptr); -} - -int64_t Module::getExptimeLeft() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_EXPTIME_LEFT, nullptr, retval); - LOG(logDEBUG1) << "exptime left :" << retval << "ns"; - return retval; -} - -int64_t Module::getMeasuredPeriod() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_MEASURED_PERIOD, nullptr, retval); - LOG(logDEBUG1) << "measured period :" << retval << "ns"; - return retval; -} - -int64_t Module::getMeasuredSubFramePeriod() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_MEASURED_SUBPERIOD, nullptr, retval); - LOG(logDEBUG1) << "exptime :" << retval << "ns"; - return retval; -} +// Acquisition Parameters int64_t Module::getNumberOfFramesFromStart() const { int64_t retval = -1; @@ -1748,89 +2199,6 @@ int64_t Module::getMeasurementTime() const { return retval; } -int Module::getDynamicRange() { - return sendToDetector(F_SET_DYNAMIC_RANGE, -1); -} - -void Module::setDynamicRange(int n) { - int prev_val = n; - if (shm()->myDetectorType == EIGER) { - prev_val = getDynamicRange(); - } - - int retval = -1; - LOG(logDEBUG1) << "Setting dynamic range to " << n; - sendToDetector(F_SET_DYNAMIC_RANGE, n, retval); - LOG(logDEBUG1) << "Dynamic Range: " << retval; - - if (shm()->useReceiverFlag) { - int arg = retval; - retval = -1; - LOG(logDEBUG1) << "Sending dynamic range to receiver: " << arg; - sendToReceiver(F_SET_RECEIVER_DYNAMIC_RANGE, arg, retval); - LOG(logDEBUG1) << "Receiver Dynamic range: " << retval; - } - - // changes in dr - if (n != prev_val) { - // update speed for usability - if (n == 32) { - LOG(logINFO) << "Setting Clock to Quarter Speed to cope with " - "Dynamic Range of 32"; - setClockDivider(RUN_CLOCK, 2); - } else if (prev_val == 32) { - LOG(logINFO) << "Setting Clock to Full Speed for Dynamic Range of " - << n; - setClockDivider(RUN_CLOCK, 0); - } - updateRateCorrection(); - } -} - -slsDetectorDefs::externalSignalFlag -Module::getExternalSignalFlags(int signalIndex) { - return sendToDetector( - F_GET_EXTERNAL_SIGNAL_FLAG, signalIndex); -} - -void Module::setExternalSignalFlags(int signalIndex, externalSignalFlag type) { - LOG(logDEBUG1) << "Setting signal flag (" << signalIndex << ") to " << type; - int args[]{signalIndex, static_cast(type)}; - sendToDetector(F_SET_EXTERNAL_SIGNAL_FLAG, args, nullptr); -} - -void Module::setParallelMode(const bool enable) { - LOG(logDEBUG1) << "Setting parallel mode to " << enable; - sendToDetector(F_SET_PARALLEL_MODE, static_cast(enable), nullptr); -} - -bool Module::getParallelMode() { - auto r = sendToDetector(F_GET_PARALLEL_MODE); - return static_cast(r); -} - -void Module::setOverFlowMode(const bool enable) { - int arg = static_cast(enable); - LOG(logDEBUG1) << "Setting overflow mode to " << arg; - sendToDetector(F_SET_OVERFLOW_MODE, arg, nullptr); -} - -bool Module::getOverFlowMode() { - auto r = sendToDetector(F_GET_OVERFLOW_MODE); - return static_cast(r); -} - -void Module::setStoreInRamMode(const bool enable) { - int arg = static_cast(enable); - LOG(logDEBUG1) << "Setting store in ram mode to " << arg; - sendToDetector(F_SET_STOREINRAM_MODE, arg, nullptr); -} - -bool Module::getStoreInRamMode() { - auto r = sendToDetector(F_GET_STOREINRAM_MODE); - return static_cast(r); -} - void Module::setReadoutMode(const slsDetectorDefs::readoutMode mode) { auto arg = static_cast(mode); LOG(logDEBUG1) << "Setting readout mode to " << arg; @@ -1849,17 +2217,6 @@ slsDetectorDefs::readoutMode Module::getReadoutMode() { return static_cast(r); } -void Module::setInterruptSubframe(const bool enable) { - int arg = static_cast(enable); - LOG(logDEBUG1) << "Setting Interrupt subframe to " << arg; - sendToDetector(F_SET_INTERRUPT_SUBFRAME, arg, nullptr); -} - -bool Module::getInterruptSubframe() { - auto r = sendToDetector(F_GET_INTERRUPT_SUBFRAME); - return static_cast(r); -} - uint32_t Module::writeRegister(uint32_t addr, uint32_t val) { uint32_t args[]{addr, val}; uint32_t retval = -1; @@ -1891,43 +2248,6 @@ uint32_t Module::clearBit(uint32_t addr, int n) { } } -void Module::setClientStreamingPort(int port) { shm()->zmqport = port; } - -int Module::getClientStreamingPort() { return shm()->zmqport; } - -void Module::setReceiverStreamingPort(int port) { - sendToReceiver(F_SET_RECEIVER_STREAMING_PORT, port, nullptr); -} - -int Module::getReceiverStreamingPort() { - return sendToReceiver(F_GET_RECEIVER_STREAMING_PORT); -} - -void Module::setClientStreamingIP(const sls::IpAddr ip) { - LOG(logDEBUG1) << "Setting client zmq ip to " << ip; - if (ip == 0) { - throw RuntimeError("Invalid client zmq ip address"); - } - shm()->zmqip = ip; -} - -sls::IpAddr Module::getClientStreamingIP() { return shm()->zmqip; } - -void Module::setReceiverStreamingIP(const sls::IpAddr ip) { - if (ip == 0) { - throw RuntimeError("Invalid receiver zmq ip address"); - } - // if client zmqip is empty, update it - if (shm()->zmqip == 0) { - shm()->zmqip = ip; - } - sendToReceiver(F_SET_RECEIVER_STREAMING_SRC_IP, ip, nullptr); -} - -sls::IpAddr Module::getReceiverStreamingIP() { - return sendToReceiver(F_GET_RECEIVER_STREAMING_SRC_IP); -} - void Module::updateReceiverStreamingIP() { auto ip = getReceiverStreamingIP(); if (ip == 0) { @@ -2040,19 +2360,6 @@ std::string Module::getAdditionalJsonParameter(const std::string &key) { return retval; } -int64_t Module::setReceiverUDPSocketBufferSize(int64_t udpsockbufsize) { - return sendToReceiver(F_RECEIVER_UDP_SOCK_BUF_SIZE, - udpsockbufsize); -} - -int64_t Module::getReceiverUDPSocketBufferSize() { - return setReceiverUDPSocketBufferSize(); -} - -int64_t Module::getReceiverRealUDPSocketBufferSize() const { - return sendToReceiver(F_RECEIVER_REAL_UDP_SOCK_BUF_SIZE); -} - void Module::executeFirmwareTest() { LOG(logDEBUG1) << "Executing firmware test"; sendToDetector(F_SET_FIRMWARE_TEST); @@ -2252,33 +2559,6 @@ void Module::setVeto(bool enable) { sendToDetector(F_SET_VETO, static_cast(enable), nullptr); } -int Module::setCounterBit(int cb) { - return sendToDetector(F_SET_COUNTER_BIT, cb); -} - -void Module::clearROI() { - LOG(logDEBUG1) << "Clearing ROI"; - setROI(slsDetectorDefs::ROI{}); -} - -void Module::setROI(slsDetectorDefs::ROI arg) { - if (arg.xmin < 0 || arg.xmax >= getNumberOfChannels().x) { - arg.xmin = -1; - arg.xmax = -1; - } - LOG(logDEBUG) << "Sending ROI to detector [" << arg.xmin << ", " << arg.xmax - << "]"; - sendToDetector(F_SET_ROI, arg, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending ROI to receiver"; - sendToReceiver(F_RECEIVER_SET_ROI, arg, nullptr); - } -} - -slsDetectorDefs::ROI Module::getROI() { - return sendToDetector(F_GET_ROI); -} - void Module::setADCEnableMask(uint32_t mask) { uint32_t arg = mask; LOG(logDEBUG1) << "Setting ADC Enable mask to 0x" << std::hex << arg @@ -2393,119 +2673,6 @@ void Module::writeAdcRegister(uint32_t addr, uint32_t val) { sendToDetector(F_WRITE_ADC_REG, args, nullptr); } -bool Module::getActivate() { - int retval = -1, retval2 = -1; - int arg = -1; - sendToDetector(F_ACTIVATE, arg, retval); - sendToDetectorStop(F_ACTIVATE, arg, retval2); - if (retval != retval2) { - std::ostringstream oss; - oss << "Inconsistent activate state. Control Server: " << retval - << ". Stop Server: " << retval2; - throw RuntimeError(oss.str()); - } - return retval; -} - -void Module::setActivate(const bool enable) { - int retval = -1; - int arg = static_cast(enable); - LOG(logDEBUG1) << "Setting activate flag to " << enable; - sendToDetector(F_ACTIVATE, arg, retval); - sendToDetectorStop(F_ACTIVATE, arg, retval); - if (shm()->useReceiverFlag) { - sendToReceiver(F_RECEIVER_ACTIVATE, retval, nullptr); - } -} - -bool Module::getDeactivatedRxrPaddingMode() { - return sendToReceiver(F_GET_RECEIVER_DEACTIVATED_PADDING); -} - -void Module::setDeactivatedRxrPaddingMode(bool padding) { - sendToReceiver(F_SET_RECEIVER_DEACTIVATED_PADDING, - static_cast(padding), nullptr); -} - -bool Module::getFlippedDataX() { - return sendToReceiver(F_SET_FLIPPED_DATA_RECEIVER, -1); -} - -void Module::setFlippedDataX(bool value) { - sendToReceiver(F_SET_FLIPPED_DATA_RECEIVER, static_cast(value)); -} - -int Module::setTrimEn(const std::vector &energies) { - if (shm()->myDetectorType != EIGER) { - throw RuntimeError("setTrimEn not implemented for this detector."); - } - if (energies.size() > MAX_TRIMEN) { - std::ostringstream os; - os << "Size of trim energies: " << energies.size() - << " exceeds what can be stored in shared memory: " << MAX_TRIMEN - << "\n"; - throw RuntimeError(os.str()); - } - shm()->trimEnergies = energies; - return shm()->trimEnergies.size(); -} - -std::vector Module::getTrimEn() { - if (shm()->myDetectorType != EIGER) { - throw RuntimeError("getTrimEn not implemented for this detector."); - } - return std::vector(shm()->trimEnergies.begin(), - shm()->trimEnergies.end()); -} - -void Module::pulsePixel(int n, int x, int y) { - int args[]{n, x, y}; - LOG(logDEBUG1) << "Pulsing pixel " << n << " number of times at (" << x - << "," << y << ")"; - sendToDetector(F_PULSE_PIXEL, args, nullptr); -} - -void Module::pulsePixelNMove(int n, int x, int y) { - int args[]{n, x, y}; - LOG(logDEBUG1) << "Pulsing pixel " << n - << " number of times and move by delta (" << x << "," << y - << ")"; - sendToDetector(F_PULSE_PIXEL_AND_MOVE, args, nullptr); -} - -void Module::pulseChip(int n_pulses) { - LOG(logDEBUG1) << "Pulsing chip " << n_pulses << " number of times"; - sendToDetector(F_PULSE_CHIP, n_pulses, nullptr); -} - -int Module::setThresholdTemperature(int val) { - int retval = -1; - LOG(logDEBUG1) << "Setting threshold temperature to " << val; - sendToDetectorStop(F_THRESHOLD_TEMP, val, retval); - LOG(logDEBUG1) << "Threshold temperature: " << retval; - return retval; -} - -int Module::setTemperatureControl(int val) { - int retval = -1; - LOG(logDEBUG1) << "Setting temperature control to " << val; - sendToDetectorStop(F_TEMP_CONTROL, val, retval); - LOG(logDEBUG1) << "Temperature control: " << retval; - return retval; -} - -int Module::setTemperatureEvent(int val) { - int retval = -1; - LOG(logDEBUG1) << "Setting temperature event to " << val; - sendToDetectorStop(F_TEMP_EVENT, val, retval); - LOG(logDEBUG1) << "Temperature event: " << retval; - return retval; -} - -int Module::setStorageCellStart(int pos) { - return sendToDetector(F_STORAGE_CELL_START, pos); -} - void Module::programFPGA(std::vector buffer) { switch (shm()->myDetectorType) { case JUNGFRAU: @@ -2658,16 +2825,12 @@ void Module::rebootController() { LOG(logINFO) << "Controller rebooted successfully!"; } -int Module::setAutoComparatorDisableMode(int ival) { - return sendToDetector(F_AUTO_COMP_DISABLE, ival); -} - -void Module::setModule(sls_detector_module &module, int tb) { +void Module::setModule(sls_detector_module &module, bool trimbits) { int fnum = F_SET_MODULE; int ret = FAIL; - LOG(logDEBUG1) << "Setting module with tb:" << tb; + LOG(logDEBUG1) << "Setting module with trimbits:" << trimbits; // to exclude trimbits - if (tb == 0) { + if (!trimbits) { module.nchan = 0; module.nchip = 0; } @@ -2693,119 +2856,15 @@ sls_detector_module Module::getModule() { return myMod; } -void Module::setDefaultRateCorrection() { - LOG(logDEBUG1) << "Setting Default Rate Correction"; - int64_t arg = -1; - sendToDetector(F_SET_RATE_CORRECT, arg, nullptr); -} - -void Module::setRateCorrection(int64_t t) { - LOG(logDEBUG1) << "Setting Rate Correction to " << t; - sendToDetector(F_SET_RATE_CORRECT, t, nullptr); -} - -int64_t Module::getRateCorrection() { - return sendToDetector(F_GET_RATE_CORRECT); -} - void Module::updateRateCorrection() { sendToDetector(F_UPDATE_RATE_CORRECTION); } -int Module::lockReceiver(int lock) { - return sendToReceiver(F_LOCK_RECEIVER, lock); -} - -sls::IpAddr Module::getReceiverLastClientIP() const { - return sendToReceiver(F_GET_LAST_RECEIVER_CLIENT_IP); -} - -std::array Module::getReceiverThreadIds() const { - return sendToReceiver>( - F_GET_RECEIVER_THREAD_IDS); -} - void Module::exitReceiver() { LOG(logDEBUG1) << "Sending exit command to receiver server"; sendToReceiver(F_EXIT_RECEIVER, nullptr, nullptr); } -std::string Module::getFilePath() { - char ret[MAX_STR_LENGTH]{}; - sendToReceiver(F_GET_RECEIVER_FILE_PATH, nullptr, ret); - return ret; -} - -void Module::setFilePath(const std::string &path) { - if (path.empty()) { - throw RuntimeError("Cannot set empty file path"); - } - char args[MAX_STR_LENGTH]{}; - sls::strcpy_safe(args, path.c_str()); - sendToReceiver(F_SET_RECEIVER_FILE_PATH, args, nullptr); -} - -std::string Module::getFileName() { - char retvals[MAX_STR_LENGTH]{}; - sendToReceiver(F_GET_RECEIVER_FILE_NAME, nullptr, retvals); - return std::string(retvals); -} - -void Module::setFileName(const std::string &fname) { - if (fname.empty()) { - throw RuntimeError("Cannot set empty file name prefix"); - } - char args[MAX_STR_LENGTH]{}; - sls::strcpy_safe(args, fname.c_str()); - sendToReceiver(F_SET_RECEIVER_FILE_NAME, args, nullptr); -} - -int64_t Module::getFileIndex() { - return sendToReceiver(F_GET_RECEIVER_FILE_INDEX); -} - -void Module::setFileIndex(int64_t file_index) { - sendToReceiver(F_SET_RECEIVER_FILE_INDEX, file_index, nullptr); -} - -void Module::incrementFileIndex() { - sendToReceiver(F_INCREMENT_FILE_INDEX, nullptr, nullptr); -} - -slsDetectorDefs::fileFormat Module::getFileFormat() { - return static_cast( - sendToReceiver(F_GET_RECEIVER_FILE_FORMAT)); -} - -void Module::setFileFormat(fileFormat f) { - sendToReceiver(F_SET_RECEIVER_FILE_FORMAT, static_cast(f), nullptr); -} - -int Module::getFramesPerFile() { - return sendToReceiver(F_GET_RECEIVER_FRAMES_PER_FILE); -} - -void Module::setFramesPerFile(int n_frames) { - sendToReceiver(F_SET_RECEIVER_FRAMES_PER_FILE, n_frames, nullptr); -} - -slsDetectorDefs::frameDiscardPolicy Module::getReceiverFramesDiscardPolicy() { - return static_cast( - sendToReceiver(F_GET_RECEIVER_DISCARD_POLICY)); -} - -void Module::setReceiverFramesDiscardPolicy(frameDiscardPolicy f) { - sendToReceiver(F_SET_RECEIVER_DISCARD_POLICY, static_cast(f), nullptr); -} - -bool Module::getPartialFramesPadding() { - return sendToReceiver(F_GET_RECEIVER_PADDING); -} - -void Module::setPartialFramesPadding(bool padding) { - sendToReceiver(F_SET_RECEIVER_PADDING, static_cast(padding), nullptr); -} - uint64_t Module::getReceiverCurrentFrameIndex() const { return sendToReceiver(F_GET_RECEIVER_FRAME_INDEX); } @@ -2814,55 +2873,6 @@ int Module::getReceiverProgress() const { return sendToReceiver(F_GET_RECEIVER_PROGRESS); } -void Module::setFileWrite(bool value) { - sendToReceiver(F_SET_RECEIVER_FILE_WRITE, static_cast(value), nullptr); -} - -bool Module::getFileWrite() { - return sendToReceiver(F_GET_RECEIVER_FILE_WRITE); -} - -void Module::setMasterFileWrite(bool value) { - sendToReceiver(F_SET_RECEIVER_MASTER_FILE_WRITE, static_cast(value), - nullptr); -} - -bool Module::getMasterFileWrite() { - return sendToReceiver(F_GET_RECEIVER_MASTER_FILE_WRITE); -} - -void Module::setFileOverWrite(bool value) { - sendToReceiver(F_SET_RECEIVER_OVERWRITE, static_cast(value), nullptr); -} - -bool Module::getFileOverWrite() { - return sendToReceiver(F_GET_RECEIVER_OVERWRITE); -} - -int Module::getReceiverStreamingFrequency() { - return sendToReceiver(F_GET_RECEIVER_STREAMING_FREQUENCY); -} - -void Module::setReceiverStreamingFrequency(int freq) { - if (freq < 0) { - throw RuntimeError("Invalid streaming frequency " + - std::to_string(freq)); - } - sendToReceiver(F_SET_RECEIVER_STREAMING_FREQUENCY, freq, nullptr); -} - -int Module::setReceiverStreamingTimer(int time_in_ms) { - return sendToReceiver(F_RECEIVER_STREAMING_TIMER, time_in_ms); -} - -bool Module::getReceiverStreaming() { - return sendToReceiver(F_GET_RECEIVER_STREAMING); -} - -void Module::setReceiverStreaming(bool enable) { - sendToReceiver(F_SET_RECEIVER_STREAMING, static_cast(enable), nullptr); -} - void Module::restreamStopFromReceiver() { LOG(logDEBUG1) << "Restream stop dummy from Receiver via zmq"; if (shm()->useReceiverFlag) { @@ -2998,7 +3008,7 @@ uint32_t Module::getCounterMask() { sls_detector_module Module::interpolateTrim(sls_detector_module *a, sls_detector_module *b, const int energy, const int e1, - const int e2, int tb) { + const int e2, bool trimbits) { // only implemented for eiger currently (in terms of which dacs) if (shm()->myDetectorType != EIGER) { @@ -3056,7 +3066,7 @@ sls_detector_module Module::interpolateTrim(sls_detector_module *a, b->dacs[dacs_to_interpolate[i]]); } // Interpolate all trimbits - if (tb != 0) { + if (trimbits) { for (int i = 0; i < myMod.nchan; ++i) { myMod.chanregs[i] = linearInterpolation( energy, e1, e2, a->chanregs[i], b->chanregs[i]); @@ -3065,7 +3075,8 @@ sls_detector_module Module::interpolateTrim(sls_detector_module *a, return myMod; } -sls_detector_module Module::readSettingsFile(const std::string &fname, int tb) { +sls_detector_module Module::readSettingsFile(const std::string &fname, + bool trimbits) { LOG(logDEBUG1) << "Read settings file " << fname; sls_detector_module myMod(shm()->myDetectorType); // open file @@ -3086,7 +3097,7 @@ sls_detector_module Module::readSettingsFile(const std::string &fname, int tb) { infile.read(reinterpret_cast(&myMod.iodelay), sizeof(myMod.iodelay)); infile.read(reinterpret_cast(&myMod.tau), sizeof(myMod.tau)); - if (tb != 0) { + if (trimbits) { infile.read(reinterpret_cast(myMod.chanregs), sizeof(int) * (myMod.nchan)); } diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index c95527704..5c0e7b224 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -145,6 +145,8 @@ class Module : public virtual slsDetectorDefs { int getOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex); void setOnChipDAC(slsDetectorDefs::dacIndex index, int chipIndex, int value); + externalSignalFlag getExternalSignalFlags(int signalIndex); + void setExternalSignalFlags(int signalIndex, externalSignalFlag type); /************************************************** * * @@ -220,30 +222,145 @@ class Module : public virtual slsDetectorDefs { void setReceiverFifoDepth(int n_frames); bool getReceiverSilentMode(); void setReceiverSilentMode(bool enable); + frameDiscardPolicy getReceiverFramesDiscardPolicy(); + void setReceiverFramesDiscardPolicy(frameDiscardPolicy f); + bool getPartialFramesPadding(); + void setPartialFramesPadding(bool padding); + int64_t getReceiverUDPSocketBufferSize() const; + int64_t getReceiverRealUDPSocketBufferSize() const; + void setReceiverUDPSocketBufferSize(int64_t udpsockbufsize); + bool getReceiverLock(); + void setReceiverLock(bool lock); + sls::IpAddr getReceiverLastClientIP() const; + std::array getReceiverThreadIds() const; - /** - * Get Quad Type (Only for Eiger Quad detector hardware) - * @returns quad type - */ + /************************************************** + * * + * File * + * * + * ************************************************/ + fileFormat getFileFormat(); + void setFileFormat(fileFormat f); + std::string getFilePath(); + void setFilePath(const std::string &path); + std::string getFileName(); + void setFileName(const std::string &fname); + int64_t getFileIndex(); + void setFileIndex(int64_t file_index); + void incrementFileIndex(); + bool getFileWrite(); + void setFileWrite(bool value); + bool getMasterFileWrite(); + void setMasterFileWrite(bool value); + bool getFileOverWrite(); + void setFileOverWrite(bool value); + int getFramesPerFile(); + /** 0 will set frames per file to unlimited */ + void setFramesPerFile(int n_frames); + + /************************************************** + * * + * ZMQ Streaming Parameters (Receiver<->Client)* + * * + * ************************************************/ + bool getReceiverStreaming(); + void setReceiverStreaming(bool enable); + int getReceiverStreamingFrequency(); + /** Option: nth frame streamed out, if 0, streamed out at a timer of 200 */ + void setReceiverStreamingFrequency(int freq); + int getReceiverStreamingTimer(); + void setReceiverStreamingTimer(int time_in_ms = 200); + int getReceiverStreamingPort(); + void setReceiverStreamingPort(int port); + sls::IpAddr getReceiverStreamingIP(); + void setReceiverStreamingIP(const sls::IpAddr ip); + int getClientStreamingPort(); + void setClientStreamingPort(int port); + sls::IpAddr getClientStreamingIP(); + void setClientStreamingIP(const sls::IpAddr ip); + + /************************************************** + * * + * Eiger Specific * + * * + * ************************************************/ + int getDynamicRange(); + void setDynamicRange(int n); + int64_t getSubExptime(); + void setSubExptime(int64_t value); + int64_t getSubDeadTime(); + void setSubDeadTime(int64_t value); + int getThresholdEnergy(); + void setThresholdEnergy(int e_eV, detectorSettings isettings = GET_SETTINGS, + bool trimbits = true); + std::string getSettingsDir(); + std::string setSettingsDir(const std::string &dir); + bool getParallelMode(); + void setParallelMode(const bool enable); + bool getOverFlowMode(); + void setOverFlowMode(const bool enable); + bool getStoreInRamMode(); + void setStoreInRamMode(const bool enable); + bool getFlippedDataX(); + void setFlippedDataX(bool value); + std::vector getTrimEn(); + int setTrimEn(const std::vector &energies = {}); + int64_t getRateCorrection(); + void setDefaultRateCorrection(); + void setRateCorrection(int64_t t = 0); + int getReadNLines(); + void setReadNLines(const int value); + bool getInterruptSubframe(); + void setInterruptSubframe(const bool enable); + int64_t getMeasuredPeriod() const; + int64_t getMeasuredSubFramePeriod() const; + bool getActivate(); + void setActivate(const bool enable); + bool getDeactivatedRxrPaddingMode(); + void setDeactivatedRxrPaddingMode(bool padding); + bool getCounterBit(); + void setCounterBit(bool cb); + void pulsePixel(int n = 0, int x = 0, int y = 0); + void pulsePixelNMove(int n = 0, int x = 0, int y = 0); + void pulseChip(int n_pulses = 0); bool getQuad(); - - /** - * Set Quad Type (Only for Eiger Quad detector hardware) - * @param enable true if quad type set, else false - */ void setQuad(const bool enable); - /** - * Set number of rows to read out (Only for Eiger) - * @param value number of lines - */ - void setReadNLines(const int value); + /************************************************** + * * + * Jungfrau Specific * + * * + * ************************************************/ + int getThresholdTemperature(); + void setThresholdTemperature(int val); + bool getTemperatureControl(); + void setTemperatureControl(bool val); + int getTemperatureEvent(); + void resetTemperatureEvent(); + bool getAutoComparatorDisableMode(); + void setAutoComparatorDisableMode(bool val); + int getNumberOfAdditionalStorageCells(); + void setNumberOfAdditionalStorageCells(int value); + int getStorageCellStart(); + void setStorageCellStart(int pos); + int64_t getStorageCellDelay(); + void setStorageCellDelay(int64_t value); - /** - * Get number of rows to read out (Only for Eiger) - * @returns number of lines - */ - int getReadNLines(); + /************************************************** + * * + * Gotthard Specific * + * * + * ************************************************/ + slsDetectorDefs::ROI getROI(); + void setROI(slsDetectorDefs::ROI arg); + void clearROI(); + int64_t getExptimeLeft() const; + + /************************************************** + * * + * Gotthard2 Specific * + * * + * ************************************************/ /** * Set Detector offset in shared memory in dimension d @@ -297,22 +414,6 @@ class Module : public virtual slsDetectorDefs { */ std::vector getConfigFileCommands(); - /** - * Get threshold energy (Mythen and Eiger) - * @returns current threshold value in ev (-1 failed) - */ - int getThresholdEnergy(); - - /** - * Set threshold energy (Mythen and Eiger) - * For Eiger, calls setThresholdEneryAndSettings - * @param e_eV threshold in eV - * @param isettings ev. change settings - * @param tb 1 to include trimbits, 0 to exclude - */ - void setThresholdEnergy(int e_eV, detectorSettings isettings = GET_SETTINGS, - int tb = 1); - /** * Set threshold energy and settings (Eiger only) * @param e_eV threshold in eV @@ -320,20 +421,7 @@ class Module : public virtual slsDetectorDefs { * @param tb 1 to include trimbits, 0 to exclude */ void setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, - int tb = 1); - - /** - * Returns the detector trimbit/settings directory \sa sharedSlsDetector - * @returns the trimbit/settings directory - */ - std::string getSettingsDir(); - - /** - * Sets the detector trimbit/settings directory \sa sharedSlsDetector - * @param s trimbits/settings directory - * @returns the trimbit/settings directory - */ - std::string setSettingsDir(const std::string &dir); + bool trimbits = true); /** * Start detector acquisition and read all data (Blocking until end of @@ -363,12 +451,6 @@ class Module : public virtual slsDetectorDefs { /** [Gotthard2] only in burst mode and in auto timing mode */ void setNumberOfBursts(int64_t value); - /** [Jungfrau] Advanced */ - int getNumberOfAdditionalStorageCells(); - - /** [Jungfrau] Advanced */ - void setNumberOfAdditionalStorageCells(int value); - /** [CTB][Moench] */ int getNumberOfAnalogSamples(); @@ -405,34 +487,6 @@ class Module : public virtual slsDetectorDefs { /** [Gotthard2] only in burst mode and in auto timing mode */ void setBurstPeriod(int64_t value); - /** [Eiger] in 32 bit mode */ - int64_t getSubExptime(); - - /** [Eiger] in 32 bit mode */ - void setSubExptime(int64_t value); - - /** [Eiger] in 32 bit mode */ - int64_t getSubDeadTime(); - - /** [Eiger] in 32 bit mode */ - void setSubDeadTime(int64_t value); - - /** [Jungfrau] Advanced*/ - int64_t getStorageCellDelay(); - - /** [Jungfrau] Advanced - * Options: (0-1638375 ns (resolution of 25ns) */ - void setStorageCellDelay(int64_t value); - - /** [Gotthard] */ - int64_t getExptimeLeft() const; - - /** [Eiger] minimum two frames */ - int64_t getMeasuredPeriod() const; - - /** [Eiger] */ - int64_t getMeasuredSubFramePeriod() const; - /** [Jungfrau][CTB][Moench][Mythen3] * [Gotthard2] only in continuous mode */ int64_t getNumberOfFramesFromStart() const; @@ -445,53 +499,6 @@ class Module : public virtual slsDetectorDefs { * [Gotthard2] only in continuous mode */ int64_t getMeasurementTime() const; - int getDynamicRange(); - /** - * Set/get dynamic range - * (Eiger: If i is 32, also sets clkdivider to 2, if 16, sets clkdivider to - * 1) - */ - void setDynamicRange(int n); - - externalSignalFlag getExternalSignalFlags(int signalIndex); - void setExternalSignalFlags(int signalIndex, externalSignalFlag type); - - /** - * Set Parallel readout mode (Only for Eiger) - * @param enable true if parallel, else false for non parallel - */ - void setParallelMode(const bool enable); - - /** - * Get parallel mode (Only for Eiger) - * @returns parallel mode - */ - bool getParallelMode(); - - /** - * Set overflow readout mode in 32 bit mode (Only for Eiger) - * @param enable true if overflow, else false - */ - void setOverFlowMode(const bool enable); - - /** - * Get overflow mode in 32 bit mode (Only for Eiger) - * @returns overflow mode - */ - bool getOverFlowMode(); - - /** - * Set store in ram readout mode (Only for Eiger) - * @param enable true if store in ram, else false - */ - void setStoreInRamMode(const bool enable); - - /** - * Get store in ram mode (Only for Eiger) - * @returns store in ram mode - */ - bool getStoreInRamMode(); - /** * [Ctb] * @param mode readout mode Options: ANALOG_ONLY, DIGITAL_ONLY, @@ -505,18 +512,6 @@ class Module : public virtual slsDetectorDefs { */ readoutMode getReadoutMode(); - /** - * Set Interrupt last sub frame (Only for Eiger) - * @param enable true if interrupt last subframe set, else false - */ - void setInterruptSubframe(const bool enable); - - /** - * Get Interrupt last sub frame (Only for Eiger) - * @returns true if interrupt last subframe set, else false - */ - bool getInterruptSubframe(); - /** * Write in a register. For Advanced users * @param addr address of register @@ -550,53 +545,7 @@ class Module : public virtual slsDetectorDefs { void test(); - /** - * Sets the client zmq port\sa sharedSlsDetector - * @param port client zmq port - */ - void setClientStreamingPort(int port); - - /** - * Returns the client zmq port \sa sharedSlsDetector - * @returns the client zmq port - */ - int getClientStreamingPort(); - - /** - * Sets the receiver zmq port\sa sharedSlsDetector - * @param port receiver zmq port - */ - void setReceiverStreamingPort(int port); - - /** - * Returns the receiver zmq port \sa sharedSlsDetector - * @returns the receiver zmq port - */ - int getReceiverStreamingPort(); - - /** - * Sets the client zmq ip\sa sharedSlsDetector - * @param ip client zmq ip - */ - void setClientStreamingIP(const sls::IpAddr ip); - - /** - * Returns the client zmq ip \sa sharedSlsDetector - * @returns the client zmq ip - */ - sls::IpAddr getClientStreamingIP(); - - /** - * Sets the receiver zmq ip\sa sharedSlsDetector - * @param ip receiver zmq ip - */ - void setReceiverStreamingIP(const sls::IpAddr ip); - - /** - * Returns the receiver zmq ip \sa sharedSlsDetector - * @returns the receiver zmq ip - */ - sls::IpAddr getReceiverStreamingIP(); + int getReceiverProgress() const; /** update receiver stremaing ip from shm to receiver * if empty, use rx_hostname ip @@ -615,25 +564,6 @@ class Module : public virtual slsDetectorDefs { const std::string &value); std::string getAdditionalJsonParameter(const std::string &key); - /** - * Sets the receiver UDP socket buffer size - * @param udpsockbufsize additional json header - * @returns receiver udp socket buffer size - */ - int64_t setReceiverUDPSocketBufferSize(int64_t udpsockbufsize = -1); - - /** - * Returns the receiver UDP socket buffer size\sa sharedSlsDetector - * @returns the receiver UDP socket buffer size - */ - int64_t getReceiverUDPSocketBufferSize(); - - /** - * Returns the receiver real UDP socket buffer size\sa sharedSlsDetector - * @returns the receiver real UDP socket buffer size - */ - int64_t getReceiverRealUDPSocketBufferSize() const; - /** [Gotthard][Jungfrau][CTB][Moench] */ void executeFirmwareTest(); @@ -681,33 +611,6 @@ class Module : public virtual slsDetectorDefs { /** default disabled */ void setVeto(bool enable); - /** - * Set/get counter bit in detector (Gotthard) - * @param i is -1 to get, 0 to reset and any other value to set the counter - * bit - * @returns the counter bit in detector - */ - int setCounterBit(int cb = -1); - - /** - * Clear ROI (Gotthard) - */ - void clearROI(); - - /** - * Set ROI (Gotthard) - * Also calls configuremac - * @param arg roi - */ - void setROI(slsDetectorDefs::ROI arg); - - /** - * Get ROI (Gotthard) - * Update receiver if different from shm - * @returns roi - */ - slsDetectorDefs::ROI getROI(); - /** * Set ADC Enable Mask (CTB, Moench) * @param mask ADC Enable mask @@ -781,94 +684,11 @@ class Module : public virtual slsDetectorDefs { */ void writeAdcRegister(uint32_t addr, uint32_t val); - bool getActivate(); - void setActivate(const bool enable); - - bool getDeactivatedRxrPaddingMode(); - - /** - * Set deactivated Receiver padding mode (Eiger only) - */ - void setDeactivatedRxrPaddingMode(bool padding); - - /** - * Returns the enable if data will be flipped across x axis (Eiger) - * @returns if flipped across x axis - */ - bool getFlippedDataX(); - - /** - * Sets the enable which determines if - * data will be flipped across x axis (Eiger) - * @param value 0 or 1 to reset/set - */ - void setFlippedDataX(bool value); - - /** - * Sets the number of trim energies and their value (Eiger) - * \sa sharedSlsDetector - * @param nen number of energies - * @param vector os trimmed energies - * @returns number of trim energies - */ - int setTrimEn(const std::vector &energies = {}); - - /** - * Returns a vector with the trimmed energies (Eiger) - * \sa sharedSlsDetector - * @returns vector with the trimmed energies - */ - std::vector getTrimEn(); - - /** - * Pulse Pixel (Eiger) - * @param n is number of times to pulse - * @param x is x coordinate - * @param y is y coordinate - */ - void pulsePixel(int n = 0, int x = 0, int y = 0); - - /** - * Pulse Pixel and move by a relative value (Eiger) - * @param n is number of times to pulse - * @param x is relative x value - * @param y is relative y value - */ - void pulsePixelNMove(int n = 0, int x = 0, int y = 0); - - /** - * Pulse Chip (Eiger) - * @param n is number of times to pulse - */ - void pulseChip(int n_pulses = 0); - - /** - * Set/gets threshold temperature (Jungfrau) - * @param val value in millidegrees, -1 gets - * @returns threshold temperature in millidegrees - */ - int setThresholdTemperature(int val = -1); - - /** - * Enables/disables temperature control (Jungfrau) - * @param val value, -1 gets - * @returns temperature control enable - */ - int setTemperatureControl(int val = -1); - - /** - * Resets/ gets over-temperature event (Jungfrau) - * @param val value, -1 gets - * @returns over-temperature event - */ - int setTemperatureEvent(int val = -1); - /** * Set storage cell that stores first acquisition of the series (Jungfrau) * @param value storage cell index. Value can be 0 to 15. (-1 gets) * @returns the storage cell that stores the first acquisition of the series */ - int setStorageCellStart(int pos = -1); /** * [Jungfau][Ctb] Programs FPGA with raw file from pof file @@ -901,13 +721,6 @@ class Module : public virtual slsDetectorDefs { */ void rebootController(); - /** - * Automatic comparator disable (Jungfrau) - * @param ival on is 1, off is 0, -1 to get - * @returns OK or FAIL - */ - int setAutoComparatorDisableMode(int ival = -1); - /** * Get trimbit filename with path for settings and energy * @@ -922,7 +735,7 @@ class Module : public virtual slsDetectorDefs { * @param tb 1 to include trimbits, 0 to exclude (used for eiger) * \sa ::sls_detector_module */ - void setModule(sls_detector_module &module, int tb = 1); + void setModule(sls_detector_module &module, bool trimbits = true); /** * Get module structure from detector (all detectors) @@ -931,25 +744,6 @@ class Module : public virtual slsDetectorDefs { */ sls_detector_module getModule(); - /** - * Set Default Rate correction from trimbit file(Eiger) - */ - void setDefaultRateCorrection(); - - /** - * Set Rate correction (Eiger) - * @param t dead time in ns - if 0 disable correction, - * if >0 set dead time to t, cannot be < 0 - * for current settings - */ - void setRateCorrection(int64_t t = 0); - - /** - * Get rate correction (Eiger) - * @returns 0 if rate correction disabled, > 0 otherwise - */ - int64_t getRateCorrection(); - /** * Update rate correction according to dynamic range (Eiger) * If rate correction enabled and dr is 8 or 16, it will throw @@ -957,81 +751,16 @@ class Module : public virtual slsDetectorDefs { */ void updateRateCorrection(); - /** - * Locks/Unlocks the connection to the receiver - * @param lock sets (1), usets (0), gets (-1) the lock - * @returns lock status of the receiver - */ - int lockReceiver(int lock = -1); - - /** - * Returns the IP of the last client connecting to the receiver - * @returns the IP of the last client connecting to the receiver - */ - sls::IpAddr getReceiverLastClientIP() const; - - std::array getReceiverThreadIds() const; - /** * Exits the receiver TCP server */ void exitReceiver(); - std::string getFilePath(); - void setFilePath(const std::string &path); - std::string getFileName(); - void setFileName(const std::string &fname); - int64_t getFileIndex(); - void setFileIndex(int64_t file_index); - void incrementFileIndex(); - fileFormat getFileFormat(); - void setFileFormat(fileFormat f); - int getFramesPerFile(); - /** 0 will set frames per file to unlimited */ - void setFramesPerFile(int n_frames); - frameDiscardPolicy getReceiverFramesDiscardPolicy(); - void setReceiverFramesDiscardPolicy(frameDiscardPolicy f); - bool getPartialFramesPadding(); - void setPartialFramesPadding(bool padding); - /** * Gets the current frame index of receiver * @returns current frame index of receiver */ uint64_t getReceiverCurrentFrameIndex() const; - int getReceiverProgress() const; - - void setFileWrite(bool value); - bool getFileWrite(); - void setMasterFileWrite(bool value); - bool getMasterFileWrite(); - void setFileOverWrite(bool value); - bool getFileOverWrite(); - - int getReceiverStreamingFrequency(); - - /** - * (previously setReadReceiverFrequency) - * Sets the receiver streaming frequency - * @param freq nth frame streamed out, if 0, streamed out at a timer of 200 - * ms - * @param detPos -1 for all detectors in list or specific detector position - */ - void setReceiverStreamingFrequency(int freq); - - /** - * (previously setReceiverReadTimer) - * Sets the receiver streaming timer - * If receiver streaming frequency is 0, then this timer between each - * data stream is set. Default is 200 ms. - * @param time_in_ms timer between frames - * @returns receiver streaming timer in ms - */ - int setReceiverStreamingTimer(int time_in_ms = 200); - - bool getReceiverStreaming(); - - void setReceiverStreaming(bool enable); /** * If data streaming in receiver is enabled, @@ -1331,7 +1060,7 @@ class Module : public virtual slsDetectorDefs { sls_detector_module interpolateTrim(sls_detector_module *a, sls_detector_module *b, const int energy, const int e1, - const int e2, int tb = 1); + const int e2, bool trimbits = true); /** * reads a trim/settings file @@ -1342,7 +1071,8 @@ class Module : public virtual slsDetectorDefs { * @returns the pointer to myMod or NULL if reading the file failed */ - sls_detector_module readSettingsFile(const std::string &fname, int tb = 1); + sls_detector_module readSettingsFile(const std::string &fname, + bool trimbits = true); /** Module Id or position in the detectors list */ const int moduleId; From ebc164aaa676ed186a5b7d3fe26c57a70d24a2ed Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 18 Jun 2020 11:02:33 +0200 Subject: [PATCH 06/10] WIP --- slsDetectorSoftware/src/Detector.cpp | 21 +- slsDetectorSoftware/src/Module.cpp | 1078 +++++++++++++------------- slsDetectorSoftware/src/Module.h | 364 +++------ 3 files changed, 640 insertions(+), 823 deletions(-) diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 1d53c48be..54920668b 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -1569,11 +1569,11 @@ void Detector::setDigitalIODelay(uint64_t pinMask, int delay, Positions pos) { } Result Detector::getLEDEnable(Positions pos) const { - return pimpl->Parallel(&Module::setLEDEnable, pos, -1); + return pimpl->Parallel(&Module::getLEDEnable, pos); } void Detector::setLEDEnable(bool enable, Positions pos) { - pimpl->Parallel(&Module::setLEDEnable, pos, static_cast(enable)); + pimpl->Parallel(&Module::setLEDEnable, pos, enable); } // Pattern @@ -1585,7 +1585,7 @@ void Detector::savePattern(const std::string &fname) { throw RuntimeError("Could not create file to save pattern"); } // get pattern limits - auto r = pimpl->Parallel(&Module::setPatternLoopAddresses, {}, -1, -1, -1) + auto r = pimpl->Parallel(&Module::getPatternLoopAddresses, {}, -1) .tsquash("Inconsistent pattern limits"); CmdProxy proxy(this); @@ -1617,7 +1617,7 @@ void Detector::setPattern(const std::string &fname, Positions pos) { } Result Detector::getPatternIOControl(Positions pos) const { - return pimpl->Parallel(&Module::setPatternIOControl, pos, -1); + return pimpl->Parallel(&Module::getPatternIOControl, pos); } void Detector::setPatternIOControl(uint64_t word, Positions pos) { @@ -1625,7 +1625,7 @@ void Detector::setPatternIOControl(uint64_t word, Positions pos) { } Result Detector::getPatternClockControl(Positions pos) const { - return pimpl->Parallel(&Module::setPatternClockControl, pos, -1); + return pimpl->Parallel(&Module::getPatternClockControl, pos); } void Detector::setPatternClockControl(uint64_t word, Positions pos) { @@ -1633,7 +1633,7 @@ void Detector::setPatternClockControl(uint64_t word, Positions pos) { } Result Detector::getPatternWord(int addr, Positions pos) { - return pimpl->Parallel(&Module::setPatternWord, pos, addr, -1); + return pimpl->Parallel(&Module::getPatternWord, pos, addr); } void Detector::setPatternWord(int addr, uint64_t word, Positions pos) { @@ -1642,8 +1642,7 @@ void Detector::setPatternWord(int addr, uint64_t word, Positions pos) { Result> Detector::getPatternLoopAddresses(int level, Positions pos) const { - return pimpl->Parallel(&Module::setPatternLoopAddresses, pos, level, -1, - -1); + return pimpl->Parallel(&Module::getPatternLoopAddresses, pos, level); } void Detector::setPatternLoopAddresses(int level, int start, int stop, @@ -1652,7 +1651,7 @@ void Detector::setPatternLoopAddresses(int level, int start, int stop, } Result Detector::getPatternLoopCycles(int level, Positions pos) const { - return pimpl->Parallel(&Module::setPatternLoopCycles, pos, level, -1); + return pimpl->Parallel(&Module::getPatternLoopCycles, pos, level); } void Detector::setPatternLoopCycles(int level, int n, Positions pos) { @@ -1660,7 +1659,7 @@ void Detector::setPatternLoopCycles(int level, int n, Positions pos) { } Result Detector::getPatternWaitAddr(int level, Positions pos) const { - return pimpl->Parallel(&Module::setPatternWaitAddr, pos, level, -1); + return pimpl->Parallel(&Module::getPatternWaitAddr, pos, level); } void Detector::setPatternWaitAddr(int level, int addr, Positions pos) { @@ -1668,7 +1667,7 @@ void Detector::setPatternWaitAddr(int level, int addr, Positions pos) { } Result Detector::getPatternWaitTime(int level, Positions pos) const { - return pimpl->Parallel(&Module::setPatternWaitTime, pos, level, -1); + return pimpl->Parallel(&Module::getPatternWaitTime, pos, level); } void Detector::setPatternWaitTime(int level, uint64_t t, Positions pos) { diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 2ac00bddc..34732a4c8 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -205,6 +205,25 @@ void Module::setNumberOfTriggers(int64_t value) { } } +int64_t Module::getExptime(int gateIndex) { + return sendToDetector(F_GET_EXPTIME, gateIndex); +} + +void Module::setExptime(int gateIndex, int64_t value) { + int64_t prevVal = value; + if (shm()->myDetectorType == EIGER) { + prevVal = getExptime(-1); + } + int64_t args[]{static_cast(gateIndex), value}; + sendToDetector(F_SET_EXPTIME, args, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_EXPTIME, args, nullptr); + } + if (prevVal != value) { + updateRateCorrection(); + } +} + int64_t Module::getPeriod() { return sendToDetector(F_GET_PERIOD); } void Module::setPeriod(int64_t value) { @@ -1329,14 +1348,522 @@ void Module::setROI(slsDetectorDefs::ROI arg) { void Module::clearROI() { setROI(slsDetectorDefs::ROI{}); } int64_t Module::getExptimeLeft() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_EXPTIME_LEFT, nullptr, retval); - LOG(logDEBUG1) << "exptime left :" << retval << "ns"; - return retval; + return sendToDetectorStop(F_GET_EXPTIME_LEFT); } // Gotthard2 Specific +int64_t Module::getNumberOfBursts() { + return sendToDetector(F_GET_NUM_BURSTS); +} + +void Module::setNumberOfBursts(int64_t value) { + sendToDetector(F_SET_NUM_BURSTS, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_NUM_BURSTS, value, nullptr); + } +} + +int64_t Module::getBurstPeriod() { + return sendToDetector(F_GET_BURST_PERIOD); +} + +void Module::setBurstPeriod(int64_t value) { + sendToDetector(F_SET_BURST_PERIOD, value, nullptr); +} + +std::array Module::getInjectChannel() { + std::array retvals{}; + sendToDetector(F_GET_INJECT_CHANNEL, nullptr, retvals); + return retvals; +} + +void Module::setInjectChannel(const int offsetChannel, + const int incrementChannel) { + int args[]{offsetChannel, incrementChannel}; + sendToDetector(F_SET_INJECT_CHANNEL, args, nullptr); +} + +std::vector Module::getVetoPhoton(const int chipIndex) { + int fnum = F_GET_VETO_PHOTON; + int ret = FAIL; + auto client = DetectorSocket(shm()->hostname, shm()->controlPort); + client.Send(&fnum, sizeof(fnum)); + client.Send(&chipIndex, sizeof(chipIndex)); + client.Receive(&ret, sizeof(ret)); + if (ret == FAIL) { + char mess[MAX_STR_LENGTH]{}; + client.Receive(mess, MAX_STR_LENGTH); + throw RuntimeError("Detector " + std::to_string(moduleId) + + " returned error: " + std::string(mess)); + } else { + int nch = -1; + client.Receive(&nch, sizeof(nch)); + + int adus[nch]; + memset(adus, 0, sizeof(adus)); + client.Receive(adus, sizeof(adus)); + std::vector retvals(adus, adus + nch); + LOG(logDEBUG1) << "Getting veto photon [" << chipIndex << "]: " << nch + << " channels\n"; + return retvals; + } +} + +void Module::setVetoPhoton(const int chipIndex, const int numPhotons, + const int energy, const std::string &fname) { + if (shm()->myDetectorType != GOTTHARD2) { + throw RuntimeError( + "Set Veto reference is not implemented for this detector"); + } + if (chipIndex < -1 || chipIndex >= shm()->nChip.x) { + throw RuntimeError("Could not set veto photon. Invalid chip index: " + + std::to_string(chipIndex)); + } + if (numPhotons < 1) { + throw RuntimeError( + "Could not set veto photon. Invalid number of photons: " + + std::to_string(numPhotons)); + } + if (energy < 1) { + throw RuntimeError("Could not set veto photon. Invalid energy: " + + std::to_string(energy)); + } + std::ifstream infile(fname.c_str()); + if (!infile.is_open()) { + throw RuntimeError("Could not set veto photon. Could not open file: " + + fname); + } + + int totalEnergy = numPhotons * energy; + int ch = shm()->nChan.x; + int gainIndex = 2; + int nRead = 0; + int value[ch]; + memset(value, 0, sizeof(value)); + bool firstLine = true; + + while (infile.good()) { + std::string line; + getline(infile, line); + if (line.find('#') != std::string::npos) { + line.erase(line.find('#')); + } + if (line.length() < 1) { + continue; + } + std::istringstream ss(line); + // first line: caluclate gain index from gain thresholds from file + if (firstLine) { + int g0 = -1, g1 = -1; + if (!(ss >> g0 >> g1)) { + throw RuntimeError( + "Could not set veto photon. Invalid gain thresholds"); + } + // set gain index and gain bit values + if (totalEnergy < g0) { + gainIndex = 0; + } else if (totalEnergy < g1) { + gainIndex = 1; + } + LOG(logINFO) << "Setting veto photon. Reading Gain " << gainIndex + << " values"; + firstLine = false; + } + // read pedestal and gain values + else { + double p[3] = {-1, -1, -1}, g[3] = {-1, -1, -1}; + if (!(ss >> p[0] >> p[1] >> p[2] >> g[0] >> g[1] >> g[2])) { + throw RuntimeError("Could not set veto photon. Invalid " + "pedestal or gain values for channel " + + std::to_string(nRead)); + } + value[nRead] = + p[gainIndex] + + (g[gainIndex] * + totalEnergy); // ADU value = pedestal + gain * total energy + ++nRead; + if (nRead >= ch) { + break; + } + } + } + if (nRead != ch) { + throw RuntimeError("Could not set veto photon. Insufficient pedestal " + "pr gain values: " + + std::to_string(nRead)); + } + + int fnum = F_SET_VETO_PHOTON; + int ret = FAIL; + int args[]{chipIndex, gainIndex, ch}; + LOG(logDEBUG) << "Sending veto photon value to detector [chip:" << chipIndex + << ", G" << gainIndex << "]: " << args; + auto client = DetectorSocket(shm()->hostname, shm()->controlPort); + client.Send(&fnum, sizeof(fnum)); + client.Send(args, sizeof(args)); + client.Send(value, sizeof(value)); + client.Receive(&ret, sizeof(ret)); + if (ret == FAIL) { + char mess[MAX_STR_LENGTH]{}; + client.Receive(mess, MAX_STR_LENGTH); + throw RuntimeError("Detector " + std::to_string(moduleId) + + " returned error: " + std::string(mess)); + } +} + +void Module::setVetoReference(const int gainIndex, const int value) { + int args[]{gainIndex, value}; + sendToDetector(F_SET_VETO_REFERENCE, args, nullptr); +} + +slsDetectorDefs::burstMode Module::getBurstMode() { + auto r = sendToDetector(F_GET_BURST_MODE); + return static_cast(r); +} + +void Module::setBurstMode(slsDetectorDefs::burstMode value) { + int arg = static_cast(value); + sendToDetector(F_SET_BURST_MODE, arg, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_BURST_MODE, value, nullptr); + } +} + +bool Module::getCurrentSource() { + return sendToDetector(F_GET_CURRENT_SOURCE); +} + +void Module::setCurrentSource(bool value) { + sendToDetector(F_SET_CURRENT_SOURCE, static_cast(value), nullptr); +} + +slsDetectorDefs::timingSourceType Module::getTimingSource() { + auto r = sendToDetector(F_GET_TIMING_SOURCE); + return static_cast(r); +} + +void Module::setTimingSource(slsDetectorDefs::timingSourceType value) { + sendToDetector(F_SET_TIMING_SOURCE, static_cast(value), nullptr); +} + +bool Module::getVeto() { return sendToDetector(F_GET_VETO); } + +void Module::setVeto(bool enable) { + sendToDetector(F_SET_VETO, static_cast(enable), nullptr); +} + +// Mythen3 Specific + +uint32_t Module::getCounterMask() { + return sendToDetector(F_GET_COUNTER_MASK); +} + +void Module::setCounterMask(uint32_t countermask) { + LOG(logDEBUG1) << "Setting Counter mask to " << countermask; + sendToDetector(F_SET_COUNTER_MASK, countermask, nullptr); + if (shm()->useReceiverFlag) { + int ncounters = __builtin_popcount(countermask); + LOG(logDEBUG1) << "Sending Reciver #counters: " << ncounters; + sendToReceiver(F_RECEIVER_SET_NUM_COUNTERS, ncounters, nullptr); + } +} + +int Module::getNumberOfGates() { return sendToDetector(F_GET_NUM_GATES); } + +void Module::setNumberOfGates(int value) { + sendToDetector(F_SET_NUM_GATES, value, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_NUM_GATES, value, nullptr); + } +} + +std::array Module::getExptimeForAllGates() { + static_assert(sizeof(time::ns) == 8, "ns needs to be 64bit"); + return sendToDetector>(F_GET_EXPTIME_ALL_GATES); +} + +int64_t Module::getGateDelay(int gateIndex) { + return sendToDetector(F_GET_GATE_DELAY, gateIndex); +} + +void Module::setGateDelay(int gateIndex, int64_t value) { + int64_t args[]{static_cast(gateIndex), value}; + sendToDetector(F_SET_GATE_DELAY, args, nullptr); + if (shm()->useReceiverFlag) { + sendToReceiver(F_SET_RECEIVER_GATE_DELAY, args, nullptr); + } +} + +std::array Module::getGateDelayForAllGates() { + static_assert(sizeof(time::ns) == 8, "ns needs to be 64bit"); + return sendToDetector>(F_GET_GATE_DELAY_ALL_GATES); +} + +// CTB / Moench Specific + +int Module::getNumberOfAnalogSamples() { + return sendToDetector(F_GET_NUM_ANALOG_SAMPLES); +} + +void Module::setNumberOfAnalogSamples(int value) { + sendToDetector(F_SET_NUM_ANALOG_SAMPLES, value, nullptr); + // update #nchan, as it depends on #samples, adcmask + updateNumberOfChannels(); + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_NUM_ANALOG_SAMPLES, value, nullptr); + } +} + +int Module::getPipeline(int clkIndex) { + return sendToDetector(F_GET_PIPELINE, clkIndex); +} + +void Module::setPipeline(int clkIndex, int value) { + int args[]{clkIndex, value}; + sendToDetector(F_SET_PIPELINE, args, nullptr); +} + +uint32_t Module::getADCEnableMask() { + return sendToDetector(F_GET_ADC_ENABLE_MASK); +} + +void Module::setADCEnableMask(uint32_t mask) { + sendToDetector(F_SET_ADC_ENABLE_MASK, mask, nullptr); + // update #nchan, as it depends on #samples, adcmask, + updateNumberOfChannels(); + + // send to processor + if (shm()->myDetectorType == MOENCH) + setAdditionalJsonParameter("adcmask_1g", std::to_string(mask)); + + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_ADC_MASK, mask); + } +} + +uint32_t Module::getTenGigaADCEnableMask() { + return sendToDetector(F_GET_ADC_ENABLE_MASK_10G); +} + +void Module::setTenGigaADCEnableMask(uint32_t mask) { + sendToDetector(F_SET_ADC_ENABLE_MASK_10G, mask, nullptr); + // update #nchan, as it depends on #samples, adcmask, + updateNumberOfChannels(); + + // send to processor + if (shm()->myDetectorType == MOENCH) + setAdditionalJsonParameter("adcmask_10g", std::to_string(mask)); + + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_ADC_MASK_10G, mask); + } +} + +// CTB Specific + +int Module::getNumberOfDigitalSamples() { + return sendToDetector(F_GET_NUM_DIGITAL_SAMPLES); +} + +void Module::setNumberOfDigitalSamples(int value) { + LOG(logDEBUG1) << "Setting number of digital samples to " << value; + sendToDetector(F_SET_NUM_DIGITAL_SAMPLES, value, nullptr); + // update #nchan, as it depends on #samples, adcmask + updateNumberOfChannels(); + if (shm()->useReceiverFlag) { + LOG(logDEBUG1) << "Sending number of digital samples to Receiver: " + << value; + sendToReceiver(F_RECEIVER_SET_NUM_DIGITAL_SAMPLES, value, nullptr); + } +} + +slsDetectorDefs::readoutMode Module::getReadoutMode() { + auto r = sendToDetector(F_GET_READOUT_MODE); + return static_cast(r); +} + +void Module::setReadoutMode(const slsDetectorDefs::readoutMode mode) { + auto arg = static_cast(mode); + LOG(logDEBUG1) << "Setting readout mode to " << arg; + sendToDetector(F_SET_READOUT_MODE, arg, nullptr); + // update #nchan, as it depends on #samples, adcmask, + if (shm()->myDetectorType == CHIPTESTBOARD) { + updateNumberOfChannels(); + } + if (shm()->useReceiverFlag) { + sendToReceiver(F_RECEIVER_SET_READOUT_MODE, mode, nullptr); + } +} + +int Module::getExternalSamplingSource() { + return setExternalSamplingSource(-1); +} + +int Module::setExternalSamplingSource(int value) { + return sendToDetector(F_EXTERNAL_SAMPLING_SOURCE, value); +} + +bool Module::getExternalSampling() { + int arg = -1; + return sendToDetector(F_EXTERNAL_SAMPLING, arg); +} + +void Module::setExternalSampling(bool value) { + sendToDetector(F_EXTERNAL_SAMPLING, static_cast(value)); +} + +std::vector Module::getReceiverDbitList() const { + return sendToReceiver>( + F_GET_RECEIVER_DBIT_LIST); +} + +void Module::setReceiverDbitList(const std::vector &list) { + LOG(logDEBUG1) << "Setting Receiver Dbit List"; + if (list.size() > 64) { + throw sls::RuntimeError("Dbit list size cannot be greater than 64\n"); + } + for (auto &it : list) { + if (it < 0 || it > 63) { + throw sls::RuntimeError( + "Dbit list value must be between 0 and 63\n"); + } + } + sls::StaticVector arg = list; + sendToReceiver(F_SET_RECEIVER_DBIT_LIST, arg, nullptr); +} + +int Module::getReceiverDbitOffset() { + return sendToReceiver(F_GET_RECEIVER_DBIT_OFFSET); +} + +void Module::setReceiverDbitOffset(int value) { + sendToReceiver(F_SET_RECEIVER_DBIT_OFFSET, value, nullptr); +} + +void Module::setDigitalIODelay(uint64_t pinMask, int delay) { + uint64_t args[]{pinMask, static_cast(delay)}; + sendToDetector(F_DIGITAL_IO_DELAY, args, nullptr); +} + +bool Module::getLEDEnable() { + int arg = -1; + return static_cast(sendToDetector(F_LED, arg)); +} + +void Module::setLEDEnable(bool enable) { + sendToDetector(F_LED, static_cast(enable)); +} + +// Pattern + +void Module::setPattern(const std::string &fname) { + uint64_t word; + uint64_t addr = 0; + FILE *fd = fopen(fname.c_str(), "r"); + if (fd != nullptr) { + while (fread(&word, sizeof(word), 1, fd) != 0U) { + setPatternWord(addr, word); // TODO! (Erik) do we need to send + // pattern in 64bit chunks? + ++addr; + } + fclose(fd); + } else { + throw RuntimeError("Could not open file to set pattern"); + } +} + +uint64_t Module::getPatternIOControl() { + int64_t arg = -1; + return sendToDetector(F_SET_PATTERN_IO_CONTROL, arg); +} + +void Module::setPatternIOControl(uint64_t word) { + sendToDetector(F_SET_PATTERN_IO_CONTROL, word); +} + +uint64_t Module::getPatternClockControl() { + int64_t arg = -1; + return sendToDetector(F_SET_PATTERN_CLOCK_CONTROL, arg); +} + +void Module::setPatternClockControl(uint64_t word) { + sendToDetector(F_SET_PATTERN_CLOCK_CONTROL, word); +} + +uint64_t Module::getPatternWord(int addr) { + uint64_t args[]{static_cast(addr), static_cast(-1)}; + return sendToDetector(F_SET_PATTERN_WORD, args); +} + +void Module::setPatternWord(int addr, uint64_t word) { + uint64_t args[]{static_cast(addr), word}; + sendToDetector(F_SET_PATTERN_WORD, args); +} + +std::array Module::getPatternLoopAddresses(int level) { + int args[]{level, -1, -1}; + std::array retvals{}; + sendToDetector(F_SET_PATTERN_LOOP_ADDRESSES, args, retvals); + return retvals; +} + +void Module::setPatternLoopAddresses(int level, int start, int stop) { + int args[]{level, start, stop}; + std::array retvals{}; + sendToDetector(F_SET_PATTERN_LOOP_ADDRESSES, args, retvals); +} + +int Module::getPatternLoopCycles(int level) { + int args[]{level, -1}; + return sendToDetector(F_SET_PATTERN_LOOP_CYCLES, args); +} + +void Module::setPatternLoopCycles(int level, int n) { + int args[]{level, n}; + sendToDetector(F_SET_PATTERN_LOOP_CYCLES, args); +} + +int Module::getPatternWaitAddr(int level) { + int args[]{level, -1}; + return sendToDetector(F_SET_PATTERN_WAIT_ADDR, args); +} + +void Module::setPatternWaitAddr(int level, int addr) { + int args[]{level, addr}; + sendToDetector(F_SET_PATTERN_WAIT_ADDR, args); +} + +uint64_t Module::getPatternWaitTime(int level) { + uint64_t args[]{static_cast(level), static_cast(-1)}; + return sendToDetector(F_SET_PATTERN_WAIT_TIME, args); +} + +void Module::setPatternWaitTime(int level, uint64_t t) { + uint64_t args[]{static_cast(level), t}; + sendToDetector(F_SET_PATTERN_WAIT_TIME, args); +} + +uint64_t Module::getPatternMask() { + return sendToDetector(F_GET_PATTERN_MASK); +} + +void Module::setPatternMask(uint64_t mask) { + sendToDetector(F_SET_PATTERN_MASK, mask, nullptr); +} + +uint64_t Module::getPatternBitMask() { + return sendToDetector(F_GET_PATTERN_BIT_MASK); +} + +void Module::setPatternBitMask(uint64_t mask) { + sendToDetector(F_SET_PATTERN_BIT_MASK, mask, nullptr); +} + +void Module::startPattern() { sendToDetector(F_START_PATTERN); } + +// Moench + // private void Module::sendToDetector(int fnum, const void *args, size_t args_size, @@ -2064,120 +2591,6 @@ void Module::startReadOut() { sendToDetector(F_START_READOUT); } void Module::readAll() { sendToDetector(F_READ_ALL); } -int64_t Module::getNumberOfBursts() { - return sendToDetector(F_GET_NUM_BURSTS); -} - -void Module::setNumberOfBursts(int64_t value) { - LOG(logDEBUG1) << "Setting number of bursts to " << value; - sendToDetector(F_SET_NUM_BURSTS, value, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending number of bursts to Receiver: " << value; - sendToReceiver(F_SET_RECEIVER_NUM_BURSTS, value, nullptr); - } -} - -int Module::getNumberOfAnalogSamples() { - return sendToDetector(F_GET_NUM_ANALOG_SAMPLES); -} - -void Module::setNumberOfAnalogSamples(int value) { - LOG(logDEBUG1) << "Setting number of analog samples to " << value; - sendToDetector(F_SET_NUM_ANALOG_SAMPLES, value, nullptr); - // update #nchan, as it depends on #samples, adcmask - updateNumberOfChannels(); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending number of analog samples to Receiver: " - << value; - sendToReceiver(F_RECEIVER_SET_NUM_ANALOG_SAMPLES, value, nullptr); - } -} - -int Module::getNumberOfDigitalSamples() { - return sendToDetector(F_GET_NUM_DIGITAL_SAMPLES); -} - -void Module::setNumberOfDigitalSamples(int value) { - LOG(logDEBUG1) << "Setting number of digital samples to " << value; - sendToDetector(F_SET_NUM_DIGITAL_SAMPLES, value, nullptr); - // update #nchan, as it depends on #samples, adcmask - updateNumberOfChannels(); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending number of digital samples to Receiver: " - << value; - sendToReceiver(F_RECEIVER_SET_NUM_DIGITAL_SAMPLES, value, nullptr); - } -} - -int Module::getNumberOfGates() { return sendToDetector(F_GET_NUM_GATES); } - -void Module::setNumberOfGates(int value) { - LOG(logDEBUG1) << "Setting number of gates to " << value; - sendToDetector(F_SET_NUM_GATES, value, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending number of gates to Receiver: " << value; - sendToReceiver(F_SET_RECEIVER_NUM_GATES, value, nullptr); - } -} - -int64_t Module::getExptime(int gateIndex) { - return sendToDetector(F_GET_EXPTIME, gateIndex); -} - -void Module::setExptime(int gateIndex, int64_t value) { - int64_t prevVal = value; - if (shm()->myDetectorType == EIGER) { - prevVal = getExptime(-1); - } - LOG(logDEBUG1) << "Setting exptime to " << value - << "ns (gateindex: " << gateIndex << ")"; - int64_t args[]{static_cast(gateIndex), value}; - sendToDetector(F_SET_EXPTIME, args, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending exptime to Receiver: " << value; - sendToReceiver(F_RECEIVER_SET_EXPTIME, args, nullptr); - } - if (prevVal != value) { - updateRateCorrection(); - } -} - -std::array Module::getExptimeForAllGates() { - static_assert(sizeof(time::ns) == 8, "ns needs to be 64bit"); - return sendToDetector>(F_GET_EXPTIME_ALL_GATES); -} - -int64_t Module::getGateDelay(int gateIndex) { - return sendToDetector(F_GET_GATE_DELAY, gateIndex); -} - -void Module::setGateDelay(int gateIndex, int64_t value) { - LOG(logDEBUG1) << "Setting gate delay to " << value - << "ns (gateindex: " << gateIndex << ")"; - int64_t args[]{static_cast(gateIndex), value}; - sendToDetector(F_SET_GATE_DELAY, args, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending gate delay to Receiver: " << value; - sendToReceiver(F_SET_RECEIVER_GATE_DELAY, args, nullptr); - } -} - -std::array Module::getGateDelayForAllGates() { - static_assert(sizeof(time::ns) == 8, "ns needs to be 64bit"); - return sendToDetector>(F_GET_GATE_DELAY_ALL_GATES); -} - -int64_t Module::getBurstPeriod() { - return sendToDetector(F_GET_BURST_PERIOD); -} - -void Module::setBurstPeriod(int64_t value) { - LOG(logDEBUG1) << "Setting burst period to " << value << "ns"; - sendToDetector(F_SET_BURST_PERIOD, value, nullptr); -} - -// Acquisition Parameters - int64_t Module::getNumberOfFramesFromStart() const { int64_t retval = -1; sendToDetectorStop(F_GET_FRAMES_FROM_START, nullptr, retval); @@ -2199,24 +2612,6 @@ int64_t Module::getMeasurementTime() const { return retval; } -void Module::setReadoutMode(const slsDetectorDefs::readoutMode mode) { - auto arg = static_cast(mode); - LOG(logDEBUG1) << "Setting readout mode to " << arg; - sendToDetector(F_SET_READOUT_MODE, arg, nullptr); - // update #nchan, as it depends on #samples, adcmask, - if (shm()->myDetectorType == CHIPTESTBOARD) { - updateNumberOfChannels(); - } - if (shm()->useReceiverFlag) { - sendToReceiver(F_RECEIVER_SET_READOUT_MODE, mode, nullptr); - } -} - -slsDetectorDefs::readoutMode Module::getReadoutMode() { - auto r = sendToDetector(F_GET_READOUT_MODE); - return static_cast(r); -} - uint32_t Module::writeRegister(uint32_t addr, uint32_t val) { uint32_t args[]{addr, val}; uint32_t retval = -1; @@ -2370,247 +2765,6 @@ void Module::executeBusTest() { sendToDetector(F_SET_BUS_TEST); } -std::array Module::getInjectChannel() { - std::array retvals{}; - sendToDetector(F_GET_INJECT_CHANNEL, nullptr, retvals); - LOG(logDEBUG1) << "Inject Channel: [offset: " << retvals[0] - << ", increment: " << retvals[1] << ']'; - return retvals; -} - -void Module::setInjectChannel(const int offsetChannel, - const int incrementChannel) { - int args[]{offsetChannel, incrementChannel}; - LOG(logDEBUG1) << "Setting inject channels [offset: " << offsetChannel - << ", increment: " << incrementChannel << ']'; - sendToDetector(F_SET_INJECT_CHANNEL, args, nullptr); -} - -std::vector Module::getVetoPhoton(const int chipIndex) { - int fnum = F_GET_VETO_PHOTON; - int ret = FAIL; - auto client = DetectorSocket(shm()->hostname, shm()->controlPort); - client.Send(&fnum, sizeof(fnum)); - client.Send(&chipIndex, sizeof(chipIndex)); - client.Receive(&ret, sizeof(ret)); - if (ret == FAIL) { - char mess[MAX_STR_LENGTH]{}; - client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Detector " + std::to_string(moduleId) + - " returned error: " + std::string(mess)); - } else { - int nch = -1; - client.Receive(&nch, sizeof(nch)); - - int adus[nch]; - memset(adus, 0, sizeof(adus)); - client.Receive(adus, sizeof(adus)); - std::vector retvals(adus, adus + nch); - LOG(logDEBUG1) << "Getting veto photon [" << chipIndex << "]: " << nch - << " channels\n"; - return retvals; - } -} - -void Module::setVetoPhoton(const int chipIndex, const int numPhotons, - const int energy, const std::string &fname) { - if (shm()->myDetectorType != GOTTHARD2) { - throw RuntimeError( - "Set Veto reference is not implemented for this detector"); - } - if (chipIndex < -1 || chipIndex >= shm()->nChip.x) { - throw RuntimeError("Could not set veto photon. Invalid chip index: " + - std::to_string(chipIndex)); - } - if (numPhotons < 1) { - throw RuntimeError( - "Could not set veto photon. Invalid number of photons: " + - std::to_string(numPhotons)); - } - if (energy < 1) { - throw RuntimeError("Could not set veto photon. Invalid energy: " + - std::to_string(energy)); - } - std::ifstream infile(fname.c_str()); - if (!infile.is_open()) { - throw RuntimeError("Could not set veto photon. Could not open file: " + - fname); - } - - int totalEnergy = numPhotons * energy; - int ch = shm()->nChan.x; - int gainIndex = 2; - int nRead = 0; - int value[ch]; - memset(value, 0, sizeof(value)); - bool firstLine = true; - - while (infile.good()) { - std::string line; - getline(infile, line); - if (line.find('#') != std::string::npos) { - line.erase(line.find('#')); - } - if (line.length() < 1) { - continue; - } - std::istringstream ss(line); - // first line: caluclate gain index from gain thresholds from file - if (firstLine) { - int g0 = -1, g1 = -1; - if (!(ss >> g0 >> g1)) { - throw RuntimeError( - "Could not set veto photon. Invalid gain thresholds"); - } - // set gain index and gain bit values - if (totalEnergy < g0) { - gainIndex = 0; - } else if (totalEnergy < g1) { - gainIndex = 1; - } - LOG(logINFO) << "Setting veto photon. Reading Gain " << gainIndex - << " values"; - firstLine = false; - } - // read pedestal and gain values - else { - double p[3] = {-1, -1, -1}, g[3] = {-1, -1, -1}; - if (!(ss >> p[0] >> p[1] >> p[2] >> g[0] >> g[1] >> g[2])) { - throw RuntimeError("Could not set veto photon. Invalid " - "pedestal or gain values for channel " + - std::to_string(nRead)); - } - value[nRead] = - p[gainIndex] + - (g[gainIndex] * - totalEnergy); // ADU value = pedestal + gain * total energy - ++nRead; - if (nRead >= ch) { - break; - } - } - } - if (nRead != ch) { - throw RuntimeError("Could not set veto photon. Insufficient pedestal " - "pr gain values: " + - std::to_string(nRead)); - } - - int fnum = F_SET_VETO_PHOTON; - int ret = FAIL; - int args[]{chipIndex, gainIndex, ch}; - LOG(logDEBUG) << "Sending veto photon value to detector [chip:" << chipIndex - << ", G" << gainIndex << "]: " << args; - auto client = DetectorSocket(shm()->hostname, shm()->controlPort); - client.Send(&fnum, sizeof(fnum)); - client.Send(args, sizeof(args)); - client.Send(value, sizeof(value)); - client.Receive(&ret, sizeof(ret)); - if (ret == FAIL) { - char mess[MAX_STR_LENGTH]{}; - client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Detector " + std::to_string(moduleId) + - " returned error: " + std::string(mess)); - } -} - -void Module::setVetoReference(const int gainIndex, const int value) { - int args[]{gainIndex, value}; - LOG(logDEBUG1) << "Setting veto reference [gainIndex: " << gainIndex - << ", value: 0x" << std::hex << value << std::dec << ']'; - sendToDetector(F_SET_VETO_REFERENCE, args, nullptr); -} - -slsDetectorDefs::burstMode Module::getBurstMode() { - auto r = sendToDetector(F_GET_BURST_MODE); - return static_cast(r); -} - -void Module::setBurstMode(slsDetectorDefs::burstMode value) { - int arg = static_cast(value); - LOG(logDEBUG1) << "Setting burst mode to " << arg; - sendToDetector(F_SET_BURST_MODE, arg, nullptr); - if (shm()->useReceiverFlag) { - LOG(logDEBUG1) << "Sending burst mode to Receiver: " << value; - sendToReceiver(F_SET_RECEIVER_BURST_MODE, value, nullptr); - } -} - -bool Module::getCurrentSource() { - return sendToDetector(F_GET_CURRENT_SOURCE); -} - -void Module::setCurrentSource(bool value) { - sendToDetector(F_SET_CURRENT_SOURCE, static_cast(value), nullptr); -} - -slsDetectorDefs::timingSourceType Module::getTimingSource() { - auto r = sendToDetector(F_GET_TIMING_SOURCE); - return static_cast(r); -} - -void Module::setTimingSource(slsDetectorDefs::timingSourceType value) { - sendToDetector(F_SET_TIMING_SOURCE, static_cast(value), nullptr); -} - -bool Module::getVeto() { return sendToDetector(F_GET_VETO); } - -void Module::setVeto(bool enable) { - sendToDetector(F_SET_VETO, static_cast(enable), nullptr); -} - -void Module::setADCEnableMask(uint32_t mask) { - uint32_t arg = mask; - LOG(logDEBUG1) << "Setting ADC Enable mask to 0x" << std::hex << arg - << std::dec; - sendToDetector(F_SET_ADC_ENABLE_MASK, &arg, sizeof(arg), nullptr, 0); - - // update #nchan, as it depends on #samples, adcmask, - updateNumberOfChannels(); - - // send to processor - if (shm()->myDetectorType == MOENCH) - setAdditionalJsonParameter("adcmask_1g", std::to_string(mask)); - - if (shm()->useReceiverFlag) { - int fnum = F_RECEIVER_SET_ADC_MASK; - int retval = -1; - LOG(logDEBUG1) << "Setting ADC Enable mask to 0x" << std::hex << mask - << std::dec << " in receiver"; - sendToReceiver(fnum, mask, retval); - } -} - -uint32_t Module::getADCEnableMask() { - return sendToDetector(F_GET_ADC_ENABLE_MASK); -} - -void Module::setTenGigaADCEnableMask(uint32_t mask) { - uint32_t arg = mask; - LOG(logDEBUG1) << "Setting 10Gb ADC Enable mask to 0x" << std::hex << arg - << std::dec; - sendToDetector(F_SET_ADC_ENABLE_MASK_10G, &arg, sizeof(arg), nullptr, 0); - - // update #nchan, as it depends on #samples, adcmask, - updateNumberOfChannels(); - - // send to processor - if (shm()->myDetectorType == MOENCH) - setAdditionalJsonParameter("adcmask_10g", std::to_string(mask)); - - if (shm()->useReceiverFlag) { - int fnum = F_RECEIVER_SET_ADC_MASK_10G; - int retval = -1; - LOG(logDEBUG1) << "Setting 10Gb ADC Enable mask to 0x" << std::hex - << mask << std::dec << " in receiver"; - sendToReceiver(fnum, mask, retval); - } -} - -uint32_t Module::getTenGigaADCEnableMask() { - return sendToDetector(F_GET_ADC_ENABLE_MASK_10G); -} - void Module::setADCInvert(uint32_t value) { LOG(logDEBUG1) << "Setting ADC Invert to 0x" << std::hex << value << std::dec; @@ -2621,51 +2775,6 @@ uint32_t Module::getADCInvert() { return sendToDetector(F_GET_ADC_INVERT); } -int Module::setExternalSamplingSource(int value) { - return sendToDetector(F_EXTERNAL_SAMPLING_SOURCE, value); -} - -int Module::getExternalSamplingSource() { - return setExternalSamplingSource(-1); -} - -void Module::setExternalSampling(bool value) { - sendToDetector(F_EXTERNAL_SAMPLING, static_cast(value)); -} - -bool Module::getExternalSampling() { - int arg = -1; - return sendToDetector(F_EXTERNAL_SAMPLING, arg); -} - -void Module::setReceiverDbitList(const std::vector &list) { - LOG(logDEBUG1) << "Setting Receiver Dbit List"; - if (list.size() > 64) { - throw sls::RuntimeError("Dbit list size cannot be greater than 64\n"); - } - for (auto &it : list) { - if (it < 0 || it > 63) { - throw sls::RuntimeError( - "Dbit list value must be between 0 and 63\n"); - } - } - sls::StaticVector arg = list; - sendToReceiver(F_SET_RECEIVER_DBIT_LIST, arg, nullptr); -} - -std::vector Module::getReceiverDbitList() const { - return sendToReceiver>( - F_GET_RECEIVER_DBIT_LIST); -} - -void Module::setReceiverDbitOffset(int value) { - sendToReceiver(F_SET_RECEIVER_DBIT_OFFSET, value, nullptr); -} - -int Module::getReceiverDbitOffset() { - return sendToReceiver(F_GET_RECEIVER_DBIT_OFFSET); -} - void Module::writeAdcRegister(uint32_t addr, uint32_t val) { uint32_t args[]{addr, val}; LOG(logDEBUG1) << "Writing to ADC register 0x" << std::hex << addr @@ -2880,131 +2989,6 @@ void Module::restreamStopFromReceiver() { } } -void Module::setPattern(const std::string &fname) { - uint64_t word; - uint64_t addr = 0; - FILE *fd = fopen(fname.c_str(), "r"); - if (fd != nullptr) { - while (fread(&word, sizeof(word), 1, fd) != 0U) { - setPatternWord(addr, word); // TODO! (Erik) do we need to send - // pattern in 64bit chunks? - ++addr; - } - fclose(fd); - } else { - throw RuntimeError("Could not open file to set pattern"); - } -} - -uint64_t Module::setPatternIOControl(uint64_t word) { - LOG(logDEBUG1) << "Setting Pattern IO Control, word: 0x" << std::hex << word - << std::dec; - return sendToDetector(F_SET_PATTERN_IO_CONTROL, word); -} - -uint64_t Module::setPatternClockControl(uint64_t word) { - LOG(logDEBUG1) << "Setting Pattern Clock Control, word: 0x" << std::hex - << word << std::dec; - return sendToDetector(F_SET_PATTERN_CLOCK_CONTROL, word); -} - -uint64_t Module::setPatternWord(int addr, uint64_t word) { - uint64_t args[]{static_cast(addr), word}; - - LOG(logDEBUG1) << "Setting Pattern word, addr: 0x" << std::hex << addr - << ", word: 0x" << word << std::dec; - return sendToDetector(F_SET_PATTERN_WORD, args); -} - -std::array Module::setPatternLoopAddresses(int level, int start, - int stop) { - int args[]{level, start, stop}; - std::array retvals{}; - LOG(logDEBUG1) << "Setting Pat Loop Addresses, level: " << level - << ", start: " << start << ", stop: " << stop; - sendToDetector(F_SET_PATTERN_LOOP_ADDRESSES, args, retvals); - LOG(logDEBUG1) << "Set Pat Loop Addresses: " << retvals[0] << ", " - << retvals[1]; - return retvals; -} - -int Module::setPatternLoopCycles(int level, int n) { - int args[]{level, n}; - LOG(logDEBUG1) << "Setting Pat Loop cycles, level: " << level - << ",nloops: " << n; - return sendToDetector(F_SET_PATTERN_LOOP_CYCLES, args); -} - -int Module::setPatternWaitAddr(int level, int addr) { - int args[]{level, addr}; - LOG(logDEBUG1) << "Setting Pat Wait Addr, level: " << level << ", addr: 0x" - << std::hex << addr << std::dec; - return sendToDetector(F_SET_PATTERN_WAIT_ADDR, args); -} - -uint64_t Module::setPatternWaitTime(int level, uint64_t t) { - uint64_t args[]{static_cast(level), t}; - return sendToDetector(F_SET_PATTERN_WAIT_TIME, args); -} - -void Module::setPatternMask(uint64_t mask) { - LOG(logDEBUG1) << "Setting Pattern Mask " << std::hex << mask << std::dec; - sendToDetector(F_SET_PATTERN_MASK, mask, nullptr); -} - -uint64_t Module::getPatternMask() { - return sendToDetector(F_GET_PATTERN_MASK); -} - -void Module::setPatternBitMask(uint64_t mask) { - LOG(logDEBUG1) << "Setting Pattern Bit Mask " << std::hex << mask - << std::dec; - sendToDetector(F_SET_PATTERN_BIT_MASK, mask, nullptr); - LOG(logDEBUG1) << "Pattern Bit Mask successful"; -} - -uint64_t Module::getPatternBitMask() { - return sendToDetector(F_GET_PATTERN_BIT_MASK); -} - -void Module::startPattern() { sendToDetector(F_START_PATTERN); } - -int Module::setLEDEnable(int enable) { - return sendToDetector(F_LED, enable); -} - -void Module::setDigitalIODelay(uint64_t pinMask, int delay) { - uint64_t args[]{pinMask, static_cast(delay)}; - LOG(logDEBUG1) << "Sending Digital IO Delay, pin mask: " << std::hex - << args[0] << ", delay: " << std::dec << args[1] << " ps"; - sendToDetector(F_DIGITAL_IO_DELAY, args, nullptr); - LOG(logDEBUG1) << "Digital IO Delay successful"; -} - -int Module::getPipeline(int clkIndex) { - return sendToDetector(F_GET_PIPELINE, clkIndex); -} - -void Module::setPipeline(int clkIndex, int value) { - int args[]{clkIndex, value}; - LOG(logDEBUG1) << "Setting Clock " << clkIndex << " pipeline to " << value; - sendToDetector(F_SET_PIPELINE, args, nullptr); -} - -void Module::setCounterMask(uint32_t countermask) { - LOG(logDEBUG1) << "Setting Counter mask to " << countermask; - sendToDetector(F_SET_COUNTER_MASK, countermask, nullptr); - if (shm()->useReceiverFlag) { - int ncounters = __builtin_popcount(countermask); - LOG(logDEBUG1) << "Sending Reciver #counters: " << ncounters; - sendToReceiver(F_RECEIVER_SET_NUM_COUNTERS, ncounters, nullptr); - } -} - -uint32_t Module::getCounterMask() { - return sendToDetector(F_GET_COUNTER_MASK); -} - sls_detector_module Module::interpolateTrim(sls_detector_module *a, sls_detector_module *b, const int energy, const int e1, diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index 5c0e7b224..8d106e726 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -361,6 +361,105 @@ class Module : public virtual slsDetectorDefs { * Gotthard2 Specific * * * * ************************************************/ + int64_t getNumberOfBursts(); + void setNumberOfBursts(int64_t value); + int64_t getBurstPeriod(); + void setBurstPeriod(int64_t value); + std::array getInjectChannel(); + void setInjectChannel(const int offsetChannel, const int incrementChannel); + std::vector getVetoPhoton(const int chipIndex); + void setVetoPhoton(const int chipIndex, const int numPhotons, + const int energy, const std::string &fname); + void setVetoReference(const int gainIndex, const int value); + burstMode getBurstMode(); + void setBurstMode(burstMode value); + bool getCurrentSource(); + void setCurrentSource(bool value); + slsDetectorDefs::timingSourceType getTimingSource(); + void setTimingSource(slsDetectorDefs::timingSourceType value); + bool getVeto(); + void setVeto(bool enable); + + /************************************************** + * * + * Mythen3 Specific * + * * + * ************************************************/ + uint32_t getCounterMask(); + void setCounterMask(uint32_t countermask); + int getNumberOfGates(); + void setNumberOfGates(int value); + std::array getExptimeForAllGates(); + int64_t getGateDelay(int gateIndex); + void setGateDelay(int gateIndex, int64_t value); + std::array getGateDelayForAllGates(); + + /************************************************** + * * + * CTB / Moench Specific * + * * + * ************************************************/ + int getNumberOfAnalogSamples(); + void setNumberOfAnalogSamples(int value); + int getPipeline(int clkIndex); + void setPipeline(int clkIndex, int value); + uint32_t getADCEnableMask(); + void setADCEnableMask(uint32_t mask); + uint32_t getTenGigaADCEnableMask(); + void setTenGigaADCEnableMask(uint32_t mask); + + /************************************************** + * * + * CTB Specific * + * * + * ************************************************/ + int getNumberOfDigitalSamples(); + void setNumberOfDigitalSamples(int value); + readoutMode getReadoutMode(); + void setReadoutMode(const readoutMode mode); + int getExternalSamplingSource(); + int setExternalSamplingSource(int value); + bool getExternalSampling(); + void setExternalSampling(bool value); + std::vector getReceiverDbitList() const; + void setReceiverDbitList(const std::vector &list); + int getReceiverDbitOffset(); + void setReceiverDbitOffset(int value); + void setDigitalIODelay(uint64_t pinMask, int delay); + bool getLEDEnable(); + void setLEDEnable(bool enable); + + /************************************************** + * * + * Pattern * + * * + * ************************************************/ + void setPattern(const std::string &fname); + uint64_t getPatternIOControl(); + void setPatternIOControl(uint64_t word); + uint64_t getPatternClockControl(); + void setPatternClockControl(uint64_t word); + uint64_t getPatternWord(int addr); + void setPatternWord(int addr, uint64_t word); + std::array getPatternLoopAddresses(int level); + void setPatternLoopAddresses(int level, int start, int stop); + int getPatternLoopCycles(int level); + void setPatternLoopCycles(int level, int n); + int getPatternWaitAddr(int level); + void setPatternWaitAddr(int level, int addr); + uint64_t getPatternWaitTime(int level); + void setPatternWaitTime(int level, uint64_t t); + uint64_t getPatternMask(); + void setPatternMask(uint64_t mask); + uint64_t getPatternBitMask(); + void setPatternBitMask(uint64_t mask); + void startPattern(); + + /************************************************** + * * + * Moench * + * * + * ************************************************/ /** * Set Detector offset in shared memory in dimension d @@ -445,48 +544,6 @@ class Module : public virtual slsDetectorDefs { */ void configureMAC(); - /** [Gotthard2] only in burst mode and in auto timing mode */ - int64_t getNumberOfBursts(); - - /** [Gotthard2] only in burst mode and in auto timing mode */ - void setNumberOfBursts(int64_t value); - - /** [CTB][Moench] */ - int getNumberOfAnalogSamples(); - - /** [CTB][Moench] */ - void setNumberOfAnalogSamples(int value); - - /** [CTB] */ - int getNumberOfDigitalSamples(); - - /** [CTB] */ - void setNumberOfDigitalSamples(int value); - - /** [Mythen3] */ - int getNumberOfGates(); - - /** [Mythen3] */ - void setNumberOfGates(int value); - - /** [Mythen3] for all gates */ - std::array getExptimeForAllGates(); - - /** [Mythen3] gatIndex: 0-2 */ - int64_t getGateDelay(int gateIndex); - - /** [Mythen3] gatIndex: -1 for all, 0-2 */ - void setGateDelay(int gateIndex, int64_t value); - - /** [Mythen3] for all gates */ - std::array getGateDelayForAllGates(); - - /** [Gotthard2] only in burst mode and in auto timing mode */ - int64_t getBurstPeriod(); - - /** [Gotthard2] only in burst mode and in auto timing mode */ - void setBurstPeriod(int64_t value); - /** [Jungfrau][CTB][Moench][Mythen3] * [Gotthard2] only in continuous mode */ int64_t getNumberOfFramesFromStart() const; @@ -499,19 +556,6 @@ class Module : public virtual slsDetectorDefs { * [Gotthard2] only in continuous mode */ int64_t getMeasurementTime() const; - /** - * [Ctb] - * @param mode readout mode Options: ANALOG_ONLY, DIGITAL_ONLY, - * ANALOG_AND_DIGITAL - */ - void setReadoutMode(const readoutMode mode); - - /** - * [Ctb] - * @returns readout mode - */ - readoutMode getReadoutMode(); - /** * Write in a register. For Advanced users * @param addr address of register @@ -570,71 +614,6 @@ class Module : public virtual slsDetectorDefs { /** [Gotthard][Jungfrau][CTB][Moench] */ void executeBusTest(); - /** [Gotthard2] */ - std::array getInjectChannel(); - - /** [Gotthard2] - * @param offsetChannel starting channel to be injected - * @param incrementChannel determines succeeding channels to be injected */ - void setInjectChannel(const int offsetChannel, const int incrementChannel); - - /** [Gotthard2] asic input */ - std::vector getVetoPhoton(const int chipIndex); - - /** [Gotthard2] energy in keV */ - void setVetoPhoton(const int chipIndex, const int numPhotons, - const int energy, const std::string &fname); - - void setVetoReference(const int gainIndex, const int value); - - /** [Gotthard2] */ - burstMode getBurstMode(); - - /** [Gotthard2] BURST_OFF, BURST_INTERNAL (default), BURST_EXTERNAL */ - void setBurstMode(burstMode value); - - /** [Gotthard2] */ - bool getCurrentSource(); - - /** default disabled */ - void setCurrentSource(bool value); - - /** [Gotthard2] */ - slsDetectorDefs::timingSourceType getTimingSource(); - - /** [Gotthard2] Options: TIMING_INTERNAL, TIMING_EXTERNAL */ - void setTimingSource(slsDetectorDefs::timingSourceType value); - - /** [Gotthard2] */ - bool getVeto(); - - /** default disabled */ - void setVeto(bool enable); - - /** - * Set ADC Enable Mask (CTB, Moench) - * @param mask ADC Enable mask - */ - void setADCEnableMask(uint32_t mask); - - /** - * Get ADC Enable Mask (CTB, Moench) - * @returns ADC Enable mask - */ - uint32_t getADCEnableMask(); - - /** - * Set 10Gb ADC Enable Mask (CTB, Moench) - * @param mask ADC Enable mask - */ - void setTenGigaADCEnableMask(uint32_t mask); - - /** - * Get 10Gb ADC Enable Mask (CTB, Moench) - * @returns ADC Enable mask - */ - uint32_t getTenGigaADCEnableMask(); - /** * Set ADC invert register (CTB, Moench, Jungfrau) * @param value ADC invert value @@ -649,33 +628,6 @@ class Module : public virtual slsDetectorDefs { */ uint32_t getADCInvert(); - /** - * Set external sampling source (CTB only) - * @param value external sampling source (Option: 0-63) - * @param detPos -1 for all detectors in list or specific detector position - * @returns external sampling source - */ - int setExternalSamplingSource(int value); - - /** - * Get external sampling source (CTB only) - * @param detPos -1 for all detectors in list or specific detector position - * @returns external sampling source - */ - int getExternalSamplingSource(); - - void setExternalSampling(bool value); - - bool getExternalSampling(); - - /** digital data bits enable (CTB only) */ - void setReceiverDbitList(const std::vector &list); - std::vector getReceiverDbitList() const; - - /** Set digital data offset in bytes (CTB only) */ - void setReceiverDbitOffset(int value); - int getReceiverDbitOffset(); - /** * Write to ADC register (Gotthard, Jungfrau, ChipTestBoard). For expert * users @@ -770,124 +722,6 @@ class Module : public virtual slsDetectorDefs { */ void restreamStopFromReceiver(); - /** - * Opens pattern file and sends pattern to CTB - * @param fname pattern file to open - */ - void setPattern(const std::string &fname); - - /** - * Sets pattern IO control (CTB/ Moench) - * @param word 64bit word to be written, -1 gets - * @returns actual value - */ - uint64_t setPatternIOControl(uint64_t word = -1); - - /** - * Sets pattern clock control (CTB/ Moench) - * @param word 64bit word to be written, -1 gets - * @returns actual value - */ - uint64_t setPatternClockControl(uint64_t word = -1); - - /** - * Writes a pattern word (CTB/ Moench/ Mythen3) - * @param addr address of the word - * @param word 64bit word to be written, -1 reads the addr (same as - * executing the pattern for ctb) - * @returns actual value - */ - uint64_t setPatternWord(int addr, uint64_t word); - - /** - * Sets the pattern or loop limits (CTB/ Moench/ Mythen3) - * @param level -1 complete pattern, 0,1,2, loop level - * @param start start address for level 0-2, -1 gets - * @param stop stop address for level 0-2, -1 gets - * @returns array of start addr and stop addr - */ - std::array setPatternLoopAddresses(int level = -1, int start = -1, - int stop = -1); - - /** - * Sets the pattern or loop limits (CTB/ Moench/ Mythen3) - * @param level -1 complete pattern, 0,1,2, loop level - * @param n number of loops for level 0-2, -1 gets - * @returns number of loops - */ - int setPatternLoopCycles(int level = -1, int n = -1); - - /** - * Sets the wait address (CTB/ Moench/ Mythen3) - * @param level 0,1,2, wait level - * @param addr wait address, -1 gets - * @returns actual value - */ - int setPatternWaitAddr(int level, int addr = -1); - - /** - * Sets the wait time (CTB/ Moench/ Mythen3) - * @param level 0,1,2, wait level - * @param t wait time, -1 gets - * @returns actual value - */ - uint64_t setPatternWaitTime(int level, uint64_t t = -1); - - /** - * Sets the mask applied to every pattern (CTB/ Moench/ Mythen3) - * @param mask mask to be applied - */ - void setPatternMask(uint64_t mask); - - /** - * Gets the mask applied to every pattern (CTB/ Moench/ Mythen3) - * @returns mask set - */ - uint64_t getPatternMask(); - - /** - * Selects the bits that the mask will be applied to for every pattern (CTB/ - * Moench/ Mythen3) - * @param mask mask to select bits - */ - void setPatternBitMask(uint64_t mask); - - /** - * Gets the bits that the mask will be applied to for every pattern (CTB/ - * Moench/ Mythen3) - * @returns mask of bits selected - */ - uint64_t getPatternBitMask(); - - /** [Mythen3] */ - void startPattern(); - - /** - * Set LED Enable (Moench, CTB only) - * @param enable 1 to switch on, 0 to switch off, -1 gets - * @returns LED enable - */ - int setLEDEnable(int enable = -1); - - /** - * Set Digital IO Delay (Moench, CTB only) - * @param digital IO mask to select the pins - * @param delay delay in ps(1 bit=25ps, max of 775 ps) - */ - void setDigitalIODelay(uint64_t pinMask, int delay); - - /** [Ctb][Moench] */ - int getPipeline(int clkIndex); - - /** [Ctb][Moench] */ - void setPipeline(int clkIndex, int value); - - /** [Mythen3] */ - void setCounterMask(uint32_t countermask); - - /** [Mythen3] */ - uint32_t getCounterMask(); - private: /** * Send function parameters to detector (control server) From 7cc05ead89e30f2d72f9bd91da37ff9bfba931a4 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 18 Jun 2020 12:41:10 +0200 Subject: [PATCH 07/10] WIP --- .../slsDetectorFunctionList.c | 59 +- .../slsDetectorServer_defs.h | 1 - .../slsDetectorFunctionList.c | 17 - .../slsDetectorFunctionList.c | 17 - .../slsDetectorFunctionList.c | 10 - .../include/communication_funcs.h | 1 - .../include/slsDetectorFunctionList.h | 3 - .../include/slsDetectorServer_funcs.h | 5 - .../src/communication_funcs.c | 62 -- .../src/slsDetectorServer_funcs.c | 138 +-- slsDetectorSoftware/include/Detector.h | 9 +- slsDetectorSoftware/src/CmdProxy.cpp | 4 +- slsDetectorSoftware/src/CmdProxy.h | 5 - slsDetectorSoftware/src/Detector.cpp | 17 +- slsDetectorSoftware/src/Module.cpp | 981 ++++++++---------- slsDetectorSoftware/src/Module.h | 349 +------ slsReceiverSoftware/src/ClientInterface.cpp | 7 - slsReceiverSoftware/src/ClientInterface.h | 1 - slsSupportLib/include/sls_detector_funcs.h | 14 - 19 files changed, 468 insertions(+), 1232 deletions(-) diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c index 30b357b6e..0b9edfe78 100644 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c @@ -60,7 +60,6 @@ int eiger_iodelay = 0; int eiger_photonenergy = 0; int eiger_dynamicrange = 0; int eiger_parallelmode = 0; -int eiger_storeinmem = 0; int eiger_overflow32 = 0; int eiger_readoutspeed = 0; int eiger_triggermode = 0; @@ -687,8 +686,7 @@ void setupDetector() { setDynamicRange(DEFAULT_DYNAMIC_RANGE); eiger_photonenergy = DEFAULT_PHOTON_ENERGY; setParallelMode(DEFAULT_PARALLEL_MODE); - setOverFlowMode(DEFAULT_READOUT_STOREINRAM_MODE); - setStoreInRamMode(DEFAULT_READOUT_OVERFLOW32_MODE); + setOverFlowMode(DEFAULT_READOUT_OVERFLOW32_MODE); setClockDivider(RUN_CLK, DEFAULT_CLK_SPEED); // clk_devider,half speed setIODelay(DEFAULT_IO_DELAY); setTiming(DEFAULT_TIMING_MODE); @@ -805,14 +803,6 @@ int setOverFlowMode(int mode) { int getOverFlowMode() { return eiger_overflow32; } -void setStoreInRamMode(int mode) { - mode = (mode == 0 ? 0 : 1); - LOG(logINFO, ("Setting Store in Ram mode to %d\n", mode)); - eiger_storeinmem = mode; -} - -int getStoreInRamMode() { return eiger_storeinmem; } - /* parameters - timer */ int setStartingFrameNumber(uint64_t value) { @@ -1118,37 +1108,6 @@ int setModule(sls_detector_module myMod, char *mess) { return OK; } -int getModule(sls_detector_module *myMod) { - -#ifndef VIRTUAL - // trimbits - unsigned int *tt; - tt = Feb_Control_GetTrimbits(); - - // exclude gap pixels - int ip = 0, ich = 0; - for (int iy = 0; iy < 256; ++iy) { - for (int ichip = 0; ichip < 4; ++ichip) { - for (int ix = 0; ix < 256; ++iy) { - myMod->chanregs[ich++] = tt[ip++]; - } - if (ichip < 3) { - ip++; - ip++; - } - } - } -#endif - - // copy local module to myMod - if (detectorModules) { - if (copyModule(myMod, detectorModules) == FAIL) - return FAIL; - } else - return FAIL; - return OK; -} - enum detectorSettings setSettings(enum detectorSettings sett) { if (sett == UNINITIALIZED) { return thisSettings; @@ -2057,10 +2016,8 @@ int startStateMachine() { LOG(logINFO, ("Going to start acquisition\n")); Feb_Control_StartAcquisition(); - if (!eiger_storeinmem) { - LOG(logINFO, ("requesting images right after start\n")); - ret = startReadOut(); - } + LOG(logINFO, ("requesting images right after start\n")); + ret = startReadOut(); // wait for acquisition start if (ret == OK) { @@ -2382,16 +2339,6 @@ void readFrame(int *ret, char *mess) { } LOG(logINFOGREEN, ("Acquisition finished\n")); - if (eiger_storeinmem) { - LOG(logINFO, ("requesting images after storing in memory\n")); - if (startReadOut() == FAIL) { - strcpy(mess, "Could not execute read image requests\n"); - LOG(logERROR, (mess)); - *ret = (int)FAIL; - return; - } - } - // wait for detector to send int isTransmitting = 1; while (isTransmitting) { diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h b/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h index a5921fe44..76268dedf 100644 --- a/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h +++ b/slsDetectorServers/eigerDetectorServer/slsDetectorServer_defs.h @@ -103,7 +103,6 @@ enum MASTERINDEX { MASTER_HARDWARE, OW_MASTER, OW_SLAVE }; #define DEFAULT_DYNAMIC_RANGE (16) #define DEFAULT_PARALLEL_MODE (1) -#define DEFAULT_READOUT_STOREINRAM_MODE (0) #define DEFAULT_READOUT_OVERFLOW32_MODE (0) #define DEFAULT_CLK_SPEED (FULL_SPEED) #define DEFAULT_IO_DELAY (650) diff --git a/slsDetectorServers/gotthardDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/gotthardDetectorServer/slsDetectorFunctionList.c index 407b54c46..10dbc7bb8 100644 --- a/slsDetectorServers/gotthardDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/gotthardDetectorServer/slsDetectorFunctionList.c @@ -945,23 +945,6 @@ int setModule(sls_detector_module myMod, char *mess) { return OK; } -int getModule(sls_detector_module *myMod) { - for (int idac = 0; idac < NDAC; ++idac) { - if (dacValues[idac] >= 0) - *((myMod->dacs) + idac) = dacValues[idac]; - } - // check if all of them are not initialized - int initialized = 0; - for (int idac = 0; idac < NDAC; ++idac) { - if (dacValues[idac] >= 0) - initialized = 1; - } - if (initialized) { - return OK; - } - return FAIL; -} - enum detectorSettings setSettings(enum detectorSettings sett) { if (sett == UNINITIALIZED) return thisSettings; diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c index ee4bd1e7d..b4c38bea7 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -745,23 +745,6 @@ int setModule(sls_detector_module myMod, char *mess) { return OK; } -int getModule(sls_detector_module *myMod) { - for (int idac = 0; idac < NDAC; ++idac) { - if (dacValues[idac] >= 0) - *((myMod->dacs) + idac) = dacValues[idac]; - } - // check if all of them are not initialized - int initialized = 0; - for (int idac = 0; idac < NDAC; ++idac) { - if (dacValues[idac] >= 0) - initialized = 1; - } - if (initialized) { - return OK; - } - return FAIL; -} - enum detectorSettings setSettings(enum detectorSettings sett) { if (sett == UNINITIALIZED) return thisSettings; diff --git a/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c index 87cffcb72..4f6687adf 100644 --- a/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c @@ -600,16 +600,6 @@ int setModule(sls_detector_module myMod, char *mess) { return OK; } -int getModule(sls_detector_module *myMod) { - // copy local module to myMod - if (detectorModules) { - if (copyModule(myMod, detectorModules) == FAIL) - return FAIL; - } else - return FAIL; - return OK; -} - int setBit(int ibit, int patword) { return patword |= (1 << ibit); } int clearBit(int ibit, int patword) { return patword &= ~(1 << ibit); } diff --git a/slsDetectorServers/slsDetectorServer/include/communication_funcs.h b/slsDetectorServers/slsDetectorServer/include/communication_funcs.h index ad14b6dd2..e41283484 100644 --- a/slsDetectorServers/slsDetectorServer/include/communication_funcs.h +++ b/slsDetectorServers/slsDetectorServer/include/communication_funcs.h @@ -24,7 +24,6 @@ int receiveData(int file_des, void *buf, int length, intType itype); int sendDataOnly(int file_des, void *buf, int length); int receiveDataOnly(int file_des, void *buf, int length); -int sendModule(int file_des, sls_detector_module *myMod); int receiveModule(int file_des, sls_detector_module *myMod); /** diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h index febe29d11..cfeec2b49 100644 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h @@ -184,8 +184,6 @@ int setParallelMode(int mode); int getParallelMode(); int setOverFlowMode(int mode); int getOverFlowMode(); -void setStoreInRamMode(int mode); -int getStoreInRamMode(); #endif #ifdef CHIPTESTBOARDD int setReadoutMode(enum readoutMode mode); @@ -276,7 +274,6 @@ int64_t getMeasurementTime(); // parameters - module, settings #if (!defined(CHIPTESTBOARDD)) && (!defined(MOENCHD)) && (!defined(GOTTHARD2D)) int setModule(sls_detector_module myMod, char *mess); -int getModule(sls_detector_module *myMod); #endif #ifdef MYTHEN3D int setTrimbits(int *trimbits); diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h index 4513eb63c..b79faebd3 100644 --- a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h +++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h @@ -41,12 +41,10 @@ int get_adc(int); int write_register(int); int read_register(int); int set_module(int); -int get_module(int); int set_settings(int); int get_threshold_energy(int); int start_acquisition(int); int stop_acquisition(int); -int start_readout(int); int get_run_status(int); int start_and_read_all(int); int read_all(int); @@ -85,7 +83,6 @@ int get_measurement_time(int); int set_dynamic_range(int); int set_roi(int); int get_roi(int); -int exit_server(int); int lock_server(int); int get_last_client_ip(int); int set_port(int); @@ -181,8 +178,6 @@ int set_parallel_mode(int); int get_parallel_mode(int); int set_overflow_mode(int); int get_overflow_mode(int); -int set_storeinram(int); -int get_storeinram(int); int set_readout_mode(int); int get_readout_mode(int); int set_clock_frequency(int); diff --git a/slsDetectorServers/slsDetectorServer/src/communication_funcs.c b/slsDetectorServers/slsDetectorServer/src/communication_funcs.c index 5bb757591..8a5c4d103 100644 --- a/slsDetectorServers/slsDetectorServer/src/communication_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/communication_funcs.c @@ -404,68 +404,6 @@ int receiveDataOnly(int file_des, void *buf, int length) { return total_received; } -int sendModule(int file_des, sls_detector_module *myMod) { - int ts = 0, n = 0; - n = sendData(file_des, &(myMod->serialnumber), sizeof(myMod->serialnumber), - INT32); - if (!n) { - return -1; - } - ts += n; - n = sendData(file_des, &(myMod->nchan), sizeof(myMod->nchan), INT32); - if (!n) { - return -1; - } - ts += n; - n = sendData(file_des, &(myMod->nchip), sizeof(myMod->nchip), INT32); - if (!n) { - return -1; - } - ts += n; - n = sendData(file_des, &(myMod->ndac), sizeof(myMod->ndac), INT32); - if (!n) { - return -1; - } - ts += n; - n = sendData(file_des, &(myMod->reg), sizeof(myMod->reg), INT32); - if (!n) { - return -1; - } - ts += n; - n = sendData(file_des, &(myMod->iodelay), sizeof(myMod->iodelay), INT32); - if (!n) { - return -1; - } - ts += n; - n = sendData(file_des, &(myMod->tau), sizeof(myMod->tau), INT32); - if (!n) { - return -1; - } - ts += n; - n = sendData(file_des, &(myMod->eV), sizeof(myMod->eV), INT32); - if (!n) { - return -1; - } - ts += n; - // dacs - n = sendData(file_des, myMod->dacs, sizeof(int) * (myMod->ndac), INT32); - if (!n) { - return -1; - } - ts += n; - // channels -#if defined(EIGERD) || defined(MYTHEN3D) - n = sendData(file_des, myMod->chanregs, sizeof(int) * (myMod->nchan), - INT32); - if (!n) { - return -1; - } - ts += n; -#endif - LOG(logDEBUG1, ("module of size %d sent register %x\n", ts, myMod->reg)); - return ts; -} - int receiveModule(int file_des, sls_detector_module *myMod) { enum TLogLevel level = logDEBUG1; LOG(level, ("Receiving Module\n")); diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index d47e0a816..675c4fd77 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -155,15 +155,12 @@ void function_table() { flist[F_WRITE_REGISTER] = &write_register; flist[F_READ_REGISTER] = &read_register; flist[F_SET_MODULE] = &set_module; - flist[F_GET_MODULE] = &get_module; flist[F_SET_SETTINGS] = &set_settings; flist[F_GET_THRESHOLD_ENERGY] = &get_threshold_energy; flist[F_START_ACQUISITION] = &start_acquisition; flist[F_STOP_ACQUISITION] = &stop_acquisition; - flist[F_START_READOUT] = &start_readout; flist[F_GET_RUN_STATUS] = &get_run_status; flist[F_START_AND_READ_ALL] = &start_and_read_all; - flist[F_READ_ALL] = &read_all; flist[F_GET_NUM_FRAMES] = &get_num_frames; flist[F_SET_NUM_FRAMES] = &set_num_frames; flist[F_GET_NUM_TRIGGERS] = &get_num_triggers; @@ -201,7 +198,6 @@ void function_table() { flist[F_SET_DYNAMIC_RANGE] = &set_dynamic_range; flist[F_SET_ROI] = &set_roi; flist[F_GET_ROI] = &get_roi; - flist[F_EXIT_SERVER] = &exit_server; flist[F_LOCK_SERVER] = &lock_server; flist[F_GET_LAST_CLIENT_IP] = &get_last_client_ip; flist[F_SET_PORT] = &set_port; @@ -292,8 +288,6 @@ void function_table() { flist[F_GET_PARALLEL_MODE] = &get_parallel_mode; flist[F_SET_OVERFLOW_MODE] = &set_overflow_mode; flist[F_GET_OVERFLOW_MODE] = &get_overflow_mode; - flist[F_SET_STOREINRAM_MODE] = &set_storeinram; - flist[F_GET_STOREINRAM_MODE] = &get_storeinram; flist[F_SET_READOUT_MODE] = &set_readout_mode; flist[F_GET_READOUT_MODE] = &get_readout_mode; flist[F_SET_CLOCK_FREQUENCY] = &set_clock_frequency; @@ -1544,68 +1538,6 @@ int set_module(int file_des) { return Server_SendResult(file_des, INT32, NULL, 0); } -int get_module(int file_des) { - ret = OK; - memset(mess, 0, sizeof(mess)); - sls_detector_module module; - int *myDac = NULL; - int *myChan = NULL; - module.dacs = NULL; - module.chanregs = NULL; - - // allocate to send arguments - // allocate dacs - myDac = malloc(getNumberOfDACs() * sizeof(int)); - // error - if (getNumberOfDACs() > 0 && myDac == NULL) { - ret = FAIL; - sprintf(mess, "Could not allocate dacs\n"); - LOG(logERROR, (mess)); - } else - module.dacs = myDac; - -#if defined(CHIPTESTBOARDD) || defined(MOENCHD) || defined(GOTTHARD2D) - functionNotImplemented(); -#endif - -#if defined(EIGERD) || defined(MYTHEN3D) - // allocate chans - if (ret == OK) { - myChan = malloc(getTotalNumberOfChannels() * sizeof(int)); - if (getTotalNumberOfChannels() > 0 && myChan == NULL) { - ret = FAIL; - sprintf(mess, "Could not allocate chans\n"); - LOG(logERROR, (mess)); - } else - module.chanregs = myChan; - } -#endif - - // get module - if (ret == OK) { - module.nchip = getNumberOfChips(); - module.nchan = getTotalNumberOfChannels(); - module.ndac = getNumberOfDACs(); - - // only get - LOG(logDEBUG1, ("Getting module\n")); -#if !defined(CHIPTESTBOARDD) && !defined(MOENCHD) && !defined(GOTTHARD2D) - getModule(&module); -#endif - LOG(logDEBUG1, ("Getting module. Settings:%d\n", module.reg)); - } - - Server_SendResult(file_des, INT32, NULL, 0); - - // send module, 0 is to receive partially (without trimbits etc) - if (ret != FAIL) { - ret = sendModule(file_des, &module); - } - free(myChan); - free(myDac); - return ret; -} - int set_settings(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); @@ -1808,27 +1740,6 @@ int stop_acquisition(int file_des) { return Server_SendResult(file_des, INT32, NULL, 0); } -int start_readout(int file_des) { - ret = OK; - memset(mess, 0, sizeof(mess)); - - LOG(logDEBUG1, ("Starting readout\n")); -#ifndef EIGERD - functionNotImplemented(); -#else - // only set - if (Server_VerifyLock() == OK) { - ret = startReadOut(); - if (ret == FAIL) { - sprintf(mess, "Could not start readout\n"); - LOG(logERROR, (mess)); - } - LOG(logDEBUG1, ("Starting readout ret: %d\n", ret)); - } -#endif - return Server_SendResult(file_des, INT32, NULL, 0); -} - int get_run_status(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); @@ -2793,14 +2704,6 @@ int get_roi(int file_des) { return ret; } -int exit_server(int file_des) { - LOG(logINFORED, ("Closing Server\n")); - ret = OK; - memset(mess, 0, sizeof(mess)); - Server_SendResult(file_des, INT32, NULL, 0); - return GOODBYE; -} - int lock_server(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); @@ -5327,11 +5230,11 @@ int get_dest_udp_port(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); int retval = -1; - LOG(logDEBUG1, ("Getting destination porstore in ram moden")); + LOG(logDEBUG1, ("Getting destination port")); // get only retval = udpDetails.dstport; - LOG(logDEBUG, ("udp destination port retstore in ram model: %u\n", retval)); + LOG(logDEBUG, ("udp destination port retval: %u\n", retval)); return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); } @@ -5570,43 +5473,6 @@ int get_overflow_mode(int file_des) { return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); } -int set_storeinram(int file_des) { - ret = OK; - memset(mess, 0, sizeof(mess)); - int arg = 0; - - if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0) - return printSocketReadError(); - LOG(logINFO, ("Setting store in ram mode: %u\n", arg)); - -#ifndef EIGERD - functionNotImplemented(); -#else - // only set - if (Server_VerifyLock() == OK) { - setStoreInRamMode(arg); - } -#endif - return Server_SendResult(file_des, INT32, NULL, 0); -} - -int get_storeinram(int file_des) { - ret = OK; - memset(mess, 0, sizeof(mess)); - int retval = -1; - - LOG(logDEBUG1, ("Getting store in ram mode\n")); - -#ifndef EIGERD - functionNotImplemented(); -#else - // get only - retval = getStoreInRamMode(); - LOG(logDEBUG1, ("store in ram mode retval: %u\n", retval)); -#endif - return Server_SendResult(file_des, INT32, &retval, sizeof(retval)); -} - int set_readout_mode(int file_des) { ret = OK; memset(mess, 0, sizeof(mess)); diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index b7b4540d2..12cabdfba 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -765,12 +765,6 @@ class Detector { /** [Eiger] */ void setOverFlowMode(bool value, Positions pos = {}); - /** [Eiger] */ - Result getStoreInRamMode(Positions pos = {}) const; - - /** [Eiger] */ - void setStoreInRamMode(bool value, Positions pos = {}); - /** [Eiger] */ Result getBottom(Positions pos = {}) const; @@ -1412,7 +1406,8 @@ class Detector { Result getLastClientIP(Positions pos = {}) const; /** Execute a command on the detector server console */ - void executeCommand(const std::string &value, Positions pos = {}); + Result executeCommand(const std::string &value, + Positions pos = {}); /** [Jungfrau][Mythen3][CTB][Moench] * [Gotthard2] only in continuous mode */ diff --git a/slsDetectorSoftware/src/CmdProxy.cpp b/slsDetectorSoftware/src/CmdProxy.cpp index b0d74eb32..bd5284b23 100644 --- a/slsDetectorSoftware/src/CmdProxy.cpp +++ b/slsDetectorSoftware/src/CmdProxy.cpp @@ -2545,8 +2545,8 @@ std::string CmdProxy::ExecuteCommand(int action) { if (args.size() != 1) { WrongNumberOfParameters(1); } - det->executeCommand(args[0], {det_id}); - os << "successful" << '\n'; + auto t = det->executeCommand(args[0], {det_id}); + os << OutString(t) << '\n'; } else { throw sls::RuntimeError("Unknown action"); } diff --git a/slsDetectorSoftware/src/CmdProxy.h b/slsDetectorSoftware/src/CmdProxy.h index 0790f7b9b..caadfef47 100644 --- a/slsDetectorSoftware/src/CmdProxy.h +++ b/slsDetectorSoftware/src/CmdProxy.h @@ -766,7 +766,6 @@ class CmdProxy { {"settingspath", &CmdProxy::settingspath}, {"parallel", &CmdProxy::parallel}, {"overflow", &CmdProxy::overflow}, - {"storeinram", &CmdProxy::storeinram}, {"flippeddatax", &CmdProxy::flippeddatax}, {"trimen", &CmdProxy::TrimEnergies}, {"ratecorr", &CmdProxy::RateCorrection}, @@ -1776,10 +1775,6 @@ class CmdProxy { "[0, 1]\n\t[Eiger] Enable or disable show overflow flag in " "32 bit mode."); - INTEGER_COMMAND(storeinram, getStoreInRamMode, setStoreInRamMode, - StringTo, - "[0, 1]\n\t[Eiger] Enable or disable store in ram mode."); - INTEGER_COMMAND( flippeddatax, getBottom, setBottom, StringTo, "[0, 1]\n\t[Eiger] Top or Bottom Half of Eiger module. 1 is bottom, 0 " diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 54920668b..002682f5f 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -1064,14 +1064,6 @@ void Detector::setOverFlowMode(bool value, Positions pos) { pimpl->Parallel(&Module::setOverFlowMode, pos, value); } -Result Detector::getStoreInRamMode(Positions pos) const { - return pimpl->Parallel(&Module::getStoreInRamMode, pos); -} - -void Detector::setStoreInRamMode(bool value, Positions pos) { - pimpl->Parallel(&Module::setStoreInRamMode, pos, value); -} - Result Detector::getBottom(Positions pos) const { return pimpl->Parallel(&Module::getFlippedDataX, pos); } @@ -1873,19 +1865,20 @@ void Detector::setStopPort(int value, Positions pos) { } Result Detector::getDetectorLock(Positions pos) const { - return pimpl->Parallel(&Module::lockServer, pos, -1); + return pimpl->Parallel(&Module::getLockDetector, pos); } void Detector::setDetectorLock(bool lock, Positions pos) { - pimpl->Parallel(&Module::lockServer, pos, static_cast(lock)); + pimpl->Parallel(&Module::setLockDetector, pos, lock); } Result Detector::getLastClientIP(Positions pos) const { return pimpl->Parallel(&Module::getLastClientIP, pos); } -void Detector::executeCommand(const std::string &value, Positions pos) { - pimpl->Parallel(&Module::execCommand, pos, value); +Result Detector::executeCommand(const std::string &value, + Positions pos) { + return pimpl->Parallel(&Module::execCommand, pos, value); } Result Detector::getNumberOfFramesFromStart(Positions pos) const { diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 34732a4c8..3972d121c 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -398,6 +398,11 @@ void Module::stopAcquisition() { } } +void Module::startAndReadAll() { + shm()->stoppedFlag = false; + sendToDetector(F_START_AND_READ_ALL); +} + slsDetectorDefs::runStatus Module::getRunStatus() const { return sendToDetectorStop(F_GET_RUN_STATUS); } @@ -406,6 +411,10 @@ slsDetectorDefs::runStatus Module::getReceiverStatus() const { return sendToReceiver(F_GET_RECEIVER_STATUS); } +int Module::getReceiverProgress() const { + return sendToReceiver(F_GET_RECEIVER_PROGRESS); +} + int64_t Module::getFramesCaughtByReceiver() const { return sendToReceiver(F_GET_RECEIVER_FRAMES_CAUGHT); } @@ -1110,16 +1119,6 @@ void Module::setOverFlowMode(const bool enable) { sendToDetector(F_SET_OVERFLOW_MODE, arg, nullptr); } -bool Module::getStoreInRamMode() { - auto r = sendToDetector(F_GET_STOREINRAM_MODE); - return static_cast(r); -} - -void Module::setStoreInRamMode(const bool enable) { - int arg = static_cast(enable); - sendToDetector(F_SET_STOREINRAM_MODE, arg, nullptr); -} - bool Module::getFlippedDataX() { return sendToReceiver(F_SET_FLIPPED_DATA_RECEIVER, -1); } @@ -1864,6 +1863,248 @@ void Module::startPattern() { sendToDetector(F_START_PATTERN); } // Moench +std::map Module::getAdditionalJsonHeader() { + if (!shm()->useReceiverFlag) { + throw RuntimeError("Set rx_hostname first to use receiver parameters " + "(zmq json header)"); + } + int fnum = F_GET_ADDITIONAL_JSON_HEADER; + int ret = FAIL; + int size = 0; + auto client = ReceiverSocket(shm()->rxHostname, shm()->rxTCPPort); + client.Send(&fnum, sizeof(fnum)); + client.Receive(&ret, sizeof(ret)); + if (ret == FAIL) { + char mess[MAX_STR_LENGTH]{}; + client.Receive(mess, MAX_STR_LENGTH); + throw RuntimeError("Receiver " + std::to_string(moduleId) + + " returned error: " + std::string(mess)); + } else { + client.Receive(&size, sizeof(size)); + std::map retval; + if (size > 0) { + char retvals[size * 2][SHORT_STR_LENGTH]; + memset(retvals, 0, sizeof(retvals)); + client.Receive(retvals, sizeof(retvals)); + for (int i = 0; i < size; ++i) { + retval[retvals[2 * i]] = retvals[2 * i + 1]; + } + } + LOG(logDEBUG) << "Getting additional json header " << ToString(retval); + return retval; + } +} + +void Module::setAdditionalJsonHeader( + const std::map &jsonHeader) { + if (!shm()->useReceiverFlag) { + throw RuntimeError("Set rx_hostname first to use receiver parameters " + "(zmq json header)"); + } + for (auto &it : jsonHeader) { + if (it.first.empty() || it.first.length() > SHORT_STR_LENGTH || + it.second.length() > SHORT_STR_LENGTH) { + throw RuntimeError( + it.first + " or " + it.second + + " pair has invalid size. " + "Key cannot be empty. Both can have max 20 characters"); + } + } + const int size = jsonHeader.size(); + int fnum = F_SET_ADDITIONAL_JSON_HEADER; + int ret = FAIL; + LOG(logDEBUG) << "Sending to receiver additional json header " + << ToString(jsonHeader); + auto client = ReceiverSocket(shm()->rxHostname, shm()->rxTCPPort); + client.Send(&fnum, sizeof(fnum)); + client.Send(&size, sizeof(size)); + if (size > 0) { + char args[size * 2][SHORT_STR_LENGTH]; + memset(args, 0, sizeof(args)); + int iarg = 0; + for (auto &it : jsonHeader) { + sls::strcpy_safe(args[iarg], it.first.c_str()); + sls::strcpy_safe(args[iarg + 1], it.second.c_str()); + iarg += 2; + } + client.Send(args, sizeof(args)); + } + client.Receive(&ret, sizeof(ret)); + if (ret == FAIL) { + char mess[MAX_STR_LENGTH]{}; + client.Receive(mess, MAX_STR_LENGTH); + throw RuntimeError("Receiver " + std::to_string(moduleId) + + " returned error: " + std::string(mess)); + } +} + +std::string Module::getAdditionalJsonParameter(const std::string &key) { + char arg[SHORT_STR_LENGTH]{}; + sls::strcpy_safe(arg, key.c_str()); + char retval[SHORT_STR_LENGTH]{}; + sendToReceiver(F_GET_ADDITIONAL_JSON_PARAMETER, arg, retval); + return retval; +} + +void Module::setAdditionalJsonParameter(const std::string &key, + const std::string &value) { + if (key.empty() || key.length() > SHORT_STR_LENGTH || + value.length() > SHORT_STR_LENGTH) { + throw RuntimeError( + key + " or " + value + + " pair has invalid size. " + "Key cannot be empty. Both can have max 2 characters"); + } + char args[2][SHORT_STR_LENGTH]{}; + sls::strcpy_safe(args[0], key.c_str()); + sls::strcpy_safe(args[1], value.c_str()); + sendToReceiver(F_SET_ADDITIONAL_JSON_PARAMETER, args, nullptr); +} + +// Advanced + +void Module::programFPGA(std::vector buffer) { + switch (shm()->myDetectorType) { + case JUNGFRAU: + case CHIPTESTBOARD: + case MOENCH: + programFPGAviaBlackfin(buffer); + break; + case MYTHEN3: + case GOTTHARD2: + programFPGAviaNios(buffer); + break; + default: + throw RuntimeError("Program FPGA is not implemented for this detector"); + } +} + +void Module::resetFPGA() { return sendToDetector(F_RESET_FPGA); } + +void Module::copyDetectorServer(const std::string &fname, + const std::string &hostname) { + char args[2][MAX_STR_LENGTH]{}; + sls::strcpy_safe(args[0], fname.c_str()); + sls::strcpy_safe(args[1], hostname.c_str()); + LOG(logINFO) << "Sending detector server " << args[0] << " from host " + << args[1]; + sendToDetector(F_COPY_DET_SERVER, args, nullptr); +} + +void Module::rebootController() { + sendToDetector(F_REBOOT_CONTROLLER, nullptr, nullptr); + LOG(logINFO) << "Controller rebooted successfully!"; +} + +uint32_t Module::readRegister(uint32_t addr) { + return sendToDetectorStop(F_READ_REGISTER, addr); +} + +uint32_t Module::writeRegister(uint32_t addr, uint32_t val) { + uint32_t args[]{addr, val}; + return sendToDetectorStop(F_WRITE_REGISTER, args); +} + +uint32_t Module::setBit(uint32_t addr, int n) { + if (n < 0 || n > 31) { + throw RuntimeError("Bit number " + std::to_string(n) + " out of Range"); + } else { + uint32_t val = readRegister(addr); + return writeRegister(addr, val | 1 << n); + } +} + +uint32_t Module::clearBit(uint32_t addr, int n) { + if (n < 0 || n > 31) { + throw RuntimeError("Bit number " + std::to_string(n) + " out of Range"); + } else { + uint32_t val = readRegister(addr); + return writeRegister(addr, val & ~(1 << n)); + } +} + +void Module::executeFirmwareTest() { sendToDetector(F_SET_FIRMWARE_TEST); } + +void Module::executeBusTest() { sendToDetector(F_SET_BUS_TEST); } + +void Module::writeAdcRegister(uint32_t addr, uint32_t val) { + uint32_t args[]{addr, val}; + sendToDetector(F_WRITE_ADC_REG, args, nullptr); +} + +uint32_t Module::getADCInvert() { + return sendToDetector(F_GET_ADC_INVERT); +} + +void Module::setADCInvert(uint32_t value) { + sendToDetector(F_SET_ADC_INVERT, value, nullptr); +} + +// Insignificant + +int Module::getControlPort() const { return shm()->controlPort; } + +int Module::setControlPort(int port_number) { + if (port_number >= 0 && port_number != shm()->controlPort) { + if (strlen(shm()->hostname) > 0) { + shm()->controlPort = sendToDetector(F_SET_PORT, port_number); + } else { + shm()->controlPort = port_number; + } + } + return shm()->controlPort; +} + +int Module::getStopPort() const { return shm()->stopPort; } + +int Module::setStopPort(int port_number) { + if (port_number >= 0 && port_number != shm()->stopPort) { + if (strlen(shm()->hostname) > 0) { + shm()->stopPort = sendToDetectorStop(F_SET_PORT, port_number); + } else { + shm()->stopPort = port_number; + } + } + return shm()->stopPort; +} + +bool Module::getLockDetector() { + int arg = -1; + return static_cast(sendToDetector(F_LOCK_SERVER, arg)); +} + +void Module::setLockDetector(bool lock) { + sendToDetector(F_LOCK_SERVER, static_cast(lock)); +} + +sls::IpAddr Module::getLastClientIP() { + return sendToDetector(F_GET_LAST_CLIENT_IP); +} + +std::string Module::execCommand(const std::string &cmd) { + char arg[MAX_STR_LENGTH]{}; + char retval[MAX_STR_LENGTH]{}; + sls::strcpy_safe(arg, cmd.c_str()); + sendToDetector(F_EXEC_COMMAND, arg, retval); + return std::string(retval); +} + +int64_t Module::getNumberOfFramesFromStart() const { + return sendToDetectorStop(F_GET_FRAMES_FROM_START); +} + +int64_t Module::getActualTime() const { + return sendToDetectorStop(F_GET_ACTUAL_TIME); +} + +int64_t Module::getMeasurementTime() const { + return sendToDetectorStop(F_GET_MEASUREMENT_TIME); +} + +uint64_t Module::getReceiverCurrentFrameIndex() const { + return sendToReceiver(F_GET_RECEIVER_FRAME_INDEX); +} + // private void Module::sendToDetector(int fnum, const void *args, size_t args_size, @@ -2243,10 +2484,7 @@ void Module::initializeDetectorStructure(detectorType type) { } void Module::checkDetectorVersionCompatibility() { - int fnum = F_CHECK_VERSION; int64_t arg = 0; - - // get api version number for detector server switch (shm()->myDetectorType) { case EIGER: arg = APIEIGER; @@ -2273,21 +2511,20 @@ void Module::checkDetectorVersionCompatibility() { throw NotImplementedError( "Check version compatibility is not implemented for this detector"); } - LOG(logDEBUG1) << "Checking version compatibility with detector with value " - << std::hex << arg << std::dec; - - sendToDetector(fnum, arg, nullptr); - sendToDetectorStop(fnum, arg, nullptr); + sendToDetector(F_CHECK_VERSION, arg, nullptr); + sendToDetectorStop(F_CHECK_VERSION, arg, nullptr); } void Module::checkReceiverVersionCompatibility() { // TODO! Verify that this works as intended when version don't match int64_t arg = APIRECEIVER; - LOG(logDEBUG1) << "Checking version compatibility with receiver with value " - << std::hex << arg << std::dec; sendToReceiver(F_RECEIVER_CHECK_VERSION, arg, nullptr); } +void Module::restreamStopFromReceiver() { + sendToReceiver(F_RESTREAM_STOP_FROM_RECEIVER, nullptr, nullptr); +} + int Module::sendModule(sls_detector_module *myMod, sls::ClientSocket &client) { TLogLevel level = logDEBUG1; LOG(level) << "Sending Module"; @@ -2339,158 +2576,43 @@ int Module::sendModule(sls_detector_module *myMod, sls::ClientSocket &client) { return ts; } -int Module::receiveModule(sls_detector_module *myMod, - sls::ClientSocket &client) { - int ts = 0; - ts += client.Receive(&(myMod->serialnumber), sizeof(myMod->serialnumber)); - ts += client.Receive(&(myMod->nchan), sizeof(myMod->nchan)); - ts += client.Receive(&(myMod->nchip), sizeof(myMod->nchip)); - ts += client.Receive(&(myMod->ndac), sizeof(myMod->ndac)); - ts += client.Receive(&(myMod->reg), sizeof(myMod->reg)); - ts += client.Receive(&(myMod->iodelay), sizeof(myMod->iodelay)); - ts += client.Receive(&(myMod->tau), sizeof(myMod->tau)); - ts += client.Receive(&(myMod->eV), sizeof(myMod->eV)); - - ts += client.Receive(myMod->dacs, sizeof(int) * (myMod->ndac)); - LOG(logDEBUG1) << "received dacs of size " << ts; - if (shm()->myDetectorType == EIGER || shm()->myDetectorType == MYTHEN3) { - ts += client.Receive(myMod->chanregs, sizeof(int) * (myMod->nchan)); - LOG(logDEBUG1) << " nchan= " << myMod->nchan - << " nchip= " << myMod->nchip - << "received chans of size " << ts; +void Module::setModule(sls_detector_module &module, bool trimbits) { + int fnum = F_SET_MODULE; + int ret = FAIL; + LOG(logDEBUG1) << "Setting module with trimbits:" << trimbits; + // to exclude trimbits + if (!trimbits) { + module.nchan = 0; + module.nchip = 0; + } + auto client = DetectorSocket(shm()->hostname, shm()->controlPort); + client.Send(&fnum, sizeof(fnum)); + sendModule(&module, client); + client.Receive(&ret, sizeof(ret)); + if (ret == FAIL) { + char mess[MAX_STR_LENGTH] = {0}; + client.Receive(mess, sizeof(mess)); + throw RuntimeError("Detector " + std::to_string(moduleId) + + " returned error: " + mess); } - LOG(logDEBUG1) << "received module of size " << ts << " register " - << myMod->reg; - return ts; } -int Module::setControlPort(int port_number) { - int retval = -1; - LOG(logDEBUG1) << "Setting control port to " << port_number; - if (port_number >= 0 && port_number != shm()->controlPort) { - if (strlen(shm()->hostname) > 0) { - sendToDetector(F_SET_PORT, port_number, retval); - shm()->controlPort = retval; - LOG(logDEBUG1) << "Control port: " << retval; - } else { - shm()->controlPort = port_number; +void Module::updateReceiverStreamingIP() { + auto ip = getReceiverStreamingIP(); + if (ip == 0) { + // Hostname could be ip try to decode otherwise look up the hostname + ip = sls::IpAddr{shm()->rxHostname}; + if (ip == 0) { + ip = HostnameToIp(shm()->rxHostname); } + LOG(logINFO) << "Setting default receiver " << moduleId + << " streaming zmq ip to " << ip; } - return shm()->controlPort; + setReceiverStreamingIP(ip); } -int Module::setStopPort(int port_number) { - int retval = -1; - LOG(logDEBUG1) << "Setting stop port to " << port_number; - if (port_number >= 0 && port_number != shm()->stopPort) { - if (strlen(shm()->hostname) > 0) { - sendToDetectorStop(F_SET_PORT, port_number, retval); - shm()->stopPort = retval; - LOG(logDEBUG1) << "Stop port: " << retval; - } else { - shm()->stopPort = port_number; - } - } - return shm()->stopPort; -} - -int Module::getControlPort() const { return shm()->controlPort; } - -int Module::getStopPort() const { return shm()->stopPort; } - -bool Module::lockServer(int lock) { - return sendToDetector(F_LOCK_SERVER, lock) != 0; -} - -sls::IpAddr Module::getLastClientIP() { - return sendToDetector(F_GET_LAST_CLIENT_IP); -} - -void Module::exitServer() { sendToDetector(F_EXIT_SERVER); } - -void Module::execCommand(const std::string &cmd) { - char arg[MAX_STR_LENGTH]{}; - char retval[MAX_STR_LENGTH]{}; - sls::strcpy_safe(arg, cmd.c_str()); - LOG(logDEBUG1) << "Sending command to detector " << arg; - sendToDetector(F_EXEC_COMMAND, arg, retval); - if (strlen(retval) != 0U) { - LOG(logINFO) << "Detector " << moduleId << " returned:\n" << retval; - } -} - -std::vector Module::getConfigFileCommands() { - std::vector base{"hostname", "port", "stopport", - "settingsdir", "fpath", "lock", - "zmqport", "rx_zmqport", "zmqip", - "rx_zmqip", "rx_tcpport"}; - - switch (shm()->myDetectorType) { - case GOTTHARD: - base.emplace_back("detectormac"); - base.emplace_back("detectorip"); - base.emplace_back("rx_udpport"); - base.emplace_back("rx_udpip"); - base.emplace_back("rx_udpmac"); - base.emplace_back("extsig"); - break; - case EIGER: - base.emplace_back("detectormac"); - base.emplace_back("detectorip"); - base.emplace_back("rx_udpport"); - base.emplace_back("rx_udpport2"); - base.emplace_back("rx_udpip"); - base.emplace_back("rx_udpmac"); - base.emplace_back("trimen"); - base.emplace_back("iodelay"); - base.emplace_back("tengiga"); - break; - case JUNGFRAU: - base.emplace_back("detectormac"); - base.emplace_back("detectormac2"); - base.emplace_back("detectorip"); - base.emplace_back("detectorip2"); - base.emplace_back("rx_udpport"); - base.emplace_back("rx_udpport2"); - base.emplace_back("rx_udpip"); - base.emplace_back("rx_udpip2"); - base.emplace_back("rx_udpmac"); - base.emplace_back("rx_udpmac2"); - base.emplace_back("powerchip"); - break; - case CHIPTESTBOARD: - base.emplace_back("detectormac"); - base.emplace_back("detectorip"); - base.emplace_back("rx_udpport"); - base.emplace_back("rx_udpip"); - base.emplace_back("rx_udpmac"); - break; - case MOENCH: - base.emplace_back("detectormac"); - base.emplace_back("detectorip"); - base.emplace_back("rx_udpport"); - base.emplace_back("rx_udpip"); - base.emplace_back("rx_udpmac"); - break; - default: - throw RuntimeError( - "Write configuration file called with unknown detector: " + - std::to_string(shm()->myDetectorType)); - } - - base.emplace_back("vhighvoltage"); - base.emplace_back("rx_hostname"); - base.emplace_back("r_readfreq"); - base.emplace_back("rx_udpsocksize"); - base.emplace_back("rx_realudpsocksize"); - - std::vector commands; - for (const auto &cmd : base) { - std::ostringstream os; - os << moduleId << ':' << cmd; - commands.emplace_back(os.str()); - } - return commands; +void Module::updateRateCorrection() { + sendToDetector(F_UPDATE_RATE_CORRECTION); } void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, @@ -2552,6 +2674,76 @@ void Module::setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, } } +sls_detector_module Module::interpolateTrim(sls_detector_module *a, + sls_detector_module *b, + const int energy, const int e1, + const int e2, bool trimbits) { + + // only implemented for eiger currently (in terms of which dacs) + if (shm()->myDetectorType != EIGER) { + throw NotImplementedError( + "Interpolation of Trim values not implemented for this detector!"); + } + + sls_detector_module myMod{shm()->myDetectorType}; + enum eiger_DacIndex { + E_SVP, + E_VTR, + E_VRF, + E_VRS, + E_SVN, + E_VTGSTV, + E_VCMP_LL, + E_VCMP_LR, + E_CAL, + E_VCMP_RL, + E_RXB_RB, + E_RXB_LB, + E_VCMP_RR, + E_VCP, + E_VCN, + E_VIS + }; + + // Copy other dacs + int dacs_to_copy[] = {E_SVP, E_VTR, E_SVN, E_VTGSTV, + E_RXB_RB, E_RXB_LB, E_VCN, E_VIS}; + int num_dacs_to_copy = sizeof(dacs_to_copy) / sizeof(dacs_to_copy[0]); + for (int i = 0; i < num_dacs_to_copy; ++i) { + if (a->dacs[dacs_to_copy[i]] != b->dacs[dacs_to_copy[i]]) { + throw RuntimeError("Interpolate module: dacs different"); + } + myMod.dacs[dacs_to_copy[i]] = a->dacs[dacs_to_copy[i]]; + } + + // Copy irrelevant dacs (without failing): CAL + if (a->dacs[E_CAL] != b->dacs[E_CAL]) { + LOG(logWARNING) << "DAC CAL differs in both energies (" + << a->dacs[E_CAL] << "," << b->dacs[E_CAL] + << ")!\nTaking first: " << a->dacs[E_CAL]; + } + myMod.dacs[E_CAL] = a->dacs[E_CAL]; + + // Interpolate vrf, vcmp, vcp + int dacs_to_interpolate[] = {E_VRF, E_VCMP_LL, E_VCMP_LR, E_VCMP_RL, + E_VCMP_RR, E_VCP, E_VRS}; + int num_dacs_to_interpolate = + sizeof(dacs_to_interpolate) / sizeof(dacs_to_interpolate[0]); + for (int i = 0; i < num_dacs_to_interpolate; ++i) { + myMod.dacs[dacs_to_interpolate[i]] = + linearInterpolation(energy, e1, e2, a->dacs[dacs_to_interpolate[i]], + b->dacs[dacs_to_interpolate[i]]); + } + // Interpolate all trimbits + if (trimbits) { + for (int i = 0; i < myMod.nchan; ++i) { + myMod.chanregs[i] = linearInterpolation( + energy, e1, e2, a->chanregs[i], b->chanregs[i]); + } + } + return myMod; +} + std::string Module::getTrimbitFilename(detectorSettings s, int e_eV) { std::string ssettings; switch (s) { @@ -2582,220 +2774,66 @@ std::string Module::getTrimbitFilename(detectorSettings s, int e_eV) { return ostfn.str(); } -void Module::startAndReadAll() { - shm()->stoppedFlag = false; - sendToDetector(F_START_AND_READ_ALL); -} - -void Module::startReadOut() { sendToDetector(F_START_READOUT); } - -void Module::readAll() { sendToDetector(F_READ_ALL); } - -int64_t Module::getNumberOfFramesFromStart() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_FRAMES_FROM_START, nullptr, retval); - LOG(logDEBUG1) << "number of frames from start :" << retval; - return retval; -} - -int64_t Module::getActualTime() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_ACTUAL_TIME, nullptr, retval); - LOG(logDEBUG1) << "actual time :" << retval << "ns"; - return retval; -} - -int64_t Module::getMeasurementTime() const { - int64_t retval = -1; - sendToDetectorStop(F_GET_MEASUREMENT_TIME, nullptr, retval); - LOG(logDEBUG1) << "measurement time :" << retval << "ns"; - return retval; -} - -uint32_t Module::writeRegister(uint32_t addr, uint32_t val) { - uint32_t args[]{addr, val}; - uint32_t retval = -1; - sendToDetectorStop(F_WRITE_REGISTER, args, retval); - return retval; -} - -uint32_t Module::readRegister(uint32_t addr) { - uint32_t retval = -1; - sendToDetectorStop(F_READ_REGISTER, addr, retval); - return retval; -} - -uint32_t Module::setBit(uint32_t addr, int n) { - if (n < 0 || n > 31) { - throw RuntimeError("Bit number " + std::to_string(n) + " out of Range"); +sls_detector_module Module::readSettingsFile(const std::string &fname, + bool trimbits) { + LOG(logDEBUG1) << "Read settings file " << fname; + sls_detector_module myMod(shm()->myDetectorType); + // open file + std::ifstream infile; + if (shm()->myDetectorType == EIGER || shm()->myDetectorType == MYTHEN3) { + infile.open(fname.c_str(), std::ifstream::binary); } else { - uint32_t val = readRegister(addr); - return writeRegister(addr, val | 1 << n); + infile.open(fname.c_str(), std::ios_base::in); } -} - -uint32_t Module::clearBit(uint32_t addr, int n) { - if (n < 0 || n > 31) { - throw RuntimeError("Bit number " + std::to_string(n) + " out of Range"); - } else { - uint32_t val = readRegister(addr); - return writeRegister(addr, val & ~(1 << n)); + if (!infile.is_open()) { + throw RuntimeError("Could not open settings file: " + fname); } -} -void Module::updateReceiverStreamingIP() { - auto ip = getReceiverStreamingIP(); - if (ip == 0) { - // Hostname could be ip try to decode otherwise look up the hostname - ip = sls::IpAddr{shm()->rxHostname}; - if (ip == 0) { - ip = HostnameToIp(shm()->rxHostname); + // eiger + if (shm()->myDetectorType == EIGER) { + infile.read(reinterpret_cast(myMod.dacs), + sizeof(int) * (myMod.ndac)); + infile.read(reinterpret_cast(&myMod.iodelay), + sizeof(myMod.iodelay)); + infile.read(reinterpret_cast(&myMod.tau), sizeof(myMod.tau)); + if (trimbits) { + infile.read(reinterpret_cast(myMod.chanregs), + sizeof(int) * (myMod.nchan)); } - LOG(logINFO) << "Setting default receiver " << moduleId - << " streaming zmq ip to " << ip; + if (!infile) { + throw RuntimeError("readSettingsFile: Could not load all values " + "for settings for " + + fname); + } + for (int i = 0; i < myMod.ndac; ++i) { + LOG(logDEBUG1) << "dac " << i << ":" << myMod.dacs[i]; + } + LOG(logDEBUG1) << "iodelay:" << myMod.iodelay; + LOG(logDEBUG1) << "tau:" << myMod.tau; } - setReceiverStreamingIP(ip); -} -void Module::setAdditionalJsonHeader( - const std::map &jsonHeader) { - if (!shm()->useReceiverFlag) { - throw RuntimeError("Set rx_hostname first to use receiver parameters " - "(zmq json header)"); - } - for (auto &it : jsonHeader) { - if (it.first.empty() || it.first.length() > SHORT_STR_LENGTH || - it.second.length() > SHORT_STR_LENGTH) { - throw RuntimeError( - it.first + " or " + it.second + - " pair has invalid size. " - "Key cannot be empty. Both can have max 20 characters"); + // mythen3 (dacs, trimbits) + else if (shm()->myDetectorType == MYTHEN3) { + infile.read(reinterpret_cast(myMod.dacs), + sizeof(int) * (myMod.ndac)); + infile.read(reinterpret_cast(myMod.chanregs), + sizeof(int) * (myMod.nchan)); + + if (!infile) { + throw RuntimeError("readSettingsFile: Could not load all values " + "for settings for " + + fname); + } + for (int i = 0; i < myMod.ndac; ++i) { + LOG(logDEBUG1) << "dac " << i << ":" << myMod.dacs[i]; } } - const int size = jsonHeader.size(); - int fnum = F_SET_ADDITIONAL_JSON_HEADER; - int ret = FAIL; - LOG(logDEBUG) << "Sending to receiver additional json header " - << ToString(jsonHeader); - auto client = ReceiverSocket(shm()->rxHostname, shm()->rxTCPPort); - client.Send(&fnum, sizeof(fnum)); - client.Send(&size, sizeof(size)); - if (size > 0) { - char args[size * 2][SHORT_STR_LENGTH]; - memset(args, 0, sizeof(args)); - int iarg = 0; - for (auto &it : jsonHeader) { - sls::strcpy_safe(args[iarg], it.first.c_str()); - sls::strcpy_safe(args[iarg + 1], it.second.c_str()); - iarg += 2; - } - client.Send(args, sizeof(args)); - } - client.Receive(&ret, sizeof(ret)); - if (ret == FAIL) { - char mess[MAX_STR_LENGTH]{}; - client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Receiver " + std::to_string(moduleId) + - " returned error: " + std::string(mess)); - } -} - -std::map Module::getAdditionalJsonHeader() { - if (!shm()->useReceiverFlag) { - throw RuntimeError("Set rx_hostname first to use receiver parameters " - "(zmq json header)"); - } - int fnum = F_GET_ADDITIONAL_JSON_HEADER; - int ret = FAIL; - int size = 0; - auto client = ReceiverSocket(shm()->rxHostname, shm()->rxTCPPort); - client.Send(&fnum, sizeof(fnum)); - client.Receive(&ret, sizeof(ret)); - if (ret == FAIL) { - char mess[MAX_STR_LENGTH]{}; - client.Receive(mess, MAX_STR_LENGTH); - throw RuntimeError("Receiver " + std::to_string(moduleId) + - " returned error: " + std::string(mess)); - } else { - client.Receive(&size, sizeof(size)); - std::map retval; - if (size > 0) { - char retvals[size * 2][SHORT_STR_LENGTH]; - memset(retvals, 0, sizeof(retvals)); - client.Receive(retvals, sizeof(retvals)); - for (int i = 0; i < size; ++i) { - retval[retvals[2 * i]] = retvals[2 * i + 1]; - } - } - LOG(logDEBUG) << "Getting additional json header " << ToString(retval); - return retval; - } -} - -void Module::setAdditionalJsonParameter(const std::string &key, - const std::string &value) { - if (key.empty() || key.length() > SHORT_STR_LENGTH || - value.length() > SHORT_STR_LENGTH) { - throw RuntimeError( - key + " or " + value + - " pair has invalid size. " - "Key cannot be empty. Both can have max 2 characters"); - } - char args[2][SHORT_STR_LENGTH]{}; - sls::strcpy_safe(args[0], key.c_str()); - sls::strcpy_safe(args[1], value.c_str()); - sendToReceiver(F_SET_ADDITIONAL_JSON_PARAMETER, args, nullptr); -} - -std::string Module::getAdditionalJsonParameter(const std::string &key) { - char arg[SHORT_STR_LENGTH]{}; - sls::strcpy_safe(arg, key.c_str()); - char retval[SHORT_STR_LENGTH]{}; - sendToReceiver(F_GET_ADDITIONAL_JSON_PARAMETER, arg, retval); - return retval; -} - -void Module::executeFirmwareTest() { - LOG(logDEBUG1) << "Executing firmware test"; - sendToDetector(F_SET_FIRMWARE_TEST); -} - -void Module::executeBusTest() { - LOG(logDEBUG1) << "Executing bus test"; - sendToDetector(F_SET_BUS_TEST); -} - -void Module::setADCInvert(uint32_t value) { - LOG(logDEBUG1) << "Setting ADC Invert to 0x" << std::hex << value - << std::dec; - sendToDetector(F_SET_ADC_INVERT, value, nullptr); -} - -uint32_t Module::getADCInvert() { - return sendToDetector(F_GET_ADC_INVERT); -} - -void Module::writeAdcRegister(uint32_t addr, uint32_t val) { - uint32_t args[]{addr, val}; - LOG(logDEBUG1) << "Writing to ADC register 0x" << std::hex << addr - << "data: 0x" << std::hex << val << std::dec; - sendToDetector(F_WRITE_ADC_REG, args, nullptr); -} - -void Module::programFPGA(std::vector buffer) { - switch (shm()->myDetectorType) { - case JUNGFRAU: - case CHIPTESTBOARD: - case MOENCH: - programFPGAviaBlackfin(buffer); - break; - case MYTHEN3: - case GOTTHARD2: - programFPGAviaNios(buffer); - break; - default: - throw RuntimeError("Program FPGA is not implemented for this detector"); + + else { + throw RuntimeError("Not implemented for this detector"); } + LOG(logINFO) << "Settings file loaded: " << fname.c_str(); + return myMod; } void Module::programFPGAviaBlackfin(std::vector buffer) { @@ -2916,209 +2954,4 @@ void Module::programFPGAviaNios(std::vector buffer) { rebootController(); } -void Module::resetFPGA() { return sendToDetector(F_RESET_FPGA); } - -void Module::copyDetectorServer(const std::string &fname, - const std::string &hostname) { - char args[2][MAX_STR_LENGTH]{}; - sls::strcpy_safe(args[0], fname.c_str()); - sls::strcpy_safe(args[1], hostname.c_str()); - LOG(logINFO) << "Sending detector server " << args[0] << " from host " - << args[1]; - sendToDetector(F_COPY_DET_SERVER, args, nullptr); -} - -void Module::rebootController() { - LOG(logDEBUG1) << "Rebooting Controller"; - sendToDetector(F_REBOOT_CONTROLLER, nullptr, nullptr); - LOG(logINFO) << "Controller rebooted successfully!"; -} - -void Module::setModule(sls_detector_module &module, bool trimbits) { - int fnum = F_SET_MODULE; - int ret = FAIL; - LOG(logDEBUG1) << "Setting module with trimbits:" << trimbits; - // to exclude trimbits - if (!trimbits) { - module.nchan = 0; - module.nchip = 0; - } - auto client = DetectorSocket(shm()->hostname, shm()->controlPort); - client.Send(&fnum, sizeof(fnum)); - sendModule(&module, client); - client.Receive(&ret, sizeof(ret)); - if (ret == FAIL) { - char mess[MAX_STR_LENGTH] = {0}; - client.Receive(mess, sizeof(mess)); - throw RuntimeError("Detector " + std::to_string(moduleId) + - " returned error: " + mess); - } -} - -sls_detector_module Module::getModule() { - int fnum = F_GET_MODULE; - LOG(logDEBUG1) << "Getting module"; - sls_detector_module myMod{shm()->myDetectorType}; - auto client = DetectorSocket(shm()->hostname, shm()->controlPort); - client.sendCommandThenRead(fnum, nullptr, 0, nullptr, 0); - receiveModule(&myMod, client); - return myMod; -} - -void Module::updateRateCorrection() { - sendToDetector(F_UPDATE_RATE_CORRECTION); -} - -void Module::exitReceiver() { - LOG(logDEBUG1) << "Sending exit command to receiver server"; - sendToReceiver(F_EXIT_RECEIVER, nullptr, nullptr); -} - -uint64_t Module::getReceiverCurrentFrameIndex() const { - return sendToReceiver(F_GET_RECEIVER_FRAME_INDEX); -} - -int Module::getReceiverProgress() const { - return sendToReceiver(F_GET_RECEIVER_PROGRESS); -} - -void Module::restreamStopFromReceiver() { - LOG(logDEBUG1) << "Restream stop dummy from Receiver via zmq"; - if (shm()->useReceiverFlag) { - sendToReceiver(F_RESTREAM_STOP_FROM_RECEIVER, nullptr, nullptr); - } -} - -sls_detector_module Module::interpolateTrim(sls_detector_module *a, - sls_detector_module *b, - const int energy, const int e1, - const int e2, bool trimbits) { - - // only implemented for eiger currently (in terms of which dacs) - if (shm()->myDetectorType != EIGER) { - throw NotImplementedError( - "Interpolation of Trim values not implemented for this detector!"); - } - - sls_detector_module myMod{shm()->myDetectorType}; - enum eiger_DacIndex { - E_SVP, - E_VTR, - E_VRF, - E_VRS, - E_SVN, - E_VTGSTV, - E_VCMP_LL, - E_VCMP_LR, - E_CAL, - E_VCMP_RL, - E_RXB_RB, - E_RXB_LB, - E_VCMP_RR, - E_VCP, - E_VCN, - E_VIS - }; - - // Copy other dacs - int dacs_to_copy[] = {E_SVP, E_VTR, E_SVN, E_VTGSTV, - E_RXB_RB, E_RXB_LB, E_VCN, E_VIS}; - int num_dacs_to_copy = sizeof(dacs_to_copy) / sizeof(dacs_to_copy[0]); - for (int i = 0; i < num_dacs_to_copy; ++i) { - if (a->dacs[dacs_to_copy[i]] != b->dacs[dacs_to_copy[i]]) { - throw RuntimeError("Interpolate module: dacs different"); - } - myMod.dacs[dacs_to_copy[i]] = a->dacs[dacs_to_copy[i]]; - } - - // Copy irrelevant dacs (without failing): CAL - if (a->dacs[E_CAL] != b->dacs[E_CAL]) { - LOG(logWARNING) << "DAC CAL differs in both energies (" - << a->dacs[E_CAL] << "," << b->dacs[E_CAL] - << ")!\nTaking first: " << a->dacs[E_CAL]; - } - myMod.dacs[E_CAL] = a->dacs[E_CAL]; - - // Interpolate vrf, vcmp, vcp - int dacs_to_interpolate[] = {E_VRF, E_VCMP_LL, E_VCMP_LR, E_VCMP_RL, - E_VCMP_RR, E_VCP, E_VRS}; - int num_dacs_to_interpolate = - sizeof(dacs_to_interpolate) / sizeof(dacs_to_interpolate[0]); - for (int i = 0; i < num_dacs_to_interpolate; ++i) { - myMod.dacs[dacs_to_interpolate[i]] = - linearInterpolation(energy, e1, e2, a->dacs[dacs_to_interpolate[i]], - b->dacs[dacs_to_interpolate[i]]); - } - // Interpolate all trimbits - if (trimbits) { - for (int i = 0; i < myMod.nchan; ++i) { - myMod.chanregs[i] = linearInterpolation( - energy, e1, e2, a->chanregs[i], b->chanregs[i]); - } - } - return myMod; -} - -sls_detector_module Module::readSettingsFile(const std::string &fname, - bool trimbits) { - LOG(logDEBUG1) << "Read settings file " << fname; - sls_detector_module myMod(shm()->myDetectorType); - // open file - std::ifstream infile; - if (shm()->myDetectorType == EIGER || shm()->myDetectorType == MYTHEN3) { - infile.open(fname.c_str(), std::ifstream::binary); - } else { - infile.open(fname.c_str(), std::ios_base::in); - } - if (!infile.is_open()) { - throw RuntimeError("Could not open settings file: " + fname); - } - - // eiger - if (shm()->myDetectorType == EIGER) { - infile.read(reinterpret_cast(myMod.dacs), - sizeof(int) * (myMod.ndac)); - infile.read(reinterpret_cast(&myMod.iodelay), - sizeof(myMod.iodelay)); - infile.read(reinterpret_cast(&myMod.tau), sizeof(myMod.tau)); - if (trimbits) { - infile.read(reinterpret_cast(myMod.chanregs), - sizeof(int) * (myMod.nchan)); - } - if (!infile) { - throw RuntimeError("readSettingsFile: Could not load all values " - "for settings for " + - fname); - } - for (int i = 0; i < myMod.ndac; ++i) { - LOG(logDEBUG1) << "dac " << i << ":" << myMod.dacs[i]; - } - LOG(logDEBUG1) << "iodelay:" << myMod.iodelay; - LOG(logDEBUG1) << "tau:" << myMod.tau; - } - - // mythen3 (dacs, trimbits) - else if (shm()->myDetectorType == MYTHEN3) { - infile.read(reinterpret_cast(myMod.dacs), - sizeof(int) * (myMod.ndac)); - infile.read(reinterpret_cast(myMod.chanregs), - sizeof(int) * (myMod.nchan)); - - if (!infile) { - throw RuntimeError("readSettingsFile: Could not load all values " - "for settings for " + - fname); - } - for (int i = 0; i < myMod.ndac; ++i) { - LOG(logDEBUG1) << "dac " << i << ":" << myMod.dacs[i]; - } - } - - else { - throw RuntimeError("Not implemented for this detector"); - } - LOG(logINFO) << "Settings file loaded: " << fname.c_str(); - return myMod; -} - } // namespace sls \ No newline at end of file diff --git a/slsDetectorSoftware/src/Module.h b/slsDetectorSoftware/src/Module.h index 8d106e726..96e744d37 100644 --- a/slsDetectorSoftware/src/Module.h +++ b/slsDetectorSoftware/src/Module.h @@ -158,8 +158,10 @@ class Module : public virtual slsDetectorDefs { void prepareAcquisition(); void startAcquisition(); void stopAcquisition(); + void startAndReadAll(); runStatus getRunStatus() const; runStatus getReceiverStatus() const; + int getReceiverProgress() const; int64_t getFramesCaughtByReceiver() const; std::vector getNumMissingPackets() const; uint64_t getStartingFrameNumber(); @@ -299,8 +301,6 @@ class Module : public virtual slsDetectorDefs { void setParallelMode(const bool enable); bool getOverFlowMode(); void setOverFlowMode(const bool enable); - bool getStoreInRamMode(); - void setStoreInRamMode(const bool enable); bool getFlippedDataX(); void setFlippedDataX(bool value); std::vector getTrimEn(); @@ -460,268 +460,51 @@ class Module : public virtual slsDetectorDefs { * Moench * * * * ************************************************/ - - /** - * Set Detector offset in shared memory in dimension d - * @param det detector size - */ - - int setControlPort(int port_number); - - /** - * Returns the detector TCP control port \sa sharedSlsDetector - * @returns the detector TCP control port - */ - int getControlPort() const; - - int setStopPort(int port_number); - - /** - * Returns the detector TCP stop port \sa sharedSlsDetector - * @returns the detector TCP stop port - */ - int getStopPort() const; - - /** - * Lock server for this client IP - * @param p 0 to unlock, 1 to lock (-1 gets) - * @returns true for locked or false for unlocked - */ - bool lockServer(int lock = -1); - - /** - * Get last client IP saved on detector server - * @returns last client IP saved on detector server - */ - sls::IpAddr getLastClientIP(); - - /** - * Exit detector server - */ - void exitServer(); - - /** - * Executes a system command on the detector server - * e.g. mount an nfs disk, reboot and returns answer etc. - * @param cmd command to be executed - */ - void execCommand(const std::string &cmd); - - /** - * Get detector specific commands to write into config file - * @returns vector of strings with commands - */ - std::vector getConfigFileCommands(); - - /** - * Set threshold energy and settings (Eiger only) - * @param e_eV threshold in eV - * @param isettings ev. change settings - * @param tb 1 to include trimbits, 0 to exclude - */ - void setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, - bool trimbits = true); - - /** - * Start detector acquisition and read all data (Blocking until end of - * acquisition) - */ - void startAndReadAll(); - - /** - * Start readout (without exposure or interrupting exposure) (Eiger store in - * ram) - */ - void startReadOut(); - - /** - * Requests and receives all data from the detector (Eiger store in ram) - */ - void readAll(); - - /** - * Configures in detector the destination for UDP packets - */ - void configureMAC(); - - /** [Jungfrau][CTB][Moench][Mythen3] - * [Gotthard2] only in continuous mode */ - int64_t getNumberOfFramesFromStart() const; - - /** [Jungfrau][CTB][Moench][Mythen3] Get time from detector start - * [Gotthard2] only in continuous mode */ - int64_t getActualTime() const; - - /** [Jungfrau][CTB][Moench][Mythen3] Get timestamp at a frame start - * [Gotthard2] only in continuous mode */ - int64_t getMeasurementTime() const; - - /** - * Write in a register. For Advanced users - * @param addr address of register - * @param val value to write into register - * @returns value read after writing - */ - uint32_t writeRegister(uint32_t addr, uint32_t val); - - /** - * Read from a register. For Advanced users - * @param addr address of register - * @returns value read from register - */ - uint32_t readRegister(uint32_t addr); - - /** - * Set bit in a register. For Advanced users - * @param addr address of register - * @param n nth bit - * @returns value read from register - */ - uint32_t setBit(uint32_t addr, int n); - - /** - * Clear bit in a register. For Advanced users - * @param addr address of register - * @param n nth bit - * @returns value read from register - */ - uint32_t clearBit(uint32_t addr, int n); - - void test(); - - int getReceiverProgress() const; - - /** update receiver stremaing ip from shm to receiver - * if empty, use rx_hostname ip - */ - void updateReceiverStreamingIP(); - - /** empty vector deletes entire additional json header */ + std::map getAdditionalJsonHeader(); void setAdditionalJsonHeader( const std::map &jsonHeader); - std::map getAdditionalJsonHeader(); - - /** - * Sets the value for the additional json header parameter key if found, - * else append it. If value empty, then deletes parameter */ + std::string getAdditionalJsonParameter(const std::string &key); void setAdditionalJsonParameter(const std::string &key, const std::string &value); - std::string getAdditionalJsonParameter(const std::string &key); - /** [Gotthard][Jungfrau][CTB][Moench] */ - void executeFirmwareTest(); - - /** [Gotthard][Jungfrau][CTB][Moench] */ - void executeBusTest(); - - /** - * Set ADC invert register (CTB, Moench, Jungfrau) - * @param value ADC invert value - * @param detPos -1 for all detectors in list or specific detector position - */ - void setADCInvert(uint32_t value); - - /** - * Get ADC invert register (CTB, Moench, Jungfrau) - * @param detPos -1 for all detectors in list or specific detector position - * @returns ADC invert value - */ - uint32_t getADCInvert(); - - /** - * Write to ADC register (Gotthard, Jungfrau, ChipTestBoard). For expert - * users - * @param addr address of adc register - * @param val value - */ - void writeAdcRegister(uint32_t addr, uint32_t val); - - /** - * Set storage cell that stores first acquisition of the series (Jungfrau) - * @param value storage cell index. Value can be 0 to 15. (-1 gets) - * @returns the storage cell that stores the first acquisition of the series - */ - - /** - * [Jungfau][Ctb] Programs FPGA with raw file from pof file - * [Mythen3][Gotthard2] Programs FPGA with raw file from rbf file - * @param buffer programming file in memory - */ + /************************************************** + * * + * Advanced * + * * + * ************************************************/ void programFPGA(std::vector buffer); - - /** [Jungfau][Ctb] */ - void programFPGAviaBlackfin(std::vector buffer); - - /** [Mythen3][Gotthard2] */ - void programFPGAviaNios(std::vector buffer); - /** - * Resets FPGA (Jungfrau) - */ void resetFPGA(); - - /** - * Copies detector server from tftp and changes respawn server (Not Eiger) - * @param fname name of detector server binary - * @param hostname name of pc to tftp from - */ void copyDetectorServer(const std::string &fname, const std::string &hostname); - - /** - * [Jungfrau][Ctb][Gotthard][Mythen3][Gotthard2] - * Reboot detector controller (blackfin/ powerpc) - */ void rebootController(); + uint32_t readRegister(uint32_t addr); + uint32_t writeRegister(uint32_t addr, uint32_t val); + uint32_t setBit(uint32_t addr, int n); + uint32_t clearBit(uint32_t addr, int n); + void executeFirmwareTest(); + void executeBusTest(); + void writeAdcRegister(uint32_t addr, uint32_t val); + uint32_t getADCInvert(); + void setADCInvert(uint32_t value); - /** - * Get trimbit filename with path for settings and energy - * - */ - std::string getTrimbitFilename(detectorSettings settings, int e_eV); - - /** - * Configure Module (Eiger) - * Called for loading trimbits and settings settings to the detector - * @param module module to be set - must contain correct module number and - * also channel and chip registers - * @param tb 1 to include trimbits, 0 to exclude (used for eiger) - * \sa ::sls_detector_module - */ - void setModule(sls_detector_module &module, bool trimbits = true); - - /** - * Get module structure from detector (all detectors) - * @returns pointer to module structure (which has been created and must - * then be deleted) - */ - sls_detector_module getModule(); - - /** - * Update rate correction according to dynamic range (Eiger) - * If rate correction enabled and dr is 8 or 16, it will throw - * Otherwise update ratecorrection if enabled - */ - void updateRateCorrection(); - - /** - * Exits the receiver TCP server - */ - void exitReceiver(); - - /** - * Gets the current frame index of receiver - * @returns current frame index of receiver - */ + /************************************************** + * * + * Insignificant * + * * + * ************************************************/ + int getControlPort() const; + int setControlPort(int port_number); + int getStopPort() const; + int setStopPort(int port_number); + bool getLockDetector(); + void setLockDetector(bool lock); + sls::IpAddr getLastClientIP(); + std::string execCommand(const std::string &cmd); + int64_t getNumberOfFramesFromStart() const; + int64_t getActualTime() const; + int64_t getMeasurementTime() const; uint64_t getReceiverCurrentFrameIndex() const; - /** - * If data streaming in receiver is enabled, - * restream the stop dummy packet from receiver - * Used usually for Moench, - * in case it is lost in network due to high data rate - */ - void restreamStopFromReceiver(); - private: /** * Send function parameters to detector (control server) @@ -747,14 +530,7 @@ class Module : public virtual slsDetectorDefs { template Ret sendToDetector(int fnum, const Arg &args); - /** - * Send function parameters to detector (stop server) - * @param fnum function enum - * @param args argument pointer - * @param args_size size of argument - * @param retval return pointers - * @param retval_size size of return value - */ + /** Send function parameters to detector (stop server) */ void sendToDetectorStop(int fnum, const void *args, size_t args_size, void *retval, size_t retval_size); @@ -790,14 +566,7 @@ class Module : public virtual slsDetectorDefs { template Ret sendToDetectorStop(int fnum, const Arg &args); - /** - * Send function parameters to receiver - * @param fnum function enum - * @param args argument pointer - * @param args_size size of argument - * @param retval return pointers - * @param retval_size size of return value - */ + /** Send function parameters to receiver */ void sendToReceiver(int fnum, const void *args, size_t args_size, void *retval, size_t retval_size); @@ -846,31 +615,16 @@ class Module : public virtual slsDetectorDefs { void checkDetectorVersionCompatibility(); void checkReceiverVersionCompatibility(); - - /** - * Send a sls_detector_module structure over socket - * @param myMod module structure to send - * @returns number of bytes sent to the detector - */ + void restreamStopFromReceiver(); + void setModule(sls_detector_module &module, bool trimbits = true); int sendModule(sls_detector_module *myMod, sls::ClientSocket &client); + void updateReceiverStreamingIP(); - /** - * Receive a sls_detector_module structure over socket - * @param myMod module structure to receive - * @returns number of bytes received from the detector - */ - int receiveModule(sls_detector_module *myMod, sls::ClientSocket &client); - - /** - * Get MAC from the receiver using udpip and - * set up UDP connection in detector - */ - void setUDPConnection(); - - /* - * Template function to do linear interpolation between two points (Eiger - * only) - */ + void updateRateCorrection(); + void setThresholdEnergyAndSettings(int e_eV, detectorSettings isettings, + bool trimbits = true); + /** Template function to do linear interpolation between two points (Eiger + only) */ template V linearInterpolation(const E x, const E x1, const E x2, const V y1, const V y2) { @@ -896,22 +650,13 @@ class Module : public virtual slsDetectorDefs { const int energy, const int e1, const int e2, bool trimbits = true); - /** - * reads a trim/settings file - * @param fname name of the file to be read - * @param myMod pointer to the module structure which has to be set.
- * If it is NULL a new module structure will be created - * @param tb 1 to include trimbits, 0 to exclude (used for eiger) - * @returns the pointer to myMod or NULL if reading the file failed - */ - + std::string getTrimbitFilename(detectorSettings settings, int e_eV); sls_detector_module readSettingsFile(const std::string &fname, bool trimbits = true); + void programFPGAviaBlackfin(std::vector buffer); + void programFPGAviaNios(std::vector buffer); - /** Module Id or position in the detectors list */ const int moduleId; - - /** Shared Memory object */ mutable sls::SharedMemory shm{0, 0}; }; diff --git a/slsReceiverSoftware/src/ClientInterface.cpp b/slsReceiverSoftware/src/ClientInterface.cpp index ca884d96c..65ce7e4c3 100644 --- a/slsReceiverSoftware/src/ClientInterface.cpp +++ b/slsReceiverSoftware/src/ClientInterface.cpp @@ -109,7 +109,6 @@ void ClientInterface::startTCPServer() { // clang-format off int ClientInterface::functionTable(){ flist[F_EXEC_RECEIVER_COMMAND] = &ClientInterface::exec_command; - flist[F_EXIT_RECEIVER] = &ClientInterface::exit_server; flist[F_LOCK_RECEIVER] = &ClientInterface::lock_receiver; flist[F_GET_LAST_RECEIVER_CLIENT_IP] = &ClientInterface::get_last_client_ip; flist[F_SET_RECEIVER_PORT] = &ClientInterface::set_port; @@ -291,12 +290,6 @@ int ClientInterface::exec_command(Interface &socket) { return socket.sendResult(retval); } -int ClientInterface::exit_server(Interface &socket) { - LOG(logINFO) << "Closing server"; - socket.Send(OK); - return GOODBYE; -} - int ClientInterface::lock_receiver(Interface &socket) { auto lock = socket.Receive(); LOG(logDEBUG1) << "Locking Server to " << lock; diff --git a/slsReceiverSoftware/src/ClientInterface.h b/slsReceiverSoftware/src/ClientInterface.h index c34e2cc50..3b0212d37 100644 --- a/slsReceiverSoftware/src/ClientInterface.h +++ b/slsReceiverSoftware/src/ClientInterface.h @@ -61,7 +61,6 @@ class ClientInterface : private virtual slsDetectorDefs { void verifyIdle(sls::ServerInterface &socket); int exec_command(sls::ServerInterface &socket); - int exit_server(sls::ServerInterface &socket); int lock_receiver(sls::ServerInterface &socket); int get_last_client_ip(sls::ServerInterface &socket); int set_port(sls::ServerInterface &socket); diff --git a/slsSupportLib/include/sls_detector_funcs.h b/slsSupportLib/include/sls_detector_funcs.h index aad684fc1..a0fd9137d 100755 --- a/slsSupportLib/include/sls_detector_funcs.h +++ b/slsSupportLib/include/sls_detector_funcs.h @@ -26,15 +26,12 @@ enum detFuncs { F_WRITE_REGISTER, F_READ_REGISTER, F_SET_MODULE, - F_GET_MODULE, F_SET_SETTINGS, F_GET_THRESHOLD_ENERGY, F_START_ACQUISITION, F_STOP_ACQUISITION, - F_START_READOUT, F_GET_RUN_STATUS, F_START_AND_READ_ALL, - F_READ_ALL, F_GET_NUM_FRAMES, F_SET_NUM_FRAMES, F_GET_NUM_TRIGGERS, @@ -70,7 +67,6 @@ enum detFuncs { F_SET_DYNAMIC_RANGE, F_SET_ROI, F_GET_ROI, - F_EXIT_SERVER, F_LOCK_SERVER, F_GET_LAST_CLIENT_IP, F_SET_PORT, @@ -161,8 +157,6 @@ enum detFuncs { F_GET_PARALLEL_MODE, F_SET_OVERFLOW_MODE, F_GET_OVERFLOW_MODE, - F_SET_STOREINRAM_MODE, - F_GET_STOREINRAM_MODE, F_SET_READOUT_MODE, F_GET_READOUT_MODE, F_SET_CLOCK_FREQUENCY, @@ -213,7 +207,6 @@ enum detFuncs { (detector server should not compile anyway) */ F_EXEC_RECEIVER_COMMAND, - F_EXIT_RECEIVER, F_LOCK_RECEIVER, F_GET_LAST_RECEIVER_CLIENT_IP, F_SET_RECEIVER_PORT, @@ -332,15 +325,12 @@ const char* getFunctionNameFromEnum(enum detFuncs func) { case F_WRITE_REGISTER: return "F_WRITE_REGISTER"; case F_READ_REGISTER: return "F_READ_REGISTER"; case F_SET_MODULE: return "F_SET_MODULE"; - case F_GET_MODULE: return "F_GET_MODULE"; case F_SET_SETTINGS: return "F_SET_SETTINGS"; case F_GET_THRESHOLD_ENERGY: return "F_GET_THRESHOLD_ENERGY"; case F_START_ACQUISITION: return "F_START_ACQUISITION"; case F_STOP_ACQUISITION: return "F_STOP_ACQUISITION"; - case F_START_READOUT: return "F_START_READOUT"; case F_GET_RUN_STATUS: return "F_GET_RUN_STATUS"; case F_START_AND_READ_ALL: return "F_START_AND_READ_ALL"; - case F_READ_ALL: return "F_READ_ALL"; case F_GET_NUM_FRAMES: return "F_GET_NUM_FRAMES"; case F_SET_NUM_FRAMES: return "F_SET_NUM_FRAMES"; case F_GET_NUM_TRIGGERS: return "F_GET_NUM_TRIGGERS"; @@ -376,7 +366,6 @@ const char* getFunctionNameFromEnum(enum detFuncs func) { case F_SET_DYNAMIC_RANGE: return "F_SET_DYNAMIC_RANGE"; case F_SET_ROI: return "F_SET_ROI"; case F_GET_ROI: return "F_GET_ROI"; - case F_EXIT_SERVER: return "F_EXIT_SERVER"; case F_LOCK_SERVER: return "F_LOCK_SERVER"; case F_GET_LAST_CLIENT_IP: return "F_GET_LAST_CLIENT_IP"; case F_SET_PORT: return "F_SET_PORT"; @@ -467,8 +456,6 @@ const char* getFunctionNameFromEnum(enum detFuncs func) { case F_GET_PARALLEL_MODE: return "F_GET_PARALLEL_MODE"; case F_SET_OVERFLOW_MODE: return "F_SET_OVERFLOW_MODE"; case F_GET_OVERFLOW_MODE: return "F_GET_OVERFLOW_MODE"; - case F_SET_STOREINRAM_MODE: return "F_SET_STOREINRAM_MODE"; - case F_GET_STOREINRAM_MODE: return "F_GET_STOREINRAM_MODE"; case F_SET_READOUT_MODE: return "F_SET_READOUT_MODE"; case F_GET_READOUT_MODE: return "F_GET_READOUT_MODE"; case F_SET_CLOCK_FREQUENCY: return "F_SET_CLOCK_FREQUENCY"; @@ -518,7 +505,6 @@ const char* getFunctionNameFromEnum(enum detFuncs func) { case RECEIVER_ENUM_START: return "RECEIVER_ENUM_START"; case F_EXEC_RECEIVER_COMMAND: return "F_EXEC_RECEIVER_COMMAND"; - case F_EXIT_RECEIVER: return "F_EXIT_RECEIVER"; case F_LOCK_RECEIVER: return "F_LOCK_RECEIVER"; case F_GET_LAST_RECEIVER_CLIENT_IP: return "F_GET_LAST_RECEIVER_CLIENT_IP"; case F_SET_RECEIVER_PORT: return "F_SET_RECEIVER_PORT"; From 8adddfb083343bb49ca51c566c7e0e3ce00875a6 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 18 Jun 2020 12:42:53 +0200 Subject: [PATCH 08/10] binaries in --- .../bin/ctbDetectorServer_developer | Bin 198640 -> 196904 bytes .../bin/eigerDetectorServer_developer | Bin 353336 -> 348939 bytes .../bin/gotthard2DetectorServer_developer | Bin 178988 -> 174720 bytes .../bin/gotthardDetectorServer_developer | Bin 150612 -> 148684 bytes .../bin/jungfrauDetectorServer_developer | Bin 166076 -> 164184 bytes .../bin/moenchDetectorServer_developer | Bin 193892 -> 192156 bytes .../bin/mythen3DetectorServer_developer | Bin 172864 -> 168568 bytes slsSupportLib/include/versionAPI.h | 14 +++++++------- 8 files changed, 7 insertions(+), 7 deletions(-) diff --git a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer index c48992faed9300f27b2d69c2828d6917d6cb1234..f8eee20a6b6a2498b0202a26c73b4f1169b24de6 100755 GIT binary patch delta 96409 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 z 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

OR+Yx zn%AsTf7CAgboeQUE&@#{e-@gEr3W(m127?HX#vdx-)eNR@d_I(Ds6lK<>1%;XB zFkO!%h2hJ$oxvy{=D*#dT%X6{w?CkSjbnK?EzGk$Pzg*JKGcyEM7vmfhiN|cL5?63~GI^7}loJoViw9xrP zyl7BU(Dv0P^g%~vCxO4LzS`bUfMT^OtUV>CV0;_2U~ckcb8pLcM3NVN?e>u+AO&vw%#%AR}fu-af# zKO;uy7CSM51CZ0iNWR0=3`X{hO7twENUbW@=FmyF{5*Vr(&@Ou^z99HX3tc(=Rtqk ziT}U()BX6rXH5dDc!zFnJ^xNP{;zu{MzLkEqwiRPFKx$iQxLn5XVq;G`-v))GuvK^ za%not-usw{3L!iF1iH~!|Kq(eX*NjnQ*sQ3sPL0<7zC{7MK}h2qg2~n(MS+o4cNzf zDcomKE~c=ueZK;0pYF?5zFEjZ-+e~;8np{Yi=q^4)JyzJ`4Flb(FDe~w~n zVMPrV%*on1VXICbCzy;Nr@yEZR2vjJ{E37*%r%whWcHnt25X?|L;n|gzl{ROe) zXs{dVj{~$4Z5X}>Sp8q74vSua*B1176;}iJixHUD&*vi~yovpj{-P|I3?cC7EiCVS zOYrAe+FXejQngJB`}O-#N^~Que&3>;#oq0Gs}kM9j=pb+JWGp=w%U65?V~Rq7t#Wz z!vn1`aOp=$cMRt41JWIsyR*=p!->J3-I$Dg5HjO8nF!b=+{ZoKS4r8ywj7RDJk_lF zaEOw!kexpqH@YM1fdp^uk_3_T)V6WEx;)n}v6(2yDFS(K{8BW=$=`V-rk`gEH$6#s zpQ=DIFUgxsHK*|rhy}%tj8$SX*qI|1<+Ba!`jNYwpV1xGP%XszJMD7=F%|^4XXMIC zdKJ!VA-xi((|GELrxveXAEPPEu^|PW;8|8R4yoe=?8r;;{D`Nz>Ulgrg46k#lF#ZY z$sc&U{~c58T>8}_ryE}?`U|`yzlQ(Uv}$(buffXS-(pRF9ihbfGusCiHSTa~~TqJ~kHBR(5W7 z=(IMnQ(`lzTZ32!>dr)6TI%B5^w4(H#Zvzio4#WcbF>7Mwgcbfv&1H4Vq2_mp}Bj`R`H>w_b0yETGLl->?v0Bp;b9~8Y1Tx?nXioIElodDak?Z%m(_JTh$hFO|jH% zuc4f7Pf*C9C*Ikh#yjuxxQcyEFB!OWVbt+xMRyB~)LgTCI~@S=EiBl*TF`bdjYc8# z!>6F_&r6^maF-{bxs8?~9%|ZdDj*2av_Ay!-Z?ZSrzFxJe@;PD7_Sqvnf-W((m#(m zj$8ds2-);s#43(kdY{l`L*@e_>tD@kj$4$E&#JCWIfcz@3?4ke?ABL4@ z9KImAi)DXg8S*hM>PlBdQ?j33C1Sfx(^G5(ntp^GxwM%VYtuneC^c3WWNG@y3}GN~ zHg@JC>yVGui^meYd_l|Gu=W~gd1LK;q$g{H4B|?d{bP&r(KuZOJ=wC4u|cghj60ip z&$0RFN#a`3O(ollrpNcOQy*LXc>0-msa+oONCTFl zjlY1ab8PSdrnv)ZSm7tuVIR_oOD459$dS$mFew9$V%YOKFPXi2v?cSmD=-bY0d$cs zL)5;=T0XHVf5YDKQ=BsG)=dZEs{22s{M)KebMgO&{QsV(VnX~+-x8(BpP!}|qSgC* z$i4U)hPSR@)t`<)!w*i~uXwi51N|I5h2t>zZhER_ji2%}5%`}w|2{x*FXAuAt@?Yo z5+BI6{oShk74!Y~5lZ|z=Kooo62F;ce3stJU9LNA&6~K{?>>7_iHA%6%&Ht&&sslw zQi(5Nt}}7U;md5xnKjft`z&ui>#S%`Ar7B;3QFqE{#J>vXAz%UmG|K}KYvJxKf^YE z9zQWlzU-n@yeNh<_zqwF|=WIC}%XZn$@3}_6u zu(GeL%AW(+vacRh5^ZbFTa^O{5YFG8-^6@Ye?Ho;;Q-h{yeBPX^=JCB@6PwR9q)-1 zEaO77cLN<<$ZDxc8A=}7c)VY7DWe^sHKbNZ(1dv3CI-wsof z*0B@c#wmN&v)XT?Sa|dAl%#sLwmDkajo~)Gq$FKrMVIk}4gTdJO0tb@yKISk`if^h_+S<*|EEQH8*}x~@z&&7xQ5(M7(TJN-#kw(g|9;S#QjANlDV^u9cCj{pf84>T z_WW+Rl2XA6zq3sIV+ypWkT0;(6zo|xRiUN9t8F}nmhftS^b&QDj@&c@bqqK0Hf}{7 zqzZQ+$MW4UCFKNb`Oc#3SkC;fTC6G8amDi(8W?gQ8^h25{$a-?mVb3rhiK2n4mXt=&l;~>m<)yg`D^6wS7=1wSPA-hNHf zGk*$xu@Y0yv-%$r{kHGX9tYyy<`2>1x33ghh&$UdZ7T7`-cLu`cf(Qm0)-?s@|}uf9`ss~crRkhMSE6Y}Y8 zi2VR!ts_D{*>`I{KLn$nAbeZ$P4;+eF8X_?b%64NOcGEopImb@MEU+03%wbqe7zk! zq$?L@(2kz1K*7nmZ1c@%<>Y8~n11@PX8e48lLh{4QBIs=$v@+1A1k7#O|1Oq5z5zi z=b$az*Nz#;aL8Zh@J_zH#F|m_0@}6V2VNUJfBQ5mYO^S3(pY)hFy+E*-YygEvK{gT zd>#c={&AUC`D{I^SYEWs<;qtxN#S1f$eGHyD=#+5sB$ftmYE@@YZkU;7hy)2_~sem}H-@H}jz0XGO}BV#o@i3hG9aoYeo^$Xk2Z*^bkz z{>vmITc~z7^Pd4`d5$vBp;nt^i&A?@-DZ~WQU)%4$xBXDYUirSUb1Cw6vC`k+p*9M z`|6c9_#!dY@{<;@brJNjyaw(@-7e;Ar7&l;WX{BPt4s1!yVtM2=_U8Iz6rbX9M4XR z-5Oa+y;-?h?gP&Kb^7R+62AVca;0#j_-O8OxjR4M*u;u2T1U z%RQX5AI&qyt@YXf?AV6A&a>#r5+n!pTJC>C$WrG~@0e)tn;qo7I$nR>W0Cb)pZ$G9s`*4LF?u#xC zZ|xvSUF^x~cy8~ae+RC;3w{)0=%SZi$02XKsqXcar(zU+{A3kBulvaxooPiz3&zDP z30$WOSoV$!)u!L$8mcU!LVG#&MnRFo^n1F7dR3!gUuM8h0RD`?*BJ1F4HvNN^@f5- zG}tB@95mp)fL|-{r#kTKX#-m+@XZGNN#JK`__U7uxTf{{fag9Q_hr*MF65flyHTKR zNu;!R1EH0`M+idM2K>TO1W3SlIk{bryMz8%tm~)a{#B02q+a0{u+m&~0ZWa_m4nrF z0dk@>tpR6*d;_{Z2|H4FcHF5PmIH^Mm5|n;HU(he1! z?t>pynO-`rM)Z^uEiY{s<>g(4qmMv1#oLu5AbtJLuIJq*F&P`EU=Z?U?I0jJ}*= z4_+6jb#4~dVe3fAglOw<4raIqY+|>&2i)9I-_zW=GtYUHbxX7D&%-Y+GNh00cmqZC z^p*oH3|iOz4IbK?l7)~RCU#71>@8d5{pz>9NV3D(xL3Z^hA)ni-He2Mx9)qT#cM>_oGiVmy z?G36>^TXw6<+&8KEL^@z>u{`fP(8joN$(38yw1PqeIX=QmM^6KpHl{%QMW~a`m!VH zQTol8MqU3#$&l32NWurJuE^W>nh~#_ibSu^u2)+l<$J6d*jfB@W@jNcZ`XwUY(I5@ zRUV>bRI1yo82&TI)WcT!iI5EBxAnnfY|Fut%AA|ATP=x_yL{(WfL#3tmalW#ZlgK8>+i`6sHVD-rj>h);(QDtzoS`h;wKk21b$H)_v!MoL_ z7?f8*qA~J6tb@VYH^)0q;Mb8P5r@gOS~d5VA6ABBs1^NX>kyY0SfxBG-QN@Wnj!Ro zgm};(Z%pe%sQv}=#&8ABwK^W1S0cQM$DoIvQ9~1CYe?mcTRX`#tA!|2DihT51bKv# zX;-%;pzY(wG=g6z$kS-n66LYVV<**RiE^BhS)tY^%J(Um%hbRm`GM%n%@`bna&9D; zGpwF3R)RSQ|1nuzn>wY z?Wb1Se!CJH;S*_-PN8KtyR={Jn=ap*xWAkSP;h|w^lPvlZs8nTLN$}U zcGwpF+c0deT9YnEgX;ctIm*v~z6kU`JV;K0`0<_<4dJUn@^CywWyp6AadVr+9UELJVz@l8CjNYbr-7e(MMci`8dck?ga%~~}OA0rERcs7a( z^`ha!iMd^B35tRr4&&(3{pj6vjl`Noy2Is6)i$=&HIPq1>Mu4|D0k`s&9dRpf56u?5 zwRZ3}XW`r6t+x_ZN8cBq(-%62v|)gH#Hw~5iOpl3I!ODucclC~NIZ>VfhftYwv3Vc zs^5*23s5C@6n6Y|>b;{7S-RE7N6Bw0o>sNChn(EKgP>b|@D4fGnvDacBNPxA{OUv|kl#?Uv(<`xsQFA^bw$4X0BHUzUoHsqv@S`&_pGIHpCC~hYot7Rv|ONM zPg840qt*Q|?xW=gLOiYX`Rgit#&dN)e6*EMYxY_-V+`W0`{4xfYs~>Se<5xhBpRr# z1E;LSjl*HO58=reInJcyWUCj)!E@fbQuP^+-<)Y`JpJA~L3NCmQ~h#WocN`jwW@18 z7|7YI*3j=gXVu-~Dr}!Dyeq?_=XE=x}-x$=#cglm55!tFwksKX7 zWiALiXs3ox)JU9=9a>G>{fMDCJ*ZykZ)XHObv#0#B5VDt78 z(1>@KCS6fCPe#<3E2(+KXfr8GEh(0VDY zW0A(|qluXU2cJ7jbxc7hQibh< zXLRlseD#a$jp2}Y*FJCvg}gHj*YYml`<=n+lBx3IUhQs|Tq-Bg?QVIpl6zP!xf=tR z82R?1yX9A8CHJBlF&!f)oba||y8N1~}axx3Z2d*$bQ=Pk;X=#`{E z1-FF}4LP#ZniAQPnzyu|t)8^cU>DvX?Sox#9KaBk8AP#;?S8DE$u#z)>N7)5jmxXS zN13Y7)({qMKZdpl3mqfrDj^Jp58m^LRb4aWPb_1P8EH`;n!$GTS1az5Cpt&&x;3pN zaGlahdAr3%7(9;kh3)1J!Y<|Ud_FWE_%T<&`&IM@XOw5i?uR z8fnPxjG+UPZK8o8yEA4r@R}!Fgk`}j9CId%YYvTd?DeHRvO7O zgkl6~D98{EcrHNT!+?(v_*w%Y8K#skIqfQv{zAa$)mmC<^aU-gl)r?hl}4Ud8%ufe zFlwe8<8*IB2uJw~&U#wuD5Ig@3_nHLY09)fo}*@g10nNK<(qP)%qa=x5jlB*-7+73 z{|tS`h2G&>5?6rq&gfof)6HJ`{+WWdpO<&mmDZD*uH11FvNzG9P!Iys2MM5{cU(f{ zj*sxvv@^B<1ogG~|ADdm#T|^@yrSkk01tmhjymlDIj;8|bi}08W5Y;_#fJYuNXB6 zE1`y%f)KqNrja+=8G2c!nbV_d{Zp|;oT&7H`uKzL-SP+Oz;ZcJz4@T*>-^v#f1|Ry z_P1U;zb#&u+<6C9mrSIqa`iXM>+H3-m{{y<9-()M)CjE~Lw?YW&uR0&F@^J_QMbzI z-v5)PjieVcg{J*97s_LB`#0W#TwrDMunC?e|H^q(3$djS4tC`8Bv3=k&UJo5M6>J&!9m1L%ZjP)BSh92mf+ zcT|I#{}3_=xd^l#!db*o^$!oh+a6WFc}O0LpQt(V0Otte%CNLdB#qlHsb6H~d159f zMQ7%zt+Y&Xw1Wh`J=U4aF}$-js);jcT7E~MdU%eU=$*64Vah(FUY{dJ-*rdht;S#A zjK;t84m;jzB->!Pg8ThoOfPmkIk=)_%En+265WxnmY2zvAvpoS1qoas+O9`i!>cgY zE}$)5g~`5vi@(jHUWvMw+GZo=uN)LOiU-hv3XhPN=ET09W#c1PYch$u^BufC6h)<=IT2YCeZVr}J)?9;a8uA}) zlf4Rd$mw#B4aQAfzAO>a*5P{0b0M^UeMFuUJk0kOdKd~LIHz2moSrq8_|e>G=hfNO z`GG&Iy3u87b2;|Tnae>rv@7pX^W>qU{v+Eksm2dVXePC@7taiM>7*R-_O5yI%U;ej z(*GdzrG441Mxwd+f5UI3mLF<<5p)c$az8s*@@7{2dcN~bLL8|vBxa$MYh zLwiiJ+Jw4_9oxx;*zFG7r|w=T|LU$f9@vY+r3fxazI~|+)nQlnx(JGn5CL&q7VN&L zZv!u6Tnx^w&PH!GJB7pW5x@RmoHFR0d zUtpxu^g6Zqy^(W!BGTd85fS@l8yMstdB&#>_#dkv=Jc=IYjm$)_yxKZg6_;tiX#Ze z8VH*y#JdgQmA^nZv@65>QZx^0JJvvFFddLKwPXUb8os^;${SIOH52w`@{Hjmw3lAss91heJ8HRSGO&OvcVu*9g0V9Tp zC%;4Er?t?f`)g@x;A7PPv<^C7l3&ggbTUDQ{BkDf$ZF+d=>O_gYSUMJ^D$yzsi9#C z8fJ@z2t=9|14bY+V6k9;)<72quJ%)Hj}rr1I_R8pgARQMo&=DG!=)>L^BktQE9#2J z<;1wLhk*~(CY}G;K0^S*|7;%un7B>qna7b+{4Pb)mc&XqHhOF;bppl?paX~Kz<~|| z03*2=7ob*D$|K?&^y+Se)IG_jeL?9T`rtJU91+o3O8+1t ziruF+ERjbk?k)7kkZgwhZJj#s3AyhG$2x>c^fpzu%tx@t*8kLnssCUwBX&KXZwGP8 z_Q@dbgTJYFgF14UVs5O-Ojhfkko|(|I(>Uj3o+`{577g<);{By8K&BtNKu28#;J-W z@?W(1)PsvHa8s1AUcq~n-d7)S%2Ceu&t%q`F2XXI@K>@C&lX91Ne*#2nG;MzcgbuT+EDheL+U#pJ&_IGWmk{mVd{q87_IMU%x#lFxeX%t?F8r z{3j)Pv|3b!{9)8vtic|RKPKd-Mm{Oedte;tYCLu9Fxf~SDXu7{wu2hRaq9&9XxiaW zJ^GU&G=;z&hbqKpc%RZZz9|tjC#lU(%9fCE@p?Tl4_jfqfZG^(YGa|2 z%v?`KJIBZ0y73V>AdW~Dw(ZG5E4Yb{XG|q7Q%8K2Ep7k1MxO`=O3;0UWf#LF%bp!CT1m1A@%K9|$ zg@i}eYn&lJXT`Qj&w7nFN&+?GDW!6hNtCwyvMI|m?F-qwrAuxzww(nudeY2)uLyRP>+DUct#FMbraqg z<;`ltGjjCkf>6-QAwBL) zuK*5|=aOhMOh<=!=D8#|R1078h;zlq{g6ZkYu*Jg(U#+C@-jKjS^%rs`ZSh}A>IDt zaat;<1F0>OQ$q^qkMk6DPOF5CQ+J_kNI|)_=6|{Z8iqafk2#=$WfF$(UQz65YQS=t8XFVk17!xXv%IKD6(roJN$tQ=IEo|CP; z`(n!sSKh(m88z^E+4?}=2@a|E2ErFh<`J~8@JjiH_Rlo&PY~B-(5#7VrfymJ2UanA zB@QWAyKbPp4Wp+zh4U$BQLCSqEzXeR=%02la7cxSxo-4>IP);0^tLoS>ksoFPE1<} z|CSdv61We~6;aOyW@x;fr1V5S_|4~9g1?1=cKH~?Y~U$O&xb!bRF#Wdztol~c0)l` zYQhRR%vmRhoK4dz{9GZD$qvC7RO|Xe5ORPqy3+*R`ThWi!XpRY>=1&UvJNJ7rU4-) z3SKB+#3|R)K!ZFrsVnjk-!B1;LPt+i@E+P`(MYnK=4#e(k6pEQhjb?7-)dV0u9Iyo zbaa@$;1@e=YoWo02GdLn+gey@s6QKcVOtBU4fqKL+giBUP%sz`gl#P}9AyMY0>74z zRw_JdsP6^5u&sqn9r&Qjzzf@2c-4SE3A}DwC-@i&_Mw1u4mtb@5eB>)_y~cw8}KVj zAywdoj_T7B6sa~Wl_$&dHPhM$-zR}-ov?tL);AvwP)k?I-JCN5HH5il4PFThB5f>Hl! zfyYbO{!0mV+NC=oI{!tY0HX6R7jQG+QVlMW02d1wqVw05EaF$d*#bWcuwB3|z_9|Z z0URpe-GKcCd>AnH1zdDR=(zh;0bc}sQNY&$pV8n+L4X?tYzKT$!1;i83wRpfZ2~R_ zTq|HO)P1dh!BF>Q8tj||j=EQhf}?;d1l$C8mVmDUo~FTf`2a2ya6I5V0p|hE5O4|L zcmXc}93kLkfCB|w3)q|us|m%qYZv}*{dG~$0JvGeV92jYz-IuT5HP03@300>HUr)( zU}(5sy?`-IewziH33#1=ivh0?aD@{OF7dDw@B#sE23#g!VyHyGrvMiTxCL;&1{V_( znF0<4oGf5Wlb=n%4!}VIo(9+luoI&%#yt79ih@eOEdpK(_`HC@knbr0?*@ESz>tt{ zgMcpr-lf4)z>x120mlNa5pX`>Y5~u3NKW6S;$bNY772JW;Bo;U1Y9cM6M%~ad>*hv zz*hlhYw%PFuwB5Agm0{XlL3bcI2*7(hn>>YLOe*KpcH?=_^N;x0lp|;D2~q=0oMR- z6fhX|IVfOA#b>vGAr+r(0&W6aE8y#Z*J|+H&=sF$bUhzaaCa;oDg~SgxI(~C7N1!H zE(1JGz)Jxa3b+<NpX4W8ySjI7k+$`Wc zz)b?42Ka=4D*zuBFeKD%uYe(;ZuJ7L2fSIphXJn>Fr?CLg|PqAFn`@#TETQ5zzYN% z0k}-ScEBY9&Iep1U}7j=z~z851?&QxEa0_(Z35l`I7q+^u>akB#KS54q2*QqLqy&! z8hj5J@;)zMFywtoz+lMxsDQzccY}bzkoPVDgCXxN0tQ3gH3D7-xSC+t|9c=J@1>&P zAmBv;CWgudObnH3@V&%Pv4Dvohk%KpYylSnwhOovaIAnA01g%KQov4s@c6ch~<6%-Ou3q6=<+C{@e zh1Bv778VwEps=tgG5-wSP@yZSWj8Fn=nWG~Z(3M*)3Vaid$qKSiKV3l?DxB7&*AKS zI6d$EJ@5PD^I7bfH8X40tXZ>W?b$PPauLoDVPY;#gv${gC&IfBjuYW}grh|G9KxX@ zd=p`RgvtKT_Cdr`PnaEnce!Q}hE`jeL>Nq1E{Je3!ly-e8^ZM>T!(O-2wy;Wj~>qS zM0ke?hay}q!f~+wmQoRcQdo*a7+qk=6X8;X7l|+D#5Vd8R2&3;UDSCJg`d)lo zmge{)94+wC2#1MqD#AfLY?tONK*UER6d^2$a0NciTo>V5gfEFODpt;jFvQ63cYze= zqB8LnTAGW>lzn=hxu{IpCBiufSBUU>gx3rEKerl@Vv&G8Q}RXl62dupcph4&WQlMP z!s#L$i*Tw4ry-mq!ix}&6=8Il5+TCd5Dpe$JNisfMdTd9Ry~|0;q~gK2!|rvD8fky zpA%t>8u_FM=OKJlgv$`F72$mdSBvmzgtv+CO@zyY{m%|Yq(o21PC&RogsFmD5za$+ zfe4o&oFT&d5Ka@}2873nFeE3(>EQ=`5RMYzXoN#WI2HC^_7{;XBzTH&0baG5MYtT{ zCJ{zu(ghJdiSTI=MrBgH9-fbGlIlbl4U_hWFuF_UjZG8$0Z~PaeoNLIo)+Lv1 zt&h_iv8Szd1zp{3i3wdo4ZuGA581)ZICZj}X?XOg+5vLJ1??;dbAAzO*uc`a$bIeG z!)U1^xm?dfpUCi`mvBe$`!dvY@!GpREHRW;pO%QP=2vOe%Ll6vv`UR7mn*dDg~eCP zEUFJX7%sOh^MEFHKkWdw<6P)X8Z?>M1HCaeeR%hSp19(-=yfo+ar&Zi30xS0{=)5cxr*OK;%Ep z34E{_|Dl5pjd4T%qmBlURE&6@-;NeUm=lhri3*}z@Mi>`L~S7SX`{f$n(-$}1U}A; z|LnBDQ}@{ogia-igd}r;FV_qFI5Yl?qXNQt)GyY<|?O(7EJbG|P;?9F=e9Ly-SOu%W=^20>_%xxf!M1wO}& z|Br*ATr|f%=ngIf#2tX*Sp3(NUAj_wC0Ecb!NO~75Kw0_%eY%YQ{@Z0$=Zf zuM_wN!ebhCSSWd#NH}ROAm0@D(`LL_p26o{u*W|(6vY;_?rvdCWfCJWXAjFi~PZ6e1Pam?(Z4s;}-|H zy^+Hl`R$2(_;nM9#N`M_g1}!A1)|LOAV$(yfBzsRG4&;oOTfwcm^$c&G2^l^?EKR89?&vn5!34ERrZ;y|} zPF7th@{I}ck+;VRe1RDsY>%K*V#dej0dL3flS|DB!yTeqZ^n<1 z1fen)yhB&Y&G=D{uBs4t%v4e}|(1dtC6> z1^s<(csn0{NsboOwk2?Ua=s`~XU5;@Xu)9@yrTg}&G@mUf=;~|fA>DSNN6x8Oo$cu zlV-fl(X!Jn_y&>xj2S=4F}%;2@%L1V{Pqjxgei?8;gT7DUzxx+n(_1Y34D_opB*Id z*In=qN#E4*ZT|m*4noc50vUBWA%5kkL029SUBK53jCesu@ifz!En2MjnDF+<`Kh7; z)szsqK!{H9H{%zki~K=m{6h{p!Df7>=rSeLjGt3Pbm0FhVdjLnqVM^#iJ@ilqC~|} z=KK$x6ZmK|ev!Yx$GYGhl86J|=>IRiAPOXy3oI!R_#`uaX_ml`bHR&YrlgqhIj2Sb zR41PM|H~YN(wqtOUhpUv5hOItjL!`cgwoCU$KnJ&!v$Y2@R?@(<41-6uVk4M@-jq$ z1!nw;B!OS#f_GGqW5z#GCi3T+@lQJF=ehX*`HmLkn+vSW6od-Q_@}}IzQ};bJx>Lf z1isjee_9pz5`pLbKMFj3MkJJ)3p`UH@axU^qI`ibGvilH6Zmp7{#ggU!i={+>rj?$ z=7iObKHg!*Kkrb+U1ofVLvqz-{0ol!dklE!))*acAHA@U9bE=StAvCsR&)L;F$yf6X8dclI(@9Z-|l?<2BGbu#TM0EV27guf41*! zxpxPw0BVg)-7NQFx89b!&*V#V*cZAq6y@5M1!<=YHmUN1pNXN^nY-}AGj01sm8*1! zNbJo0YPxx)^K>O&=~R9k%oe>P-*uNxKU!Kk%|VAY$6>!{5N&o%QTS$8LF>z7F0=x4 zT30G@Gh2dT=P)i6+9Qv&V;QtJ|LsEBw;KhXu%frL$fcf8)Du*o@w#xLnlD*VzFmKu z@5*`55xy$4BNQv7#Ee??ADMO1Vs%v-Nfqz|^dHMHB47Ot@+?=w2i7nY)2I!_{X(_Gr%j&dhYpd1~Spyo!PTrY(2 zvxJv+vZj6V1K54dMNP}^wb)4h{WX@eAE%{_yTbQyr9~BV#fp@?StHwpmHV7bJRMsR z!`f|cS1!@rPeRE)BQ^}{?*Ak_ zWSNfNh`7QU{w@#gQMDtkx21`f2ZOYOJg&}i2|oxYlYX#mHRzsi|**RtGT&+B` z>+T8W;@>V~VF$2pw(dBq{-IrQ<=>UO)*;o)&BeaiESk>Gt5=k{hvk3u%Bj_R z{l`jZgC}f}1iEcgf_4}hzps)7ACU(RU2~bJW6v_#rZ_ajpNeueDsqnExQT>gAh@2x zvVhWTtwnuU-Vu4|l&T$tV{oaIP(n;AVLIzMClkdiEv6Ox0jkHWs}jc1KVO=DxtK{-hFV(G_VinpCL zkA}~1kLEFXVBn)W+K+}uak}c5{Mf)p%k|-K+2tHd6`cp5LnCyg51+c9+|P18f>C^D zgIlxyIXRm!>$xc#KbD6M`AejklM_=Yj%^5KkVUXKP8^CSK3~5*i)DU{>H2};q6|4= z>F#71Ej@ZP(X6BR9m+3cpS;ZUd@|2lx1m$x}zrbvc+p`Qc68;?@To6BpGt zEn%jc&O?Qb?JNA8jzu^sT!{(|mqr~th6*vPPmw;gS(VB4@_+{&`jAU!dQGl|&<7t~ zA3iteLmlaZVeB3xeZbf~c}lb;f^54!t4mg!wtIrxS@UEsR^LzQ-?ieJxm!N%&hn4r zV|@nq7t!H=DEgStM;pPmYE)x>98Eb%9)pm^L6=v9_r$BgXO)Fx_%$T{D39N3$xU+{ zAjIsvq4ajRQQ}Yq^x?pHv=MIAXN%EB(!L;b8{ayw-w8Ikw-?L#MDF1-Q7Hf1%XWQ& z6Tz>prN;7$WbmE@dc2X)IhcW0m$SxCckhW7=o9s$3VJDqu6B$Xn6t_lbN&A;q&Vq5(gN6-PmT2#o9a((!1fTT{{S8R zH1z+wg?j&=@D=rYf?led`WtMm6)%eVq7mj}3wfgu=2y5NOuxQNrjnnRwQ1YFL|x7w z++|l9WUtN*^rDCX)Ue5>eT*x1Pk=F9Xc+6;5<~g)bjEOr&7GzrO-jQm-mpw+Ozi|z zV6fSL-vHXM*$sVo17I}qi$acLNC`MlBZEn7aNF zxWSH|z)9TPOB?@*3GLH2(J+2+#!<%BnzgWPPmBj9p8i!ku#;ys_@N`|apK5{K22BT zUe~Ag^Wr7>Q<~r)gHK7D)6LG*8(hd#9>=*V3OY&F{B`m5UD?6!PLT##;!quRgV(PkkwH@aUFK2vF^w=`qyKghA~$S$+Z&^|=p#Cu zMK?bXJ-i()pT;HdkalJh5}qHEQ{cy{hf_#m$h-}se$k4w&h$8eoV)ePc+3wR6P zj*6QLD^(g2&uo{}XFen^J?;=IJtg-?cOkri)t-_=?62`delelTbHQ6|`$_KD0jB`> z>@<&=w{M^=Fb_uy(UI5VGBph@r|jfIT2FH0eBj!wXO7{*h1Pif)@$Fw?{vvcU^70K zePLIT5XlDw90XyLNE6~ofMAZ608Ea9J_8@?ZeXqh${Qw(x2KSxQTB5F2?Dx;*p7sxqQ9d++qa7~^Xf*LAH0vEYVQF|V*nJ3f z1ms%WlzYO%y*2nTVUFk#JZm|tt$a99$B=YuNRAQJ! zcFU*)lgK|_#B+gZglm84z#>k!Qxw~bh^zlbVh*nM7`W117|vQX zxex}{{#vNBcGwqBJ_Mah0~M>>y_t9ZUA~~@z-p$$uMp0+Kskg2)>`_9D28MLP%@DIG}N3!u;PYb?hl6G`=^}Dy-8Pp7>3|3F6b2H5bWsxeh3EJ$&+$3 z0uK>uVg$Y!gQ^W9@Qsy_3r64}FMR|SRs9!Q?tTP%v5jBInRn3;+(pW67=o{pvSSF= zO&|`1eQ}Iuy2!$1Si)@^chiyjDf*6Z! z+Mk`%_!hojy=_)x!RO^39uqg&T5ac9!g*X%@K{4UW=>p^9tqZIxbgdM^_lR`k?!~i ztZi|_`X-(AO>Rf1Qai)RddO<-i1A5~vtGm3JivOcO)Fc*g3ik!9upUW#Y(~AC7s1j z>E*_SMdWw0_}ls2@olrRR)370I|(nGxn28I{=Q#dC46p!S)hCQ_ykv2C9HR2i`Zbd zHUC|9*8K4*z2=RTu34{sgH@5`dd1I9F;~221;zD>KRPCwY*?P$aM_g_eO2hZ?|`%7 zkCOF@H_URERoNG#*SyNtT=P5pEljWZ7^yM|+feiRD!1fnRlfQzBBQ0pr9?4h5Bg5-IizM529Pief1z6$43j|RV$_cL>2J5dO^~hi?nx~7JFG9Q zn@(%5gV}+}v>5$?+@UkSC_;=uyu*BYUJmk#1Yx)cj~6qa@8!F?K7GpE%<2}F^*xBK zZDA$f%LBzrwkv=3y@#CqRjxAI%&jL#Iw{KDS>Ue(VSag)t#v$KPeeKHHmr>xmudV4 zGDo;Hn_l1AMxt3Sm{yv5*MynF{NH zTgQWeh!kZHF_mH-!fUxB=g#ln`foWXpjZ2mJbu4El1r=HEu<;$tYC2gO8=08NoJw` zb-B>m!}vM8we03)Ib_1PUTx-Fyb{=2$L*$`hBSQKNF!ZHqYNH;P~mJTSa`Z@_78Hm zQF}T#Ww7NM$QWkW&56_rDazY4U?R*iSd;8-(JAolfOd`7K3L028(}M6deg0@?=EC@ zos|AVpPFuN{H~Rv@vs%|9|s36R_eto?#KmJA8N-z>)7+U_+OmhR{Yhyn0f_fJO7%Q zgEzYC9LV^dR5F}RyCUD&whr=meWF3R5-O4cGOJd+lu&oRDDxi&KS)uk4KEL`(945i zAa0_U2Molw@bVy)qgz4?XG>x9;LKi`pu7qH!{ca9W*}A z>LBKLo1xdamEj^B`Sbf(-AH9H%f2dy8(!YDA7HBs*{-X2L4Lxe<9CRTmz!P>B3vPC{= zYfYN7u}QwiTVLrIR*;v%(wks)4py>)CcGs63l}go;V!v@**xy|ueFZfvJ_g*{?jD) z?*Ha8r_z_vMQjG8-?$U)hSKjE&Z4i$ffL5eXx|x0i6k?Ow_wn5wLW6J<<+AvBG9o> zj`6nU8phi$gVV^!X*Bp$8)-&_PxS_U*N8KZw_-nb?wUN+AVQj;0$=~Ko#?gN>H2tk z&h0d=ygptZZ;x~BcFrtS$RZSR}Bgk0cmjYj#)X8ogl&a$=b}o>r$=W*;R`vA1i}w>My4Vpzig zIk3ml05gZ1xhD^*X-xf04jj7VqDwmW;E;}q=bc$%AQ(Khr&hYkoQ7g}Q$rplQqS0ckZ&TUeXjLLaU9 z`zYAe%`s?Ik2!go;L!Plvhv zi6D%ppu{A2w64E*p=`d4Ji?JJJ_W%T=CkMeKrook%HISnzVOHO&EDz1s4SDd+daVt z961p-t#}29)6zZl4pu3jJp$rzD9Wce8?ilz7L5wfv(8KC{zUG&5A`;f=mrum$dik6mT0moxuDF95ts=vKG5P1qs6EVV z<{rDnnq(zJNlj*|qVxzz4Y##=kEd>d%ivEOVojBeQItX9Pr$W&mKL_i10&Md*jKb0 zq~U@6Inj}IjiU6lcOs1^L%J3g25C1yT2`GtUvE5qsY2}a5j3&1H^6Y?^MJWN^< zSrd2}o47Th@@RqBii-PyrPNLOa<*+anML$v1hue$MOqZUzE2eBR{4z4lTwDCSH%ZuC3`bV^HKuwL$+v){u>qLQmswPJ;nU3ieqFz z=i<) zgHXajOW)>q+g943@boeegFRs_w$}S1S-n*W>H8%Akqw*n`Xn^o%}46o@$M!Dg>`2s z9?FQ2d1uY@%*%W+61-wp?D`f@ec-);JYQIoCxckMw{mYE1>?+R!J?G+yH4^oI3%4g!7i(0)g9X{Uwf}# zu2a*uXAM-azc1BO88~8&pP9=w@lGzQRtw>AGaxhv11hJ=oe}n4M=QW!7^Fj&W1TMA zO9>f~$>}*=*O%rv>2KQ&`fk27Ep_X_dB02+$d&$VPR~jI#nn#wfBDiq{UtZtO8s^Z zCCH0LTAR@C3wa>hES{1Vo#bCVt4n0IMq9Pg@`L@l8GCPS@qweBV^s&XyC$MBjJIs+M#%nUrg+{r)%O$sgyJbcj|xxkm& z?~&9hhU*+WJjGoR@0Y@LVdkc=oX*O?t~0NgIawXRc6C;I1a6()o{NW;yCbP!S%7x6 zPMq1xOsbf#yZre5#!fg;=Mgmx17ni(H(n9y`PNGjpf#C z-A!GHO;7DV0(qCj=q{jk_VOZtz~o3FusE~htNOldC+Z!fv|Z@Oju`9d@6e{va^ ztHi*RC7br(O17vgSRd2pzhJ#guue;Pob@$d$cfB)n=+8IzP!@R`lDBL)>p4+&wBPX zcdUC9AE8N`-!{H*y325S#xa~u+q5j_+rbv88l5e^d?&WFHRF#z9+JOBJ&@yQ#$&w$qC=Ra^syc5m%MVcc(kGnO z#GS4j+gk7BI?%RqX#Ol)B)BgY+@D$3bbBld3RHT8kp4Wf8BH*FnmL!jIy}v1m$S4$ zrEkcS75XQJO^1Nz*4}B5<{ol2Z)9EqS8a%I_W>u_OMf|@+sk$EzI7Wc;x$&@O$nJe z<+xc0_8US761vPkF_hjhp4_ARayhhNkQ86MV=Rr=WnXl}re$7a(Y=(w;p4Bg35&l! z@OQ00Sn7H5H0bj!yOV>IoaK)%HiFkPT?#qCI8bf*ca0Z z4+i@)y>#0&8zjt?aC`rBwl3bu$!77cTqwj#r$U5y^T+ApT{6ck-bHWfRXrVV(;k?? zN_!}Q6WVr~?xOO#pEmZ(|6b(ziySSz+5;jlyya}^;sa)pFQO3zkr!^zMLrf^{J6-= zbnCp1)Ye7hv)oQsoeTCmWqv1C0l3Wf89C`+aNfzuqAIh@AG)RsqF|*i^Nee5Wo|#B z%RJS^Dm@{rl59}v{0q9wAEu>5gGxU{ONr=SJGSuMzh77Bd9V^uYIwz zRS%QpGN|-IvRsg_oxV3irIUqxSH|k{T|2A2eD9y(+VU*9UsM0@e3xAS%1 z3Wj(qo#MU2A>KwKBmJKwPgPiq`7fHqoBgFO-Y11O^QSM}iuZ{(`9Z89#)DXQuOdADkzgIHMP>VT@+4C=b*Cu3RgP^GiWOJk2GI$*7b+bXk1d*5z%I{=gwtGFu{a@P!V z=jImb_KM!Mp2zR*l739T;?6Np@(%IW)FImbvP zvCuH3uYKe-QHI>FTxuZSW#x1b;0!z!1VK2COQ^_$H-o1l(78S$>}D(4ie#jTe#sha z?w7gb^I)jwbw~hR76U7H!I9K!els?a8x|$=V ztH#EJDmYEgF>+5L z+(sgS$Vimr29gI7&35%y?&MC?obzT;WDeFvv3!5~F)=m9Rb7|%h5OJ!*B97E_)N|> zz8sn2=oIM7vr}|^nX=fG0=Fl*$%2H7Jz45lW(J8>FX|-HcDf@WKgtdskOzb$amUTc z#F7$K zQ9P5ZlelM=Vaq`DpmwLqlw~n2W02DSo;&y&hk@8&ogaOZnD~mhjnb31$Ue4~ubug~ z&}yYLIMecvx)dennyuxl%dBBgoBm?ZtWONp-LBsUVSOy;3Re>Dc4h1~E5^(gT`_W2 zBTt*r;cRV@7Ga|s?aq#aPV-&isEV5lq>~b+QW-vug(ryd8%I?;wibZBwF$G^251IN z76uDGlO_vT@EqUvmCNZcCeeknrP#GFDr;xMn6#YT@Azm5To7=m2E#KM@gfG0<{FP()!g)Up>Ik^IbOIL(t21a&N2DlAF{lSCcZxGApqb-B zlg?*{Ilme&HOx{okAr5Epcw_4-9a-dMOjjXXNuWW+xTm>yX_M8fl845noXNHfwV$& z2TqU;yVYhJ{@D4R25G`{+Ak2-I4@^BkkH4x6?zHHHNt$(I0nuQj&MkN09c0oTwIB# ziyt_#yW63%=!!m6;t#d)T~6P==3jP>wx{Ctp)z4Qk#N5nw(5v4OTKAA9FgM=H*Ohj_+Q~F2uBZdF}sD zvQ2yPI7!~DEO*f;ZX2Pj;*jaX6&YNQh48{9Y2!t?$IuZjb9B}Lr@)>h7ucmg?;7l` zKRYj!g=d6yNPObqJKM&$+h4{jU$DHb^5HJ#dY;2vqqkNZYhU@e%Wf;5Z`fnDLhLac zH_KgCkNGiemB;#;Rb}pQXUp?ewXb|^6{o20oZwR_D~M6L`L1xb{P7mO2mA>8K;p|9#+{AFb=Hs1@o6K;*Jf_OWmh0mtc`a=mF_O@RVZP30 z5phcYsWI{9=IblAIF(xrd&+lRK#i=?nFXGX-7hvRZHgHA;-#zOPatc z;*_CNxqY=pO9j!1?XAi%vsKA5Se40SRSY)&9x^Jh`SU7SSiCX>zi0P9STwdYUg@d3 zWmI(*RgJlYy%MkVj?e0YmI&K5*%!4KR$L~{KrL8tnR^j#>2=;>sbH7joNY}|ddAGX z;Vgd7eiSzxyqVMi#qsrS?pow=j5#)Dl+thbk4OFoejVF<(?yMK?+{eul(|z3H3pzY z!{(yYIj9kzw&q-cKhex<<=?KVc0dgs2cZSo!l*>O3s|Q_rDy*+7oB7$(S|C+mS-F6 z70r5c3fZ{P%1~X&AC zy-ngXSth-I#lc7!_V6Yybo-U7OB@t5kv8S_7~Xi`e=Wew2~Mt3smBeo)kNxX=>&pOH4X#Lcnt`n|+EYx-O3h^0gG;We`v*h>ymhBcOA#(?9 zHV?lUNAv+K=fF1#N(@!4aSIFU^mpfpv>szvnwa3FH{k)CeHg{vQ+?u>>D#6_y5+l< zrQV_R=&BFLn9#zLoOk^NAeQYyT7O!Coakk4N6K`)9kb3uJh`@3-;1pA4yEq{ZFCwr zf0-Cx;s-6sb)u78Dar#oo${GL->VHHE|cnr?}ldkP*(MIx&(@r%to@r$`}H`iV3l)u)4WsiyQXOZ6_|42p68Et`fP(`-n> z3$9NeR-Mu&#c1j2IP?s6l~{RKx%=(P{imEwzI&5dl;bbzqP%~ZE=r#OmXT}_<xFn1NtD3H0-T8+r}Va`8(0`iEEtULox}o+?w`Pdbb*?$FEe;97b2o}rwouby*p7= zF`-4Ygczx|r<7&M56|vdGC*s1O$UPcgbidah*U;|&^F6y{14gF8$g z+7!ha_L5?BzR%04n;r4(^e#ml zFsD|g^VaAKEQu_0k}{x=Xk0QGV1pWtAp;CGoW4R=!4(P)cqq!3+_bbgEk%1o7JJ{P#2XZkPcRl#$-|(tK=<$t*g}7EDn3kD5jsEoc_Qs45bpY78wu8@3=Nt^_%l z=6k*34)UA6tkHF={Mpe7%0#cJF`&oE_nfEn18sx-2v*Q)aPf8w^WG zjCq8o&d`mpv>v0w2O37#Az0%cUKQ(5Tbq_RLG-5ZEJtt9dvi)3n>IL^?XW2W2UgXh zJT3R}-op!G`I`RK-^bn!@5zl@Y>B469p}L4=Fvk~ErrEU7i9!P6SD@op>k^n8fHxKy9erBR;8#WB$b6ir zBa7;YmR222427YHtYqI#QhFv%CLUd?7%Z6j(T!_YB15r{=B8oToxI_?za!xv?6XoB~xdwHbtb|Snr_Yk5CQj1~!z|1^ z%qHz_&wl)3)I@qqHDSqkB&|_GZzqjs1(TIYBU)|-w0VrqL%AL37;`~K{c{=Cn#+lB zOz5-Gc=GS!_@I1`9exop6}PZ5ji#OyCG`+b=WAhc*`jM``3Jf)Vz=HksW>;u@4kab zo=u^q3;9}f`HrA2gubK(fEL+siB9d}_{~0)ixW70rB4Lz^w|dl5z0c#ZkS~{B3YNI z?f5!%-Y~Z2eYunC;Ij>9Y4<82U4yt@J3XMg;#u(&rC%h*|FdQKtU9unXpR_b!x!q! znRvsd4G3T-rzm|f!hf9tlU2#OO;vg;1KhsP`c1eZEVn1Mg?8k~1y>KR_xD7JTG2zSH)z~>@yn{b1 zuZiP!VeVId@7}L7=kKx{a_0f3_)hE04RcI9g1Hzm@!Y+_ruEyz(xxkYy>WP+PcTy4 z#;HnRUpXZ@%sM@3+~N|1ndPAa$98eTR4l-3RgZz2cgg`&Z)+=`HB$@?w#6 z#3|lpy#+Bl%?fb)4P61o7uvM@PPJ#RkK6MBoyTE>i#rCi`zGltAAQ{S{W$b}I;I9c z7wsIw7a=ej>d3Sg&gOeNF$kUubuKzYN1C}EvRvnO94;;h?Zb|yb9Mbsx-tyv+IxmF zKneA7E1^5jvg#R1AaZ>;Lm8y>cDq8P+!@1JeXxsj9lf0FTB2BYm!`R}n&f14h|9=| z5+f@aBkSG?La>In;1IXc3QSIn4|O?&t4-an@9FAw%5B?{cIpE5U1=U%qpQT+>nh+( zC)ZK*s%Ch-97wNf@T8I!+qB>pSw;pIuswqd_?-+0IC!~RCdS|zC0)Sx&w{hi)9tB; zJ2va`?X=9yY5XR^sjGa8oSY6^ZRRwBlog!bF~_D&-rHWjJ=_W_FmY#l`A!bk<=Z3K zZPOA1_~@GGbj`z3aT(56&Fzg*Yb628pbFZ~Ya{SrR`%ORWFGa7KfmC@O=u}rm=HP6Fd?0|L) z;yhK>`Ldoh^QB*(0DUp=RV)@H`n8z(>Pr>_+CB1=O`8zeo-h9iu6*(Lsgb=L0<>u< zmAYBJ?SSiI)a`S46Zl$`WwDvb7(NNYxuYU01cy z*&@eMS^hrTQa7GOFLZo%gzr^M%WIB3iSzj~RG&j2YjCwgX_kcRG@NeH$+flAd70Nv zigP(@neLXMMi>?=`b+{{!!lIwO`r>(adkUi#kBqqWL!^huImkZlauGZa0o4O83Y7~ zT)fAg!h4K{_vqWpDN*ckM_FA(Yu$L2zB4ECSrseKpTD~3Aa?&A4+huO(blzRvormmo znu8?V1VwjFbaE?g?;(-sXM7OWPYMhi`kTvS7wMSn@Of?wxi&5wc&~QHfiid&eX|Ph z-TGThoA7z-Be;OkdVI9HW2e4s;{^#mX8LGFBg;FAc7%d8?C`FBOc^!wmW#a~u!2Z~ z6j)0<)}A%b%dV{5z6i$(4zxA6bfpr&W-V2MZ)?5j;zRYXVkJwJo-^?3x_TO_@IfI8 zr|ZiYtFxTT7~NKg!7R==1snk@7|erkvN53wOEGTFymUO|${M#N12+h%{kqUBweYo~ zsgT;}^SabLTKHnuwH&3pi<){zo@i@h>@p>?ck3^k%=E$z>GTvFoa%6vU4-#m!ect+FnR2_n<$j(d6VAnF=$m<%EQ_y?Kcri#;YCI z@50>rQ!miE9KE5TRb8nUur3!d1-(~Fw18K!M}^!;`eqW0_hnjZO#?61n9$XYoUUVX zv4`36XoFV4x3sPi8SZS9KY4hDFJ4{A!^8UOfXk?e&US(6uWlg^U5^)yINiq)CN_IX z_;`~D+ye6~WR0ipAgdE^mkQ`=L{|2wGQ!ZUlXEb2`?97-aW(1Bd}eXJ?)UX#5xL6k zGvJ0kpP-w=xFaqdNKz*0(H%oz@XO;=A$IT3(i%xU9bvl2Nkuvz;m+M@7C(2o>K#s< zXfPZtAuwKL*UvK7kUAL9)`e(Y<&peE(CXmBaF7Y z8VtuZUo)xR!=0=RU)7#9smhf#EfWah7}XNgqQgqY$*!HG$D$$IGdf|XhL7>zTv^m)Rjb-IGq z(lR8CdDsB&c<_ng+8ZYlV!9)2_Dx!wd1n>&k)*XFBG?{?`2Q4|S?|76^l_O@yZsinkMbXLDR|gL!&`s%g9sdEj=h_&j8T5r z#G3PQ%<6}gJPGSXbdM_y{K7eOEdPCZlz|zp7QL36)#8UlGdDrmf*V)0*yB_SujyvB z=vb+%MX$l|Qw!TVw*p2ShTPVA%k7JoM=;;T!_I9`dJMhnG8uPUA=tohAKZR2ZoS!V zGN#sb?g_t;ZzIIZFV_4kHsS;9P4|m5J+Vl`9jZ$%!#U6~oDJ_+&!5u`VaLJdmUmd8 zx4b7dNJr6hWVTAJzpii{n@d+>5BMafKQ-ut&gCyx+U0x-hXW7Aw_C;;goUs|wCk4{ z?n>Z$RYM`pmVGCi`_(_vDbRt$HF4@(M{2#X$(0%jG%#p!dj=ve>kQoJ;I4?$?Mt15 z3vZe^=xVUwkq!%P;NZG@3*N1}=%;_*aG}>rw8+>`&3Zps0?hp+^XWfD3A|#{B9hzp z)6a9Yxw~cCUV#8@wOV>q{iEX;(TKugdB`Es{O2c1!0sP^%Nu$YcZJh*4 zF!{HAX=}ZDtF2v_`cX!A%vz3Rw|z8$38J4pZ>zn{1~i51yCmOxuH7!lz^=Cn>{b`! zdUYoYDpu}OzD2oW9OL(`WTnMeEBWRuk9+HHRwk* zAC9pFtChYz{FcERiKA*rLE;=2S+}0Ore|Bs4pXVKJ9$(M*Hz2=5*o?BO7wgl3rJ_D zGj*-fTRkCC*E>>|K95E9GgtIfKF_8|-cgR!FP_Iz@tL(ewL3R9DUw%%NLBUi*OCuw zSgrI>&Lr|?_<8Tw>+s5VPNF4#4xY?s}TX8PvC0q~QuMO6zz;q!rs*w(i%{ zPU8qSPg^F^Vr?xIn?+hBPYdZNhJJ^0VuYyVYwEAz^#@o*G0fxXNje>mV>+D5inJts^Tzr_J^hQ_qU>Nj-P&Yp*;^>mvh}hZ&Wp5ddfD1JB0Yeo zD;?Idic-kv^W!2ufn7pe{+ul>#`mxeGK*eI$$Ez?*8MDREku9nik{uNkR4qMui?~A z5f5iRFC+h{IXv!dIjdK%ROnrEs=J=gvVoPq3_2%|iTHTd$m6hVq zrWF6|OA(*W&hYqZ5%0jF)>FFZdKq269(?>$@A^Ar(e+X^G?8pb9GoXOb3ZMF9ihb| za;C6lsEO9rv3TT>OkJkGn^==rQ;g#3qV(uci3Q=oWOhuiHLd@eDRSkHT6y#FRiV+Spie}2l`(GA7tqa^WM1*?v}V{b4OU2G9={FDl@5;<9f%_iidwM z+9?>Qe2dPZ%O;#>c=$>l=TD(sAb2NxA(Pc_QYQAeZ9*Fhz1zHRTtxXzHr+1ao`xK6 zrqPwesW-z!yQjcP(;P{!lvI{f z8Dy~;PZldUFK};L;Adcpzb^70HsntR{*1t%cH-??Bob)dl`3d-CTM=Z@6z!le5~jd zw9=iSH0cnN{5+Y!p9h{M3c^P?>9igLUhM5CNig7d1D~33zg{5CkU&f2v4T*R0bdAw zu)y<$1yS+BOblk=#cPT9g*&NU%Yn@!Vwv}v@1n!KEUd>D1jbtgi$)HE|jC0&sL?g z{08f}Rq5yT`v$5xCUiTy8&P>Xn_YOQkXkZNL9jB^Z*-e6fP%zlu*HH#h4QDx@(GM-|)t zsuIR?9A*v3(fQ^Ck#ZO>zY#2FtJ2MrB*HUy`wP6J?QG;K?E^fCT3U0Eiq+8Tp#`I%1g3#+!qU|fD)nPP9VYHJL}<>zb^5LRuC z!MOZ933y@E))yURbp?6$X3<;8P(7YdTuH$C>aGopTUYZOu^w z{uJ=Ss;xO=z#njL)qa98<5umbO5Lhmi+5PH(ooiriK`AT?o?JPrI{@2b+|}PJ8Mc_ zSKjkgX6DzV?o&E540- ze^j28E7<6(%DldQHwt7N9rm=m7S~5o?aHpZ?x;@F zTDmR(6adNq)qtabbAX##%WWzk0+0kquW4#h8oheno4fRp?9hcvLZ{AI9J+XER(5Fa z($MfMZy5EO&wf)Lu#U0#sH(*$2oMU00>lB504abpKsq23umF$)$O9AriU7qmIhrz1 z4oS|`TG~N0a9}1mZSOuylE>6XvX?E-el&OClKG(v7tfiW{b=Z%2XnI@34Ihia^#ZG z#o3FOKC%Mbja|BYQC8@ZrMaQmdD-)p=VpgKl07F&FNYu}^r&~uFCLaqWyriDtz}+0 zU=N@kZ~@S)wPg7Nq5$In8Gu|s34>&kYKpup56VLpTeX(O!GKsmDj*Ax4_FV_1vm^i z1GuiWEb-AxrgyU3ArHw<&|31R0Tuy@0Of!^fO^0MK(p4e(jO277^j!C`dS8d@s6xl zEs>`IXIM^8OCL5P*zzJr4lGeE1J~Cy1zTSC7;*;X&!YTUls`KTkO9aAlmNB?Y5^w! zjath$R-L|QnB_a!dl<+JD+83Xo8gw%c{~<<8JkwKtG{Kc?~qU*tu-_ZkN}tlSOh2n zlmqqv>H!x3&01?8f1UKASj%5!`+!ERHL}1A19J8FfK)uKB7E4K$F)p^zt$R&1po)G zY5zmq{(qAB|9jpjSLW<42*~b#;P$^tizxYH8WHFV6aDV4qDO~OhKMsY)gvwMTZfFv z&|1f!KgNLSm~DVsz)3)()|!OANeTwU0#X54H5Cb#AC)2Fo3z%uJOQDAI6xX;0RWWm zDg#sljsngBZtCjLJjQaLEZ@z>CR=9v-a9RM>a^KY$0v`QJbfD5nryk}QpV}6=tfVVvgEsFwEQD|M%O|5k>S~yq*pp}Co0BGspBmi1F zI2{0u8=M2k2NVO=11bQ!0Q&%k0S$mNfJ=buTI&!A-~$K(gaM)f34j#M-a2F&0-1nC zfIL7EpcGIJ*a6rBr~}jkP6I9gngGpO>+PNZe?TZ83J?bv2S@{C02Tmp0R?~(Kp9{g zpc+sMI0|jN{UqQVpb>CWYmK%7R6sBw0uT#G0;B@c0a<_?Kt7-tupUqW*ag@JI1Fe2 zoB><{T-RD-B!CYf2oMH{1|$INDfl-HkO^1>$O9AsN&)479e_Q6IzT<(G~fcD3DB&y z4)p~11402&fH=T7KpG$eumF$?C;*fI$^hE{)qq+YV;p)Efs=r9fJVSgt#z0cpaOyc z5r9}g5+D_j4#)!J0P+FFfc1b1z%IZ(z+pfG;0)jr;JVftD*=1}L4YtoG#~-}ADe=} zG(aX`5g-px1SkcR19kxR0O|nsfYX2rfF?k*);io1;137|L;>Oe;{a)Z48Q_FE}#HV z0w@D)15^WQ(f`Ab0!{+X0U7}}wbl_oKT1S=sUj+OAP2&FrZM&m&BO=h+SU?gW z6_5_d0^|Vl0mXpzfC|7az&^lXKm*_m;1b}v);dxG_yB?cVSs2r0w4u24Uh>~1jqvv zq5nsM%aP@P9e_Q6IzT<(G~fcD3DB&y#(4t#0il2>KpbEkAPtZKSOCZc6aY#9Wq@sf zYCtXEDBvXE9H0?!Q)`X4qW|MnKrkQz5DQ2Gqyo|bS%4fsKA;$|9#8?;1=t5T3}^tH z0bBxHhptEfA3zWw3=j=S0Hgq>0WtxL0C@npXk(`3lOB-79|)r6Ql{l8i#;98q=S)k zFp>^N(!p3dm`MjS>0l-u%%p>vbTE<*M$*AlI+&ROW@dny^i({-$P6&`zX1FHrqKU? zWul{!v*v|PSdx{Uhe=LrorTuSQUSq$2tX_#2>>b0%Bm^Nwlpd|o!;-GxpN-L<-YII z<+VM}_KKyvH(tH&ea)nim>_;T->zdd0|w+soc*RXJ5Uj(@>zXzbjB-GwZE*?{9_i^2 ziUVdYvdcX!qoF(d0D)Tb%3wUvs)3$(UeL55=~&M4(X?UBc!r|ov3O=^T3jfeIXGkB zgC`hDKzK5jm^Llm5u`)#Z%K#FX0)jY15Fd*?p9u zLenxpSV3#E4oi|HOw+QX@r=W>3C~nbdvF(?nVL3#8$0@prEg&VI0@VT0Q5)CC{2qD z-dJSmA2=9E9V&pLKU5XAF%^Z@W=m9t%P=rEMOHy zmZ4KerGVBRk%s)Tzow0$yqN}Egr+5te3A^f1jvN)Gz%P9l+z%e6c)D1(qEZa%~Drc z?ix6y9C*lt{}KI@nl^Qt0SEEOmo)9(YF4|-GEk zIsYGe%4YTZ!EP029%bnmeK~*vQ`D8 zsn!atu~e`@rIy}Ga|25)wTzIr*E~~dIcUYQ#n=s&_m%zYS;vi*5M_Te8$i#$Z)11U z^W7*mpFhjkbM!oTiEXFnkz)2CJ&zt{-_!G0HS5Um{HTl#py%;2b~imgOJ(!_d9qOkm&B^HwbDxCzhS{n-Hi+`;bNWO+$xk=PfTEPXuouUFBwn$}GgKZ}U4fX$Zq z-us(XG!_bcqeiQ+>{Zz43dYTVFmA4Uh}h_k^9N$_WOu1C9&Myma8)l9fjU? z_&^3Dho&KD{e%aT2>Tud564k(F9qukQ-+U6i+qV~f~N_YVm3!ypKAG)Q?o zFAqepN|L&7mAX&@AewF6YnkBj;RO)0vLE+a5nNBZ~=)ac;g57nELVGEuB0*DyIZ?=I@rD z`h5iYAJt8}1XE2y=M^*)XoKTE|A!41$m#_O@Rj?t4?(E)VKr#U1`-Z7uVQnkEeJ_#i(@0fp* z1=Bm`larKzcg!cn6yzQA3GYwdF%9{Ymv_u3>)G-5EWsYfE6~0j?CN`#S3EvT1xveF z=|RiKj_{m1%QGII31^94;AJ>IP1GCe`K~K zM?yGg-tD8iqHrDHC|mu$Ws1kiMwQ0wx%bgYBK+D1mifx5OxESFrKiV9^!zC+i#}|b z;(ZDl`c1AR_4aY}N4{`x^-2;x0+**QY%{ z&v|^4N2xWlj#_%k9^XLazNxEu>KH7k$G_@T<=?K{L(#5OOHw30c&LE8XEVD=k&5K0_K3@MxnkW6NGi2EBn$NphV=c;&5?0;A8doze(E7GaW;Ua{brd@=(AvGm z7G&)r!zk7OHC0wVDz8D#Y8fW2W^S-G(E<}xQ`y_`{v8y@caU>;SYO(z{20b^zOjaQG&jJBY+&oZ zvG(-;w)1%GWTWYEgUzGIZR`blOk(fQ;~w@kJ?1gXzwkKA z2GQd`>|XuxBpx0=os*;y)ojPV(8S16NgB0-HT=u^xgBD`p9LpS=n18RSa{r*#~~IG z@2tlm9{eGH7aq4((1YSCJ>dp=iZ})>k8?cIVK#XjgNf(AjmPI&E20E~C#Y5k4}T~S zKu^^Q3F`4c5l<8GZX(_w;_wS7KLm z;G!W8%iO$&#eHXepwEh%pt4QJ%L7&EN%Fyuiuf$m`Ub1{&f2@{DhSz_?b#-F={svk zpN-LGJUeM9z8bP)1HMOb-|MDqa+fle{=GG%>zoB<{5&64O!(F40z-B3^9^ht;a@&u z#;-46mk7TTwHop(uWw^Pmw?~1%Z&e9T20C&>w9ucRT4^&_|S(IFNlkx^art7dbq>~ zQ)i6)!P@9)w=8z3N+?$qOCHj5knSnct5oT51>)7B z{1JVUmV>)0oZfL&N-SXeez1nve?EU69zsuEs`{JTW@Jy6*SRZl&Ag@e0$!d%Ksrg z{YCyisY*8K%XJZdShcjfV6{A-Qk8BIhzmJ+u2JpE%1j^*ivl~Lq2~~HRPZ-d zPTheDgkU@mf&nnxmVQE21|%TvsPIQs{){?Uj0n$W2s+4_-^)vtUZV~srx^|Q3X4_c z2bz#U^spD=CrY4cLegGiRr$9Ci0=^v@M`j20!zON$^8i}bqp=9a#g-o@6>oNxK)1v z9Y>FQp&|XLryO(}&=7+LcwJJZQ5i^AMLoZ$Qi>1C7wBbvv`X?AF zlrDO>QRzq|KxUuyKfw4_uW!Eq!o+xAc@ErOJ5vC5fdYN3_+oY9UUaBM2-tUuD$hat$-IGBVi19c_pvK0&%E5th2$}mX8QxL3CrRa0WpCRIh!C(U7!c*z;IV~L`zC#}j zUCv?jQJ0C)*X2i5>6n8!??P;)>++i_-;;|9f^>qauPS{_!!cdNV-V(lh~rO1A0G`u zpg^RjsnWbq#D&P!B~ZF)hzlK1pEu9!>dUIsJqz`b(%WIt)e2;DSjy37+!H5f;@SCMdE5M61PUL@BRfdpAg%0>Vrpg2I z5#J-y*Q?T>p<|W>BEAn@T!3_|ALI{F`kh9E{~-hZ{BB?-NJl_OplcUZ8ejzhY7rRj zIzaXK5E8Il(siaQoPddSXi>08AEwG@O3>nZ5l?~+RD+(-fv%HPWgZ$VXWB&ucqhjw z!zEp5x;~`J<0}v^66w#X%Ky{VxyRL2U3vWM1H@=Bvkb2bgm8I7AUwi_K#UdBRFjWU zu}zhHL_;Dd>Ci|TtXLT@9ixL4Bi7i&k&lBD5;K}=s7*7lIyf>l z+Kfeq)~NH{=d6>^?my!BowfGf>$TT@or_7aUVe7 zVA#&XMgL$stk?R#7n9HgJsQ0DjG!6gMVHTzkR@(M2#vyuE5#YJ4Qy9z*TqBdt40ae z@$41ol!Tka*<=M?t^6dqOKkn1{fESzx0U{bT%Yi`n7R%adbGljIFDKl%N38IQ6G3f zF^Q!tf`IDNgpb6XH3(fzp73V`JONeZQJBh>>NK|d)nRY+u5)VQ13Ib3Pk8!e2(8bjFF_ic= zE*LoDvcwM=HP$6HD)1?Bo{1h~MK{}jk;H*lq8&CWVNwYKwSrZkqzlFQ3NA1m%D)Pl zS9}4IuEFGuywI3PxmGK7m_%}i`w(}xFKKSq`Spj(hm+Q^ozR<9|tB( zdg8Adc%HnFs2zr|`XO;vkAq1pc9|DaGsPAg~Y}B;O)jAyKRaIB`k73jwVHYQf}t#a(Xu z(?pfLD@p^CGZ-GHLU;ydsdmdDum(}`uf(~w3EZp#ybgci4E{+JSUCfKAdbO1)~@w`DDIc0AoMDJQOpucSB0V}uZsC49R{;m%3I>RYfYv;O8E?pR)f`qq4UIC zbPC+)HyFxcAKM64pNGCA&a1#+{}pPoz!qP?&=&s$7>nAqEWaJ<=A0%Mde|RUq5Byo z45MI}ga*W|W*ElQX@^gW8I6UmF%TLS)6S@f4d|o6NrrfNAjHYULwn&L)cS9-O`&}^ zVzHfn-W79p7Yu6h)H&i@Z7rY;re=!M+yTWS*_23iA z|GYT!s2?mqQgP{#6Zm*Q>Hi_FcU!GKPyGm9uh{vYk`{|bJv>;68AfSEVt#Hlp7a|? zTaLuGLydv7>%=)y2v&j8zQeelKmqL_?M~X;r~J0PUY@-|dz7?C#C?kPaVhKCB8MMRnYyIn>*@Mb|gSgwvp&#}IO2>t6KRD>{0Wr@W z0{1KZadB!V!5xa3U4M5H99^j|Uc<-75g@=s>FsC`oY$q3I-j#X?oocG(}ext5g*Tw z7ndJNo)%y}$2EKUz#4?}FBG$Q4K5PpueZ05^l$2XjpjGXEaqdDnEo)Fe>;`ELIukF z2gUhWD*_d21H*JcgQq(fC2t_0JEipBc-8nv>$CN0>;`rz{S!vnJ{x~W^~L7|O$Q7* ztTIHLEhh<*R-c}c&dw$bT}_<9dcoe>#|`)jWN-|Uz-S7V-5FmI_r9JP{9MM{OE-uA zKd+6sj3yK)wDGS&mcasI_t6>n@5TL_5;Weg0^rkkF>#EJ^Nc<4A5eaxJmW_sE*qo~ zdGziW+ z7O?8w+75l(?_dGvDK)v^y^5EM6R|^YrQ)^h{f>i66t^+|uiwfG)o?)k4z2(Vq8 z=|r%O^99eztXHgty5C>$l9(^kft#oe{*E9kgdTM80p|mKU~6HPcniM3#_Mu z;H+7=0F69;T#%J4=0%_h`5k1j9;i9Yiw?!4+6%kE2Nbi6---ovMHF?it`hS}2QNmI zVUw6QPvBEESr)6*VNC97;>g-bP;TYqBjA6Qx?Z6^CF|Gh9m6~X_1_n_&ss<=mi4)~ zkxuYI+aKdU`)oD}n8fHX$_}&YwLzpEWOJRhCmyU8%3dz++0$T+nQZ3!M`OXxd9K}f zWN)w^AOSVeWN#Apf+28^uV6L`weAD&1Ka(7_Wfec@8-p%GVBs_a|Em=%zg@!uK`;D zFnRU}0*PWQlYImno`K)y*(Cd;j2`n3YB@EgdzNSuu}YBi{GuSTOpuxgas z%9;EqSchHicc2fJ_H=X9)56vskDS3|}kbMXQdRClW2M|bIoX0Tz zMVHP0>XSS^*XXrAo$x!zk7L|g4M!Cxvk$NhYE0x8i8FGX2G!*Gm+-62ozT@H`IlkQ zDO{SX^|=q;a}2r)l;6g)?LUax{M*IpYXz#w@;Sy|J|hV8*=SVvL01>$zhdj!;%l5g z&ROz45?3HF)A@E>aBhPyKmi+4zxezGnc{AUMtC)?4CO3|I>4$y!3uG^C(*D_>14_| zXcVlN3bu%ItP{FUw*?Q1*<~%L0v7Dzs?uuNrS+c?=bk$FRl$N^ss4cm1?*<`*ap-@ z1ruUwz`=r}U`kB(5O}5EU|}r0UI9}IQ}Fo;9<+YpLNQkkfcurdTFiwE!$9D|izFJm z=O_%iN-bQ^GPw@CS1WKC$0r;ValZIpI=IC?+oBzQ&qt?mzc{xv@UC6!KSds~^)~TH(LNNwFqYlNL@Rz)5hR5i6M8<7aTuxlC5JLyhX9Y_{{( zDr({)@X6oDdzl6!=4dI1qRB|PIv(?}x zKed)zBkr;xBzAm(N>~GauX_e&_Pl&Q9jMDnwu?I$f*z~96zb6)>grgt$xTAnmaKts zO7TMbF+A}XTko5stWw->(qZ7kvWsQbk#XC!pL)wKWiPiKXff6v_FI`4?Xcorq7)Mc5>~Kky_28`5>Lf$G-#SZe}S7&f+#R?1>qv*A~hFMdQ!{6X+e?O=pwuYf6wISZbem{I>d=KncX}o9WB*ReTn*YvzAlP1!!WA#*NIzLPKPQ`0f1(Sb@3~H!%w8z`cq$ zi@6w!2A9nd6ntU@F*fPvjmQtg{1$=SX^%hZL>|QgLIY}n$bQcGj)Q{^IAr2)-<>|~ zj<6{0I0|mo4nH9G_i+vw@o`lg7mb$xfZ}{Uq=P@uxT*>ZPBTV4moxsWR*1Q&9fq)0 zV2$=gEDdZ|yk49?j3V)%;#*l}+f>}3cpD!mSpJ|sJD-`0)+#2ec?cNnC96intvd*| z0^0e%>J>H~<8;uc4Ni))zZ`+IgK8sYc>`EAtWK6$hcRhz3|GxZDvhJib<|Xsi`#?+ zPUAWRnt)#|TwO2jstEltioE&1dM)F6Xa)nnvAD)|s6Ma0OI#K){5;MVu$sJJFkvvx ztN8?OPxFlWtnoH?(m|*4lNWxo8mxJynxO3LhJU5*|Eu`~<75{d)cX~d%o3B=4#TM8 zu$cct;-JGN=Li^Mf78MATXQ)yufR{K;Y#MZY3d)= z`Xri{LJ%~jYPk6v^9As>>oq9277It?)Z{fkVK%~~L2j-Yqe0uiac%H_c=n2Rhz6Wd zoSv*|6U6yZ4|u=NUt59&_k-1iwO__!gJ2tktQl*+#v#{U;?M2Y3M7)=8W?&N^94f% z76|tDwOrLcTCa(OW478pX0Ive)5_n^2dU%K*Thx(FXFaX1@7NlGa9^?ty6e-G8Fe|{M;=q z9qYW`cyHXqFT97}$&35CnQMQpzRv!sCVsB&Y}xVV1#zL_D+=PiW#+VWZiL_aiTLnn zVcf-WXW!V;aoJ7HH@CG6$CbuyF>}E)8@#0~Zri!ivhl{2Zw0UU^H9UF7sTBee;&Nv zpSD`Hi9c*bD=ou4tKuGtDYk9!XRc_}S>Cb%Nv{9)x=qdNJJvgh`&Tu}E{n^LN!Ze| hso599`S$v@jqtYY_;qGnXvd|i;^qu@*T>!C{y!@jd)}_D z^;FfV>gt|Ve*}BJ3|h-GTgwucDiZ!#C5hpWGgFqF6E&F{C`nVAOA`Kw z>oWeN;Cc$Kr%ZfmTgz&`!0Ti-Tb7snx^7-Tds#ksa^3DK#f&|$ZeG=<0q*-{sVcw%8B)NI8T&`5pZWzdMu!i$E4$<&%jzcv(n&TQ89?NlcwQ#cOS z@KlZ?G(2sJ?3R)uHO0d(*fdVO1&(35{Ga}O2ApZYSq9v} zfIA*?>xS0Ja3R}(I~(vV2HeGfyBhGV2HeenyKA^i@&sCf-u)_LR+R&mE4K3QY_jKo zjY(f;l%`4RC68ozc!81=eoxqX%uPZMiA}JCELA=UuXPP~HoSRN^dO66^bjRIqPFch ztL3BUf{dLnc;4BY;6dG5EO#7I?u@wVp4}!vsudswVia(cyN~e5EenXlu;SxX;xIJ% zxFy74tn+a%5Qp*7$GuD(24Eley2iN!F{1m(wGvFFmH-L7lD;rM_@hVafs#tv2dIZXWKl{LdsEaNYW%mQ zN~XPccTp+7#U^;-0}u}?=<7BKo&f=p?fc?V$M^0d1>kVARu;4THl&`2tE`O@;HamiH)W~P)NzaJk4LmiJjoEAq+jrL zszYXSjkd~j&RBWN&m^WskERk})Jbaf=dNs}_>M_1|KZHnkqGPoHK= zM!U3Tbb@lc)@}9|E56)4s-e8Ct@23J9kP_Id>@r8f7DhvTsKxpiEb_*XsZm1uFEex z5nWq8*j9I#;uj>}}Yayw;DYnReGHjO=@JRh5^ z%#F1Q)Qx9ps4GWl?W(Q8k)b@bjC~gCuBslZvbR+o<%|n9ksYJ#X=PWc$7KhHOxNls zw4E|IuA%IluFQ!`;(ylRPp#?7w{eg8!bG=I?u>6Jr%hMX_*A*UbY**dBG-<^XN09s z=jLTCxg<-D;^NYU8FiI@3DE&r16+!`c|B!GLTH4~VnV118?_U4dLW^>+`b*JumPf_ z7cRA0nUQ#pW_*Q9mGg;w*g(9CVTiTc zX?W#Q<-yu_X!ykQ$`7@>uosp3b)FoR^?EG2P&FxQTdb6grs02ut#+MWub=>W%~;7| z@nEpZVwT&c*Rx16lX~zlXvRM65=z2d;(pKEVC`?)s!~>5kYu}5Tq<&rw^VV|t>L&Pip;7G=x8Mx+KK5N@O$Ff&o5M|cR|!kHHonZHBsss`x;vBXOfE$9$qDJ) zULvLC+!C#pEEEscTNZ$#EU+eIU6Hk-du`@vSYooh;nVLn7NuWIrbInD8+B|Ox_qyx zXDbmYsliWE&{x{6>yolMKz?Joa=v~GdChbsJ2f8{ZEh+drUEQ44 zB*{JT)V8{M zzCluOUtLXZI0r_tuHhK@?tCRWy**{ub&oHI$U$Irr2ZvuU0B3p`HGtElAp*|Hl`=a zv-6d2@n>GXQjR|h^Of3-5@j`C>Cz}E_*q{p%7cws1izuH8yhv0i}RIZja=>D^RZe| zuVEhWCbchL^gt;wKyt~F)wUzEG;q4%`u=>SQ{zPWn|$R?{5h1b%)y`1d}R&({E)AF zfj>XxE9dd&7Zk5aqWo*Vl8HZO@|98eb2eX@i9dhjE3f0vg?wcX{#?pe&NfL3zUs@C zQoCvY;2LgU1OS?g4oW%e{}7#y!(s@kk`Q_%x{TWSr!M6xT>V~vUTSS_W+R;s{_Q<2(3FjX1E%oW)`tHCDk6ROlmPi9+Ii-Y0<#p=^G;jVoBz>T3pJzj_Cd4 zGBHoYDverN_-O2U%%049lcfVz-F#G@Rn^La?<${R%~)ID6g>{t5Jnkhi&EycOt(v2 zdAI~5U)vcNDAB#j=PhT-_iK?)ZB<>)M;=-yDzCPR3qU@2{^}`ZtzrUjx3VXzmXg-G zpZug2e0l5mFp<~lk~Ts;#qYgGmbxnKGbYN*Q0j~(^2?dZvCeUd+~yhC(^q-6%^&=F zjaxS=x3+60zmci9+ijEA^Dwc>@b*@%@K_-88Om{`SaYw6GnI)QVwIxy)zt@`?ig29M9?%)S=Q!f zCAZTO?e-J$p-km)b`$wW9{wd|Q|D`nw(eNx#>|^oQJ1|OZta?`92#h?_Bc8xhHt_2 zlq2J)&ra*JgI!ijF@skBFHY ze|;@|5r#2IYh_^^zjDKgRnGJXqG;L}Z;7;U2ks`LI-jZJ+$Q`H3i1BTBcx^|++ zYJ=}1@IvsY1%cJA%AGkbIZ0BwMg#!8wOl?nUQCjVo7C@36( z%)S(bz&2%C-ypdpPiZ(d8rBjP;OQ5uE?dYND5ZT9sPX z4M@{@3&$!8`de%BE@gSOgjrU47|4gLO5lJ* zo>=Mtk>>L=(&f35@*v2iupo?kn+7!F7IbRB0J#VW&rXQr1zSV~b6nOsNg#I9M1pH2 zC1g%Qw6~(N4HZRUwUKSo95I~!K5$`xXJyQ~nYTY9%kT0Q>4)Vs8kQ}wIznM~MPzDR zuMYhsgI)vr%LY9R`YQ$ZpbbZx}8F zq!IEtQu5BPo+$kwdhbGCpk)@%D@;*s%5A7*`Eh&43wun0Cu?AuvS2W6b z&6-92FQT!AVaR3cCJswrNxZ>NmX}){7#nt#7yITy|4~%gFub-L!<27_H|9oFV?>nI zI9~E4j)2O328>RIl6GjwN`?Wvnky5QwWf?;aTA z+jY>~mX1srFmgh$SMAM|JtKR{!hG&)5c}Q>BxUKRf zhDokGPLr$3sFp;f-uN_;tKTUVo~yHjd9KO`^IUmnM4l_} zjEGz*<7rMoqMOGzlp|#2#Q0akJl~-^;^72xpQ6HP~>BMZgqpUIvT_z8am9zJLBaf4nJ@<{2C(G-aPM#aUFK&CFo0b(Ufg>J#$cL2& z=lXE+)Ve<0cPj1aApDG}x5y94TJN(cC#PonLbZHoT#aWR)6Mg_$CNb>+2y6Oa{94Y z<>*7H?8S9q58oRQkQL=pP7iP@&rQFDtx{Zhu7&w_thgNc$q12|pUUJnW$cS2D248z zuHK2lVw@rdO3*wIr+M6^tY=YmTMn1zh#Ggd=Y| zfRJC8ms(y$h?OEllSh;J3_keL=Gr7n6SCv0%p;Ed?jx98w?39Gzb`BMA5E0^$jYTh z6L{KKN@R$Eq=Pp4kal10_u_(LoE>r4X^JZ!& z!*__A(IDo!eghsUDb@kbYdwNJGlWO5=e}6QT2MXeCqvEtY^d22^17Ad&WpN(G6V5{*-_k(T z@5~x3Uy`{q6v(F;Fd0uq#qmn84UgYDW$XgUvSPN?He&hSKs;#@EpG`BJ9-PAv^3?Z zz)Jia^a6~pS?hw}M^&?WqWG?>wrUgBgpU2;lRf3?0hqpGm1eVB@#0OGJy?zm@cBjF zHoV3!iVom@5x=A19D9JbBnsT1Dm)`Sl;6%JE6e9pkrR1jvFTZTtI!N%@FFn*i6*va z2E#o|QL2;xERoSLg$?9}0ZL|}=BO_6+Eb;s)l%Lqj1a42KJYpIAh!U~PVC@P*xVSo zS%4BZH$!e6AeK8*=i1~B0m}TjiSn%?yUO0Vv2xD<W00*RS1_LAiVWWypv;(mD{5oi?)jsb`{96VH}*Zm88`N45@+1lFC@;mvHuit z#*O`Fh%;{NKc{j28~e*CU?g01?^A}Ch%;{Nzeb#KV}A{C#*O{;8du52zWjD4WzE9b z@<*MNHcC|Ru1=a0vnN0qrqr!1>~Hu|Y^E4CRI!!rn^Ca+_=?iezQ2>Uc@%-oBjFFh zUHB$IDOX~(VSM;frS_uKj8a1|Y|)4&`92^at4@eyE8AM?D9b;R%_Qat36UIS?ZtBf zkpt}c&s@~d{5hO zvMA+G(*`aw)#jO7c<>p|Y>=yGD{a&ka)d>htTuGlvS_*b8M*p7Up&1Kx%yelRmrcR zlH-r9n#YMgo0S}eK3i3rWhe9cDberZGR-|VyI;MiF3f;Mk&uN zu9Ylm&TwDJPf?NsVVp~ft*$Uiuf9e3c5!T+2y1%sBjwl7I!!~1;`qmEcVjr7=BHpS zi8FSV_QV-GODE!touw;r#?EpZamLQlN8|iE%K!>!>@0c289U1e;*6bT3~|QJa<|4+ z(piEhWou8t7KLa}!R~l2B5>>gJjL3omenOU62EiqmVO@%aEWCPy>*7NE)OS zBpcETk_Q~>2w4m%f~JUEcsoB309*jvpYW5weF-lB?nPJyzK!q_;BJIh0Cyq0 z5;&Xi8^9e1zXgml4I-@#1y*-p8&bC5LMy`CfN^L`1bQF13E`c<>4ZN8P9yvoFm@kA z_%DHRf>GeFfol^!3>;7RC~&O6Zprd96s#Y_4X1z|gv)><3I7RPlkipG8iWHLw+4!% z6sWl%;2`2_0#_j%1uPRz0LDg`NGk>SvYV82D1Q=e0sIHy4B)eb+XJ5=+!6R!!nXkb zLije|V}x^oj}pEe_z2;lz~2#ekAm_oDPw^T5S|G9CE*8vKPUVM@E*b*;9Z0t2mXlg zY~T+FF9hCBcrkDZ;bp+@%96H&{1TLR=)!Bj8wsxkUQhU+z;6=X1iYH?X5iNe7Xz;( z{66qYgm(h3Ap9xtGQyuf?zRTv>6T_JxbP3crNGY+{t;Lq{44MR!ezj7310-BO;~!u z8aR`172pEG!N89awgTsK?1tgkp*%ttqJXCojswPlMv=MN!1ocZ2aMCff^Psko^TW3 zy9l=g9z(c2@F>Eafrk^m4cI+|lzvbK5gr0Ofbbo_xrFZl?oIf9U~DOiOgseKo$z$v zu7n>2?o7Axm170pL#{VKHOX^4H0KSLt72t7%17=wR?<5=q zJeqKI;1Pt~kx+(`5)C|-D};AVu!05>K)4!9xV3BdIUPX z|BD>G0_AzSup0O|!v6$bO!yt(rwP9YypZrt;Q56202dPe3iwIFhk&0Td=z*F;gfDC z9#YDHaePc<=rZubge|kJfe#W60iHrQ9QaU$5N-oJ5?GA? zouCY(3*CY92=@WLo$w&w{)9&Y_a!_QxEJ9Gz_$^85V#v*4{#U4Gl8=S&z+6&zXK_Y zaG^cn=YZP~#$$oNR)k*#ZccbLF!s!e zyyq_;8d8rx@hr)TmTWlk#*e+(We?8NdL&;>J)~`r+N-kEtI;s=1jo^uRCe_e)a*-jvlN*Q~MLp6IYZ*_VO%a~pe28;*T;3PEv;6*y z77OMCKeteKW&7 zay`;{+$na2$4b^Bj9+UZTOd0j`yi!|lMs=92Snj*=}y2kiSG>TZRsw+-j?nT>}}~B zU~fzJ21Zu2eSPF*z+1K5Mb;@&3EmdC=;YPqtscQ;fWygaKdvu0*~Co+7hvLwz~L;7 z-@QM9t778ZL6@AiKogk?uBwUa2@Z#C{309&u9}H^0vyiX_=Q^uF2uxb0~cCib^8VU z>ax>T-4yU5xEdy|>lLRh%*5q`vzoYPz|}NySHOk)IJZ{)j;l^vgpbs?d%#7SxEI0M zOx#v*b`zIT?zA~f+#qmH6Zf_oWGxfHx``B#LWg5 z2TqLp=#RqSia^Gj0)7B4!NgU6&uL3Eanr!nHgQY9)iH5DgR84^Zjo@cZBAQ~P71C+ zxMUM|AGj0~_YAmtChje8sV43#aP>{x@7vr?TbhZqZ+F@nn79_;8k)HN;L=Upec&3I zxOw0jo4D7&HQ^lh`@Gfv0m!DNfZu~_X5!=>PFr&mmk6$fiR%cirHLy5*UG@T`QY;g z$kqmua|gg>n7DTDJ8|mGzi;P(Yir{6gKKBvf3_c^$3 zChiir?ncgys*d03wDmBO;BEnTn~56_uBVBc2QJ6Ny#=n9iQ5gXw~4z1&fUjE+CFmH z`kJ_o;Brk|9=Luc?n!X{P27v%2AH_L;09`(+gJU+fV|xl@WGFrwm~LtKDfaqF6|Si zEziXD1~Po1_gCayiWJ5Ai9yPdYNCawhBT_)}bxN#<~#U7{aZsOct>mLAeyeZ(l;O;ST z&w!g?;x>buXyQ(Qn`Gju?seMk_2=A{W+3nLCoMg}O*V0lfSY3Co(6ZniQ5M50TXxS zGpFrA6Sw3`r)_G9+kf!+4&+0ofaTyGHgO%ka@rm-aq;_{wrM7AD7fh+&J8Z#%X$63 zcR`wMVI&gqcmsN;XmF33xc9+5X5y;uciLu{xbKigfr)d+pmdL$$adhKFmaE7n`z=w zkjN|(Hxk^FCe96RwuyTi+?;FtKaho{fGG!@wz(#*6S#RMZW6fpCT=#k1txAIxTky^ z`G22*T<9Y;Z|EvG#l$(kcG?!1xX$37HgUtiJ!9f#fKyG}Za2uqCi0taoVI_MxbELN zZO@vxXTUvY;-(&S+LoBO?ckQ0xMSd+2j}Pig&uO+mYD*|-#Kl|P25^=FPONv!%o`@ z6W0aYi#oTS`xOIAowg#K!|D~}Hy~fqNx`i?;24IzIWPInYeUtZV=~xUe6bwzVeiON4uqbL9Vt z98N{Rw@d+3!L2iK3&E{7ajU`o)5LuMZi9)N`;*hQ(ZC7+?!g|-ZgQaV@|tmtBHIL0gIJi-iwm0jg-J`sh!sIEd#^;hR|t` zf*<Z2#A}*_v5kV4Z?-kk4ul!v!l~^e*b~8taNIk* z!h6-t1QIos)UIq-wqQ-jC*?o(dh?y^7NQ~k1VczZuz3~hFF@ZlLd z+6TLRwNkiT+?nw5SKu!81{g=ejG(2fO7ZA!>0A=29O0 z&?zqsQJ(v-w{}*|P<+cpepER`@>WyGPFKfEqxBsl9Q1cU?B|OOn>hUVE!Fl56=!t* z!Me(Vok0PfgVEX{|6wliV&$Qo5n8U11)GEu+vemy>YU4Ws%psiLekHn65nVkIS?(m zsv&HZ;?ivFYVjQ?OGx`8o-WsJHt{f)izNtC9fzs1nAns$7>(o6vr=xD@Uf3#MP}!J zQ}2f1=6_N*+%JPwB}uX=HNLT1P*zFx6tTK4?+XUkDdgdg8z=h3fn6hhQl7tg!7H1; zb)m(1vssGsi>?lTU9GsZ6fg9+tdbS=r+o2AlPYVlVHc|e@2Xw>tvQWRiP(9=dFi@5 z?>CiB+^2Tsja~I`GHeGPPMzpr2};4I)*II8nonDcNGE2xlxn*px_G;L1qPD9zmVZs z&(C=K?-FLr3gbfnwl#f?t`r}v*R`^^q-{49SEUA|hE!p(DSpim$Ss4L=ruVLv1L}4 zHGbTc@7VH4EDSrk7^RHG6EDr|xp99AyIfakbj+eO+G`EgGpBUh+s6IdX1^`aRcCNs zh@=<(4up(`OoB{<%z`X}EQf4@?11cr9E2Q)c<;U0zqPIxFjR^CY<vl=r^u0Ay#+|E6N41)h3egLzSqo|^&wuNXFV#`YhcQ&^W2Do>b9JD5bj<$J|B{a9ZQ^O=NS zfujnQkZ)^YK7hMbGtcL$Nmpf`50d$9y>va@677)`b$*dXgap6YP>FR474=&@8LPuR zwFbTl7^X*Zji(_d5|Mdi*t3m)AI5(|@!rdAzQRP)3YCcmd7{evgL;}boaja!sw=GW zzp!ElcVhIO2!_u6-^GS;Z-+n1;vSatVHlrmbG&tSLu0AJ8xM^SFLOQj(?`T6NWb#> zzh;`ObW|)ptT_%hG5lqg){F2PJ+g#jsXS6jZ&adKuaq{lH|^mwN&aOluUow53%&GV zM>6E>P-V^cc6&2@dM_|I9+i#e+>`q3NNsKl>gn<9#^c^KImeS|7_K_;9%fStzfX|6 ziM%)}&Wmt0vMOtsN?eV9gZJ})HcQEVR(O3Mk-N?}HjL9hHg4k=SrU39mJz})a#k`7 z_bOBd|0IS?u|oXEPnuuPeab^W-HcBeY4j(19!qR02GjPK3GjCIU(15B=L?r|@y6=vD}FUWHGNxPjdX=E&Et`y_#Kz+ql zS;H+mS@(wh=dZ-||7XLv?~{I7n@THdfi*W7?r+rY|D{`p{eE-Re)uNC4Lf^t@nIXw zf9+!2GorOi?Xrx9^Np(utf|cllSO_D6D8~$n|IWzboJpqq-ME-#U`9czY#VJpRqZI z!ym@2!0XSI+)=DFz3VLVB=U`vHRobwPg`a8IeT?a+h{LM$Ij;dapO60^B=Lp{4#qh z=3=a@?N}O#1n$@NE|Nk>e}L<>w0V%OS!gvau3?{}0j8HfY0AJ!zn14?>x;PPUJJGf zz1w&t{KG?Y6X{Tzh(jFC!~TkA50w^aoH!rrTRyd+ znyF}`RxF?N%-{=2d`ker7qcaA;8P+W*+fJ)wITY+g}VNG6GO1S#CN|?BH>nKp(YS{ zko2h46-PB_*mDpW@xBZmK-X6k>ZksS3UNQ5q{Fc3Njujs`%Ps*URPhmO2?IfSEz43 z(&~tm7V4`}?O(;#@v9lWtBcHw?f^0gYJtQJ21Qr>3(J6#RfNY6|jNg-{-?kyA10?mGX-&tSWAHNBH`i z;bLi1sRtW&xp|~tuMwN+H6&&2PhwA~av!+T7%E*}oi1;#6kf4jHy<}|#UWSQ)vu^D zaB@nyv%@XVxPM#O{?g%(W0gte)*J2n{rxB^Uw@u1?|j|L@ecMkw7bfjHe;Ps=6?JQ z-{3!!jY>^cJ$xst*V4~UaPpfkBlw^oc2BW}yUt`)>5j;adt{|snlL$afrVLbdg8qa z0~8Vdr6(gdvL^AI<)*V&nK}JuY@)JOQ`b~wvHn9d9(!uDDa|WyhpKx5nalC-e4bQE zW!*$BxBXY-a@T)FF2DNs=Tgn=#*91dH`pY9fIC%iD@#LFM+j?e*!xijg)o=*X_@K{ zVX5|?{5&h4V}&i61|bHAM?D|Hnj2$k5z69v;@C#kJpS2s|Lyn+wudFhMQlBvqxWZx z&j*4jx8%Q zuJ(v1!uW`&VJ4!&0%I|M$Y0rJU+uZ-GMoe94@j`v*TA>WR^bz=^tozCmHlS-fgbw;nPhy1eHuuf9IK9C1aRUNz(s^Z&#N^RI=ZE_+y)TA%aCZ z{G6A?zLk<%JCfDCu_@<}DMxutIcJo?q+X9?3EB$Ru(tC~gY+aOAuGW5R7O1?X}CMu z#_sTqLo;nG$v*D3ik{_&BT?!R8%y?u4znZl6BUL=ABa_#-^H}u*#AA#tkkbm!Y-$( zha4>AW}PE7%z5JmSNl5I?f$#PP9`2b6+2my{9<+Wn3J7~!YM3U_?A)!L_8-IgReNR zr=G6G?BRSsN1Fw{%MArn$mj324SxXxnK)5)w`RIQ%ktEl`G zh6SI<_ieGp)lmDUuyLs=;<}Un=#>~N@mm8ni)6Loe2MKaetsv8<{QL!EQQ^!P4;Yw z+NB>1ocb)mxFCACK8uz!YVa-PV6hL56tm{4TkA8sQ)(IM>-&ZsG=5a0j%rO~ zDZYh`*UJ|lX|`3zU9!-aF3Y4tzCN7(s%=;)!=u zDT(LX-x+In#=DZGc#$nF(Gl0&y{4h@?jYP<&2V?BemBx?tfr*1w%0^aK7(NcEFC_s z*QEH*S0H6=lig6x1rA8?z`Cc_#tn`W(AdUe%ajVrk4 zxyHug2BWwkhT_&Y6*sa8%etnxqnfbW+DMBdCH|->>w~H=4gXcQ&kXQbA_)gS{oJGh z^VAbfFbR1Na@CCSbI#+M!bu!bL+#R(HIYXPbBI+JH)S_GhcD)rhJI6CqIWAyJXrF5 z!@@Tn+^g=!&R7r8KSFu`Kykc2sIb=(@$4w6ipR;H0eKsie|i9Y^Ll+K#rM)l1@4@9 z`sH;kyb+2YKDqWO*v+hn{|BXhsFG4wzfP&a|7%N){!ziRzkgGyAFZU+HLg=?@c-IU zV>J8Em3nq1r4GAJsloqiOO5gDdZoS@SJpVS)o6#QO%YR@Lv-DmlGb&@XsqQkbp}gF z_D%qfiX!F289ECknhvU@H#x7uT{Zg8Fr|g@a zwq*P`?U|3XcQF2bv5G4xR={Xfg3&;<%RG!IrBrr!@Oc1hA=l<6-iS4r}wR*R|uqVx*NZ!!O2lQw4jDE!I{w#gmYDDXvHuSG3GL;Lv)x&@k+!f3vn|emeL`*!&+bV|o@e)0!aTdD z2=nZoCd{*YhA^_btOpyD6g^)*2^TZpYWba?8}l5%&S47n0^-FgJT6DAe;XERb;HzQ zx3PBDY#vzfTWpTf@*}>@gL*j?Z62s!+{Wm0g(H@#aXs-gxOK$=hxKHA?A{5wehSz?>Z$y}y(~Av~?+R02@5NHXCtTBj>akwT)&5^(W8(SzU+)c5uE~}5+N`%X z6#Scd!wY>_^bK>nzYjCLgoUrY@+mcER|K ztb3#5l6=g5XkaBZ<<4VC>Zb!)i2uO-rDm!p2C|ISZI)tO(7zt)yq`&}AbBM5_?vCe zIo}JCcE39Gc9!E_c1^X54l2fdmB#%dSc=!ORswr1YZb89vep87Eo(incMjMD?41MN z1^x|Z3xCfnwVj2OWtOUId$4+Hzd@{(T#}>CA0#&3HFtL7AeLy~Sz!lJF(}hdf1xMU zAB=!sR~!(da;)kZ%$yOTU*IXL;gquaI-VZbf3EmWJXyHq8Y{<1Xl~`a?Rw``-gb?R z-oZP0tZC~8&-=Aj=~SF~$4AxckQ|2|YS20Fgp^HHlZLRIao1@rSKohmOR0y4u={wM z^c`wwlShWKDEpa;D@;t39}Q*6Viv6YM3Ojs>ixyq$H;Og5=6ghz_!8#$m2SMH;u|AIvs-;j&{3mVL;Jvr1HLkv`MzYK9vjUP z3=hmpye|&u&4ax+hqs{jR2*ZMJ6MAtejoyGru?KVk7}U4dPgOla{nFv$NcPLSkko> z{4f>yp^DSJdyJui4daQP`AE~_i6<7Qd&X$Cb$SfzZ9J@@cE=g)y8JC4OFq6S#J`s9 z(Y`Ch-@EwBZ~s)#tM1f#)jzD_^&8Qxa>g1CTl(zk0u{Tc;$ri!L8$MKWntG=nD^Tn zZ&iFJ4*I#&gu7To^S{(1cP!8z%qmO2b@Fc;_#J<`nSB)hSreaS=MG--I1Ku`tQCF4 zLLEGg(GMA8UYRovgWaBrOXT-$ha2|!^t)+`^k(+6jDx||uB_?*=KhF+F9WC_jc0%V z(*P~xBi6t3i2`hwt7#KhotvCk6nv%N=HHR-7I@8*M$d$bUpPKiu`T$$BYiVw>3_W5 zycv7W%Ac`|ZkjxaCDp#Vpt0kMcAkNMO32Ua*8GvmKZ&qz5^dbwO!g}5H97a9*H~&+ z*lT9oYwk5cy(^rQZ@$+IxbNnAjbeHU$FK#>zXIahI=J2r^mX2C;S;|@9XXkW->`4b zpUlKNrs^w`S#!LwseU(^Mak07>cz`4z4-;SH3Ugg*PxM_YIzi;&vEWeELOks&$ z-67)Xrk^lzV7J_MWviMw1>YH>o7#&&tqg(q(?JPKNeI0UDRJEb5t9vl#7>)RL;=D? z9Em&*?Ge?n`&nIY0$MKcNjx!<^Jm)F+^#qmm+4bkJP?0c_t$b^7rFR}$3bT>#B&ez z)ctzZ@+ymZ(7(#Y81!Hf$0{aey`WBb5JvzEReSY8J)Wu}+-#A=1(Sy zG9AEY-=xeNwKh+&{Uds|xc=}XEY({LT0AQy$r1poVIKY^CGmqE{Lq8JYWRIuP4Q$* z({nE3HRxKm7^mh>)6>?tK^1V_D&R6I;8OiKtzx45D<(oz4FAmGrF`x5Ze&fhOFp}` zmF}EW{PxLp28+sv-~asg_$pt1;fyx_9G~&iDQbHUt9`w5oR!QR3V%a%_{Y_vFIVse zz4=wzn|Tq|!E4(R2wQ`5X?VDPGcSoYcV6e_%A4xJ$F!NU(qt+)eLCFqpw3lOjl&@> zF_mY|V0E?QO)YV_pt9plbxiArI!~#~W?c7plY&pzsb^-e>ilREj*W? z;D!>19|iJ-8&$KFmTUeZtT)236cE3h#hB+c$FyeyW;A* zPq6G;AA3rF=uz;LHKg41`u`IZx=RTj7v9e2pG5qVwt=gt-Da|ul}7i>4Wh%NC&vX} zbRW-T?ntFv@7++Tw57>)N&T6@)Y1V?nrFNE(GVUNd61QTb2fm{rW}S5k8Z zvQ0H%zJ4?Mv>Vhw(d+o#${R&eNY%Uxk%*DveQHVUVmp5I8V0^@@vHW%C2$9wrv8}1 zVTaps$`I}pg?op>xpz^(9}w^dL%<&>;93f}m%?FN-EqPY?gWK7Xt4sVZ& z8vKUB;Ypa|N4Fv1j}&kU1w2Fn@%YSf)DZ3{g&RlVN-5m;2=~1q-1ig?ldMSi2MULW z5ss7IaBj5SNebAX0{%z=@l4Kf%o`Blj#0QC6z&*>AL_@xHii2Z_MDM zy>#0<|6u9YO{oUmBC_YZ#r`a7)7+fW1?>5sH>BpGTWNmG#wxL-%El+2Wlfpd?s?Y8 z)`$X7*Kwe)q7;ukkAnpzS?Y%8Sr=P#3UU@XJ`2B93lhEzs}=-lu?#`7CP%Mm1(g5VR-jz9ERD98pLWC#VJ8Pyxh3lz%>2r`C(&>T)d z7E+K6JjlHiglfeb%LuHn#Z` zgj$U59{D1xZ+nI=k=f9t6)&gGjRaRnw=UW{L8KnsevHzHGUOn$qMI{#(%y!>7tHT@O%5_6EOAB$ z`$BjH4)zraXmqgU2vIt-gI%?+aIhs?40o{OHfFrWI8c2 zo1B%Y_F09Ob+a;KM7@bIw5vLA6&ore%&Apq9{jEG2AjvjKK}-E{N4HnOrFP4z|zC9 z3gEYiDEQxdW3&grtMSmfgQCt^%|YELp5T z%GO-S*a$Ul4QptNr~3>Ju4Ge3u3_tJ$#jWE9&U}el)9EZXG^C`G;Z+;0++s7%aU!a z=@QLObjkiEo9}+-EkCn!egc0Ik_E|yjD<{tEPxb2HbHhlN+D$spV@WM8YZx%p`~vl z&S-YI#QB-s?L->QZYXg^vl~U6(d@<&XEeKeh%=hqeZ(2f?!kx(%x)S5G@9L`8fP}U zCp5G3ye7;pN}aooO|w4}k&v|=t!`MOA;8AC_3Rtw-m}iHy2tOqG8wW6vJ$cdvKMj` zasd*$mr3!EW{|EBUv;mbOd6|uC2_{;UPGK;b+0GVSlw?EXRPk6#2Kr5J8{P9-btLX zx<4h(SlypjRNeb2ps~6SYMi;ck7(6ha$2iyrTN`f^|y^I(*9dSf+r}J|I)9Rq6+x5 zk3i9zm@B+_l6V=4*IXIjG;W@xcHhMAa!b3=6X8tp*~eF{S12OyY{Q+b(+GD->#^b> zqMWPEQas{vS>op~9S~P_KG|d;fiYTd4v6&2l$bbpTvs%Qt?Ap$F4xReyT8o_x!>{s zwO{8K=!K9hNG@b7WEx}vqzJMJvI|lQDTDa(A0Bz_;O`{PXclqA`I$u>B8_HIk2s@Q zG$hVw7EOsWnnf$(jAqe}IHOr~jI5v+cAD+Yg0YOJ=qGIujevyF&M z$m#@>Aisl~geO(qy_v;@rzdL`ff-v^M0&DXzL`BLOS_aB<;m)+TUdR3hd~?9f8D~m z+U}*eE^WnBk}rH%#MSLx*5Bkfnw2TX7X zfLoosUbxeJd!ktIB z^Z8msr*qZA_-lKH?*9|_|LILfjVi{u zlNWQ<%wia5%ME_xR_NClmmtj`T_JgpNst1_V#q2;31lDSIK*e5MbxauaqBhWj0XB9 zaefB6fk>l)ZYIuXpe4i^4fK8Dj0XBKaYh5(L!8k-_f=$|UsFJ%fqtiPW&`~}GtiPJ zH3QxF=zA=b+0J5oSOM!WF6f?AS8U@?Sz4&Ox3LG?{aH~EG%Oqr{#hyRZ)UZLk@!oo z;@3FV7Kjgh3O`gtQCqontX2Kzc9vqhN^#LrLaZO3RDa*jo(S=@z_7&QdM8$$v4gF) zRkvwbqtyU~z2$v2Awqrg*-CQziD4}3H(@0$I*dlJV0^xS?1PVBxaMnozaJ*6 zm*PLkLC*?MhT5Xldv~%P_VFTWtN2m@I=L7O>Wx*u*vTf?@1bPQqVu2CIzP|CfREUO zq-k{RcU=43cTIBq-kv^dhC!;prk+4p_pwcWZNKXWOiz$9NYGI{Ab>Q2WJ3l*#zQ=i zMUa&cU)#^pYRAu!oJX9o?Vl#jukD{D(%AOPh%>f*5pl-0f0a06+pi|h*!Js)Gq(Mv zirW5N3TSNmZ5n54`)VI*ZC}z{{q942t)Rm$7HQj$PS_LeUkv}E*o~)M@I{)d<94y+ z;KNTh7Ou$m{nTN5a8P^gF4oRR{@71Fzl-%xJKj(8Lw-h*RRbj3+lU9^!f(?!@T@^R z*F5($8Vx`0qa3kEsAoQ9mT-~eRs`KjJ1@=E6`!)ELGm*dhI|(x-}QwI+|3ekrWRIl zDpnYzNaWN~wasqUqFz{kZs1la4w-oe_d)zJW7U$#4phJUl-UP~oNPh3E#CNDl4FZD z@?q+e08)EHY?8;#;Nu8u;ei04|!dx z)n;seUYk+2M7obEKASs%&DD8(@DwcT4wodRaeRSXtmtE-yQG48;Nf zWyCMs`K6QGU)zPicSFQT%^R5ypBy`M})!;1)^kHAH)Zp)QU4brtmY^1Y!M4M`XY6Br8~?b%R#x4(yNY}uVB>~rvQmBH9S(Vzym4PGd0MrNlWNOtYpc#2IZeLst9nb0 z+>%XE^YKS6lQ(Y6ksr3Oi5r{b%5#}~@E7&HezHrpoKTPSlarxu4DK)ITlj_9gXG5i z!n=dy;quCpYTRHR;H27hu$&}MIjK(KI{1HZJ?NzR-e9?NOs|tn3dRo;1+o6Du_RR) zY(bA{*#SSsmv=%<%#%B}T6;nZfq4?4`dQAhesMf>BPrw{UAibP<>FEYR{_}d8C-Q?geOv1=0;VWTMIsOGmY+77sw9w72YeDV{zalsI7a&y^e^X9*^%_ENbvufS ze*qE(P5g6C^y=ut_!sZfu`7pvDLy@1=+Y!__z0mln&Q%-y3kiHgrcJ+yQPUla7-}Hp8UxDuFh0Pv{ zCk!<(^-HY!Nl$_ve@@SDGw3JVs~MBgPR%UpxXH4s?#h!ecnbdluJ354mv<`=(C1kh^Fgx zp)Y4@)D+p}E^LP`Li|L2Upf?_OVVS|PuA9py#)Hvt0=m-9xA;7y{n{O-wi!L3bQm)=iXP{3#iejT=Jm2M2B)7CO84FS(Lh)N1lj`abq;MU-)!B^N6TcoL?R<$z zCvggiN01GDDmrmIWhfVV;V^I%ekk-QE6^@zFCP9b=mps9pdZa0XUaQ4U{*J}^Y@n(spQJdPD0UEc-WJ8oNXK=BLc zp_#}uUH=~Xg$@{3(Du9u&Ol#|8VV8xvh(_vq_u_`a6#X)M6dFe(4D9B40eY;dNXPO zlM0V;6c2B>-wl1zMm%Dn1m{BE`<5g%qXH_>bA3(Zwn@uD6!-|6R0MseA;Nc{pY&a~ zOC`|vuEqpG5q=DPpCSAq=%ohz4D_9o^121Y<1h|wpWGBgqQY#6!cB=uzMh(|MLtq=EQ@1iqX1R27sl7-mkks_r$}mq!RXrzBUS56r|q^{eq!{ zGoVlN6~HFVgFetOPAr3dxfX8%*dNcpS`aB+V7c&oxLyo>UspYWFQ7|?COHXxS^;W> zN_Y->5o*9g8M0zzE_oPF2B=AELoY-x7*E%mK;OkD45Tj-ycL9{5fq_I(irF`+vr1Q zKJ>i#x)IHTUY4%U7%xDd)rd(4DMM?ZABfevZ3*<4EPY(~2>NBzklTU;`P^L!V%jt& zEf*OGmCizU!fI!cei8b>v-*@Jhf31eyP33uN*E6P;8YkXg|832E&LR3iQ7Y8AfsE- z_5RTFqH)Ry$6iDYOaM`|Qtzj3=vG6GJPo~c33k&d{Oiyc{DPiB8Q2Ux#t?oF^j=5w z0{jF$=n*7J;m<-(X~gSaL?}ts;05n$s8?wu^a3;i3}0k01^SZD@N|bFXa?Qun}?%1 zGNJFdOYbGOL2ve~uyS$#VCefE)s1>0^rP-^h?EkT4kGeHY`Bm<8+upNS1IYwKyPL! z;j7TsqYZ;_oj2iI(9@3SUe!m?LyseqbpKb-vkdqD4BdUy*G=rwDG+tYf2=9jlrBLp ze3waWDT3cu|uqhu*_b!gbL1&D1lz1Ny;w zdXwy_f%YG0xZ!&Q7(QC>CTF3KHe9a~hH?M0-VGz64>xqfB;j2;;4T64fq_0VE$`Hg3IH6wW)D3+vMk;T&n*}{|jP8&ufnEeF-$W6vf_?$T z38ne|J?K*h=p*Mo=&cOh`Uv#U$=)WwD02#g=T_`_QUq6_@4#f__4&fEx?PTuFomkn z1$|K?C_;y413hLs_DIR9v!J(~fbm~k50!dA?+PO?B7GRYo{AdhM$PB{aUi_^5&<59 z9yyrrlxW>#4)jn=KHh%*GW30_EO`)?JEg0kudJbu_1mC(3{Cbq^hgX`vk;zlyC0$F z;X04cT@yZA8Hj@CuvJ3=0GzD8WWJD3r>tH(ex=;zwr(kg@bc}rUpQ&wxdf9osM!G@IoufC=5a=nG-@P?MQoKrb_df1h9Pt@ncccFg~|KOx7|#zzo9Y7D_Y^g!tn z^z0>i27?{wROU^RVcT>{-=SO=_zKAQJqM92rS&Cs0*`a)$d^pbtL{tApSt%*oq z80C*{1XzhSY6gzC>1pUOd3qHwC))hD-fcpmUq&|?$iu^`>p)-S>(|(VgI>o_;-1jU zx?ty>!jFdD>pp!Xbl=SbJPJ#tDx418a=V^^r=TAOMY&=>nMfRPnTv#y5gdAQycO^9UCWT^i;K@|FKut^U?&o$gI7rMT~VVC{^y#N`q zP`7&l`Xs~sZ$d8|0HG3Zh2C|ZZbN&ZAMl2EqZ1zlF}y$8jczyz-LeihVQ+}H@o&&q z&cK{c*Dpaoeiox2Re5j}GF-=3r4oJ!R2u(0lg`lfM$n7)pjJuGg1!K=VGqP7*8lxL zH0!4iM8ly^+W?P<5}X7*9!|V>u9yma%PgFCqw6!F4}<~Lp(a}deU`U`=oQcL>wjRO zLm5~JefXoI+iUCpO&}!Xcsxb;9uHt>g3qA`8I10G=qn5LO{g;HYvJ{#(EU}T(JM0b zDo=nu5V>DY*PB2eFX9*Tza(`Aap7mZME#+!^_9RbP2zf*?%_;_zSvM>GocT}&^?I~ zSPcEZgZgB)0(zujoY@RL`v=sho2ujk5IeEd@>cl)=z9$r_#XOHLyeR{9}d5skFMNC zF7xa6B2m(-#b78m+;4}z69d@-x}F4m;A?3AEFy52L|XL-8ZeS~3kN@hD~+B8LnABi z4Lt}0m1rUiRD+XT47^en6qy#;eZ-+`J4LPof! z6$gDF_I`>eW38d*wbSqK3f+>ypKWS2I|#bxZr>{1E!_j+;C$Evl{_E%T8#O#=!Peu zPwKBv!%Lv2tkNf~H=xh@m`U*z{ypdiFw1&v=PQ04Be2)+IL5DsdPiI=SpMY1K|Bqk z4A^lVq80Xpr%;4x&=(BShwygLi{RKSqU&SgP#S|R^}zMq#rk?87y3%W_3_YmVhdQ< z4qvd$;1Mp@S4hu8-<5$egA!N?eNtP!O7U|Z(t1OLUqUZ2=)XXZKZ#P){a2vxG8nG~ z8LmUU2MZRv6a!*adwoID9QuWGun~$N3;HfY0)3%pcfg2B*YALSz;Jyk^yPd`K#g+a zp9MXQug~zWrW_$Hg5F4*Gx&nVA?1S@4kC*OfW8#EWdxc5_werc7WC10fHfS~xxO9x zQA2|Jpl98#59vpsd;i4)T!Mc5kiOoC1Gxl?)$Zl7Ix@8(xsK0y&_kp@uEcc@3vRA2^Ij?ygJ= z(2fWAR_{i`pvOD}M}w~44gDx;D32n17dMwt%X zITf`=_jiRJKU2?eR8{n<%cy^Z5fR?b1Hfdx{dyeq^>`SCu|{0K4|>-juzXq5r$N6w zL|?MahrZ9y&7OsxJxWh-74)6!u(3h${S*4M-goGe$VVXJ4JA4Vy_I1Ze+v3aLjo6} zA3v`98KJe2q2i6fPszioY`p&&c?{e5lPX95zcFqXn8}nXu)Sd=lOo6V4I7yPnYQz9 zVLHpW{nl2dbBs)9c28fmok@-jG{^Dd?DTWnnUpv|YZo-m0q6Lq|J=?b&jy~#MH2#J`KbK&9FL5-v?p>^S*)0 z^k*O@(EUEH)A@D+O#(6}xH2)!ftcj8lZh8JO#>22n4Y+kNrlmMdfQGWbs)74LR|w< zzSI8!DHcB_hW61||l@ R=^sJNtBZk-na&8*2>`0tk+=W= literal 178988 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�t*d4XUXUqXN@Ziv++qc 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 H;r9Ok$XBGq diff --git a/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer b/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer index 8a84b58d1507d17b5b0643567439a16a639dc54f..38fff844fdd3642f1991200baaf7346de3749cec 100755 GIT binary patch literal 148684 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 XF3Onb5bI1##>GBMlq@Ne25JBQjeyN? diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer index 164c95769ee115d0a0d7478f94633c12cb234e89..fbb775e6459efb2986adba2ade962089ab09ff23 100755 GIT binary patch literal 164184 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‱^C%u8l7bKjUp1aA-@f#X0I(5m^cE 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


rpqgT^eqDSd0gv4T@Nv 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 literal 166076 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 z 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 literal 172864 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%0A=!vGW1Ep-rpt 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 RySA08mrb;W9>DHJg)&N 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 mr;1h|GyI)bxa#n$uO;9B diff --git a/slsSupportLib/include/versionAPI.h b/slsSupportLib/include/versionAPI.h index 33529de4d..c958bc317 100644 --- a/slsSupportLib/include/versionAPI.h +++ b/slsSupportLib/include/versionAPI.h @@ -3,10 +3,10 @@ #define APILIB 0x200409 #define APIRECEIVER 0x200409 #define APIGUI 0x200409 -#define APICTB 0x200610 -#define APIGOTTHARD 0x200610 -#define APIJUNGFRAU 0x200610 -#define APIMOENCH 0x200610 -#define APIGOTTHARD2 0x200610 -#define APIMYTHEN3 0x200616 -#define APIEIGER 0x200617 +#define APIEIGER 0x200618 +#define APICTB 0x200618 +#define APIGOTTHARD 0x200618 +#define APIGOTTHARD2 0x200618 +#define APIJUNGFRAU 0x200618 +#define APIMYTHEN3 0x200618 +#define APIMOENCH 0x200615 From e7da4ae862c9729162356bfa7450518f7653ae38 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 18 Jun 2020 14:48:20 +0200 Subject: [PATCH 09/10] fix --- .../slsDetectorFunctionList.c | 3 +++ slsDetectorSoftware/src/Module.cpp | 2 +- .../tests/test-CmdProxy-eiger.cpp | 21 ------------------- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c index b4c38bea7..f15523473 100644 --- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c @@ -367,6 +367,9 @@ void initStopServer() { if (!isControlServer) { ComVirtual_setStop(virtual_stop); } + // temp threshold and reset event (read by stop server) + setThresholdTemperature(DEFAULT_TMP_THRSHLD); + setTemperatureEvent(0); #endif } diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 3972d121c..794232b1a 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -815,7 +815,7 @@ void Module::setPartialFramesPadding(bool padding) { } int64_t Module::getReceiverUDPSocketBufferSize() const { - int arg = -1; + int64_t arg = -1; return sendToReceiver(F_RECEIVER_UDP_SOCK_BUF_SIZE, arg); } diff --git a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp index f9975b2f5..e41bea6b4 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp @@ -523,27 +523,6 @@ TEST_CASE("overflow", "[.cmd][.new]") { } } -TEST_CASE("storeinram", "[.cmd][.new]") { - Detector det; - CmdProxy proxy(&det); - auto det_type = det.getDetectorType().squash(); - if (det_type == defs::EIGER) { - auto previous = det.getStoreInRamMode(); - std::ostringstream oss1, oss2, oss3; - proxy.Call("storeinram", {"1"}, -1, PUT, oss1); - REQUIRE(oss1.str() == "storeinram 1\n"); - proxy.Call("storeinram", {}, -1, GET, oss2); - REQUIRE(oss2.str() == "storeinram 1\n"); - proxy.Call("storeinram", {"0"}, -1, PUT, oss3); - REQUIRE(oss3.str() == "storeinram 0\n"); - for (int i = 0; i != det.size(); ++i) { - det.setStoreInRamMode(previous[i], {i}); - } - } else { - REQUIRE_THROWS(proxy.Call("storeinram", {}, -1, GET)); - } -} - TEST_CASE("flippeddatax", "[.cmd][.new]") { Detector det; CmdProxy proxy(&det); From f66345d128cf4d4b97762225f3ee9aaecb6d61da Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 18 Jun 2020 15:36:43 +0200 Subject: [PATCH 10/10] removed store in ram from python --- python/slsdet/detector.py | 7 ------- python/src/detector.cpp | 31 ++++++++++++------------------- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index fc395eecb..9aa9bc821 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -732,13 +732,6 @@ class Detector(CppDetectorApi): res = self.getMeasuredSubFramePeriod() return element_if_equal([it.total_seconds() for it in res]) - @property - def storeinram(self): - return element_if_equal(self.getStoreInRamMode()) - - @storeinram.setter - def storeinram(self, value): - self.setStoreInRamMode(value) """ Jungfrau specific diff --git a/python/src/detector.cpp b/python/src/detector.cpp index 97f555ffc..06ae7c435 100644 --- a/python/src/detector.cpp +++ b/python/src/detector.cpp @@ -318,6 +318,16 @@ void init_det(py::module &m) { (void (Detector::*)(defs::dacIndex, int, int, sls::Positions)) & Detector::setOnChipDAC, py::arg(), py::arg(), py::arg(), py::arg() = Positions{}) + .def("getExternalSignalFlags", + (Result(Detector::*)(int, sls::Positions) + const) & + Detector::getExternalSignalFlags, + py::arg(), py::arg() = Positions{}) + .def("setExternalSignalFlags", + (void (Detector::*)(int, defs::externalSignalFlag, + sls::Positions)) & + Detector::setExternalSignalFlags, + py::arg(), py::arg(), py::arg() = Positions{}) .def("acquire", (void (Detector::*)()) & Detector::acquire) .def("clearAcquiringFlag", (void (Detector::*)()) & Detector::clearAcquiringFlag) @@ -745,14 +755,6 @@ void init_det(py::module &m) { (void (Detector::*)(bool, sls::Positions)) & Detector::setOverFlowMode, py::arg(), py::arg() = Positions{}) - .def("getStoreInRamMode", - (Result(Detector::*)(sls::Positions) const) & - Detector::getStoreInRamMode, - py::arg() = Positions{}) - .def("setStoreInRamMode", - (void (Detector::*)(bool, sls::Positions)) & - Detector::setStoreInRamMode, - py::arg(), py::arg() = Positions{}) .def("getBottom", (Result(Detector::*)(sls::Positions) const) & Detector::getBottom, @@ -914,16 +916,6 @@ void init_det(py::module &m) { (Result(Detector::*)(sls::Positions) const) & Detector::getExptimeLeft, py::arg() = Positions{}) - .def("getExternalSignalFlags", - (Result(Detector::*)(int, sls::Positions) - const) & - Detector::getExternalSignalFlags, - py::arg(), py::arg() = Positions{}) - .def("setExternalSignalFlags", - (void (Detector::*)(int, defs::externalSignalFlag, - sls::Positions)) & - Detector::setExternalSignalFlags, - py::arg(), py::arg(), py::arg() = Positions{}) .def("getNumberOfBursts", (Result(Detector::*)(sls::Positions) const) & Detector::getNumberOfBursts, @@ -1396,7 +1388,8 @@ void init_det(py::module &m) { Detector::getLastClientIP, py::arg() = Positions{}) .def("executeCommand", - (void (Detector::*)(const std::string &, sls::Positions)) & + (Result(Detector::*)(const std::string &, + sls::Positions)) & Detector::executeCommand, py::arg(), py::arg() = Positions{}) .def("getNumberOfFramesFromStart",

gd^mwTz3N__q3E3_Al~dP5mJcNN}Vx^d+>M z2=0;bOY{^1@fx9ok?6x)Xpv!9ItOX&8A_M=J9ie3Zu~ck{GDSl+g(MvG*q2$*VLcN z5MM3l|IQON_3cYQREi2a7hq%i|8;f#(RojI9RJ>LlPV|bRN zWj!S3aqA-8ezOKR9}I&Bv_BM{h=ASxpY=K>qyra(Szn5&T!xP%Y>>?v?pe%k8bXb- zPmrl>w=A&XG~{m-Xn~)S{XOvp5WqyW{c`$mf}la3{bSaRZpQZyD8rpWJO0oPIN@A? z&)f+ndmGb?2Hvpp4-hj5=wc?DOYBubjI=8qbJb)*SC?kL7rwBk_o@OPW09oY|K^1a za;AuX13q;Pa%O}tWL`(uASV|M3Uxp_&Z$KJYf_E!oCfiytVH8J?GKl}9zmdBp2Ob; zKQ40u=UmCcHE!cCt_?`@l-QscQoKg|nSEegh;r^1lOibH#h;RWNG+v6fYrxi|B))QY zVe)3hnc$bH2ZatOx$i>XNJU+chYMxKVHe~bgUMT!&O((J5%10YxTGx5|RnD>r&YZ1U~(*|UaUYq3O$aFEETY<(xdSs@U_lLn6^%3#~ zZH?e@r4yv-G4P1u)Oq5~v=Ub75A9->0H^L(e65(vFqu21M|hK1Z!Mx4M|wHqwSzSX zBaex{0C)%w;es~h#|4oQF*^!TC^PIo72!aTL}RzoMObQUtOnadhFNLiUo#gxs(6N& zf7lKO701N9OnXkr!O}hJWbq#wCCFAPK9``}Od`YaUqjoVK)2`LS+|oinV{-Acu4#k zt%ho{SzJt_&w+=u!{3YF5J3Z-Mzh`&|0k=Vy8%AHLK$GSP`*d5a2{A=CZFwoZ5r4+ z*7uHM{^v*R*Fs=jX!2v?&#?@v!vXWrsO2DdtKzdH_;;S%cALLQ%+=QB%andOCb!rM zfXVZ(Lm*L%rSfkDXDd$GAMOJLg$^kBkBPa+YTT+F?h-#E3D%&>f1dXotD)6^G4lUn zzw}^f?+I7Rd=9N2c0k^y?GFh5hXQa*hzq!+g~jgwl!6&ZWCv7}6_Ds(ADx6t#FQea z->e;+$^pe{paK<~Eq-M)SY1@Gka|$yrxYyV7`}FpzOJP4WD?Ej-NHFmc@z8{Y^B@L=4k?9vM0D*8D!t(Vg=9cdxWJ4kULoEKd!TnK zzJtW$0k9L`ms~tzV6|}JBVuM{(>}FK8$2!EH}=DzJ}P`s{P=3H&g;VW#LOS)RJ`6%22h_CaX@%x z6CCP-qWi^9b%V!s08+0vSdDes6+I(JU>&fyO-xN6SY1@yNj)gq{-@-A zJ6Nbx;Nl0wzj=W8KU$-@*or&3!EW)-wHi-^8W(f1SZISxH7Nc_{2y&W!)QpKJw?os zHb#aOv)jGA5xVZKv&oL%V}()yXE*VTn6f@vsSR4iTir?n)o}LzE|uQwo3YRk{2D~F z*NRDu!{4awIiTc?fafWG4BnuCDYMxNHZ)Rk?O$d8KXZ^DHfe*m#msG=B=Ls~XoE@* zjnV1s6+PfBA%8TJm2NkfgUeSR@y`Jk+PW>_fYG`T9m3xhZ<)2gQf=SDLs}Knzy(?K za`Db@1FJ=%tHg9g5vW}o{9L@_?X*&pMju3g{b1E7x)p4L(%~IqM!LZo)X^8XzFQ&H z!qE@e|H}@--=zZ_6!W!t3>Xh_2}iKIV>B30T*1>1{4VNC=82!V4}3uBi`hG@g|;hR zfk1XvSb^9JN_xb+wHLfu>8X3ftRP5^P@k1>1Y2iKXzd^A*HE)5gE-Y;n^Ca#4(U6`hCB?F?OBs-`bh&u9AduOw9gu^2 zWe9q=;)l7pYy+!FO9#b&umgTK;PYJ1!EUK8W%Idd9J;!+jLhfgQs|+=DX$EZo;bk| zI?c*X5_2pjbdPvtXW;V~^yfkW%9_Pngn({4F1r*3Y=>&GvX#_>0zakfHg?b5R0g&E zFU0@hYH*+c^S|r~@t)ns!k|7cdzG6H)5s-_%KpZ)eHFM$JNOS*u?%o)xU|NmiC>+D zz+Om?k=b0;FbP+Qe>&__)Mc?#d1M`ho(8|Y|HqnmblSuZt=hpN?(1D(^=WJs$!9yD z233p`Q`Z={PxH@H{t|1lm6UTfxu=8&PB z{eRtrc97|L<@s!UgOPl|Urbhq%7pCSH68)PF&zmOzT99*cF9MDH-qNrZ(V&livWnOL2>Me}vyz zpyFDBcsuk4rQb|FC}2v(UE)_PfZzHYmsk8sd=o{Xl$x|+hxn1ra2`;GSM8VT$kP;B zq+(3`#nztpZ%#DvzQblu&@m95GK2Lr&nzD5vgByZ@^I zmAv^ZqJdlaDi?}*4-=WTP@u|IF}!#X+&nn*%|B7rHsLv|@DgHXEq2vEj%&IZ)KsaEPi1*%> z!xxdN67f5Fpzl`tNd(;iu)4Uak)ZEme0SZhT1-&%O=93NIy!+s5$%AWJZ2DjmEvEE zx8L%+0fwmu1v;hb@4|p5QYS!)t=c0k`Zq>X8Y$&9G zN?ctoe&-AXvKV3@Pz0kw8+N=JYl@OD<52xm2iPzQ%zjipM6oIF~uL94h=R`zIcpJn1 z=bT49C}7H*cJBWl6C{T^xIxUcMkvGD;9kxHW8hB3+zS#`!?}u|q#hLQkVmWAn>fBf(GL72!zc@BWpf`u~1heG2LU7oDm#{CV)GuAg_)Pq>w$Oq4v^Gu5!B+6z zP~%$R`$anq)gra__6pq%Q2R~suAB@1i1Kr>c&UQ{bseeYvbww%eigX3Q_MTi?MfTu z|7*L&-Iat7@+iU-T0FVy}Kn^Ls6#9H^&-ZK>t%UCIzs3I! z3OI|_*}UKo^l7^P*L_{g#~J*fF;G_}CO1ZdEn$astaR(}nH#X~95HqCp)XMS5;5eb z58Zz2u3&AS04J5+Bi@=G_(ky}_HQphpGbvEZ{1FOj6_p3onH4lh(VzNrS3)XT88Oh zw|0PrJ2AQYk}2ugzpVq-r93%Z%(+-J9TVH7I!Oj4iUr+Do8;5T3-^OlW6ID12ue6$ z5)F1%@q_v>d6RgL5+m-+m%I;)^@7!9$tSVUX0Q!9PE^TfNlHCO40LJ#FY!WREz+Zy zLv3}O@!kDA$%jE}n{;6~&hzT|1Y;G`#!Q3_>iIHi`6fCTQk*UR`R(AXiYuuH1x%?w z4S`0e=q#vjvj2h*7o7~{U&xu#oHk@M`Wfl{ubph`7c`{bdUXH9chkEw`fs}+edCnrr!850 e$<<4~zv7ZB+7>Na)PMHH>BUp}Z&;N6r2k**=%P{p delta 95526 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