diff --git a/services/topuptool/current/app/src/agebd_topuptool/service.py b/services/topuptool/current/app/src/agebd_topuptool/service.py index 3754214..69d6843 100644 --- a/services/topuptool/current/app/src/agebd_topuptool/service.py +++ b/services/topuptool/current/app/src/agebd_topuptool/service.py @@ -4,13 +4,14 @@ from time import perf_counter import numpy as np from epics import PV, dbr -from agebd.pv import LocalPVLink, get_pv_class +from agebd.pv import LocalPVLink, get_pv_class, get_pv_external_class from agebd.service.pvs import BasePVs from agebd.utils import printgetversion __version__ = printgetversion(__file__) PV = get_pv_class() +PV_EXTERNAL = get_pv_external_class() class PVs(BasePVs): @@ -33,35 +34,35 @@ class PVs(BasePVs): scrubbing = PV("AGEBD-TOPUPTOOL:CONTROL-SCRUB.VAL") # Input PVs - vac_all = PV("ARIVA-VMAVE-ALL:PRESS-MAX.VAL") - vac_acc = PV("ARIVA-VMAVE:PRESS-MAX.VAL") - vac_fe = PV("ARIVA-VMAVE-FE:PRESS-MAX.VAL") - # cur = PV('AGEBD-DBPM3CURR:CURRENT-AVG.VAL') - cur = PV("ARS07-DPCT-0000:CURR.VAL") - injguard = PV("AGEBD-INJECTIONGUARD:CHECK-SUM.VAL") + vac_all = PV_EXTERNAL("ARIVA-VMAVE-ALL:PRESS-MAX.VAL") + vac_acc = PV_EXTERNAL("ARIVA-VMAVE:PRESS-MAX.VAL") + vac_fe = PV_EXTERNAL("ARIVA-VMAVE-FE:PRESS-MAX.VAL") + # cur = PV_EXTERNAL('AGEBD-DBPM3CURR:CURRENT-AVG.VAL') + cur = PV_EXTERNAL("ARS07-DPCT-0000:CURR.VAL") + injguard = PV_EXTERNAL("AGEBD-INJECTIONGUARD:CHECK-SUM.VAL") - injactive = PV("AGEBD-PARAMS:INJECTION-ACTIVE") + injactive = PV_EXTERNAL("AGEBD-PARAMS:INJECTION-ACTIVE") - tau = PV("AGEBD-PARAMS:LIFETIME.VAL") + tau = PV_EXTERNAL("AGEBD-PARAMS:LIFETIME.VAL") - fpfb_adc = PV("ARSGE-CECL-FPFB:BEAM-DUMP-ABS-ADC-DATA") - fpfb_max = PV("ARSGE-CECL-FPFB:FPFB-BEAM-DUMP-THR") + fpfb_adc = PV_EXTERNAL("ARSGE-CECL-FPFB:BEAM-DUMP-ABS-ADC-DATA") + fpfb_max = PV_EXTERNAL("ARSGE-CECL-FPFB:FPFB-BEAM-DUMP-THR") # Regulated PVs - trig_master = PV("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL") - trig_guntxb = PV("ALIRF-VME-A-GUN:CH1-MODE.VAL") - trig_gunevt = PV("AGETI-CVME-MASTER-TMA:Evt-LI-Gun-Ena-Sel.VAL") - trig_booinj = PV("AGETI-CVME-MASTER-TMA:Evt-BO-Inj-Ena-Sel.VAL") - trig_boormp = PV("AGETI-CVME-MASTER-TMA:Evt-Old-BO-HW-Ena-Sel.VAL") - trig_booext = PV( + trig_master = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL") + trig_guntxb = PV_EXTERNAL("ALIRF-VME-A-GUN:CH1-MODE.VAL") + trig_gunevt = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-LI-Gun-Ena-Sel.VAL") + trig_booinj = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-Inj-Ena-Sel.VAL") + trig_boormp = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-Old-BO-HW-Ena-Sel.VAL") + trig_booext = PV_EXTERNAL( "AGETI-CVME-MASTER-TMA:Evt-BO-Ext-Ena-Sel.VAL" ) # Alias AGETI-CVME-MASTER-TMA:Evt-10 - trig_rininj = PV( + trig_rininj = PV_EXTERNAL( "AGETI-CVME-MASTER-TMA:Evt-SR-Inj-Ena-Sel.VAL" ) # Alias AGETI-CVME-MASTER-TMA:Evt-26 - gun_grid = PV("ALIRF-GUN-GRID:V-SET.VAL") - pinger_v = PV("ARS01-MKIK-0320:CTRL-ON-OFF.VAL") - pinger_h = PV("ARS01-MKIK-0290:CTRL-ON-OFF.VAL") + gun_grid = PV_EXTERNAL("ALIRF-GUN-GRID:V-SET.VAL") + pinger_v = PV_EXTERNAL("ARS01-MKIK-0320:CTRL-ON-OFF.VAL") + pinger_h = PV_EXTERNAL("ARS01-MKIK-0290:CTRL-ON-OFF.VAL") topup_dt = PV("AGEBD-TOPUPTOOL:TOPUP-DELTAT.VAL") topup_dI = PV("AGEBD-TOPUPTOOL:TOPUP-DELTAI.VAL") @@ -69,23 +70,6 @@ class PVs(BasePVs): def __init__(self, service_name: str, pv_factory=PV): super().__init__(service_name, pv_factory) - PV = pv_factory - - # TODO: can we do this cleaner? Maybe mechanism for - # settings initial values in dev mode (e.g. ini file) - if isinstance(self.onoff, LocalPVLink): - self.onoff.value = True - - # Option 2: - ## Service specific PVs from dedicated IOC - self.my_pv2 = PV("AGEBD-TOPUPTOOL:BO") # TODO: is this a good PV to use? - - ## Service specific PVs from other IOCs - # ... - - # TODO: class attribute names usually lowercase - # usually it is advisable to trigger the mainloop of a service on changes of certain PVs: - self.CallbackPV = PV("AGEBD-TOPUPTOOL:CALLBACK", auto_monitor=dbr.DBE_VALUE) # TODO: ok? class Service: