diff --git a/broker/JFJochBrokerParser.cpp b/broker/JFJochBrokerParser.cpp index 7a9b24af..68b000ae 100644 --- a/broker/JFJochBrokerParser.cpp +++ b/broker/JFJochBrokerParser.cpp @@ -132,11 +132,11 @@ DetectorSetup ParseDetectorSetup(const org::openapitools::server::model::Detecto if (d.txDelayIsSet()) setup.TxDelay(d.getTxDelay()); - if (d.minimumCountTimeUsIsSet()) - setup.MinCountTime(std::chrono::microseconds(d.getMinimumCountTimeUs())); + if (d.minCountTimeNsIsSet()) + setup.MinCountTime(std::chrono::nanoseconds(d.getMinCountTimeNs())); - if (d.minimumFrameTimeUsIsSet()) - setup.MinFrameTime(std::chrono::microseconds(d.getMinimumFrameTimeUs())); + if (d.minFrameTimeNsIsSet()) + setup.MinFrameTime(std::chrono::nanoseconds(d.getMinFrameTimeNs())); if (d.defaultSettingsIsSet()) setup.DefaultSettings(Convert(d.getDefaultSettings())); diff --git a/broker/JFJochStateMachine.h b/broker/JFJochStateMachine.h index 01a4ce6d..2174e6b1 100644 --- a/broker/JFJochStateMachine.h +++ b/broker/JFJochStateMachine.h @@ -26,8 +26,8 @@ struct DetectorListElement { int64_t width; int64_t height; std::chrono::nanoseconds readout_time; - std::chrono::microseconds min_frame_time; - std::chrono::microseconds min_count_time; + std::chrono::nanoseconds min_frame_time; + std::chrono::nanoseconds min_count_time; DetectorType detector_type; float pixel_size_mm; }; diff --git a/broker/OpenAPIConvert.cpp b/broker/OpenAPIConvert.cpp index ebb7a378..6a39ea4d 100644 --- a/broker/OpenAPIConvert.cpp +++ b/broker/OpenAPIConvert.cpp @@ -170,9 +170,12 @@ DetectorSettings Convert(const org::openapitools::server::model::Detector_settin org::openapitools::server::model::Detector_settings Convert(const DetectorSettings &input) { org::openapitools::server::model::Detector_settings ret{}; - ret.setFrameTimeUs(input.GetFrameTime().count()); + ret.setFrameTimeUs(std::chrono::round( + std::chrono::duration(input.GetFrameTime())).count()); if (input.GetCountTime().has_value()) - ret.setCountTimeUs(input.GetCountTime()->count()); + ret.setCountTimeUs(std::chrono::round( + std::chrono::duration(input.GetCountTime().value()) + ).count()); ret.setDetectorTriggerDelayNs(input.GetDetectorDelay().count()); ret.setInternalFrameGeneratorImages(input.GetInternalGeneratorImages()); ret.setInternalFrameGenerator(input.IsInternalGeneratorEnable()); @@ -370,8 +373,8 @@ org::openapitools::server::model::Detector_list Convert(const DetectorList &inpu d.setSerialNumber(input.detector[i].serial_number); d.setBaseIpv4Addr(input.detector[i].base_ipv4_addr); d.setUdpInterfaceCount(input.detector[i].udp_interface_count); - d.setMinFrameTimeUs(input.detector[i].min_frame_time.count()); - d.setMinCountTimeUs(input.detector[i].min_count_time.count()); + d.setMinFrameTimeNs(input.detector[i].min_frame_time.count()); + d.setMinCountTimeNs(input.detector[i].min_count_time.count()); d.setReadoutTimeNs(input.detector[i].readout_time.count()); d.setPixelSizeMm(input.detector[i].pixel_size_mm); d.setType(Convert(input.detector[i].detector_type)); @@ -725,7 +728,7 @@ org::openapitools::server::model::Zeromq_preview_settings Convert(const ZMQPrevi org::openapitools::server::model::Zeromq_preview_settings ret; ret.setEnabled(settings.period.has_value()); if (settings.period.has_value()) - ret.setPeriodMs(settings.period.value().count()); + ret.setPeriodMs(std::chrono::round(settings.period.value()).count()); ret.setSocketAddress(settings.address); return ret; } @@ -734,7 +737,7 @@ org::openapitools::server::model::Zeromq_metadata_settings Convert(const ZMQMeta org::openapitools::server::model::Zeromq_metadata_settings ret; ret.setEnabled(settings.period.has_value()); if (settings.period.has_value()) - ret.setPeriodMs(settings.period.value().count()); + ret.setPeriodMs(std::chrono::round(settings.period.value()).count()); ret.setSocketAddress(settings.address); return ret; } @@ -1082,7 +1085,9 @@ org::openapitools::server::model::Scan_result Convert(const ScanResult& input) { org::openapitools::server::model::Dark_mask_settings Convert(const DarkMaskSettings &input) { org::openapitools::server::model::Dark_mask_settings ret{}; ret.setDetectorThresholdKeV(input.GetThreshold_keV()); - ret.setFrameTimeUs(input.GetFrameTime().count()); + ret.setFrameTimeUs(std::chrono::round( + std::chrono::duration(input.GetFrameTime()) + ).count()); ret.setMaxFramesWithSignal(input.GetMaxFramesWithCounts()); ret.setMaxAllowedPixelCount(input.GetMaxCounts()); ret.setNumberOfFrames(input.GetNumberOfFrames()); diff --git a/broker/gen/model/Detector.cpp b/broker/gen/model/Detector.cpp index 0e72ed16..931249b8 100644 --- a/broker/gen/model/Detector.cpp +++ b/broker/gen/model/Detector.cpp @@ -35,10 +35,10 @@ Detector::Detector() m_Sensor_thickness_umIsSet = false; m_Readout_time_ns = 0L; m_Readout_time_nsIsSet = false; - m_Minimum_count_time_us = 0L; - m_Minimum_count_time_usIsSet = false; - m_Minimum_frame_time_us = 0L; - m_Minimum_frame_time_usIsSet = false; + m_Min_count_time_ns = 0L; + m_Min_count_time_nsIsSet = false; + m_Min_frame_time_ns = 0L; + m_Min_frame_time_nsIsSet = false; m_Calibration_fileIsSet = false; m_HostnameIsSet = false; m_Sensor_material = "Si"; @@ -172,10 +172,10 @@ bool Detector::validate(std::stringstream& msg, const std::string& pathPrefix) c } - if (minimumCountTimeUsIsSet()) + if (minCountTimeNsIsSet()) { - const int64_t& value = m_Minimum_count_time_us; - const std::string currentValuePath = _pathPrefix + ".minimumCountTimeUs"; + const int64_t& value = m_Min_count_time_ns; + const std::string currentValuePath = _pathPrefix + ".minCountTimeNs"; if (value < 0ll) @@ -186,10 +186,10 @@ bool Detector::validate(std::stringstream& msg, const std::string& pathPrefix) c } - if (minimumFrameTimeUsIsSet()) + if (minFrameTimeNsIsSet()) { - const int64_t& value = m_Minimum_frame_time_us; - const std::string currentValuePath = _pathPrefix + ".minimumFrameTimeUs"; + const int64_t& value = m_Min_frame_time_ns; + const std::string currentValuePath = _pathPrefix + ".minFrameTimeNs"; if (value < 0ll) @@ -336,10 +336,10 @@ bool Detector::operator==(const Detector& rhs) const ((!readoutTimeNsIsSet() && !rhs.readoutTimeNsIsSet()) || (readoutTimeNsIsSet() && rhs.readoutTimeNsIsSet() && getReadoutTimeNs() == rhs.getReadoutTimeNs())) && - ((!minimumCountTimeUsIsSet() && !rhs.minimumCountTimeUsIsSet()) || (minimumCountTimeUsIsSet() && rhs.minimumCountTimeUsIsSet() && getMinimumCountTimeUs() == rhs.getMinimumCountTimeUs())) && + ((!minCountTimeNsIsSet() && !rhs.minCountTimeNsIsSet()) || (minCountTimeNsIsSet() && rhs.minCountTimeNsIsSet() && getMinCountTimeNs() == rhs.getMinCountTimeNs())) && - ((!minimumFrameTimeUsIsSet() && !rhs.minimumFrameTimeUsIsSet()) || (minimumFrameTimeUsIsSet() && rhs.minimumFrameTimeUsIsSet() && getMinimumFrameTimeUs() == rhs.getMinimumFrameTimeUs())) && + ((!minFrameTimeNsIsSet() && !rhs.minFrameTimeNsIsSet()) || (minFrameTimeNsIsSet() && rhs.minFrameTimeNsIsSet() && getMinFrameTimeNs() == rhs.getMinFrameTimeNs())) && ((!calibrationFileIsSet() && !rhs.calibrationFileIsSet()) || (calibrationFileIsSet() && rhs.calibrationFileIsSet() && getCalibrationFile() == rhs.getCalibrationFile())) && @@ -400,10 +400,10 @@ void to_json(nlohmann::json& j, const Detector& o) j["sensor_thickness_um"] = o.m_Sensor_thickness_um; if(o.readoutTimeNsIsSet()) j["readout_time_ns"] = o.m_Readout_time_ns; - if(o.minimumCountTimeUsIsSet()) - j["minimum_count_time_us"] = o.m_Minimum_count_time_us; - if(o.minimumFrameTimeUsIsSet()) - j["minimum_frame_time_us"] = o.m_Minimum_frame_time_us; + if(o.minCountTimeNsIsSet()) + j["min_count_time_ns"] = o.m_Min_count_time_ns; + if(o.minFrameTimeNsIsSet()) + j["min_frame_time_ns"] = o.m_Min_frame_time_ns; if(o.calibrationFileIsSet() || !o.m_Calibration_file.empty()) j["calibration_file"] = o.m_Calibration_file; if(o.hostnameIsSet() || !o.m_Hostname.empty()) @@ -467,15 +467,15 @@ void from_json(const nlohmann::json& j, Detector& o) j.at("readout_time_ns").get_to(o.m_Readout_time_ns); o.m_Readout_time_nsIsSet = true; } - if(j.find("minimum_count_time_us") != j.end()) + if(j.find("min_count_time_ns") != j.end()) { - j.at("minimum_count_time_us").get_to(o.m_Minimum_count_time_us); - o.m_Minimum_count_time_usIsSet = true; + j.at("min_count_time_ns").get_to(o.m_Min_count_time_ns); + o.m_Min_count_time_nsIsSet = true; } - if(j.find("minimum_frame_time_us") != j.end()) + if(j.find("min_frame_time_ns") != j.end()) { - j.at("minimum_frame_time_us").get_to(o.m_Minimum_frame_time_us); - o.m_Minimum_frame_time_usIsSet = true; + j.at("min_frame_time_ns").get_to(o.m_Min_frame_time_ns); + o.m_Min_frame_time_nsIsSet = true; } if(j.find("calibration_file") != j.end()) { @@ -662,39 +662,39 @@ void Detector::unsetReadout_time_ns() { m_Readout_time_nsIsSet = false; } -int64_t Detector::getMinimumCountTimeUs() const +int64_t Detector::getMinCountTimeNs() const { - return m_Minimum_count_time_us; + return m_Min_count_time_ns; } -void Detector::setMinimumCountTimeUs(int64_t const value) +void Detector::setMinCountTimeNs(int64_t const value) { - m_Minimum_count_time_us = value; - m_Minimum_count_time_usIsSet = true; + m_Min_count_time_ns = value; + m_Min_count_time_nsIsSet = true; } -bool Detector::minimumCountTimeUsIsSet() const +bool Detector::minCountTimeNsIsSet() const { - return m_Minimum_count_time_usIsSet; + return m_Min_count_time_nsIsSet; } -void Detector::unsetMinimum_count_time_us() +void Detector::unsetMin_count_time_ns() { - m_Minimum_count_time_usIsSet = false; + m_Min_count_time_nsIsSet = false; } -int64_t Detector::getMinimumFrameTimeUs() const +int64_t Detector::getMinFrameTimeNs() const { - return m_Minimum_frame_time_us; + return m_Min_frame_time_ns; } -void Detector::setMinimumFrameTimeUs(int64_t const value) +void Detector::setMinFrameTimeNs(int64_t const value) { - m_Minimum_frame_time_us = value; - m_Minimum_frame_time_usIsSet = true; + m_Min_frame_time_ns = value; + m_Min_frame_time_nsIsSet = true; } -bool Detector::minimumFrameTimeUsIsSet() const +bool Detector::minFrameTimeNsIsSet() const { - return m_Minimum_frame_time_usIsSet; + return m_Min_frame_time_nsIsSet; } -void Detector::unsetMinimum_frame_time_us() +void Detector::unsetMin_frame_time_ns() { - m_Minimum_frame_time_usIsSet = false; + m_Min_frame_time_nsIsSet = false; } std::vector Detector::getCalibrationFile() const { diff --git a/broker/gen/model/Detector.h b/broker/gen/model/Detector.h index 2b919d12..aad6135f 100644 --- a/broker/gen/model/Detector.h +++ b/broker/gen/model/Detector.h @@ -120,17 +120,17 @@ public: /// /// Minimum count time available for the detector. /// - int64_t getMinimumCountTimeUs() const; - void setMinimumCountTimeUs(int64_t const value); - bool minimumCountTimeUsIsSet() const; - void unsetMinimum_count_time_us(); + int64_t getMinCountTimeNs() const; + void setMinCountTimeNs(int64_t const value); + bool minCountTimeNsIsSet() const; + void unsetMin_count_time_ns(); /// /// Minimum frame time available for the detector. /// - int64_t getMinimumFrameTimeUs() const; - void setMinimumFrameTimeUs(int64_t const value); - bool minimumFrameTimeUsIsSet() const; - void unsetMinimum_frame_time_us(); + int64_t getMinFrameTimeNs() const; + void setMinFrameTimeNs(int64_t const value); + bool minFrameTimeNsIsSet() const; + void unsetMin_frame_time_ns(); /// /// Can be empty for all detectors - default calibration used. For JUNGFRAU: list of gain files, one entry per module. For EIGER: one directory (with detector settings) or list of trim bit files, one entry per half-module. /// @@ -228,10 +228,10 @@ protected: bool m_Sensor_thickness_umIsSet; int64_t m_Readout_time_ns; bool m_Readout_time_nsIsSet; - int64_t m_Minimum_count_time_us; - bool m_Minimum_count_time_usIsSet; - int64_t m_Minimum_frame_time_us; - bool m_Minimum_frame_time_usIsSet; + int64_t m_Min_count_time_ns; + bool m_Min_count_time_nsIsSet; + int64_t m_Min_frame_time_ns; + bool m_Min_frame_time_nsIsSet; std::vector m_Calibration_file; bool m_Calibration_fileIsSet; std::vector m_Hostname; diff --git a/broker/gen/model/Detector_list_element.cpp b/broker/gen/model/Detector_list_element.cpp index 13e8e588..edbcb6d6 100644 --- a/broker/gen/model/Detector_list_element.cpp +++ b/broker/gen/model/Detector_list_element.cpp @@ -32,8 +32,8 @@ Detector_list_element::Detector_list_element() m_Pixel_size_mm = 0.0f; m_Pixel_size_mmIsSet = false; m_Readout_time_ns = 0L; - m_Min_frame_time_us = 0L; - m_Min_count_time_us = 0L; + m_Min_frame_time_ns = 0L; + m_Min_count_time_ns = 0L; m_TypeIsSet = false; } @@ -110,10 +110,10 @@ bool Detector_list_element::operator==(const Detector_list_element& rhs) const (getReadoutTimeNs() == rhs.getReadoutTimeNs()) && - (getMinFrameTimeUs() == rhs.getMinFrameTimeUs()) + (getMinFrameTimeNs() == rhs.getMinFrameTimeNs()) && - (getMinCountTimeUs() == rhs.getMinCountTimeUs()) + (getMinCountTimeNs() == rhs.getMinCountTimeNs()) && @@ -141,8 +141,8 @@ void to_json(nlohmann::json& j, const Detector_list_element& o) if(o.pixelSizeMmIsSet()) j["pixel_size_mm"] = o.m_Pixel_size_mm; j["readout_time_ns"] = o.m_Readout_time_ns; - j["min_frame_time_us"] = o.m_Min_frame_time_us; - j["min_count_time_us"] = o.m_Min_count_time_us; + j["min_frame_time_ns"] = o.m_Min_frame_time_ns; + j["min_count_time_ns"] = o.m_Min_count_time_ns; if(o.typeIsSet()) j["type"] = o.m_Type; @@ -164,8 +164,8 @@ void from_json(const nlohmann::json& j, Detector_list_element& o) o.m_Pixel_size_mmIsSet = true; } j.at("readout_time_ns").get_to(o.m_Readout_time_ns); - j.at("min_frame_time_us").get_to(o.m_Min_frame_time_us); - j.at("min_count_time_us").get_to(o.m_Min_count_time_us); + j.at("min_frame_time_ns").get_to(o.m_Min_frame_time_ns); + j.at("min_count_time_ns").get_to(o.m_Min_count_time_ns); if(j.find("type") != j.end()) { j.at("type").get_to(o.m_Type); @@ -263,21 +263,21 @@ void Detector_list_element::setReadoutTimeNs(int64_t const value) { m_Readout_time_ns = value; } -int64_t Detector_list_element::getMinFrameTimeUs() const +int64_t Detector_list_element::getMinFrameTimeNs() const { - return m_Min_frame_time_us; + return m_Min_frame_time_ns; } -void Detector_list_element::setMinFrameTimeUs(int64_t const value) +void Detector_list_element::setMinFrameTimeNs(int64_t const value) { - m_Min_frame_time_us = value; + m_Min_frame_time_ns = value; } -int64_t Detector_list_element::getMinCountTimeUs() const +int64_t Detector_list_element::getMinCountTimeNs() const { - return m_Min_count_time_us; + return m_Min_count_time_ns; } -void Detector_list_element::setMinCountTimeUs(int64_t const value) +void Detector_list_element::setMinCountTimeNs(int64_t const value) { - m_Min_count_time_us = value; + m_Min_count_time_ns = value; } org::openapitools::server::model::Detector_type Detector_list_element::getType() const { diff --git a/broker/gen/model/Detector_list_element.h b/broker/gen/model/Detector_list_element.h index 2fb5508c..a606126f 100644 --- a/broker/gen/model/Detector_list_element.h +++ b/broker/gen/model/Detector_list_element.h @@ -114,13 +114,13 @@ public: /// /// /// - int64_t getMinFrameTimeUs() const; - void setMinFrameTimeUs(int64_t const value); + int64_t getMinFrameTimeNs() const; + void setMinFrameTimeNs(int64_t const value); /// /// /// - int64_t getMinCountTimeUs() const; - void setMinCountTimeUs(int64_t const value); + int64_t getMinCountTimeNs() const; + void setMinCountTimeNs(int64_t const value); /// /// /// @@ -152,9 +152,9 @@ protected: bool m_Pixel_size_mmIsSet; int64_t m_Readout_time_ns; - int64_t m_Min_frame_time_us; + int64_t m_Min_frame_time_ns; - int64_t m_Min_count_time_us; + int64_t m_Min_count_time_ns; org::openapitools::server::model::Detector_type m_Type; bool m_TypeIsSet; diff --git a/broker/jfjoch_api.yaml b/broker/jfjoch_api.yaml index 9c2ceb43..9ccfdfdc 100644 --- a/broker/jfjoch_api.yaml +++ b/broker/jfjoch_api.yaml @@ -1084,8 +1084,8 @@ components: - base_ipv4_addr - udp_interface_count - readout_time_ns - - min_frame_time_us - - min_count_time_us + - min_frame_time_ns + - min_count_time_ns properties: id: type: integer @@ -1124,10 +1124,10 @@ components: readout_time_ns: type: integer format: int64 - min_frame_time_us: + min_frame_time_ns: type: integer format: int64 - min_count_time_us: + min_count_time_ns: type: integer format: int64 type: @@ -2067,12 +2067,12 @@ components: description: | Minimum difference between frame time and count time in microseconds Defaults are 3'000 ns for EIGER and 20'000 ns for JUNGFRAU - minimum_count_time_us: + min_count_time_ns: type: integer format: int64 minimum: 0 description: Minimum count time available for the detector. - minimum_frame_time_us: + min_frame_time_ns: type: integer format: int64 minimum: 0 diff --git a/broker/redoc-static.html b/broker/redoc-static.html index a33bb302..9f540cab 100644 --- a/broker/redoc-static.html +++ b/broker/redoc-static.html @@ -733,7 +733,7 @@ Changing detector will set detector to Inactive state and will requ
http://localhost:5232/config/select_detector

Request samples

Content type
application/json
{
  • "id": 1
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

List available detectors

Configured detectors that can be selected by used

Responses

Response samples

Content type
application/json
{
  • "detectors": [
    ],
  • "current_id": 0
}

Set ZeroMQ preview settings

Jungfraujoch can generate preview message stream on ZeroMQ SUB socket. +

http://localhost:5232/config/select_detector

Response samples

Content type
application/json
{
  • "detectors": [
    ],
  • "current_id": 0
}

Set ZeroMQ preview settings

Jungfraujoch can generate preview message stream on ZeroMQ SUB socket. Here settings of the socket can be adjusted. While the data structure contains also socket_address, this cannot be changed via HTTP and is ignore in PUT request. Options set with this PUT request have no effect on HTTP based preview.

@@ -811,7 +811,7 @@ This can only be done when detector is Idle, Error or

Request samples

Content type
application/json
{
  • "box": {
    },
  • "circle": {
    },
  • "azim": {
    }
}

Response samples

Content type
application/json
{
  • "msg": "Detector in wrong state",
  • "reason": "WrongDAQState"
}

Get general statistics

Responses

Response samples

Content type
application/json
{
  • "detector": {
    },
  • "detector_list": {
    },
  • "detector_settings": {
    },
  • "image_format_settings": {
    },
  • "instrument_metadata": {
    },
  • "file_writer_settings": {
    },
  • "data_processing_settings": {
    },
  • "measurement": {
    },
  • "broker": {
    },
  • "fpga": [
    ],
  • "calibration": [
    ],
  • "zeromq_preview": {
    },
  • "zeromq_metadata": {
    },
  • "dark_mask": {
    },
  • "pixel_mask": {
    },
  • "roi": {
    },
  • "az_int": {
    },
  • "buffer": {
    },
  • "indexing": {
    },
  • "image_pusher": {
    }
}

Get data collection statistics

Results of the last data collection

+
http://localhost:5232/statistics

Response samples

Content type
application/json
{
  • "detector": {
    },
  • "detector_list": {
    },
  • "detector_settings": {
    },
  • "image_format_settings": {
    },
  • "instrument_metadata": {
    },
  • "file_writer_settings": {
    },
  • "data_processing_settings": {
    },
  • "measurement": {
    },
  • "broker": {
    },
  • "fpga": [
    ],
  • "calibration": [
    ],
  • "zeromq_preview": {
    },
  • "zeromq_metadata": {
    },
  • "dark_mask": {
    },
  • "pixel_mask": {
    },
  • "roi": {
    },
  • "az_int": {
    },
  • "buffer": {
    },
  • "indexing": {
    },
  • "image_pusher": {
    }
}

Get data collection statistics

Results of the last data collection

Responses