From 6cc3bb9c4a1c0682ac513a813c8ef4cda7ae81a9 Mon Sep 17 00:00:00 2001 From: appel_c Date: Thu, 21 May 2026 13:15:33 +0200 Subject: [PATCH] fix(timepix): move to pushing raw data from backend through redis --- superxas_bec/devices/timepix/timepix.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/superxas_bec/devices/timepix/timepix.py b/superxas_bec/devices/timepix/timepix.py index 1769245..a27acf0 100644 --- a/superxas_bec/devices/timepix/timepix.py +++ b/superxas_bec/devices/timepix/timepix.py @@ -190,6 +190,9 @@ class TimePixControl(ADBase): DETECTOR_SHAPE = (512, 1024) # Shape of the TimePix detector +TIMEPIX_FLY_BACKEND_DEFAULT_REDIS_TOPIC = "user/timepix_fly_backend/raw_data" + + class Timepix(PSIDeviceBase, TimePixControl): """ Integration of the Timepix detector for the SuperXAS beamline. The control interface is @@ -253,15 +256,22 @@ class Timepix(PSIDeviceBase, TimePixControl): **kwargs: Additional keyword arguments for the base class. """ + super().__init__( + name=name, prefix=prefix, scan_info=scan_info, device_manager=device_manager, **kwargs + ) + self._redis_raw_data_topic = TIMEPIX_FLY_BACKEND_DEFAULT_REDIS_TOPIC + self.backend = TimepixFlyBackend( - backend_rest_url=backend_rest_url, hostname=hostname, socket_port=socket_port + backend_rest_url=backend_rest_url, + hostname=hostname, + socket_port=socket_port, + redis_topic=self._redis_raw_data_topic, + redis_connector=self.device_manager.connector, ) self._pixel_map = None self._troistep = 1 self._troin = 5000 - super().__init__( - name=name, prefix=prefix, scan_info=scan_info, device_manager=device_manager, **kwargs - ) + self._poll_thread = threading.Thread( target=self._poll_array_data, daemon=True, name=f"{self.name}_poll_thread" ) @@ -660,10 +670,12 @@ class Timepix(PSIDeviceBase, TimePixControl): # XES specific staging if self.enable_xes: # Prepare TimePixFly + con = self.device_manager.connector other_config = OtherConfigModel( TRoiStep=self.troistep, TRoiN=self.troin, - output_uri=f"tcp:{self.backend.hostname}:{self.backend.socket_port}", + # output_uri=f"tcp:{self.backend.hostname}:{self.backend.socket_port}", + output_uri=f"redis://{con.host}:{con.port}/{self._redis_raw_data_topic}?scan-id={scan_msg.scan_id}", save_interval=int(131000 / 5) - 5, ) # Save interval in 131kHz units, logger.debug(f"Current TimePixFly configuration: {other_config}")