mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-12-26 22:21:18 +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
91 lines
2.7 KiB
C++
91 lines
2.7 KiB
C++
// This file is used as input to generate the caller class
|
|
#pragma once
|
|
#include "CmdParser.h"
|
|
#include "HelpDacs.h"
|
|
#include "sls/Detector.h"
|
|
|
|
#include <iostream>
|
|
#include <string>
|
|
#include <vector>
|
|
namespace sls {
|
|
|
|
class Caller {
|
|
public:
|
|
Caller(Detector *ptr) : det(ptr) {}
|
|
void call(const std::string &command,
|
|
const std::vector<std::string> &arguments, int detector_id,
|
|
int action, std::ostream &os = std::cout, int receiver_id = -1);
|
|
|
|
IpAddr getDstIpFromAuto();
|
|
IpAddr getSrcIpFromAuto();
|
|
UdpDestination getUdpEntry();
|
|
int GetLevelAndInsertIntoArgs(std::string levelSeparatedCommand);
|
|
void WrongNumberOfParameters(size_t expected);
|
|
std::vector<defs::ROI> parseRoiVector(const std::string &input);
|
|
defs::ROI parseRoi(const std::vector<std::string> &args);
|
|
|
|
template <typename V> std::string OutStringHex(const V &value) {
|
|
if (value.equal())
|
|
return ToStringHex(value.front());
|
|
return ToStringHex(value);
|
|
}
|
|
|
|
template <typename V> std::string OutStringHex(const V &value, int width) {
|
|
if (value.equal())
|
|
return ToStringHex(value.front(), width);
|
|
return ToStringHex(value, width);
|
|
}
|
|
|
|
template <typename V> std::string OutString(const Result<V> &value) {
|
|
if (value.equal())
|
|
return ToString(value.front());
|
|
return ToString(value);
|
|
}
|
|
|
|
template <typename V> std::string OutString(const V &value) {
|
|
return ToString(value);
|
|
}
|
|
|
|
template <typename V>
|
|
std::string OutString(const V &value, const std::string &unit) {
|
|
if (value.equal())
|
|
return ToString(value.front(), unit);
|
|
return ToString(value, unit);
|
|
}
|
|
|
|
std::vector<std::string> getAllCommands();
|
|
std::map<std::string, std::string> GetDeprecatedCommands();
|
|
std::string list(int action);
|
|
|
|
// THIS COMMENT TO BE REPLACED BY THE ACTUAL CODE (1)
|
|
|
|
std::vector<std::string> args;
|
|
std::string cmd;
|
|
Detector *det;
|
|
int det_id{-1};
|
|
int rx_id{-1};
|
|
|
|
private:
|
|
bool ReplaceIfDeprecated(std::string &command);
|
|
using FunctionMap = std::map<std::string, std::string (Caller::*)(int)>;
|
|
using StringMap = std::map<std::string, std::string>;
|
|
Detector *ptr; // pointer to the detector that executes the command
|
|
|
|
static void EmptyDataCallBack(detectorData *data, uint64_t frameIndex,
|
|
uint32_t subFrameIndex, void *this_pointer);
|
|
|
|
FunctionMap functions{
|
|
{"list", &Caller::list},
|
|
|
|
// THIS COMMENT TO BE REPLACED BY THE ACTUAL CODE (2)
|
|
|
|
};
|
|
|
|
StringMap deprecated_functions{
|
|
|
|
// THIS COMMENT TO BE REPLACED BY THE ACTUAL CODE (3)
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace sls
|