mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-02-08 01:38:42 +01:00
readout speed added to json and h5 master files. Also fixed master file inconsistencies Sserver binaries - update server binaries because readoutspeed needs to be sent to receiver with rx_hostname command API - added const to Detector class set/getburstmode Python - updated python bindings (burstmode const and roi arguments) Cmd generation - added pragma once in Caller.in.h as Caller is included in test files m3: num channels due to #counters < 3 * workaround for m3 for messed up num channels (client always assumes all counters enabled and adds them to num channels), fix for hdf5 g2: exptime master file inconsistency - exptime didnt match because of round of when setting burst mode (sets to a different clk divider) - so updating actual time for all timers (exptime, period, subexptime etc, ) in Module class, get timer values from detector when setting it and then send to receiver to write in master file ctb image size incorrect: - write actual size into master file and not the reserved size (digital reduces depending on dbit list and dbit offset) - added a calculate ctb image size free function in generalData.h that is used there as well as for the tests. master file inconsistencies - refactored master attributes writing using templates - names changed to keep it consistent between json and hdf5 master file (Version, Pixels, Exposure Times, GateDelays, Acquisition Period, etc.) - datatypes changed to keep it simple where possible: imageSize, dynamicRange, tengiga, quad, readnrows, analog, analogsamples, digital, digitalsamples, dbitreorder, dbitoffset, transceivermask, transeiver, transceiversamples, countermask, gates =>int - replacing "toString" with arrays, objects etc for eg for scan, rois, etc. - json header always written (empty dataset or empty brackets) - hdf5 needs const char* so have to convert strings to it, but taking care that strings exist prior to push_back - master attributes (redundant string literals->error prone tests for master file - suppressed deprecated functions in rapidjson warnings just for the tests - added slsREceiverSoftware/src to allow access to receiver_defs.h to test binary/hdf5 version - refactored acquire tests by moving all the acquire tests from individual detector type files to a single one=test-Caller-acquire.cpp - set some default settings (loadBasicSettings) for a basic acquire at load config part for the test_simulator python scripts. so minimum number of settings for detector to be set for any acquire tests. - added tests to test master files for json and hdf5= test-Caller-master-attributes.cpp - added option to add '-m' markers for tests using test_simulator python script
76 lines
2.6 KiB
C++
76 lines
2.6 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#pragma once
|
|
|
|
#include "Caller.h"
|
|
#include "sls/Detector.h"
|
|
#include "sls/sls_detector_defs.h"
|
|
|
|
#include <chrono>
|
|
#include <filesystem>
|
|
#include <optional>
|
|
#include <thread>
|
|
|
|
namespace sls {
|
|
struct testFileInfo {
|
|
std::string file_path{"/tmp"};
|
|
std::string file_prefix{"sls_test"};
|
|
int64_t file_acq_index{0};
|
|
bool file_write{true};
|
|
bool file_overwrite{true};
|
|
slsDetectorDefs::fileFormat file_format{slsDetectorDefs::BINARY};
|
|
std::string getMasterFileNamePrefix() const {
|
|
return file_path + "/" + file_prefix + "_master_" +
|
|
std::to_string(file_acq_index);
|
|
}
|
|
std::string getVirtualFileName() const {
|
|
return file_path + "/" + file_prefix + "_virtual_" +
|
|
std::to_string(file_acq_index) + ".h5";
|
|
}
|
|
};
|
|
|
|
struct testCtbAcquireInfo {
|
|
defs::readoutMode readout_mode{defs::ANALOG_AND_DIGITAL};
|
|
bool ten_giga{false};
|
|
int num_adc_samples{5000};
|
|
int num_dbit_samples{6000};
|
|
int num_trans_samples{288};
|
|
uint32_t adc_enable_1g{0xFFFFFF00};
|
|
uint32_t adc_enable_10g{0xFF00FFFF};
|
|
int dbit_offset{0};
|
|
std::vector<int> dbit_list{0, 12, 2, 43};
|
|
bool dbit_reorder{false};
|
|
uint32_t transceiver_mask{0x3};
|
|
};
|
|
|
|
void test_valid_port_caller(const std::string &command,
|
|
const std::vector<std::string> &arguments,
|
|
int detector_id, int action);
|
|
|
|
void test_dac_caller(slsDetectorDefs::dacIndex index,
|
|
const std::string &dacname, int dacvalue);
|
|
void test_onchip_dac_caller(slsDetectorDefs::dacIndex index,
|
|
const std::string &dacname, int dacvalue);
|
|
|
|
testFileInfo get_file_state(const Detector &det);
|
|
void set_file_state(Detector &det, const testFileInfo &file_info);
|
|
void test_acquire_binary_file_size(const testFileInfo &file_info,
|
|
uint64_t num_frames_to_acquire,
|
|
uint64_t expected_image_size);
|
|
|
|
void test_frames_caught(const Detector &det, int num_frames_to_acquire);
|
|
|
|
void test_acquire_with_receiver(Caller &caller, const Detector &det);
|
|
|
|
void create_files_for_acquire(
|
|
Detector &det, Caller &caller, int64_t num_frames = 1,
|
|
std::optional<testCtbAcquireInfo> test_info = std::nullopt);
|
|
|
|
testCtbAcquireInfo get_ctb_config_state(const Detector &det);
|
|
void set_ctb_config_state(Detector &det,
|
|
const testCtbAcquireInfo &ctb_config_info);
|
|
std::pair<uint64_t, int>
|
|
calculate_ctb_image_size(const testCtbAcquireInfo &test_info, bool isXilinxCtb);
|
|
|
|
} // namespace sls
|