From 244326937135acec09890544e227fcb85f29e550 Mon Sep 17 00:00:00 2001 From: Mohacsi Istvan Date: Mon, 14 Nov 2022 14:18:58 +0100 Subject: [PATCH] Added device factory --- ophyd_devices/epics/DeviceFactory.py | 67 ++ ophyd_devices/epics/db/machine_database.yml | 21 + ophyd_devices/epics/db/test_database.yml | 35 + ophyd_devices/epics/db/x12sa_database.yml | 679 ++++++++++++++++++ .../{ => proxies}/DelayGeneratorDG645.py | 0 ophyd_devices/epics/proxies/__init__.py | 2 + .../epics/{ => proxies}/mono_dccm.py | 0 ophyd_devices/epics/{ => proxies}/slits.py | 0 8 files changed, 804 insertions(+) create mode 100644 ophyd_devices/epics/DeviceFactory.py create mode 100644 ophyd_devices/epics/db/machine_database.yml create mode 100644 ophyd_devices/epics/db/test_database.yml create mode 100644 ophyd_devices/epics/db/x12sa_database.yml rename ophyd_devices/epics/{ => proxies}/DelayGeneratorDG645.py (100%) create mode 100644 ophyd_devices/epics/proxies/__init__.py rename ophyd_devices/epics/{ => proxies}/mono_dccm.py (100%) rename ophyd_devices/epics/{ => proxies}/slits.py (100%) diff --git a/ophyd_devices/epics/DeviceFactory.py b/ophyd_devices/epics/DeviceFactory.py new file mode 100644 index 0000000..14dce01 --- /dev/null +++ b/ophyd_devices/epics/DeviceFactory.py @@ -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 + + + diff --git a/ophyd_devices/epics/db/machine_database.yml b/ophyd_devices/epics/db/machine_database.yml new file mode 100644 index 0000000..0146095 --- /dev/null +++ b/ophyd_devices/epics/db/machine_database.yml @@ -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 diff --git a/ophyd_devices/epics/db/test_database.yml b/ophyd_devices/epics/db/test_database.yml new file mode 100644 index 0000000..3686f10 --- /dev/null +++ b/ophyd_devices/epics/db/test_database.yml @@ -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 diff --git a/ophyd_devices/epics/db/x12sa_database.yml b/ophyd_devices/epics/db/x12sa_database.yml new file mode 100644 index 0000000..979e7e9 --- /dev/null +++ b/ophyd_devices/epics/db/x12sa_database.yml @@ -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 diff --git a/ophyd_devices/epics/DelayGeneratorDG645.py b/ophyd_devices/epics/proxies/DelayGeneratorDG645.py similarity index 100% rename from ophyd_devices/epics/DelayGeneratorDG645.py rename to ophyd_devices/epics/proxies/DelayGeneratorDG645.py diff --git a/ophyd_devices/epics/proxies/__init__.py b/ophyd_devices/epics/proxies/__init__.py new file mode 100644 index 0000000..7a737c9 --- /dev/null +++ b/ophyd_devices/epics/proxies/__init__.py @@ -0,0 +1,2 @@ +from .DelayGeneratorDG645 import DelayGeneratorDG645 +from .slits import SlitH, SlitV diff --git a/ophyd_devices/epics/mono_dccm.py b/ophyd_devices/epics/proxies/mono_dccm.py similarity index 100% rename from ophyd_devices/epics/mono_dccm.py rename to ophyd_devices/epics/proxies/mono_dccm.py diff --git a/ophyd_devices/epics/slits.py b/ophyd_devices/epics/proxies/slits.py similarity index 100% rename from ophyd_devices/epics/slits.py rename to ophyd_devices/epics/proxies/slits.py