mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-12-20 19:41:18 +01:00
readoutspeed in rx master file and other master file inconsistencies (#1245)
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
This commit is contained in:
@@ -13,13 +13,17 @@ import subprocess
|
||||
import argparse
|
||||
import sys
|
||||
import time
|
||||
import ctypes.util, re # to check libclang version
|
||||
from pathlib import Path
|
||||
from parse import system_include_paths, clang_format_version
|
||||
|
||||
REDC = "\033[91m"
|
||||
GREENC = "\033[92m"
|
||||
YELLOWC = "\033[93m"
|
||||
ENDC = "\033[0m"
|
||||
|
||||
def yellow(msg):
|
||||
return f"{YELLOWC}{msg}{ENDC}"
|
||||
|
||||
def red(msg):
|
||||
return f"{REDC}{msg}{ENDC}"
|
||||
@@ -29,6 +33,25 @@ def green(msg):
|
||||
return f"{GREENC}{msg}{ENDC}"
|
||||
|
||||
|
||||
def check_libclang_version(required="12"):
|
||||
# Use already-loaded libclang, or let cindex resolve it
|
||||
lib = ctypes.CDLL(cindex.Config.library_file or ctypes.util.find_library("clang"))
|
||||
|
||||
# Get version string
|
||||
lib.clang_getClangVersion.restype = ctypes.c_void_p
|
||||
version_ptr = lib.clang_getClangVersion()
|
||||
version_str = ctypes.cast(version_ptr, ctypes.c_char_p).value.decode()
|
||||
|
||||
# Parse and check version
|
||||
match = re.search(r"version\s+(\d+)", version_str)
|
||||
if not match or match.group(1) != required:
|
||||
msg = red(f"libclang version {match.group(1) if match else '?'} found, but version {required} required. Bye!")
|
||||
print(msg)
|
||||
sys.exit(1)
|
||||
msg = green(f"Found libclang version {required}")
|
||||
print(msg)
|
||||
|
||||
|
||||
def check_clang_format_version(required_version):
|
||||
if (ver := clang_format_version()) != required_version:
|
||||
msg = red(
|
||||
@@ -120,6 +143,24 @@ def time_return_lambda(node, args):
|
||||
|
||||
|
||||
def visit(node):
|
||||
|
||||
loc = node.location
|
||||
# skip if ndoe is outside project directory
|
||||
if loc.file and not str(loc.file).startswith(str(cargs.build_path.parent)):
|
||||
return
|
||||
|
||||
'''
|
||||
# to see which file was causing the error (not in Detector.h, so skipping others in the above code)
|
||||
try:
|
||||
kind = node.kind
|
||||
except ValueError as e:
|
||||
loc = node.location
|
||||
file_name = loc.file.name if loc.file else "<unknown file>"
|
||||
msg = yellow(f"\nWarning: skipping node with unknown CursorKind id {node._kind_id} at {file_name}:{loc.line}:{loc.column}")
|
||||
print(msg)
|
||||
return
|
||||
'''
|
||||
|
||||
if node.kind == cindex.CursorKind.CLASS_DECL:
|
||||
if node.displayname == "Detector":
|
||||
for child in node.get_children():
|
||||
@@ -161,6 +202,7 @@ if __name__ == "__main__":
|
||||
)
|
||||
cargs = parser.parse_args()
|
||||
|
||||
check_libclang_version("12")
|
||||
check_clang_format_version(12)
|
||||
check_for_compile_commands_json(cargs.build_path)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user