Clared nested devices but still not everyone getting config

This commit is contained in:
gac-x05la
2024-11-04 16:35:38 +01:00
committed by mohacsi_i
parent 8c982f4be9
commit 1fa58c2632
5 changed files with 92 additions and 92 deletions
@@ -129,22 +129,34 @@ es1_ddaq:
# readoutPriority: monitored
# softwareTrigger: true
# gfclient:
# description: GigaFrost camera client
# deviceClass: tomcat_bec.devices.GigaFrostClient
# deviceConfig:
# prefix: 'X02DA-CAM-GF2:'
# backend_url: 'http://sls-daq-001:8080'
# auto_soft_enable: true
# daq_ws_url: 'ws://129.129.95.111:8080'
# daq_rest_url: 'http://129.129.95.111:5000'
# deviceTags:
# - camera
# enabled: true
# onFailure: buffer
# readOnly: false
# readoutPriority: monitored
# softwareTrigger: true
gfcam:
description: GigaFrost camera client
deviceClass: tomcat_bec.devices.GigaFrostCamera
deviceConfig:
prefix: 'X02DA-CAM-GF2:'
backend_url: 'http://sls-daq-001:8080'
auto_soft_enable: true
deviceTags:
- camera
enabled: true
onFailure: buffer
readOnly: false
readoutPriority: monitored
softwareTrigger: true
gfdaq:
description: GigaFrost stdDAQ client
deviceClass: tomcat_bec.devices.StdDaqClient
deviceConfig:
ws_url: 'ws://129.129.95.111:8080'
rest_url: 'http://129.129.95.111:5000'
deviceTags:
- std-daq
enabled: true
onFailure: buffer
readOnly: false
readoutPriority: monitored
softwareTrigger: true
daq_stream0:
description: stdDAQ preview (2 every 555)
+2
View File
@@ -11,4 +11,6 @@ from .grashopper_tomcat import GrashopperTOMCAT
from .psimotor import EpicsMotorMR, EpicsMotorEC
from .gigafrost.gigafrostclient import GigaFrostClient
from .gigafrost.gigafrostcamera import GigaFrostCamera
from .gigafrost.stddaq_client import StdDaqClient
from .gigafrost.stddaq_preview import StdDaqPreviewDetector
@@ -21,9 +21,6 @@ from bec_lib import bec_logger
logger = bec_logger.logger
class AerotechDriveDataCollectionMixin(CustomDeviceMixin):
# parent : aa1Tasks
def on_stage(self) -> None:
@@ -31,26 +28,28 @@ class AerotechDriveDataCollectionMixin(CustomDeviceMixin):
"""
# Fish out our configuration from scaninfo (via explicit or generic addressing)
scanparam = self.parent.scaninfo.scan_msg.info
prefix = self.parent.parent.name if self.parent.parent is not None else self.parent.name
alias = self.parent.parent.name if self.parent.parent is not None else self.parent.name
logger.warning(f"[{alias}] Scan parameters:\n{scanparam}")
d = {}
if 'kwargs' in scanparam:
scanargs = scanparam['kwargs']
if f'{prefix}_num_points_total' in scanargs:
d['num_points'] = scanargs[f'{prefix}_num_points_total']
if f'{prefix}_ddc_trigger' in scanargs:
d['ddc_trigger'] = scanargs[f'{prefix}_ddc_trigger']
if f'{prefix}_ddc_source0' in scanargs:
d['ddc_source0'] = scanargs[f'{prefix}_ddc_source0']
if f'{prefix}_ddc_source1' in scanargs:
d['ddc_source1'] = scanargs[f'{prefix}_ddc_source1']
if 'num_points_total' in scanargs:
d['num_points'] = scanargs['num_points_total']
if 'ddc_trigger' in scanargs:
d['ddc_trigger'] = scanargs['ddc_trigger']
if 'ddc_source0' in scanargs:
d['ddc_source0'] = scanargs['ddc_source0']
if 'ddc_source1' in scanargs:
d['ddc_source1'] = scanargs['ddc_source1']
scanargs = scanparam['kwargs']
for prefix in ["", alias + "_"]:
if f'{prefix}_num_points_total' in scanargs:
d['num_points'] = scanargs[f'{prefix}_num_points_total']
if f'{prefix}_ddc_trigger' in scanargs:
d['ddc_trigger'] = scanargs[f'{prefix}_ddc_trigger']
if f'{prefix}_ddc_source0' in scanargs:
d['ddc_source0'] = scanargs[f'{prefix}_ddc_source0']
if f'{prefix}_ddc_source1' in scanargs:
d['ddc_source1'] = scanargs[f'{prefix}_ddc_source1']
if 'num_points_total' in scanargs:
d['num_points'] = scanargs['num_points_total']
if 'ddc_trigger' in scanargs:
d['ddc_trigger'] = scanargs['ddc_trigger']
if 'ddc_source0' in scanargs:
d['ddc_source0'] = scanargs['ddc_source0']
if 'ddc_source1' in scanargs:
d['ddc_source1'] = scanargs['ddc_source1']
# Perform bluesky-style configuration
if len(d)>0:
+25 -25
View File
@@ -161,33 +161,33 @@ class GigaFrostCameraMixin(CustomDetectorMixin):
"IOC might be in unknown configuration."
)
self.parent._update_scaninfo()
# Fish out our configuration from scaninfo (via explicit or generic addressing)
prefix = self.parent.parent.name if self.parent.parent is not None else self.parent.name
scanparam = self.parent.scaninfo.scan_msg.info
alias = self.parent.parent.name if self.parent.parent is not None else self.parent.name
logger.warning(f"[{alias}] Scan parameters:\n{scanparam}")
d = {}
if hasattr(self.parent.scaninfo, prefix + '_image_width'):
val = int(getattr(self.parent.scaninfo, prefix + '_image_width'))
d['image_width'] = val
if hasattr(self.parent.scaninfo, prefix + '_image_height'):
val = int(getattr(self.parent.scaninfo, prefix + '_image_height'))
d['image_height'] = val
if hasattr(self.parent.scaninfo, prefix + '_num_burst'):
val = int(getattr(self.parent.scaninfo, prefix + '_num_burst'))
d['num_burst'] = val
if hasattr(self.parent.scaninfo, prefix + '_exposure_time'):
val = float(getattr(self.parent.scaninfo, prefix + '_exposure_time'))
d['exposure_time'] = val
if hasattr(self.parent.scaninfo, prefix + '_exposure_period'):
val = float(getattr(self.parent.scaninfo, prefix + '_exposure_period'))
d['exposure_period'] = val
if hasattr(self.parent.scaninfo, prefix + '_correction_mode'):
val = int(getattr(self.parent.scaninfo, prefix + '_correction_mode'))
d['correction_mode'] = val
if hasattr(self.parent.scaninfo, prefix + '_scanid'):
val = int(getattr(self.parent.scaninfo, prefix + '_scanid'))
d['scanid'] = val
if hasattr(self.parent.scaninfo, prefix + '_trigger_mode'):
val = int(getattr(self.parent.scaninfo, prefix + '_trigger_mode'))
d['trigger_mode'] = val
if 'kwargs' in scanparam:
scanargs = scanparam['kwargs']
for prefix in ["", alias + "_"]:
if f'{prefix}image_width' in scanargs:
d['image_width'] = scanargs[f'{prefix}image_width']
if f'{prefix}image_height' in scanargs:
d['image_height'] = scanargs[f'{prefix}image_height']
if f'{prefix}num_burst' in scanargs:
d['num_burst'] = scanargs[f'{prefix}num_burst']
if f'{prefix}exposure_time' in scanargs:
d['exposure_time'] = scanargs[f'{prefix}exposure_time']
if f'{prefix}exposure_period' in scanargs:
d['exposure_period'] = scanargs[f'{prefix}exposure_period']
if f'{prefix}correction_mode' in scanargs:
d['correction_mode'] = scanargs[f'{prefix}correction_mode']
if f'{prefix}scanid' in scanargs:
d['scanid'] = scanargs[f'{prefix}scanid']
if f'{prefix}trigger_mode' in scanargs:
d['trigger_mode'] = scanargs[f'{prefix}trigger_mode']
# Perform bluesky-style configuration
if len(d)>0:
logger.warning(f"[{self.parent.name}] Configuring with:\n{d}")
+17 -30
View File
@@ -34,36 +34,23 @@ class StdDaqMixin(CustomDeviceMixin):
NOTE: Tomcat might use multiple cameras with their own separate DAQ instances.
"""
logger.warning(self.parent.scaninfo.__dict__.keys())
# Fish out our configuration from scaninfo (via explicit or generic addressing)
scaninfo = self.parent.scaninfo
prefix = self.parent.parent.name if self.parent.parent is not None else self.parent.name
scanparam = self.parent.scaninfo.scan_msg.info
alias = self.parent.parent.name if self.parent.parent is not None else self.parent.name
logger.warning(f"[{alias}] Scan parameters:\n{scanparam}")
d = {}
if hasattr(self.parent.scaninfo, prefix + '_image_width'):
val = int(getattr(self.parent.scaninfo, prefix + '_image_width'))
d['image_width'] = val
if hasattr(self.parent.scaninfo, prefix + '_image_height'):
val = int(getattr(self.parent.scaninfo, prefix + '_image_height'))
d['image_height'] = val
if hasattr(self.parent.scaninfo, 'image_width'):
val = int(getattr(self.parent.scaninfo, prefix + 'image_width'))
d['image_width'] = val
if hasattr(self.parent.scaninfo, 'image_height'):
val = int(getattr(self.parent.scaninfo, 'image_height'))
d['image_height'] = val
if hasattr(self.parent.scaninfo, prefix + '_num_images'):
val = int(getattr(self.parent.scaninfo, prefix + '_num_images'))
d['num_images'] = val
if hasattr(self.parent.scaninfo, prefix + '_file_path'):
val = str(getattr(self.parent.scaninfo, prefix + '_file_path'))
d['file_path'] = val
if hasattr(self.parent.scaninfo, 'num_images'):
val = int(getattr(self.parent.scaninfo, 'num_images'))
d['num_images'] = val
if hasattr(self.parent.scaninfo, 'file_path'):
val = str(getattr(self.parent.scaninfo, 'file_path'))
d['file_path'] = val
if 'kwargs' in scanparam:
scanargs = scanparam['kwargs']
for prefix in ["", alias + "_"]:
if f'{prefix}image_width' in scanargs:
d['image_width'] = scanargs[f'{prefix}image_width']
if f'{prefix}image_height' in scanargs:
d['image_height'] = scanargs[f'{prefix}image_height']
if f'{prefix}num_points_total' in scanargs:
d['num_points_total'] = scanargs[f'{prefix}num_points_total']
if f'{prefix}file_path' in scanargs:
d['file_path'] = scanargs[f'{prefix}file_path']
# Perform bluesky-style configuration
if len(d)>0:
logger.warning(f"[{self.parent.name}] Configuring with:\n{d}")
@@ -267,7 +254,7 @@ class StdDaqClient(PSIDeviceBase):
Parameters as 'd' dictionary
----------------------------
num_images : int, optional
num_points_total : int, optional
Number of images to be taken during each scan. Set to -1 for an
unlimited number of images (limited by the ringbuffer size and
backend speed). (default = 10)
@@ -301,7 +288,7 @@ class StdDaqClient(PSIDeviceBase):
self.cfg_pixel_width.set(d['image_width']).wait()
if 'image_height' in d:
self.cfg_pixel_height.set(d['image_height']).wait()
if 'num_images' in d:
if 'num_points_total' in d:
self.num_images.set(d['num_images']).wait()
if 'file_path' in d:
self.file_path.set(d['file_path']).wait()