Added device factory

This commit is contained in:
mohacsi_i 2022-11-14 14:18:58 +01:00
parent d6da41f5e6
commit 2443269371
8 changed files with 804 additions and 0 deletions

View File

@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 13 17:06:51 2021
@author: mohacsi_i
"""
import os
import yaml
from ophyd.ophydobj import OphydObject
from ophyd import EpicsSignal, EpicsSignalRO, EpicsMotor
from ophyd.quadem import QuadEM
import pathlib
path = os.path.dirname(os.path.abspath(__file__))
from proxies import *
# Load SLS common database
fp = open(f"{path}/db/test_database.yml", "r")
lut_db = yaml.load(fp, Loader=yaml.Loader)
# Load SLS common database
fp = open(f"{path}/db/machine_database.yml", "r")
lut_db = yaml.load(fp, Loader=yaml.Loader)
# Load beamline specific database
bl = os.getenv('BEAMLINE_XNAME', "X12SA")
fp = open(f"{path}/db/{bl.lower()}_database.yml", "r")
lut_db.update(yaml.load(fp, Loader=yaml.Loader))
def createProxy(name: str, connect=True) -> OphydObject:
""" Factory routine to create an ophyd device with a pre-defined schema.
Does nothing if the device is already an OphydObject!
"""
if issubclass(type(name), OphydObject):
return name
entry = lut_db[name]
cls_candidate = globals()[entry["type"]]
print(f"Device candidate: {cls_candidate}")
try:
if issubclass(cls_candidate, OphydObject):
ret = cls_candidate(**entry["config"])
if connect:
ret.wait_for_connection(timeout=5)
return ret
else:
raise RuntimeError(f"Unsupported return class: {schema}")
except TypeError:
# Simulated devices
if issubclass(type(cls_candidate), OphydObject):
return cls_candidate
else:
raise RuntimeError(f"Unsupported return class: {schema}")
if __name__ == "__main__":
pass

View File

@ -0,0 +1,21 @@
ring:
desc: 'SLS storage ring status'
acquisition: {schedule: sync}
config: {name: ring, prefix: ''}
deviceGroup: epicsDevice
status: {enabled: true}
type: SlsStatus
frontendstatus:
desc: 'Minimal beamline frontend status'
acquisition: {schedule: sync}
config: {name: frontendstatus, prefix: X06DA}
deviceGroup: epicsDevice
status: {enabled: true}
type: FrontEndStatus
opticshutchstatus:
desc: 'Minimal beamline optics hutch status'
acquisition: {schedule: sync}
config: {name: opticshutchstatus, prefix: X06DA}
deviceGroup: epicsDevice
status: {enabled: true}
type: OpticsHutchStatus

View File

@ -0,0 +1,35 @@
motor1:
desc: 'Simulated axis 1'
acquisition: {schedule: sync}
config: {name: motor1}
deviceGroup: epicsDevice
status: {enabled: true}
type: SynAxis
motor2:
desc: 'Simulated axis 2'
acquisition: {schedule: sync}
config: {name: motor2}
deviceGroup: epicsDevice
status: {enabled: true}
type: SynAxis
det1:
desc: 'Simulated signal 1'
acquisition: {schedule: sync}
config: {name: det1}
deviceGroup: epicsDevice
status: {enabled: true}
type: SynSignal
det2:
desc: 'Simulated signal 2'
acquisition: {schedule: sync}
config: {name: det2}
deviceGroup: epicsDevice
status: {enabled: true}
type: SynSignal
per1:
desc: 'Simulated periodic signal 1'
acquisition: {schedule: sync}
config: {name: per1}
deviceGroup: epicsDevice
status: {enabled: true}
type: SynPeriodicSignal

View File

@ -0,0 +1,679 @@
idgap:
desc: 'Undulator gap size [mm]'
acquisition: {schedule: sync}
config: {name: idgap, read_pv: 'X12SA-ID-GAP:READ'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
bm1trx:
desc: 'FrontEnd XBPM 1 horizontal movement'
acquisition: {schedule: sync}
config: {name: bm1trx, prefix: 'X12SA-FE-BM1:TRH'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bm1try:
desc: 'FrontEnd XBPM 1 vertical movement'
acquisition: {schedule: sync}
config: {name: bm1try, prefix: 'X12SA-FE-BM1:TRV'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bm2trx:
desc: 'FrontEnd XBPM 2 horizontal movement'
acquisition: {schedule: sync}
config: {name: bm2trx, prefix: 'X12SA-FE-BM2:TRH'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bm2try:
desc: 'FrontEnd XBPM 2 vertical movement'
acquisition: {schedule: sync}
config: {name: bm2try, prefix: 'X12SA-FE-BM2:TRV'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
di2trx:
desc: 'FrontEnd diaphragm 2 horizontal movement'
acquisition: {schedule: sync}
config: {name: di2trx, prefix: 'X12SA-FE-DI2:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
di2try:
desc: 'FrontEnd diaphragm 2 vertical movement'
acquisition: {schedule: sync}
config: {name: di2try, prefix: 'X12SA-FE-BM2:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl0trxo:
desc: 'FrontEnd slit outer blade movement'
acquisition: {schedule: sync}
config: {name: sl0trxo, prefix: 'X12SA-FE-SH1:TRX2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl0trxi:
desc: 'FrontEnd slit inner blade movement'
acquisition: {schedule: sync}
config: {name: sl0trxi, prefix: 'X12SA-FE-SH1:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl0h:
desc: 'FrontEnd slit virtual movement'
acquisition: {schedule: sync}
config: {name: sl0h, prefix: 'X12SA-FE-SH1:'}
deviceGroup: epicsDevice
status: {enabled: true}
type: SlitH
bm3trx:
desc: 'OpticsHutch XBPM 1 horizontal movement'
acquisition: {schedule: sync}
config: {name: bm3trx, prefix: 'X12SA-OP-BM1:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bm3try:
desc: 'OpticsHutch XBPM 1 vertical movement'
acquisition: {schedule: sync}
config: {name: bm3try, prefix: 'X12SA-OP-BM1:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl1trxo:
desc: 'OpticsHutch slit outer blade movement'
acquisition: {schedule: sync}
config: {name: sl1trxo, prefix: 'X12SA-OP-SH1:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl1trxi:
desc: 'OpticsHutch slit inner blade movement'
acquisition: {schedule: sync}
config: {name: sl1trxi, prefix: 'X12SA-OP-SH1:TRX2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl1tryt:
desc: 'OpticsHutch slit top blade movement'
acquisition: {schedule: sync}
config: {name: sl1tryt, prefix: 'X12SA-OP-SV1:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl1tryb:
desc: 'OpticsHutch slit bottom blade movement'
acquisition: {schedule: sync}
config: {name: sl1tryb, prefix: 'X12SA-OP-SV1:TRY2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl1h:
desc: 'OpticsHutch slit virtual movement'
acquisition: {schedule: sync}
config: {name: sl1h, prefix: 'X12SA-OP-SH1:'}
deviceGroup: epicsDevice
status: {enabled: true}
type: SlitH
sl1v:
desc: 'OpticsHutch slit virtual movement'
acquisition: {schedule: sync}
config: {name: sl1v, prefix: 'X12SA-OP-SV1:'}
deviceGroup: epicsDevice
status: {enabled: true}
type: SlitV
fi1try:
desc: 'OpticsHutch filter 1 movement'
acquisition: {schedule: sync}
config: {name: fi1try, prefix: 'X12SA-OP-FI1:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
fi2try:
desc: 'OpticsHutch filter 2 movement'
acquisition: {schedule: sync}
config: {name: fi2try, prefix: 'X12SA-OP-FI2:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
fi3try:
desc: 'OpticsHutch filter 3 movement'
acquisition: {schedule: sync}
config: {name: fi3try, prefix: 'X12SA-OP-FI3:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
motry:
desc: 'OpticsHutch optical table vertical movement'
acquisition: {schedule: sync}
config: {name: motry, prefix: 'X12SA-OP-OT:TRY'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
motrz1:
desc: 'Monochromator crystal 1 axial movement'
acquisition: {schedule: sync}
config: {name: motrz1, prefix: 'X12SA-OP-MO:TRZ1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mopush1:
desc: 'Monochromator crystal 1 angle'
acquisition: {schedule: sync}
config: {name: mopush1, prefix: 'X12SA-OP-MO:ROX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
moroll1:
desc: 'Monochromator crystal 1 roll'
acquisition: {schedule: sync}
config: {name: moroll1, prefix: 'X12SA-OP-MO:ROZ1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
motrx2:
desc: 'Monochromator crystal 2 horizontal movement'
acquisition: {schedule: sync}
config: {name: motrx2, prefix: 'X12SA-OP-MO:TRX2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
motry2:
desc: 'Monochromator crystal 2 vertical movement'
acquisition: {schedule: sync}
config: {name: motry2, prefix: 'X12SA-OP-MO:TRY2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mopush2:
desc: 'Monochromator crystal 2 angle'
acquisition: {schedule: sync}
config: {name: mopush2, prefix: 'X12SA-OP-MO:ROX2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
monot:
desc: 'Monochromator temperature'
acquisition: {schedule: sync}
config: {name: monot, read_pv: 'X12SA-OP-MO:TC3'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
moyaw2:
desc: 'Monochromator crystal 2 yaw movement'
acquisition: {schedule: sync}
config: {name: moyaw2, prefix: 'X12SA-OP-MO:ROTY2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
moroll2:
desc: 'Monochromator crystal 2 roll movement'
acquisition: {schedule: sync}
config: {name: moroll2, prefix: 'X12SA-OP-MO:ROTZ2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mobdai:
desc: 'Monochromator ??? inner motor'
acquisition: {schedule: sync}
config: {name: mobdai, prefix: 'X12SA-OP-MO:TRYA'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mobdbo:
desc: 'Monochromator ??? outer motor'
acquisition: {schedule: sync}
config: {name: mobdbo, prefix: 'X12SA-OP-MO:TRYB'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mobdco:
desc: 'Monochromator ??? outer motor'
acquisition: {schedule: sync}
config: {name: mobdco, prefix: 'X12SA-OP-MO:TRYC'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mobddi:
desc: 'Monochromator ??? inner motor'
acquisition: {schedule: sync}
config: {name: mobddi, prefix: 'X12SA-OP-MO:TRYD'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bm4trx:
desc: 'OpticsHutch XBPM 2 horizontal movement'
acquisition: {schedule: sync}
config: {name: bm4trx, prefix: 'X12SA-OP-BM2:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bm4try:
desc: 'OpticsHutch XBPM 2 vertical movement'
acquisition: {schedule: sync}
config: {name: bm4try, prefix: 'X12SA-OP-BM2:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mitrx:
desc: 'Mirror horizontal movement'
acquisition: {schedule: sync}
config: {name: mitrx, prefix: 'X12SA-OP-MI:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mitry1:
desc: 'Mirror vertical movement 1'
acquisition: {schedule: sync}
config: {name: mitry1, prefix: 'X12SA-OP-MI:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mitry2:
desc: 'Mirror vertical movement 2'
acquisition: {schedule: sync}
config: {name: mitry2, prefix: 'X12SA-OP-MI:TRY2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mitry3:
desc: 'Mirror vertical movement 3'
acquisition: {schedule: sync}
config: {name: mitry3, prefix: 'X12SA-OP-MI:TRY3'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mibd1:
desc: 'Mirror bender 1'
acquisition: {schedule: sync}
config: {name: mibd1, prefix: 'X12SA-OP-MI:TRZ1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
mibd2:
desc: 'Mirror bender 2'
acquisition: {schedule: sync}
config: {name: mibd2, prefix: 'X12SA-OP-MI:TRZ2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bm5trx:
desc: 'OpticsHutch XBPM 3 horizontal movement'
acquisition: {schedule: sync}
config: {name: bm5trx, prefix: 'X12SA-OP-BM3:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bm5try:
desc: 'OpticsHutch XBPM 3 vertical movement'
acquisition: {schedule: sync}
config: {name: bm5try, prefix: 'X12SA-OP-BM3:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl2trxo:
desc: 'OpticsHutch slit 2 outer blade movement'
acquisition: {schedule: sync}
config: {name: sl2trxo, prefix: 'X12SA-OP-SH2:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl2trxi:
desc: 'OpticsHutch slit 2 inner blade movement'
acquisition: {schedule: sync}
config: {name: sl2trxi, prefix: 'X12SA-OP-SH2:TRX2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl2tryt:
desc: 'OpticsHutch slit 2 top blade movement'
acquisition: {schedule: sync}
config: {name: sl2tryt, prefix: 'X12SA-OP-SV2:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl2tryb:
desc: 'OpticsHutch slit 2 bottom blade movement'
acquisition: {schedule: sync}
config: {name: sl2tryb, prefix: 'X12SA-OP-SV2:TRY2'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
sl2h:
desc: 'OpticsHutch slit 2 virtual movement'
acquisition: {schedule: sync}
config: {name: sl2h, prefix: 'X12SA-OP-SH2:'}
deviceGroup: epicsDevice
status: {enabled: true}
type: SlitH
sl2v:
desc: 'OpticsHutch slit 2 virtual movement'
acquisition: {schedule: sync}
config: {name: sl2v, prefix: 'X12SA-OP-SV2:'}
deviceGroup: epicsDevice
status: {enabled: true}
type: SlitV
aptrx:
desc: 'ES aperture horizontal movement'
acquisition: {schedule: sync}
config: {name: aptrx, prefix: 'X12SA-ES1-PIN1:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
aptry:
desc: 'ES aperture vertical movement'
acquisition: {schedule: sync}
config: {name: aptry, prefix: 'X12SA-ES1-PIN1:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
ebtrx:
desc: 'Exposure box 2 horizontal movement'
acquisition: {schedule: sync}
config: {name: ebtrx, prefix: 'X12SA-ES1-EB:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
ebtry:
desc: 'Exposure box 2 vertical movement'
acquisition: {schedule: sync}
config: {name: ebtry, prefix: 'X12SA-ES1-EB:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
ebtrz:
desc: 'Exposure box 2 axial movement'
acquisition: {schedule: sync}
config: {name: ebtrz, prefix: 'X12SA-ES1-EB:TRZ1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
fttrx1:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: fttrx1, prefix: 'X12SA-ES1-FTS1:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
fttry1:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: fttry1, prefix: 'X12SA-ES1-FTS1:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
fttrz:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: fttrz, prefix: 'X12SA-ES1-FTS1:TRZ1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
fttrx2:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: fttrx2, prefix: 'X12SA-ES1-FTS2:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
fttry2:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: fttry2, prefix: 'X12SA-ES1-FTS2:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bs1x:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: bs1x, prefix: 'X12SA-ES1-BS1:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bs1y:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: bs1y, prefix: 'X12SA-ES1-BS1:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bs2x:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: bs2x, prefix: 'X12SA-ES1-BS2:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
bs2y:
desc: 'Dunno these motors???'
acquisition: {schedule: sync}
config: {name: bs2y, prefix: 'X12SA-ES1-BS2:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
dttrx:
desc: 'Detector tower motion'
acquisition: {schedule: sync}
config: {name: dttrx, prefix: 'X12SA-ES1-DETT:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
dttry:
desc: 'Detector tower motion, no encoder'
acquisition: {schedule: sync}
config: {name: dttry, prefix: 'X12SA-ES1-DETT:TRY1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
dttrz:
desc: 'Detector tower motion'
acquisition: {schedule: sync}
config: {name: dttrz, prefix: 'X12SA-ES1-DETT:TRZ1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
dtpush:
desc: 'Detector tower motion'
acquisition: {schedule: sync}
config: {name: dtpush, prefix: 'X12SA-ES1-DETT:ROX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
dettrx:
desc: 'Detector tower motion'
acquisition: {schedule: sync}
config: {name: dettrx, prefix: 'X12SA-ES1-DET1:TRX1'}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
eyex:
desc: 'X-ray eye motion'
acquisition: {schedule: sync}
config: {name: eyex, prefix: X12SA-ES2-ES01}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
eyey:
desc: 'X-ray eye motion'
acquisition: {schedule: sync}
config: {name: eyey, prefix: X12SA-ES2-ES02}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
eyefoc:
desc: 'X-ray eye focusing motor'
acquisition: {schedule: sync}
config: {name: eyefoc, prefix: X12SA-ES2-ES25}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
micfoc:
desc: 'Microscope focusing motor'
acquisition: {schedule: sync}
config: {name: micfoc, prefix: X12SA-ES2-ES03}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
samx:
desc: 'Sample motion'
acquisition: {schedule: sync}
config: {name: samx, prefix: X12SA-ES2-ES04}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
samy:
desc: 'Sample motion'
acquisition: {schedule: sync}
config: {name: samy, prefix: X12SA-ES2-ES05}
deviceGroup: beamlineMotor
status: {enabled: true}
type: EpicsMotor
curr:
desc: 'SLS ring current'
acquisition: {schedule: sync}
config: {name: curr, read_pv: 'ARIDI-PCT:CURRENT'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
sec:
desc: 'Some scaler...'
acquisition: {schedule: sync}
config: {name: sec, read_pv: X12SA-ES1-SCALER.S1}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
cyb:
desc: 'Some scaler...'
acquisition: {schedule: sync}
config: {name: cyb, read_pv: X12SA-ES1-SCALER.S2}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
diode:
desc: 'Some scaler...'
acquisition: {schedule: sync}
config: {name: diode, read_pv: X12SA-ES1-SCALER.S3}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
led:
desc: 'Some scaler...'
acquisition: {schedule: sync}
config: {name: led, read_pv: X12SA-ES1-SCALER.S4}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
bpm3:
desc: 'XBPM 3: White beam before mono'
acquisition: {schedule: sync}
config: {name: bpm3, prefix: 'X12SA-OP-BPM3:'}
deviceGroup: monitor
status: {enabled: true}
type: QuadEM
bpm5:
desc: 'XBPM 5: After mirror'
acquisition: {schedule: sync}
config: {name: bpm5, prefix: 'X12SA-OP-BPM5:'}
deviceGroup: monitor
status: {enabled: true}
type: QuadEM
bpm6:
desc: 'XBPM 6: Not commissioned'
acquisition: {schedule: sync}
config: {name: bpm6, prefix: 'X12SA-OP-BPM6:'}
deviceGroup: monitor
status: {enabled: true}
type: QuadEM
ftp:
desc: 'Flight tube pressure'
acquisition: {schedule: sync}
config: {name: ftp, read_pv: 'X12SA-ES1-FT1MT1:PRESSURE'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
eyecenx:
desc: 'X-ray eye intensit math'
acquisition: {schedule: sync}
config: {name: eyecenx, read_pv: 'XOMNYI-XEYE-XCEN:0'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
eyeceny:
desc: 'X-ray eye intensit math'
acquisition: {schedule: sync}
config: {name: eyeceny, read_pv: 'XOMNYI-XEYE-YCEN:0'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
eyeint:
desc: 'X-ray eye intensit math'
acquisition: {schedule: sync}
config: {name: eyeint, read_pv: 'XOMNYI-XEYE-INT_MEAN:0'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
transd:
desc: 'Transmission diode'
acquisition: {schedule: sync}
config: {name: transd, read_pv: 'X12SA-OP-BPM1:Current1:MeanValue_RBV'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
YASYM:
desc: 'FOFB reference'
acquisition: {schedule: sync}
config: {name: YASYM, read_pv: 'X12SA-LBB:Y-ASYM'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
YSYM:
desc: 'FOFB reference'
acquisition: {schedule: sync}
config: {name: YSYM, read_pv: 'X12SA-LBB:Y-SYM'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
XASYM:
desc: 'FOFB reference'
acquisition: {schedule: sync}
config: {name: XASYM, read_pv: 'X12SA-LBB:X-ASYM'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
XSYM:
desc: 'FOFB reference'
acquisition: {schedule: sync}
config: {name: XSYM, read_pv: 'X12SA-LBB:X-SYM'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
FBPMDX:
desc: 'FOFB reference'
acquisition: {schedule: sync}
config: {name: FBPMDX, read_pv: 'X12SA-ID-FBPMD:X'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
FBPMDY:
desc: 'FOFB reference'
acquisition: {schedule: sync}
config: {name: FBPMDY, read_pv: 'X12SA-ID-FBPMD:Y'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
FBPMUX:
desc: 'FOFB reference'
acquisition: {schedule: sync}
config: {name: FBPMUX, read_pv: 'X12SA-ID-FBPMU:X'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO
FBPMUY:
desc: 'FOFB reference'
acquisition: {schedule: sync}
config: {name: FBPMUY, read_pv: 'X12SA-ID-FBPMU:Y'}
deviceGroup: monitor
status: {enabled: true}
type: EpicsSignalRO

View File

@ -0,0 +1,2 @@
from .DelayGeneratorDG645 import DelayGeneratorDG645
from .slits import SlitH, SlitV