chore: remove pv external and only append -DEV suffix on service internal PVs (#11)
Deploy / deploy (push) Failing after 1s

Use service name to determine whether to use dev or prod PVs in dev environment

---------

Co-authored-by: Benjamin Labrecque <labrecque.benji@gmail.com>
Reviewed-on: #11
This commit was merged in pull request #11.
This commit is contained in:
2026-07-24 09:37:03 +02:00
co-authored by Benjamin Labrecque
parent f13bb368e6
commit e098f8b019
43 changed files with 2312 additions and 2781 deletions
@@ -4,6 +4,7 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_test_service import PVs, Service
from agebd_test_service.service import SERVICE_NAME
def main(
@@ -18,9 +19,8 @@ def main(
),
):
init_logging(log_level)
service_name = "TEST-SERVICE"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -9,7 +9,8 @@ from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
SERVICE_NAME = "TEST-SERVICE"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
+17 -5
View File
@@ -107,13 +107,22 @@ class DevPVLink(PVLink):
Uses DEV PVs
"""
# Optionally we can define the service_name to which
# this PV belongs to. Then we only append "-DEV" to the
# PV name if the PV belongs to that service. For other PVs
# that don't belong to that service, we want to use the prod
# version even in the dev environment.
service_name: str | None = None
def __init__(self, pvname, **kwargs):
dev_pvname = self._get_pvname_dev(pvname)
super().__init__(dev_pvname, **kwargs)
def _get_pvname_dev(self, pvname):
device, record = pvname.split(":")
return f"{device}-DEV:{record}"
if device == f"AGEBD-{self.service_name}":
return f"{device}-DEV:{record}"
return pvname
class LocalPVLink:
@@ -148,18 +157,21 @@ class LocalPVLink:
self.timestamp = time()
def get_pv_class() -> Type[PVLink]:
def get_pv_class(service_name: str | None) -> Type[PVLink]:
"""
PV Factory for LOCAL, DEV, and PROD modes
"""
env = get_env()
if env == AGEBD_ENV.PROD:
return PVLink
pv_class = PVLink
elif env == AGEBD_ENV.DEV:
return DevPVLink
pv_class = DevPVLink
pv_class.service_name = service_name
else:
return LocalPVLink
pv_class = LocalPVLink
return pv_class
# TODO: naming (external?)
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import PeriodicRunner
from agebd.utils import init_logging
from agebd_dbpm3curr import PVs, Service
from agebd_dbpm3curr.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "MASTER"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = PeriodicRunner(service=service)
runner.start()
@@ -1,14 +1,14 @@
import numpy as np
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "DBPM3CURR"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -22,143 +22,143 @@ class PVs(BasePVs):
calibration_new = PV("AGEBD-DBPM3CURR:CALIBRATION-DBPM3-2-PCT-NEW")
# Input PVs
dump_valve = PV_EXTERNAL("ARS01-VVPG-0210:PLC_STATUS.VAL")
pctmast = PV_EXTERNAL("ARS07-DPCT-0000:CURR.VAL")
# pct0100 = PV_EXTERNAL("ARS07-DPCT-0100:CURR.VAL")
# pct0200 = PV_EXTERNAL("ARS07-DPCT-0200:CURR.VAL")
dump_valve = PV("ARS01-VVPG-0210:PLC_STATUS.VAL")
pctmast = PV("ARS07-DPCT-0000:CURR.VAL")
# pct0100 = PV("ARS07-DPCT-0100:CURR.VAL")
# pct0200 = PV("ARS07-DPCT-0200:CURR.VAL")
# BPMs
bpms = [
PV_EXTERNAL("ARS01-DBPM-0390:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-0760:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS01-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS02-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-0810:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS03-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-0090:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-0900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS04-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-0410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS05-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS06-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-0810:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-0840:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS07-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS08-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-0570:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS09-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS10-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-0850:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS11-DBPM-5880:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-1080:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-1460:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-1900:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-2410:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-2910:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-4220:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-4720:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-5250:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-5530:POS-STG2-I.VAL"),
PV_EXTERNAL("ARS12-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS01-DBPM-0390:POS-STG2-I.VAL"),
PV("ARS01-DBPM-0760:POS-STG2-I.VAL"),
PV("ARS01-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS01-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS01-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS01-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS01-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS01-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS01-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS01-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS01-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS01-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS02-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS02-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS02-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS02-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS02-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS02-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS02-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS02-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS02-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS02-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS03-DBPM-0810:POS-STG2-I.VAL"),
PV("ARS03-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS03-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS03-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS03-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS03-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS03-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS03-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS03-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS03-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS03-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS04-DBPM-0090:POS-STG2-I.VAL"),
PV("ARS04-DBPM-0900:POS-STG2-I.VAL"),
PV("ARS04-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS04-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS04-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS04-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS04-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS04-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS04-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS04-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS04-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS04-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS05-DBPM-0410:POS-STG2-I.VAL"),
PV("ARS05-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS05-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS05-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS05-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS05-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS05-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS05-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS05-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS05-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS05-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS06-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS06-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS06-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS06-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS06-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS06-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS06-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS06-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS06-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS06-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS07-DBPM-0810:POS-STG2-I.VAL"),
PV("ARS07-DBPM-0840:POS-STG2-I.VAL"),
PV("ARS07-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS07-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS07-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS07-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS07-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS07-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS07-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS07-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS07-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS07-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS08-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS08-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS08-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS08-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS08-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS08-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS08-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS08-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS08-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS08-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS09-DBPM-0570:POS-STG2-I.VAL"),
PV("ARS09-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS09-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS09-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS09-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS09-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS09-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS09-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS09-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS09-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS09-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS10-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS10-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS10-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS10-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS10-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS10-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS10-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS10-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS10-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS10-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS11-DBPM-0850:POS-STG2-I.VAL"),
PV("ARS11-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS11-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS11-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS11-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS11-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS11-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS11-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS11-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS11-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS11-DBPM-5880:POS-STG2-I.VAL"),
PV("ARS12-DBPM-1080:POS-STG2-I.VAL"),
PV("ARS12-DBPM-1460:POS-STG2-I.VAL"),
PV("ARS12-DBPM-1900:POS-STG2-I.VAL"),
PV("ARS12-DBPM-2410:POS-STG2-I.VAL"),
PV("ARS12-DBPM-2910:POS-STG2-I.VAL"),
PV("ARS12-DBPM-4220:POS-STG2-I.VAL"),
PV("ARS12-DBPM-4720:POS-STG2-I.VAL"),
PV("ARS12-DBPM-5250:POS-STG2-I.VAL"),
PV("ARS12-DBPM-5530:POS-STG2-I.VAL"),
PV("ARS12-DBPM-5880:POS-STG2-I.VAL"),
]
def __init__(self, service_name: str, pv_factory=PV):
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_injectionguard import PVs, Service
from agebd_injectionguard.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "INJECTIONGUARD"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
File diff suppressed because it is too large Load Diff
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_master import PVs, Service
from agebd_master.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "MASTER"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -20,14 +20,15 @@ from time import sleep
import yaml
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
from agebd.pv import get_pv_class
__version__ = printgetversion(__file__)
PV = get_pv_class()
SERVICE_NAME = "MASTER"
PV = get_pv_class(service_name=SERVICE_NAME)
HERE_DIR = Path(__file__).parent
CONFIG_DIR = HERE_DIR / ".." / ".." / "config"
@@ -4,10 +4,9 @@ from agebd.enums import LogLevel
from agebd.runner import PeriodicRunner
from agebd.utils import init_logging
from agebd_nturns import PVs, Service
from agebd_nturns.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +19,8 @@ def main(
),
):
init_logging(log_level)
service_name = "NTURNS"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = PeriodicRunner(service=service)
runner.start()
@@ -1,15 +1,15 @@
import numpy as np
from scipy import signal
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "NTURNS"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -31,9 +31,9 @@ class PVs(BasePVs):
turns2k_peaks = PV("AGEBD-NTURNS:STAGE0-Q-2KTURNS-PEAKS")
# Input PVs
trig = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-10-Ena-Sel")
bpmdat_80 = PV_EXTERNAL("ARS01-DBPM-0760:DAQ-RAW-DATA-CH0")
bpmdat_2K = PV_EXTERNAL("ARS01-DBPM-0760:DAQ-PLT0-STG0-Q")
trig = PV("AGETI-CVME-MASTER-TMA:Evt-10-Ena-Sel")
bpmdat_80 = PV("ARS01-DBPM-0760:DAQ-RAW-DATA-CH0")
bpmdat_2K = PV("ARS01-DBPM-0760:DAQ-PLT0-STG0-Q")
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
@@ -1,47 +0,0 @@
[project]
name = "agebd-orbitbump"
version = "0.1.0"
description = "AGEBD-ORBITBUMP Service"
requires-python = "==3.10.*"
dependencies = [
"agebd",
"pyepics>=3.5.8",
]
[dependency-groups]
dev = [
"pytest>=8.4.2",
"ruff>=0.15.20",
]
[tool.uv.sources]
# Path is relative to where agebd package is deployed on hla
# machines (see CI/CD in .gitea/workflows)
agebd = { path = "../../../../packages/agebd", editable = true }
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.uv]
package = true
[tool.pytest.ini_options]
pythonpath = ["src"]
env = [
"AGEBD_ENV=local",
]
[tool.ruff]
include = [
"src/**/*.py",
"tests/**/*.py",
]
line-length = 100
[tool.ruff.lint]
# use isort to sort imports
extend-select = ["I"]
[tool.ruff.lint.isort]
known-first-party = ["agebd"]
@@ -1 +0,0 @@
from .service import PVs, Service
@@ -1,31 +0,0 @@
import typer
from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_orbitbump import PVs, Service
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
"--log-level",
"-l",
# Looks at the OS env variable first. If empty, falls back to "INFO"
envvar="AGEBD_LOG_LEVEL",
# help="Set log level: DEBUG, INFO, WARNING, ERROR, CRITICAL",
case_sensitive=False,
),
):
init_logging(log_level)
service_name = "ORBITBUMP"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
if __name__ == "__main__":
typer.run(main)
@@ -1,93 +0,0 @@
import time
from epics import dbr
from agebd.pv import LocalPVLink
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
from agebd.pv import get_pv_class
__version__ = printgetversion(__file__)
PV = get_pv_class()
class PVs(BasePVs):
# Option 1:
## Service specific PVs from dedicated IOC
my_pv1 = PV("AGEBD-ORBITBUMP:AO") # TODO: is this a good PV to use?
## Service specific PVs from other IOCs
# ...
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-ORBITBUMP: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-ORBITBUMP:CALLBACK", auto_monitor=dbr.DBE_VALUE
) # TODO: ok?
class Service(BaseService[PVs]):
def __init__(
self,
name: str,
pvs: PVs,
version: str = __version__,
sleep_interval: float = 0.1,
):
super().__init__(name, pvs, version, sleep_interval)
# TODO: What is this for?
self.path = "sls/bd/bin"
def update(self):
# when callback is fired, this code will be executed
if self.CallbackFired:
#######################################################################################
#######################################################################################
# here goes all the code that your service
# is supposed to be running when the callback is fired
time.sleep(1)
#######################################################################################
#######################################################################################
# callback done
self.CallbackFired = 0
#######################################################################################
#######################################################################################
# here goes all the code that your service
# is supposed to be running in any case, e.g.,
# update some pvs/vals
my_pv1_random_val = str(time.clock_gettime_ns(0))[-1]
self.pvs.my_pv1.put(my_pv1_random_val)
# self.pvs.my_pv2.put("MY_PV2 value")
# get some pvs/vals
self.val1 = self.pvs.my_pv1.get()
self.val2 = self.pvs.my_pv2.get()
# maybe sleep to limit the update loop execution rate
time.sleep(1)
#######################################################################################
#######################################################################################
@@ -1,9 +0,0 @@
from agebd_orbitbump import PVs, Service
def test_app():
service_name = "DUMMY"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
service.CallbackFired = 1
service.update()
-299
View File
@@ -1,299 +0,0 @@
version = 1
revision = 3
requires-python = "==3.10.*"
[[package]]
name = "agebd"
version = "0.1.0"
source = { editable = "../../../../packages/agebd" }
dependencies = [
{ name = "h5py" },
{ name = "typer" },
]
[package.metadata]
requires-dist = [
{ name = "h5py", specifier = ">=3.16.0" },
{ name = "typer", specifier = ">=0.23.2" },
]
[package.metadata.requires-dev]
dev = [
{ name = "pyright", specifier = ">=1.1.410" },
{ name = "pytest", specifier = ">=8.4.2" },
{ name = "ruff", specifier = ">=0.15.19" },
]
[[package]]
name = "agebd-orbitbump"
version = "0.1.0"
source = { editable = "." }
dependencies = [
{ name = "agebd" },
{ name = "pyepics" },
]
[package.dev-dependencies]
dev = [
{ name = "pytest" },
{ name = "ruff" },
]
[package.metadata]
requires-dist = [
{ name = "agebd", editable = "../../../../packages/agebd" },
{ name = "pyepics", specifier = ">=3.5.8" },
]
[package.metadata.requires-dev]
dev = [
{ name = "pytest", specifier = ">=8.4.2" },
{ name = "ruff", specifier = ">=0.15.20" },
]
[[package]]
name = "annotated-doc"
version = "0.0.4"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" },
]
[[package]]
name = "colorama"
version = "0.4.6"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
]
[[package]]
name = "exceptiongroup"
version = "1.3.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" },
]
[[package]]
name = "h5py"
version = "3.16.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
]
sdist = { url = "https://files.pythonhosted.org/packages/db/33/acd0ce6863b6c0d7735007df01815403f5589a21ff8c2e1ee2587a38f548/h5py-3.16.0.tar.gz", hash = "sha256:a0dbaad796840ccaa67a4c144a0d0c8080073c34c76d5a6941d6818678ef2738", size = 446526, upload-time = "2026-03-06T13:49:08.07Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/3a/6b/231413e58a787a89b316bb0d1777da3c62257e4797e09afd8d17ad3549dc/h5py-3.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e06f864bedb2c8e7c1358e6c73af48519e317457c444d6f3d332bb4e8fa6d7d9", size = 3724137, upload-time = "2026-03-06T13:47:35.242Z" },
{ url = "https://files.pythonhosted.org/packages/74/f9/557ce3aad0fe8471fb5279bab0fc56ea473858a022c4ce8a0b8f303d64e9/h5py-3.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec86d4fffd87a0f4cb3d5796ceb5a50123a2a6d99b43e616e5504e66a953eca3", size = 3090112, upload-time = "2026-03-06T13:47:37.634Z" },
{ url = "https://files.pythonhosted.org/packages/7a/f5/e15b3d0dc8a18e56409a839e6468d6fb589bc5207c917399c2e0706eeb44/h5py-3.16.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:86385ea895508220b8a7e45efa428aeafaa586bd737c7af9ee04661d8d84a10d", size = 4844847, upload-time = "2026-03-06T13:47:39.811Z" },
{ url = "https://files.pythonhosted.org/packages/cb/92/a8851d936547efe30cc0ce5245feac01f3ec6171f7899bc3f775c72030b3/h5py-3.16.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:8975273c2c5921c25700193b408e28d6bdd0111c37468b2d4e25dcec4cd1d84d", size = 5065352, upload-time = "2026-03-06T13:47:41.489Z" },
{ url = "https://files.pythonhosted.org/packages/2b/ae/f2adc5d0ca9626db3277a3d87516e124cbc5d0eea0bd79bc085702d04f2c/h5py-3.16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1677ad48b703f44efc9ea0c3ab284527f81bc4f318386aaaebc5fede6bbae56f", size = 4839173, upload-time = "2026-03-06T13:47:43.586Z" },
{ url = "https://files.pythonhosted.org/packages/64/0b/e0c8c69da1d8838da023a50cd3080eae5d475691f7636b35eff20bb6ef20/h5py-3.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7c4dd4cf5f0a4e36083f73172f6cfc25a5710789269547f132a20975bfe2434c", size = 5076216, upload-time = "2026-03-06T13:47:45.315Z" },
{ url = "https://files.pythonhosted.org/packages/66/35/d88fd6718832133c885004c61ceeeb24dbd6397ef877dbed6b3a64d6a286/h5py-3.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:bdef06507725b455fccba9c16529121a5e1fbf56aa375f7d9713d9e8ff42454d", size = 3183639, upload-time = "2026-03-06T13:47:47.041Z" },
]
[[package]]
name = "iniconfig"
version = "2.3.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" },
]
[[package]]
name = "markdown-it-py"
version = "4.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "mdurl" },
]
sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" },
]
[[package]]
name = "mdurl"
version = "0.1.2"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" },
]
[[package]]
name = "numpy"
version = "2.2.6"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" },
{ url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" },
{ url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" },
{ url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" },
{ url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" },
{ url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" },
{ url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" },
{ url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" },
{ url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" },
{ url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" },
{ url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" },
{ url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" },
{ url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" },
{ url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" },
]
[[package]]
name = "packaging"
version = "26.2"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" },
]
[[package]]
name = "pluggy"
version = "1.6.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" },
]
[[package]]
name = "pyepics"
version = "3.5.10"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
{ name = "pyparsing" },
]
sdist = { url = "https://files.pythonhosted.org/packages/69/57/29e1e9ef11ba2a3419f489946ae1d8190025a1e4f4e1c1686758bb2b6e0a/pyepics-3.5.10.tar.gz", hash = "sha256:f390cf9be40aba757b9528888114bc14d8db01086d0c93914720b1772460375b", size = 6150481, upload-time = "2026-05-20T18:44:36.336Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d6/36/e517fd83bd97d6bfe4105e0c6b322070c5cc36fb56a8fab2866e319f8804/pyepics-3.5.10-py3-none-any.whl", hash = "sha256:c9fac2c54f2b595268e66fc348cf5ec24e63718e7dbd07d73d1b37d4da6bfee1", size = 5332376, upload-time = "2026-05-20T18:44:34.242Z" },
]
[[package]]
name = "pygments"
version = "2.20.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" },
]
[[package]]
name = "pyparsing"
version = "3.3.2"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" },
]
[[package]]
name = "pytest"
version = "9.1.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
{ name = "exceptiongroup" },
{ name = "iniconfig" },
{ name = "packaging" },
{ name = "pluggy" },
{ name = "pygments" },
{ name = "tomli" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" },
]
[[package]]
name = "rich"
version = "15.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "markdown-it-py" },
{ name = "pygments" },
]
sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" },
]
[[package]]
name = "ruff"
version = "0.15.21"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/0f/36/6f65aa9989acdec45d417192d8f4e7921931d8a6cf87ac74bce3eed98a8e/ruff-0.15.21.tar.gz", hash = "sha256:d0cfc841c572283c36548f82664a54ce6565567f1b0d5b4cf2caac693d8b7500", size = 4769401, upload-time = "2026-07-09T20:01:34.005Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/d0/c6/ede15cac6839f3dbce52565c8f5164a8210e669c7bc4decb03e5bdf47d0d/ruff-0.15.21-py3-none-linux_armv6l.whl", hash = "sha256:63ea0e965e5d73c90e95b2434beeafc70820536717f561b32ab6e777cb9bdf5d", size = 10854342, upload-time = "2026-07-09T20:00:53.998Z" },
{ url = "https://files.pythonhosted.org/packages/28/9d/d825b07ee7ea9e2d61df92a860033c94e06e7300d50a1c2653aac27d24fe/ruff-0.15.21-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:0f212c5d7d54c01bbfe6dcab02b724a39300f3e34ed7acbe995ccb320a2c58bd", size = 11139539, upload-time = "2026-07-09T20:00:57.809Z" },
{ url = "https://files.pythonhosted.org/packages/f5/de/3b107712e642f063c7a9e0887c427b22cb44097de5aab36c05f2e280670c/ruff-0.15.21-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e6312e41bc96791299614995ea3a977c5857c3b5662b1ecef6755b02b87cb646", size = 10595437, upload-time = "2026-07-09T20:01:00.006Z" },
{ url = "https://files.pythonhosted.org/packages/9a/6f/b4523cc90ba239ede441447a19d0c968846a3012e5a0b0c5b62831a3d5e3/ruff-0.15.21-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01d65b4831c6b2a4ba8ee6faa84049d44d982b7a706e622c4094c509e51673be", size = 10990053, upload-time = "2026-07-09T20:01:02.187Z" },
{ url = "https://files.pythonhosted.org/packages/92/cc/c6a9872a5375f0628875481cf2f66b13d7d865bf3ca2e57f91c7e762d976/ruff-0.15.21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2c5a913a589120ce67933d5d05fd6ddbcc2481c6a054980ee767f7414c72b4fd", size = 10666096, upload-time = "2026-07-09T20:01:04.299Z" },
{ url = "https://files.pythonhosted.org/packages/ab/97/c621f7a17e097f1790fa3af6374138823b330b2d03fc38337945daca212c/ruff-0.15.21-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef04b681d02ad4dc9620f00f83ac5c22f652d0e9a9cfe431d219b16ad5ccc41", size = 11537011, upload-time = "2026-07-09T20:01:06.771Z" },
{ url = "https://files.pythonhosted.org/packages/ea/51/d928727e476e25ccc57c6f449ffd80241a651a973ad949d39cfb2a771d28/ruff-0.15.21-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16d090c0740916594157e75b80d666eab8e78083b39b3b0e1d698f4670a17b86", size = 12347101, upload-time = "2026-07-09T20:01:08.859Z" },
{ url = "https://files.pythonhosted.org/packages/1e/88/8cd62026802b16018ad06931d87997cf795ba2a6239ab659606c87d96bf0/ruff-0.15.21-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a10e74757dd65004d779b73e2f3c5210156d9980b41224d50d2ebcf1db51e67", size = 11572001, upload-time = "2026-07-09T20:01:11.092Z" },
{ url = "https://files.pythonhosted.org/packages/b2/97/f63084cf55444fc110e8cb985ebfcc592af47f597d44453d778cb81bc156/ruff-0.15.21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bab0905d2f29e0d9fbc3c373ed23db0095edaa3f71f1f4f519ec15134d9e85c8", size = 11549239, upload-time = "2026-07-09T20:01:13.27Z" },
{ url = "https://files.pythonhosted.org/packages/9d/77/f107da4a2874b7715914b03f09ba9c54424de3ff8a1cc5d015d3ee2ce0ac/ruff-0.15.21-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:00eca240af5789fec6fe7df74c088cc1f9644ed83027113468efba7c92b94075", size = 11535340, upload-time = "2026-07-09T20:01:15.206Z" },
{ url = "https://files.pythonhosted.org/packages/d5/e9/601deb322d3303a7bf212b0100ead6f2ee3f6a044d89c30f2f92bf83c731/ruff-0.15.21-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:262ab31557a75141325e32d3357f3597645a7f084e732b6b054dde428ecd9341", size = 10964048, upload-time = "2026-07-09T20:01:17.723Z" },
{ url = "https://files.pythonhosted.org/packages/ea/2e/0f2176d1e99c15192caea19c8c3a0a955246b4cb4de795042eeb616345cd/ruff-0.15.21-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:659c4e7a4212f83306045ec7c5e5a356d16d9a6ef4ae0c7a4d872914fc655d9d", size = 10667055, upload-time = "2026-07-09T20:01:19.73Z" },
{ url = "https://files.pythonhosted.org/packages/48/60/abd74a02e0c4214f12a68becfd30af7165cfdcb0e661ecdc60bbb949c09a/ruff-0.15.21-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9e866eab611a5f959d36df2d10e446973a3610bc42b0c15b31dc27977d59c233", size = 11242043, upload-time = "2026-07-09T20:01:21.947Z" },
{ url = "https://files.pythonhosted.org/packages/b2/c6/583075d8ccabb4b229345edcaf1545eb3d8d6be90f686a479d7e94088bbf/ruff-0.15.21-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e89bc93c0d3803ba870b55c29671bad9dc6d94bb1eb181b056b52eb05b52854f", size = 11648064, upload-time = "2026-07-09T20:01:24.023Z" },
{ url = "https://files.pythonhosted.org/packages/3a/3c/37d0ecb729a7cc2d393ea7dce316fc585680f35d93b8d62139d7d0a3700c/ruff-0.15.21-py3-none-win32.whl", hash = "sha256:01f8d5be84823c172b389e123174f781f9daf86d6c58719d603f941932195cdd", size = 10896555, upload-time = "2026-07-09T20:01:26.941Z" },
{ url = "https://files.pythonhosted.org/packages/c0/b8/e43466b2a6067ce91e669068f6e28d6c719a920f014b070d5c8731725de3/ruff-0.15.21-py3-none-win_amd64.whl", hash = "sha256:d4b8d9a2f0f12b816b50447f6eccb9f4bb01a6b82c86b50fb3b5354b458dc6d3", size = 12038772, upload-time = "2026-07-09T20:01:29.497Z" },
{ url = "https://files.pythonhosted.org/packages/dd/75/e90ab9aeece218a9fc5a5bc3ec97d0ee6bb3c4ff95869463c1de58e29a1c/ruff-0.15.21-py3-none-win_arm64.whl", hash = "sha256:6e83115d4b9377c1cbc13abf0e051f069fab0ef815ea0504a8a008cee24dd0a8", size = 11375265, upload-time = "2026-07-09T20:01:31.772Z" },
]
[[package]]
name = "shellingham"
version = "1.5.4"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" },
]
[[package]]
name = "tomli"
version = "2.4.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" },
]
[[package]]
name = "typer"
version = "0.27.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "annotated-doc" },
{ name = "colorama", marker = "sys_platform == 'win32'" },
{ name = "rich" },
{ name = "shellingham" },
]
sdist = { url = "https://files.pythonhosted.org/packages/37/78/fda3361b56efc27944f24225f6ecd13d96d6fcfe37bd0eb34e2f4c63f9fc/typer-0.27.0.tar.gz", hash = "sha256:629bd12ea5d13a17148125d9a264f949eb171fb3f120f9b04d85873cab054fa5", size = 203430, upload-time = "2026-07-15T19:21:07.007Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/40/03/26a383c9e58c213199d1aad1c3d353cfc22d4444ec6d2c0bf8ad02523843/typer-0.27.0-py3-none-any.whl", hash = "sha256:6f4b27631e47f077871b7dc30e933ec0131c1390fbe0e387ea5574b5bac9ccf1", size = 122716, upload-time = "2026-07-15T19:21:05.553Z" },
]
[[package]]
name = "typing-extensions"
version = "4.16.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" },
]
@@ -4,6 +4,7 @@ from agebd.enums import LogLevel
from agebd.runner import PeriodicRunner
from agebd.utils import init_logging
from agebd_plots import PVs, Service
from agebd_plots.service import SERVICE_NAME
# TODO: remove: cicd test 10
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "PLOTS"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = PeriodicRunner(service=service)
runner.start()
@@ -13,15 +13,15 @@ from epics import PV
from matplotlib.dates import DateFormatter, HourLocator
from agebd.h5 import h5save
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "PLOTS"
PV = get_pv_class(service_name=SERVICE_NAME)
plt.switch_backend("agg")
plt.rcParams.update({"font.size": 18})
@@ -33,8 +33,8 @@ plt.rcParams["agg.path.chunksize"] = 20000
class PVs(BasePVs):
light_delivery = PV_EXTERNAL("AGEOP-STATUS:LIGHT-DELIVERY.VAL")
shift_type = PV_EXTERNAL("AGEOP-STATUS:DUO-SHIFT-TYPE.VAL")
light_delivery = PV("AGEOP-STATUS:LIGHT-DELIVERY.VAL")
shift_type = PV("AGEOP-STATUS:DUO-SHIFT-TYPE.VAL")
# fmt: off
buffers_shift = {
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_postmortemlog import PVs, Service
from agebd_postmortemlog.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "POSTMORTEMLOG"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -14,15 +14,15 @@ import numpy as np
from epics import poll
from agebd.h5 import h5save
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "POSTMORTEMLOG"
PV = get_pv_class(service_name=SERVICE_NAME)
plt.switch_backend("agg")
plt.rcParams.update({"font.size": 18})
@@ -42,88 +42,86 @@ class PVs(BasePVs):
postdelay = PV("AGEBD-POSTMORTEMLOG:BEAM-ABORT-EVT.ODLY")
# Potential Service Callback PVs
bdcinputsum = PV_EXTERNAL("AGESA-SBDC-0000:SUM_INPUT_NOT_OK.VAL", auto_monitor=True)
bdcinputsum_latched = PV_EXTERNAL(
"AGESA-SBDC-0000:SUM_INPUT_NOT_OK_LATCHED.VAL", auto_monitor=True
)
bdcinputsum = PV("AGESA-SBDC-0000:SUM_INPUT_NOT_OK.VAL", auto_monitor=True)
bdcinputsum_latched = PV("AGESA-SBDC-0000:SUM_INPUT_NOT_OK_LATCHED.VAL", auto_monitor=True)
# Minimum current condition
pctmaster = PV_EXTERNAL("ARS07-DPCT-0000:CURR.VAL")
pctmaster = PV("ARS07-DPCT-0000:CURR.VAL")
# Service Input PVs (Post Mortem Information)
bdc_interlocks = [
PV_EXTERNAL("AGESA-SBDC-0000:CH{:02.0f}-INPUT_OK_LATCHED.VAL".format(i)) for i in range(21)
PV("AGESA-SBDC-0000:CH{:02.0f}-INPUT_OK_LATCHED.VAL".format(i)) for i in range(21)
]
bdc_delays = [PV_EXTERNAL("AGESA-SBDC-0000:CH{:02.0f}-DELAY.VAL".format(i)) for i in range(21)]
bdc_delays = [PV("AGESA-SBDC-0000:CH{:02.0f}-DELAY.VAL".format(i)) for i in range(21)]
pmioc_time = PV_EXTERNAL("ARS01-MKIK-0050-1:TRIG-CNT.VAL")
pmioc_time = PV("ARS01-MKIK-0050-1:TRIG-CNT.VAL")
vcs_alarmlist = PV_EXTERNAL("ARS00-VCS:PLC_AlarmList.VAL")
mis_alarmlist = PV_EXTERNAL("ARS00-MIS-PLC-01:AlarmList.VAL")
misfe_alarmlist = PV_EXTERNAL("ARS00-MIS-PLC-01:AlarmList_Frontends.VAL")
vcs_alarmlist = PV("ARS00-VCS:PLC_AlarmList.VAL")
mis_alarmlist = PV("ARS00-MIS-PLC-01:AlarmList.VAL")
misfe_alarmlist = PV("ARS00-MIS-PLC-01:AlarmList_Frontends.VAL")
# Counters
counter_bdc = PV_EXTERNAL("AGESA-SBDC-0000:INT-COUNTER.VAL", auto_monitor=True)
counter_dumpkicker = PV_EXTERNAL("ARS01-MKIK-0050-1:TRIG-CNT.VAL")
counter_tmaster_beamdump = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-Beam-Dump-EVRCount-I.VAL")
counter_tmaster_postmortem = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-PM-Rec-EVRCount-I.VAL")
counter_bdc = PV("AGESA-SBDC-0000:INT-COUNTER.VAL", auto_monitor=True)
counter_dumpkicker = PV("ARS01-MKIK-0050-1:TRIG-CNT.VAL")
counter_tmaster_beamdump = PV("AGETI-CVME-MASTER-TMA:Evt-Beam-Dump-EVRCount-I.VAL")
counter_tmaster_postmortem = PV("AGETI-CVME-MASTER-TMA:Evt-PM-Rec-EVRCount-I.VAL")
# Post Mortem Data as dict for easier access
PostMortemLinks = [
## BLMs
# IOC: ABODI-DFBL
PV_EXTERNAL("ABODI-DFBL:SigPm.A"),
PV_EXTERNAL("ABODI-DFBL:SigPm.B"),
PV_EXTERNAL("ABODI-DFBL:SigPm.C"),
PV_EXTERNAL("ABODI-DFBL:SigPm.D"),
PV("ABODI-DFBL:SigPm.A"),
PV("ABODI-DFBL:SigPm.B"),
PV("ABODI-DFBL:SigPm.C"),
PV("ABODI-DFBL:SigPm.D"),
# IOC: ARS01-DFBL
PV_EXTERNAL("ARS01-DFBL:SigPm.A"),
PV_EXTERNAL("ARS01-DFBL:SigPm.B"),
PV_EXTERNAL("ARS01-DFBL:SigPm.C"),
PV_EXTERNAL("ARS01-DFBL:SigPm.D"),
PV("ARS01-DFBL:SigPm.A"),
PV("ARS01-DFBL:SigPm.B"),
PV("ARS01-DFBL:SigPm.C"),
PV("ARS01-DFBL:SigPm.D"),
# IOC: ARS02-DFBL
PV_EXTERNAL("ARS02-DFBL:SigPm.A"),
PV_EXTERNAL("ARS02-DFBL:SigPm.B"),
PV_EXTERNAL("ARS02-DFBL:SigPm.C"),
PV_EXTERNAL("ARS02-DFBL:SigPm.D"),
PV("ARS02-DFBL:SigPm.A"),
PV("ARS02-DFBL:SigPm.B"),
PV("ARS02-DFBL:SigPm.C"),
PV("ARS02-DFBL:SigPm.D"),
# IOC: ARS06-DFBL
PV_EXTERNAL("ARS06-DFBL:SigPm.A"),
PV_EXTERNAL("ARS06-DFBL:SigPm.B"),
PV_EXTERNAL("ARS06-DFBL:SigPm.C"),
PV_EXTERNAL("ARS06-DFBL:SigPm.D"),
PV("ARS06-DFBL:SigPm.A"),
PV("ARS06-DFBL:SigPm.B"),
PV("ARS06-DFBL:SigPm.C"),
PV("ARS06-DFBL:SigPm.D"),
# IOC: ARS09-DFBL
PV_EXTERNAL("ARS09-DFBL:SigPm.A"),
PV_EXTERNAL("ARS09-DFBL:SigPm.B"),
PV_EXTERNAL("ARS09-DFBL:SigPm.C"),
PV_EXTERNAL("ARS09-DFBL:SigPm.D"),
PV("ARS09-DFBL:SigPm.A"),
PV("ARS09-DFBL:SigPm.B"),
PV("ARS09-DFBL:SigPm.C"),
PV("ARS09-DFBL:SigPm.D"),
## 4 Kicker Bump
PV_EXTERNAL("ARS01-MKIK-0140:TIME-AXIS.VAL"),
PV_EXTERNAL("ARS01-MKIK-0140:CURRENT-WF.VAL"),
PV_EXTERNAL("ARS01-MKIK-0220:TIME-AXIS.VAL"),
PV_EXTERNAL("ARS01-MKIK-0220:CURRENT-WF.VAL"),
PV_EXTERNAL("ARS01-MKIK-0850:TIME-AXIS.VAL"),
PV_EXTERNAL("ARS01-MKIK-0850:CURRENT-WF.VAL"),
PV_EXTERNAL("ARS01-MKIK-0940:TIME-AXIS.VAL"),
PV_EXTERNAL("ARS01-MKIK-0940:CURRENT-WF.VAL"),
PV("ARS01-MKIK-0140:TIME-AXIS.VAL"),
PV("ARS01-MKIK-0140:CURRENT-WF.VAL"),
PV("ARS01-MKIK-0220:TIME-AXIS.VAL"),
PV("ARS01-MKIK-0220:CURRENT-WF.VAL"),
PV("ARS01-MKIK-0850:TIME-AXIS.VAL"),
PV("ARS01-MKIK-0850:CURRENT-WF.VAL"),
PV("ARS01-MKIK-0940:TIME-AXIS.VAL"),
PV("ARS01-MKIK-0940:CURRENT-WF.VAL"),
## Beam Dump Kicker
PV_EXTERNAL("ARS01-MKIK-0050-1:TIME-AXIS.VAL"),
PV_EXTERNAL("ARS01-MKIK-0050-1:CURRENT-WF.VAL"),
PV_EXTERNAL("ARS01-MKIK-0050-2:TIME-AXIS.VAL"),
PV_EXTERNAL("ARS01-MKIK-0050-2:CURRENT-WF.VAL"),
PV_EXTERNAL("ARS01-MKIK-0050-3:TIME-AXIS.VAL"),
PV_EXTERNAL("ARS01-MKIK-0050-3:CURRENT-WF.VAL"),
PV_EXTERNAL("ARS01-MKIK-0050-4:TIME-AXIS.VAL"),
PV_EXTERNAL("ARS01-MKIK-0050-4:CURRENT-WF.VAL"),
PV("ARS01-MKIK-0050-1:TIME-AXIS.VAL"),
PV("ARS01-MKIK-0050-1:CURRENT-WF.VAL"),
PV("ARS01-MKIK-0050-2:TIME-AXIS.VAL"),
PV("ARS01-MKIK-0050-2:CURRENT-WF.VAL"),
PV("ARS01-MKIK-0050-3:TIME-AXIS.VAL"),
PV("ARS01-MKIK-0050-3:CURRENT-WF.VAL"),
PV("ARS01-MKIK-0050-4:TIME-AXIS.VAL"),
PV("ARS01-MKIK-0050-4:CURRENT-WF.VAL"),
## Beam Dump Post Mortem Digitizer
PV_EXTERNAL("ARF-LPD64:X-AXIS-CH1.VAL"),
PV_EXTERNAL("ARF-LPD64:CH1-DATA.VAL"),
PV_EXTERNAL("ARF-LPD64:X-AXIS-CH2.VAL"),
PV_EXTERNAL("ARF-LPD64:CH2-DATA.VAL"),
PV_EXTERNAL("ARF-LPD64:X-AXIS-CH3.VAL"),
PV_EXTERNAL("ARF-LPD64:CH3-DATA.VAL"),
PV_EXTERNAL("ARF-LPD64:X-AXIS-CH4.VAL"),
PV_EXTERNAL("ARF-LPD64:CH4-DATA.VAL"),
PV_EXTERNAL("AGESA-SBDC-0000:BUNCH0_MAGNET_RAMP_DELAY.VAL"),
PV("ARF-LPD64:X-AXIS-CH1.VAL"),
PV("ARF-LPD64:CH1-DATA.VAL"),
PV("ARF-LPD64:X-AXIS-CH2.VAL"),
PV("ARF-LPD64:CH2-DATA.VAL"),
PV("ARF-LPD64:X-AXIS-CH3.VAL"),
PV("ARF-LPD64:CH3-DATA.VAL"),
PV("ARF-LPD64:X-AXIS-CH4.VAL"),
PV("ARF-LPD64:CH4-DATA.VAL"),
PV("AGESA-SBDC-0000:BUNCH0_MAGNET_RAMP_DELAY.VAL"),
# ---------- FILLING PATTERN --------------
PV("AGEBD-POSTMORTEMLOG:BUFFER-FILLPATTERN-APD.VAL"),
]
@@ -263,7 +261,7 @@ class PVs(BasePVs):
for bpm in bpmnames:
for q in ["X", "Y", "Q"]:
bpmpvname = bpm + "PM-DATA-BEAM-" + q
PostMortemLinks.append(PV_EXTERNAL(bpmpvname))
PostMortemLinks.append(PV(bpmpvname))
# MBFB modes
# state of injection, state of pulsed magnets
@@ -399,18 +397,18 @@ class PVs(BasePVs):
for pvname in names_circ_buffer_ioc:
pvname = "AGEBD-POSTMORTEMLOG:BUFFER-" + pvname + "-LAST.VAL"
PostMortemLinks.append(PV_EXTERNAL(pvname))
PostMortemLinks.append(PV(pvname))
# Prepare machine for accumulation
master_trig = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL")
reset_bucket = PV_EXTERNAL("AGEBD-TIMING:ZERO-TARGET-BUCKET.VAL")
ID_gap_ena = PV_EXTERNAL("AGEOP-STATUS:LIGHT-DELIVERY.VAL")
master_trig = PV("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL")
reset_bucket = PV("AGEBD-TIMING:ZERO-TARGET-BUCKET.VAL")
ID_gap_ena = PV("AGEOP-STATUS:LIGHT-DELIVERY.VAL")
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
PV = pv_factory
self.CallbackPV = PV_EXTERNAL("AGESA-SBDC-0000:INT-COUNTER.VAL", auto_monitor=True)
self.CallbackPV = PV("AGESA-SBDC-0000:INT-COUNTER.VAL", auto_monitor=True)
class vals:
@@ -4,6 +4,7 @@ from agebd.enums import LogLevel
from agebd.utils import init_logging
from agebd_scrubbing import PVs, Service
from agebd_scrubbing.runner import Runner
from agebd_scrubbing.service import SERVICE_NAME
# TODO: remove: cicd test 10
@@ -24,8 +25,7 @@ def main(
complex.
"""
init_logging(log_level)
service_name = "SCRUBBING"
pvs = PVs(service_name=service_name)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(pvs=pvs)
runner = Runner(svc=service)
runner.start()
@@ -4,38 +4,38 @@ from time import perf_counter, sleep
import numpy as np
from epics import PV
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_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()
SERVICE_NAME = "SCRUBBING"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
# fmt: off
cycles_BOIN_sp = PV("AGEBD-SCRUBBING:WARMUPCYCLES-BOIN-SP.VAL")
cycles_BOIN_rb = PV("AGEBD-SCRUBBING:WARMUPCYCLES-BOIN-RB.VAL")
cycles_BOIN_cnt = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-Inj-EVRCount-I.VAL", auto_monitor=True)
cycles_BOIN_cnt = PV("AGETI-CVME-MASTER-TMA:Evt-BO-Inj-EVRCount-I.VAL", auto_monitor=True)
cycles_BOMB_sp = PV("AGEBD-SCRUBBING:WARMUPCYCLES-BOMB-SP.VAL")
cycles_BOMB_rb = PV("AGEBD-SCRUBBING:WARMUPCYCLES-BOMB-RB.VAL")
cycles_BOMB_cnt = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-MA-B-EVRCount-I.VAL", auto_monitor=True)
cycles_BOMB_cnt = PV("AGETI-CVME-MASTER-TMA:Evt-BO-MA-B-EVRCount-I.VAL", auto_monitor=True)
cycles_BOME_sp = PV("AGEBD-SCRUBBING:WARMUPCYCLES-BOME-SP.VAL")
cycles_BOME_rb = PV("AGEBD-SCRUBBING:WARMUPCYCLES-BOME-RB.VAL")
cycles_BOME_cnt = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-Ramp-EVRCount-I.VAL", auto_monitor=True)
cycles_BOME_cnt = PV("AGETI-CVME-MASTER-TMA:Evt-BO-Ramp-EVRCount-I.VAL", auto_monitor=True)
cycles_BOEX_sp = PV("AGEBD-SCRUBBING:WARMUPCYCLES-BOEX-SP.VAL")
cycles_BOEX_rb = PV("AGEBD-SCRUBBING:WARMUPCYCLES-BOEX-RB.VAL")
cycles_BOEX_cnt = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-Ext-EVRCount-I.VAL", auto_monitor=True)
cycles_BOEX_cnt = PV("AGETI-CVME-MASTER-TMA:Evt-BO-Ext-EVRCount-I.VAL", auto_monitor=True)
cycles_SRIN_sp = PV("AGEBD-SCRUBBING:WARMUPCYCLES-SRIN-SP.VAL")
cycles_SRIN_rb = PV("AGEBD-SCRUBBING:WARMUPCYCLES-SRIN-RB.VAL")
cycles_SRIN_cnt = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-Inj-EVRCount-I.VAL", auto_monitor=True)
cycles_ALL_cnt = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Event-Seq-Cnt-I.VAL", auto_monitor=True)
cycles_SRIN_cnt = PV("AGETI-CVME-MASTER-TMA:Evt-SR-Inj-EVRCount-I.VAL", auto_monitor=True)
cycles_ALL_cnt = PV("AGETI-CVME-MASTER-TMA:Event-Seq-Cnt-I.VAL", auto_monitor=True)
## Control PVs
# top-up control mode
# topumod = PV_EXTERNAL('.VAL')
# topumod = PV('.VAL')
# top-up mode vacuum limits
vac_max = PV("AGEBD-SCRUBBING:CONTROL-VACUUM-MAX.VAL")
vac_min = PV("AGEBD-SCRUBBING:CONTROL-VACUUM-MIN.VAL")
@@ -48,100 +48,100 @@ class PVs(BasePVs):
# mbfb gain setpoints for scrubbing
mbfbx_gain_sp = PV("AGEBD-SCRUBBING:MBFBX-GAIN-SP.VAL")
mbfby_gain_sp = PV("AGEBD-SCRUBBING:MBFBY-GAIN-SP.VAL")
mbfbx_gain = PV_EXTERNAL("ARSGE-CECL-MBFB:MBFB-T-X-DDS-GAIN.VAL")
mbfby_gain = PV_EXTERNAL("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-GAIN.VAL")
mbfbx_gain = PV("ARSGE-CECL-MBFB:MBFB-T-X-DDS-GAIN.VAL")
mbfby_gain = PV("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-GAIN.VAL")
# RDP Scan
# pause : set gain to 0 as normal, get current sweep freq, stop sweep, set initial freq of sweep to current freq
# start : set gain to sp (i.e., 100) as normal, start sweep
mbfby_freq_sp = PV_EXTERNAL("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-FRQ.VAL")
mbfby_sweep_onoff = PV_EXTERNAL("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-SWEEP-EN.VAL")
mbfby_sweepfreq_start = PV_EXTERNAL("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-SWEEP-FREQ-START.VAL")
mbfby_sweepfreq_rb = PV_EXTERNAL("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-SWEEP-FRQ-RB-REG.VAL")
mbfby_freq_sp = PV("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-FRQ.VAL")
mbfby_sweep_onoff = PV("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-SWEEP-EN.VAL")
mbfby_sweepfreq_start = PV("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-SWEEP-FREQ-START.VAL")
mbfby_sweepfreq_rb = PV("ARSGE-CECL-MBFB:MBFB-T-Y-DDS-SWEEP-FRQ-RB-REG.VAL")
vac_dyn = PV("AGEBD-SCRUBBING:CONTROL-VACUUM-DYN.VAL")
vac_dyn_frac = PV("AGEBD-SCRUBBING:CONTROL-VACUUM-DYN-FRAC.VAL")
# grd_max = PV_EXTERNAL('AGEBD-SCRUBBING:CONTROL-GUNGRID-MAX.VAL')
# grd_max = PV('AGEBD-SCRUBBING:CONTROL-GUNGRID-MAX.VAL')
grid_accum = PV("AGEBD-SCRUBBING:CONTROL-GUNGRID-ACCUM.VAL")
grid_fpfb = PV("AGEBD-SCRUBBING:CONTROL-GUNGRID-FPFB.VAL")
# current above which the feedback mode is started
current_threshold = PV_EXTERNAL("AGEBD-TIMING:CURRENT-THRESHOLD.VAL")
current_threshold = PV("AGEBD-TIMING:CURRENT-THRESHOLD.VAL")
scrubbing = PV("AGEBD-SCRUBBING:CONTROL-SCRUB.VAL")
# Input PVs
vacs = [
# PV_EXTERNAL('ARIVA-VMAVE:PRESS-MAX.VAL'), # VCS gauges in the Arcs + Straights
# PV_EXTERNAL('ARIVA-VMAVE-FE:PRESS-MAX.VAL'), # VCS gauges in the ring to always the first one after the FE-Valve
# PV_EXTERNAL('ARIVA-VMAVE-ALL:PRESS-MAX.VAL'), # Max of the two above
# PV_EXTERNAL('ARIVA-VMAVE-PSH:PRESS-MAX.VAL'), # VCS gauges in the Photon Shutters/Beam Stoppers of the existing beamlines
PV_EXTERNAL("ARIVA-VMAVE-ALL:PRESS-MAX.VAL"), # Max of three signals: Ring/FE/PSH
PV_EXTERNAL("ARS07-VMCC-0120:PRESSURE.VAL"),
# PV('ARIVA-VMAVE:PRESS-MAX.VAL'), # VCS gauges in the Arcs + Straights
# PV('ARIVA-VMAVE-FE:PRESS-MAX.VAL'), # VCS gauges in the ring to always the first one after the FE-Valve
# PV('ARIVA-VMAVE-ALL:PRESS-MAX.VAL'), # Max of the two above
# PV('ARIVA-VMAVE-PSH:PRESS-MAX.VAL'), # VCS gauges in the Photon Shutters/Beam Stoppers of the existing beamlines
PV("ARIVA-VMAVE-ALL:PRESS-MAX.VAL"), # Max of three signals: Ring/FE/PSH
PV("ARS07-VMCC-0120:PRESSURE.VAL"),
]
vac_all = PV_EXTERNAL("ARIVA-VMAVE-ALL:PRESS-MAX.VAL")
vac_all = PV("ARIVA-VMAVE-ALL:PRESS-MAX.VAL")
vac_acc = [
PV_EXTERNAL("ARIVA-VMAVE:PRESS-MAX.VAL"),
PV_EXTERNAL("ARS07-VMCC-0120:PRESSURE.VAL"),
PV("ARIVA-VMAVE:PRESS-MAX.VAL"),
PV("ARS07-VMCC-0120:PRESSURE.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")
# cur1 = PV_EXTERNAL('ARS07-CECL-DPCT:BDC-DPCT100-SCALED')
# cur2 = PV_EXTERNAL('ARS07-CECL-DPCT2:BDC-DPCT200-SCALED')
# curuse = PV_EXTERNAL('ARS07-DPCT-0000:CHOICE-RB')
# vac_fe = PV('ARIVA-VMAVE-FE:PRESS-MAX.VAL')
# cur = PV('AGEBD-DBPM3CURR:CURRENT-AVG.VAL')
cur = PV("ARS07-DPCT-0000:CURR.VAL")
# cur1 = PV('ARS07-CECL-DPCT:BDC-DPCT100-SCALED')
# cur2 = PV('ARS07-CECL-DPCT2:BDC-DPCT200-SCALED')
# curuse = PV('ARS07-DPCT-0000:CHOICE-RB')
injguard = PV_EXTERNAL("AGEBD-INJECTIONGUARD:CHECK-SUM.VAL")
injguard = PV("AGEBD-INJECTIONGUARD:CHECK-SUM.VAL")
injactive = PV_EXTERNAL("AGEBD-PARAMS:INJECTION-ACTIVE")
injactive = PV("AGEBD-PARAMS:INJECTION-ACTIVE")
tau = PV_EXTERNAL("AGEBD-PARAMS:LIFETIME.VAL")
tau = PV("AGEBD-PARAMS:LIFETIME.VAL")
# Regulated PVs
trig_firego = PV_EXTERNAL("AGEBD-TIMING:GO.VAL")
trig_master = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL")
master_mode = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:FP-Mode-Sel.VAL")
trig_secret = PV_EXTERNAL("AGEBD-INJECTIONGUARD:STATUS-SECRET-MASTER.VAL")
# trig_guntxb = PV_EXTERNAL('ALIRF-VME-A-GUN:CH1-MODE.VAL')
trig_firego = PV("AGEBD-TIMING:GO.VAL")
trig_master = PV("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL")
master_mode = PV("AGETI-CVME-MASTER-TMA:FP-Mode-Sel.VAL")
trig_secret = PV("AGEBD-INJECTIONGUARD:STATUS-SECRET-MASTER.VAL")
# trig_guntxb = PV('ALIRF-VME-A-GUN:CH1-MODE.VAL')
# AGETI-CVME-MASTER-TMA:Evt-LI-Gun-Ena-Sel
# trig_gunevt = PV_EXTERNAL('AGETI-CVME-MASTER-TMA:Evt-LI-Gun-Ena-Sel.VAL')
# trig_gunevt = PV('AGETI-CVME-MASTER-TMA:Evt-LI-Gun-Ena-Sel.VAL')
# AGETI-CVME-MASTER-TMA:Evt-BO-Inj-Ena-Sel
trig_booinj = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-Inj-Ena-Sel.VAL")
trig_booinj = PV("AGETI-CVME-MASTER-TMA:Evt-BO-Inj-Ena-Sel.VAL")
# AGETI-CVME-MASTER-TMA:Evt-BO-MA-B-Ena-Sel
# trig_boormp = PV_EXTERNAL('AGETI-CVME-MASTER-TMA:Evt-Old-BO-HW-Ena-Sel.VAL')
trig_bormp1 = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-MA-B-Ena-Sel.VAL")
# trig_boormp = PV('AGETI-CVME-MASTER-TMA:Evt-Old-BO-HW-Ena-Sel.VAL')
trig_bormp1 = PV("AGETI-CVME-MASTER-TMA:Evt-BO-MA-B-Ena-Sel.VAL")
# AGETI-CVME-MASTER-TMA:Evt-BO-Ramp-Ena-Sel
trig_bormp2 = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-Ramp-Ena-Sel.VAL")
trig_booext = PV_EXTERNAL(
trig_bormp2 = PV("AGETI-CVME-MASTER-TMA:Evt-BO-Ramp-Ena-Sel.VAL")
trig_booext = PV(
"AGETI-CVME-MASTER-TMA:Evt-BO-Ext-Ena-Sel.VAL"
) # Alias AGETI-CVME-MASTER-TMA:Evt-10
trig_rininj = PV_EXTERNAL(
trig_rininj = PV(
"AGETI-CVME-MASTER-TMA:Evt-SR-Inj-Ena-Sel.VAL"
) # Alias AGETI-CVME-MASTER-TMA:Evt-26
trig_pinger_h = PV_EXTERNAL(
trig_pinger_h = PV(
"AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-H-Ena-Sel.VAL"
) # Alias AGETI-CVME-MASTER-TMA:Evt-14-Ena-Sel
trig_pinger_v = PV_EXTERNAL(
trig_pinger_v = PV(
"AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-V-Ena-Sel.VAL"
) # Alias AGETI-CVME-MASTER-TMA:Evt-14-Ena-Sel
# # injection follow bucket workaround for linac (https://elog-gfa.psi.ch/SLS/64299)
# # Before making injection, disable the LLRF phase feedback ...
# linac_llrf_phaseFB1 = PV_EXTERNAL('ALIRF-A1-LLE-DSP:PHASE-FB-SWITCH.VAL')
# linac_llrf_phaseFB2 = PV_EXTERNAL('ALIRF-A2-LLE-DSP:PHASE-FB-SWITCH.VAL')
# linac_llrf_phaseFB1 = PV('ALIRF-A1-LLE-DSP:PHASE-FB-SWITCH.VAL')
# linac_llrf_phaseFB2 = PV('ALIRF-A2-LLE-DSP:PHASE-FB-SWITCH.VAL')
# # ... and disable the phase alarm by setting the phase limits
# linac_llrf_phaseFB_PBU_HIHI = PV_EXTERNAL('ALIRF-PBU:Ph-COMP.HIHI')
# linac_llrf_phaseFB_FBU_HIHI = PV_EXTERNAL('ALIRF-FBU:Ph-COMP.HIHI')
# linac_llrf_phaseFB_MOD1_HIHI = PV_EXTERNAL('ALIRF-AS-1:Ph-COMP.HIHI')
# linac_llrf_phaseFB_MOD2_HIHI = PV_EXTERNAL('ALIRF-AS-2:Ph-COMP.HIHI')
# linac_llrf_phaseFB_PBU_LOLO = PV_EXTERNAL('ALIRF-PBU:Ph-COMP.LOLO')
# linac_llrf_phaseFB_FBU_LOLO = PV_EXTERNAL('ALIRF-FBU:Ph-COMP.LOLO')
# linac_llrf_phaseFB_MOD1_LOLO = PV_EXTERNAL('ALIRF-AS-1:Ph-COMP.LOLO')
# linac_llrf_phaseFB_MOD2_LOLO = PV_EXTERNAL('ALIRF-AS-2:Ph-COMP.LOLO')
# linac_llrf_phaseFB_PBU_HIHI = PV('ALIRF-PBU:Ph-COMP.HIHI')
# linac_llrf_phaseFB_FBU_HIHI = PV('ALIRF-FBU:Ph-COMP.HIHI')
# linac_llrf_phaseFB_MOD1_HIHI = PV('ALIRF-AS-1:Ph-COMP.HIHI')
# linac_llrf_phaseFB_MOD2_HIHI = PV('ALIRF-AS-2:Ph-COMP.HIHI')
# linac_llrf_phaseFB_PBU_LOLO = PV('ALIRF-PBU:Ph-COMP.LOLO')
# linac_llrf_phaseFB_FBU_LOLO = PV('ALIRF-FBU:Ph-COMP.LOLO')
# linac_llrf_phaseFB_MOD1_LOLO = PV('ALIRF-AS-1:Ph-COMP.LOLO')
# linac_llrf_phaseFB_MOD2_LOLO = PV('ALIRF-AS-2:Ph-COMP.LOLO')
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')
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')
topup_dt = PV("AGEBD-SCRUBBING:TOPUP-DELTAT.VAL")
topup_dI = PV("AGEBD-SCRUBBING:TOPUP-DELTAI.VAL")
@@ -153,7 +153,7 @@ class PVs(BasePVs):
PV = pv_factory
# Service Callback PVs
self.CallbackPV = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-Old-BO-SYN.VALA", auto_monitor=True)
self.CallbackPV = PV("AGETI-CVME-MASTER-TMA:Evt-Old-BO-SYN.VALA", auto_monitor=True)
class Service:
@@ -4,6 +4,7 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_shifttool import PVs, Service
from agebd_shifttool.service import SERVICE_NAME
# TODO: remove: cicd test 10
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "SHIFTTOOL"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -5,7 +5,7 @@ from time import time
import elog
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
@@ -15,152 +15,152 @@ locale.setlocale(locale.LC_TIME, "de_CH.UTF-8") # oder 'de_CH.UTF-8'
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "SHIFTTOOL"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
req_MakeElog = PV_EXTERNAL("AGEOP-SHIFTTOOL:REQ-SHIFT-ENTRY.VAL")
req_UpdateTeam = PV_EXTERNAL("AGEOP-SHIFTTOOL:REQ-UPDATE-TEAM.VAL")
req_MakeElog = PV("AGEOP-SHIFTTOOL:REQ-SHIFT-ENTRY.VAL")
req_UpdateTeam = PV("AGEOP-SHIFTTOOL:REQ-UPDATE-TEAM.VAL")
shift = PV_EXTERNAL("AGEOP-SHIFTTOOL:TXT-SHIFT.VAL")
crew = PV_EXTERNAL("AGEOP-SHIFTTOOL:TXT-SHIFT-CREW.VAL")
shift = PV("AGEOP-SHIFTTOOL:TXT-SHIFT.VAL")
crew = PV("AGEOP-SHIFTTOOL:TXT-SHIFT-CREW.VAL")
operators = [
PV_EXTERNAL("AGEOP-SHIFTTOOL:TXT-OPERATOR-01.VAL"),
PV_EXTERNAL("AGEOP-SHIFTTOOL:TXT-OPERATOR-02.VAL"),
PV_EXTERNAL("AGEOP-SHIFTTOOL:TXT-OPERATOR-03.VAL"),
PV_EXTERNAL("AGEOP-SHIFTTOOL:TXT-OPERATOR-04.VAL"),
PV_EXTERNAL("AGEOP-SHIFTTOOL:TXT-OPERATOR-05.VAL"),
PV("AGEOP-SHIFTTOOL:TXT-OPERATOR-01.VAL"),
PV("AGEOP-SHIFTTOOL:TXT-OPERATOR-02.VAL"),
PV("AGEOP-SHIFTTOOL:TXT-OPERATOR-03.VAL"),
PV("AGEOP-SHIFTTOOL:TXT-OPERATOR-04.VAL"),
PV("AGEOP-SHIFTTOOL:TXT-OPERATOR-05.VAL"),
]
links = {
"Problem-01": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Problem-01.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Problem-01.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Problem&pAutor=Rast%2C%20Streich%2C%20Weber&pEffekt=Downtime",
],
"Problem-02": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Problem-02.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Problem-02.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Problem&pAutor=Rast%2C%20Streich%2C%20Weber&pEffekt=Beamdrop",
],
"Problem-03": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Problem-03.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Problem-03.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Problem&pAutor=Rast%2C%20Streich%2C%20Weber&pEffekt=Lifetime",
],
"Problem-04": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Problem-04.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Problem-04.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Problem&pAutor=Rast%2C%20Streich%2C%20Weber&pEffekt=Beamsize",
],
"Problem-05": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Problem-05.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Problem-05.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Problem&pAutor=Rast%2C%20Streich%2C%20Weber&pEffekt=keiner",
],
"Problem-06": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Problem-06.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Problem-06.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Problem&pAutor=Rast%2C%20Streich%2C%20Weber&pEffekt=anderer",
],
"Optimierung-01": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Optimierung-01.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Optimierung-01.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Tuning&pAutor=Rast%2C%20Streich%2C%20Weber&pTitel=Optimierung%20Transfer",
],
"Optimierung-02": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Optimierung-02.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Optimierung-02.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Tuning&pAutor=Rast%2C%20Streich%2C%20Weber&pTitel=Optimierung%20Tau%2FYsig",
],
"Optimierung-03": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Optimierung-03.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Optimierung-03.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Tuning&pAutor=Rast%2C%20Streich%2C%20Weber&pTitel=Optimierung",
],
"Optimierung-04": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Optimierung-04.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Optimierung-04.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Tuning&pAutor=Rast%2C%20Streich%2C%20Weber&pTitel=Optimierung",
],
"Optimierung-05": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Optimierung-05.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Optimierung-05.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Tuning&pAutor=Rast%2C%20Streich%2C%20Weber&pTitel=Optimierung",
],
"Optimierung-06": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Optimierung-06.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Optimierung-06.VAL"),
"https://elog-gfa.psi.ch/sls/?cmd=Neu&pEintrag=Tuning&pAutor=Rast%2C%20Streich%2C%20Weber&pTitel=Optimierung",
],
"Piquet": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Piquet.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Piquet.VAL"),
],
"Info": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-Info.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-Info.VAL"),
],
"AktuellesProtokoll": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-AktuellesProtokoll.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-AktuellesProtokoll.VAL"),
],
"AndereEintraege-01": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-AndereEintraege-01.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-AndereEintraege-01.VAL"),
],
"AndereEintraege-02": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-AndereEintraege-02.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-AndereEintraege-02.VAL"),
],
"AndereEintraege-03": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-AndereEintraege-03.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-AndereEintraege-03.VAL"),
],
"ListenAnzeigen-01": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-ListenAnzeigen-01.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-ListenAnzeigen-01.VAL"),
],
"ListenAnzeigen-02": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-ListenAnzeigen-02.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-ListenAnzeigen-02.VAL"),
],
"ListenAnzeigen-03": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-ListenAnzeigen-03.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-ListenAnzeigen-03.VAL"),
],
"ListenAnzeigen-04": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-ListenAnzeigen-04.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-ListenAnzeigen-04.VAL"),
],
"PiquetWoche": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-PiquetWoche.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-PiquetWoche.VAL"),
],
"OffeneAuftraege": [
PV_EXTERNAL("AGEOP-SHIFTTOOL:LINK-OffeneAuftraege.VAL"),
PV("AGEOP-SHIFTTOOL:LINK-OffeneAuftraege.VAL"),
],
}
minisave = [
PV_EXTERNAL("AGEBD-PARAMS:LIFETIME.VAL"),
PV_EXTERNAL("AGEBD-DBPM3CURR:CURRENT-AVG.VAL"),
PV_EXTERNAL("AGEBD-PARAMS:INJECTION-RATE.VAL"),
PV_EXTERNAL("AGEBD-DBPM3CURR:ACCUMULATED-BEAM-DOSE.VAL"),
PV_EXTERNAL("AGEOP-CPCL-TRANSMISSION:ICT-BRTL_2_BPM-RING.VAL"),
PV_EXTERNAL("ARSGE-CECL-FOFB1:X-RMS-UM.VAL"),
PV_EXTERNAL("ARSGE-CECL-FOFB1:Y-RMS-UM.VAL"),
PV_EXTERNAL("X01DD-FE-ABS1:STATUS.VAL"),
PV_EXTERNAL("X08DB-FE-ABS1:STATUS.VAL"),
PV_EXTERNAL("X01DA-FE-ABS1:STATUS.VAL"),
PV_EXTERNAL("X01DA-OP-PSYS:SH-A-OPEN.VAL"),
PV_EXTERNAL("X02DA-FE-ABS1:STATUS.VAL"),
PV_EXTERNAL("X02DA-OP-PSYS:SH-A-OPEN.VAL"),
PV_EXTERNAL("X06DA-FE-ABS1:STATUS.VAL"),
PV_EXTERNAL("X06DA-OP-PSYS:SH-A-OPEN.VAL"),
PV_EXTERNAL("X07DA-FE-ABS1:STATUS.VAL"),
PV_EXTERNAL("X07D-OP-PSYS:SH-A-OPEN.VAL"),
PV_EXTERNAL("X07DB-FE-ABS1:STATUS.VAL"),
PV_EXTERNAL("X07D-OP-PSYS:SH-B-OPEN.VAL"),
PV_EXTERNAL("X10DA-FE-ABS1:STATUS.VAL"),
PV_EXTERNAL("X10DA-OP-PSYS:SH-A-OPEN.VAL"),
PV_EXTERNAL("X04SA-UIND:GAP-READ.VAL"),
PV_EXTERNAL("X04SA-UIND:SCTRL.VAL"),
PV_EXTERNAL("X06SA-UIND:GAP-READ.VAL"),
PV_EXTERNAL("X06SA-UIND:SCTRL.VAL"),
PV_EXTERNAL("X09LB-UIND:GAP-READ.VAL"),
PV_EXTERNAL("X09LB-UIND:SCTRL.VAL"),
PV_EXTERNAL("X10SA-UIND:GAP-READ.VAL"),
PV_EXTERNAL("X10SA-UIND:SCTRL.VAL"),
PV_EXTERNAL("X12SA-UIND:GAP-READ.VAL"),
PV_EXTERNAL("X12SA-UIND:SCTRL.VAL"),
PV("AGEBD-PARAMS:LIFETIME.VAL"),
PV("AGEBD-DBPM3CURR:CURRENT-AVG.VAL"),
PV("AGEBD-PARAMS:INJECTION-RATE.VAL"),
PV("AGEBD-DBPM3CURR:ACCUMULATED-BEAM-DOSE.VAL"),
PV("AGEOP-CPCL-TRANSMISSION:ICT-BRTL_2_BPM-RING.VAL"),
PV("ARSGE-CECL-FOFB1:X-RMS-UM.VAL"),
PV("ARSGE-CECL-FOFB1:Y-RMS-UM.VAL"),
PV("X01DD-FE-ABS1:STATUS.VAL"),
PV("X08DB-FE-ABS1:STATUS.VAL"),
PV("X01DA-FE-ABS1:STATUS.VAL"),
PV("X01DA-OP-PSYS:SH-A-OPEN.VAL"),
PV("X02DA-FE-ABS1:STATUS.VAL"),
PV("X02DA-OP-PSYS:SH-A-OPEN.VAL"),
PV("X06DA-FE-ABS1:STATUS.VAL"),
PV("X06DA-OP-PSYS:SH-A-OPEN.VAL"),
PV("X07DA-FE-ABS1:STATUS.VAL"),
PV("X07D-OP-PSYS:SH-A-OPEN.VAL"),
PV("X07DB-FE-ABS1:STATUS.VAL"),
PV("X07D-OP-PSYS:SH-B-OPEN.VAL"),
PV("X10DA-FE-ABS1:STATUS.VAL"),
PV("X10DA-OP-PSYS:SH-A-OPEN.VAL"),
PV("X04SA-UIND:GAP-READ.VAL"),
PV("X04SA-UIND:SCTRL.VAL"),
PV("X06SA-UIND:GAP-READ.VAL"),
PV("X06SA-UIND:SCTRL.VAL"),
PV("X09LB-UIND:GAP-READ.VAL"),
PV("X09LB-UIND:SCTRL.VAL"),
PV("X10SA-UIND:GAP-READ.VAL"),
PV("X10SA-UIND:SCTRL.VAL"),
PV("X12SA-UIND:GAP-READ.VAL"),
PV("X12SA-UIND:SCTRL.VAL"),
]
NShiftTasks = PV_EXTERNAL("AGEOP-SHIFTTOOL:CNT-TODO.VAL")
NShiftTasks = PV("AGEOP-SHIFTTOOL:CNT-TODO.VAL")
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
PV = pv_factory
self.CallbackPV = PV_EXTERNAL("AGEOP-SHIFTTOOL:REQ-CALC.VAL")
self.CallbackPV = PV("AGEOP-SHIFTTOOL:REQ-CALC.VAL")
class Service(BaseService[PVs]):
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_taubpm import PVs, Service
from agebd_taubpm.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "TAUBPM"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -3,15 +3,15 @@ from time import sleep
import numpy as np
from epics import dbr
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "TAUBPM"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -21,8 +21,8 @@ class PVs(BasePVs):
MinCurr = PV("AGEBD-TAUBPM:CONTROL-MIN-CURR.VAL")
# Service specific PVs from other IOCs
inj_active = PV_EXTERNAL("AGEBD-PARAMS:INJECTION-ACTIVE.VAL")
dump_valve = PV_EXTERNAL("ARS01-VVPG-0210:PLC_STATUS.VAL")
inj_active = PV("AGEBD-PARAMS:INJECTION-ACTIVE.VAL")
dump_valve = PV("ARS01-VVPG-0210:PLC_STATUS.VAL")
# Output PVs
inj_tau = PV("AGEBD-TAUBPM:TAU.VAL")
@@ -4,6 +4,7 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_taupct import PVs, Service
from agebd_taupct.service import SERVICE_NAME
# TODO: remove: cicd test 10
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "TAUPCT"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -3,15 +3,15 @@ from time import sleep
import numpy as np
from epics import dbr
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "TAUPCT"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -27,14 +27,14 @@ class PVs(BasePVs):
inj_rate_err = PV("AGEBD-TAUPCT:INJRATE-ERR.VAL")
## Service specific PVs from other IOCs
inj_active = PV_EXTERNAL("AGEBD-PARAMS:INJECTION-ACTIVE.VAL")
dump_valve = PV_EXTERNAL("ARS01-VVPG-0210:PLC_STATUS.VAL")
inj_active = PV("AGEBD-PARAMS:INJECTION-ACTIVE.VAL")
dump_valve = PV("ARS01-VVPG-0210:PLC_STATUS.VAL")
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
self.CallbackPV = PV_EXTERNAL("ARS07-CECL-DPCT0:CURR.VAL", auto_monitor=dbr.DBE_VALUE)
# CallbackPV = PV_EXTERNAL('ARS07-DPCT-0000:AVG-CURR.VAL', auto_monitor = dbr.DBE_VALUE)
self.CallbackPV = PV("ARS07-CECL-DPCT0:CURR.VAL", auto_monitor=dbr.DBE_VALUE)
# CallbackPV = PV('ARS07-DPCT-0000:AVG-CURR.VAL', auto_monitor = dbr.DBE_VALUE)
# ARS07-DPCT-0000:CURR (5 Hz, i.e., dt = 0.2 s)
# ARS07-DPCT-0000:AVG-CURR (5 Hz, i.e., dt = 0.2 s)
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_timing import PVs, Service
from agebd_timing.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "TIMING"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -2,15 +2,15 @@ from time import perf_counter, sleep
import numpy as np
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "TIMING"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -34,36 +34,36 @@ class PVs(BasePVs):
## other pvs used by this service
# Beam current measured by PCT
pct_beam_current = PV_EXTERNAL("ARS07-DPCT-0000:CURR.VAL")
pct_beam_current = PV("ARS07-DPCT-0000:CURR.VAL")
# trig_master: enables the storage-ring injection (start sending events)
trig_master = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL")
trig_master = PV("AGETI-CVME-MASTER-TMA:SR-Inj-Status-Sel.VAL")
# trig_secret: everything is correct with the "machine" and injection can be done
trig_secret = PV_EXTERNAL("AGEBD-INJECTIONGUARD:STATUS-SECRET-MASTER.VAL")
trig_secret = PV("AGEBD-INJECTIONGUARD:STATUS-SECRET-MASTER.VAL")
# filling pattern measurement from BPM
fill_meas_bpm = PV_EXTERNAL("ARSGE-CECL-FPFB:FPFB-BUNCH-CHARGE.VAL")
fill_meas_bpm = PV("ARSGE-CECL-FPFB:FPFB-BUNCH-CHARGE.VAL")
# filling pattern measurement from APD
fill_meas_apd = PV_EXTERNAL("X08DB-DFPM-DI:FW-SIS0DAQ-CH0-FPM-WF.VAL")
fill_meas_apd = PV("X08DB-DFPM-DI:FW-SIS0DAQ-CH0-FPM-WF.VAL")
# Pedro's filling pattern feedback reference definition
fpfb_ref = PV_EXTERNAL("ARSGE-CECL-FPFB:FPFB-REF-FILL-PATTERN.VAL")
fpfb_ref = PV("ARSGE-CECL-FPFB:FPFB-REF-FILL-PATTERN.VAL")
# Pedro's filling pattern feedback suggested bucket indices
fpfb_indices = PV_EXTERNAL("ARSGE-CECL-FPFB:BUNCH-IDX-INJECTION-LIST.VAL")
fpfb_indices = PV("ARSGE-CECL-FPFB:BUNCH-IDX-INJECTION-LIST.VAL")
## manual injection timing master pvs
# target bucket for injection
bt = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:FP-Manual-Bucket-SP.VAL")
bt = PV("AGETI-CVME-MASTER-TMA:FP-Manual-Bucket-SP.VAL")
# fire request for gun
fire = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:FP-Manual-Trigger-SP.VAL")
fire = PV("AGETI-CVME-MASTER-TMA:FP-Manual-Trigger-SP.VAL")
# feedback from linac evr
# lastbucket = PV_EXTERNAL('ALIRF-VME-A:Last-Bucket-I.VAL')
# nextbucket = PV_EXTERNAL('ALIRF-VME-A:Bucket-I.VAL')
# lastbucket = PV('ALIRF-VME-A:Last-Bucket-I.VAL')
# nextbucket = PV('ALIRF-VME-A:Bucket-I.VAL')
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
PV = pv_factory
# trigger gun fire followed by bucket update with start of sequence event (3 Hz)
self.CallbackPV = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SOS-EVRCount-I.VAL")
self.CallbackPV = PV("AGETI-CVME-MASTER-TMA:Evt-SOS-EVRCount-I.VAL")
class Service(BaseService[PVs]):
@@ -4,6 +4,7 @@ from agebd.enums import LogLevel
from agebd.utils import init_logging
from agebd_topuptool import PVs, Service
from agebd_topuptool.runner import Runner
from agebd_topuptool.service import SERVICE_NAME
# TODO: remove: cicd test 10
@@ -24,8 +25,7 @@ def main(
complex.
"""
init_logging(log_level)
service_name = "TOPUPTOOL"
pvs = PVs(service_name=service_name)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(pvs=pvs)
runner = Runner(svc=service)
runner.start()
@@ -2,16 +2,16 @@ from datetime import datetime
from time import perf_counter
import numpy as np
from epics import PV, dbr
from epics import PV
from agebd.pv import LocalPVLink, get_pv_class, get_pv_external_class
from agebd.pv import get_pv_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()
SERVICE_NAME = "TOPUPTOOL"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -34,35 +34,35 @@ class PVs(BasePVs):
scrubbing = PV("AGEBD-TOPUPTOOL:CONTROL-SCRUB.VAL")
# Input PVs
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")
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")
injactive = PV_EXTERNAL("AGEBD-PARAMS:INJECTION-ACTIVE")
injactive = PV("AGEBD-PARAMS:INJECTION-ACTIVE")
tau = PV_EXTERNAL("AGEBD-PARAMS:LIFETIME.VAL")
tau = PV("AGEBD-PARAMS:LIFETIME.VAL")
fpfb_adc = PV_EXTERNAL("ARSGE-CECL-FPFB:BEAM-DUMP-ABS-ADC-DATA")
fpfb_max = PV_EXTERNAL("ARSGE-CECL-FPFB:FPFB-BEAM-DUMP-THR")
fpfb_adc = PV("ARSGE-CECL-FPFB:BEAM-DUMP-ABS-ADC-DATA")
fpfb_max = PV("ARSGE-CECL-FPFB:FPFB-BEAM-DUMP-THR")
# Regulated PVs
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(
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(
"AGETI-CVME-MASTER-TMA:Evt-BO-Ext-Ena-Sel.VAL"
) # Alias AGETI-CVME-MASTER-TMA:Evt-10
trig_rininj = PV_EXTERNAL(
trig_rininj = PV(
"AGETI-CVME-MASTER-TMA:Evt-SR-Inj-Ena-Sel.VAL"
) # Alias AGETI-CVME-MASTER-TMA:Evt-26
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")
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")
topup_dt = PV("AGEBD-TOPUPTOOL:TOPUP-DELTAT.VAL")
topup_dI = PV("AGEBD-TOPUPTOOL:TOPUP-DELTAI.VAL")
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_tune import PVs, Service
from agebd_tune.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "TUNE"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -12,15 +12,15 @@ from OMFacility import Facility
from scipy.fft import fft
from sklearn.utils.extmath import randomized_svd
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "TUNE"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -60,14 +60,14 @@ class PVs(BasePVs):
osc_y = PV("AGEBD-TUNE:OSCILLATION-Y-ALL") # vertical TbT to be transmissed
# usually it is advisable to trigger the mainloop of a service on changes of certain PVs:
BPMTriggerEvent = PV_EXTERNAL("ARS07-CECL-DBPM3-1:EEVR-EVENT0-ID")
BPMTriggerEvent = PV("ARS07-CECL-DBPM3-1:EEVR-EVENT0-ID")
CallbackPV_24 = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-Ext-EVRCount-I")
CallbackPV_25 = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-BO-Ext-BPM-EVRCount-I")
CallbackPV_31 = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-H-EVRCount-I")
CallbackPV_32 = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-Inj-EVRCount-I")
CallbackPV_34 = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-FKICK-EVRCount-I")
CallbackPV_40 = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-BPM-EVRCount-I")
CallbackPV_24 = PV("AGETI-CVME-MASTER-TMA:Evt-BO-Ext-EVRCount-I")
CallbackPV_25 = PV("AGETI-CVME-MASTER-TMA:Evt-BO-Ext-BPM-EVRCount-I")
CallbackPV_31 = PV("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-H-EVRCount-I")
CallbackPV_32 = PV("AGETI-CVME-MASTER-TMA:Evt-SR-Inj-EVRCount-I")
CallbackPV_34 = PV("AGETI-CVME-MASTER-TMA:Evt-SR-FKICK-EVRCount-I")
CallbackPV_40 = PV("AGETI-CVME-MASTER-TMA:Evt-SR-BPM-EVRCount-I")
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
@@ -89,12 +89,12 @@ class PVs(BasePVs):
BPMNamesA_y = [name + ":DAQ-BEAM-STG0-Y" for name in BPMNamesA]
BPMNamesA_I = [name + ":DAQ-BEAM-STG0-Q" for name in BPMNamesA]
self.BPMx = [PV_EXTERNAL(name) for name in BPMNames_x]
self.BPMy = [PV_EXTERNAL(name) for name in BPMNames_y]
self.BPMI = [PV_EXTERNAL(name) for name in BPMNames_I]
self.BPMxA = [PV_EXTERNAL(name) for name in BPMNamesA_x]
self.BPMyA = [PV_EXTERNAL(name) for name in BPMNamesA_y]
self.BPMIA = [PV_EXTERNAL(name) for name in BPMNamesA_I]
self.BPMx = [PV(name) for name in BPMNames_x]
self.BPMy = [PV(name) for name in BPMNames_y]
self.BPMI = [PV(name) for name in BPMNames_I]
self.BPMxA = [PV(name) for name in BPMNamesA_x]
self.BPMyA = [PV(name) for name in BPMNamesA_y]
self.BPMIA = [PV(name) for name in BPMNamesA_I]
self.CallbackPV = None
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_tunebump import PVs, Service
from agebd_tunebump.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "TUNEBUMP"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -10,15 +10,15 @@ from OMFacility import Facility
from OMSLS2Magnet import SLS2Magnet
from scipy import signal
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "TUNEBUMP"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -273,7 +273,7 @@ class PVs(BasePVs):
}
for key in quads:
quads[key].append(PV_EXTERNAL(key + ":I-SET.VAL"))
quads[key].append(PV(key + ":I-SET.VAL"))
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
@@ -4,10 +4,11 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_tunefbx import PVs, Service
from agebd_tunefbx.service import SERVICE_NAME
# TODO: remove: cicd test 10
def main(
log_level: LogLevel = typer.Option(
LogLevel.INFO,
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "TUNEFBX"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -4,15 +4,15 @@ import numpy as np
from epics import dbr
from agebd.pid import PID
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "TUNEFBX"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -43,21 +43,21 @@ class PVs(BasePVs):
qx_stepsiz = PV("AGEBD-TUNEBUMP:QX-STEPSIZE.VAL")
## Service specific PVs from other IOCs
inj_active = PV_EXTERNAL("AGEBD-PARAMS:INJECTION-ACTIVE.VAL")
dump_valve = PV_EXTERNAL("ARS01-VVPG-0210:PLC_STATUS.VAL")
hor_pinger_trig = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-H-Ena-Sel.VAL")
ver_pinger_trig = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-V-Ena-Sel.VAL")
bpm_qx_pilot_int = PV_EXTERNAL("ARS07-DBPM-0840:PILOT-INT-SWITCH.VAL") # must be: 0 No Pilot
bpm_qx_pilot_ext = PV_EXTERNAL("ARS07-DBPM-0840:PILOT-EXT-SWITCH.VAL") # must be: 0 No Pilot
bpm_qx_chopper = PV_EXTERNAL("ARS07-DBPM-0840:CHOPPER-MODE.VAL") # must be: 0 Periodic
cur = PV_EXTERNAL("ARS07-DPCT-0000:CURR.VAL")
inj_active = PV("AGEBD-PARAMS:INJECTION-ACTIVE.VAL")
dump_valve = PV("ARS01-VVPG-0210:PLC_STATUS.VAL")
hor_pinger_trig = PV("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-H-Ena-Sel.VAL")
ver_pinger_trig = PV("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-V-Ena-Sel.VAL")
bpm_qx_pilot_int = PV("ARS07-DBPM-0840:PILOT-INT-SWITCH.VAL") # must be: 0 No Pilot
bpm_qx_pilot_ext = PV("ARS07-DBPM-0840:PILOT-EXT-SWITCH.VAL") # must be: 0 No Pilot
bpm_qx_chopper = PV("ARS07-DBPM-0840:CHOPPER-MODE.VAL") # must be: 0 Periodic
cur = PV("ARS07-DPCT-0000:CURR.VAL")
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
PV = pv_factory
# usually it is advisable to trigger the mainloop of a service on changes of certain PVs:
self.CallbackPV = PV_EXTERNAL("AGEBD-TUNEBUMP:QX.VAL", auto_monitor=dbr.DBE_VALUE)
self.CallbackPV = PV("AGEBD-TUNEBUMP:QX.VAL", auto_monitor=dbr.DBE_VALUE)
class Service(BaseService[PVs]):
@@ -4,6 +4,7 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_tunefby import PVs, Service
from agebd_tunefby.service import SERVICE_NAME
# TODO: remove: cicd test 10
@@ -20,9 +21,8 @@ def main(
),
):
init_logging(log_level)
service_name = "TUNEFBY"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -4,15 +4,15 @@ import numpy as np
from epics import dbr
from agebd.pid import PID
from agebd.pv import get_pv_class, get_pv_external_class
from agebd.pv import get_pv_class
from agebd.service.base import BaseService
from agebd.service.pvs import BasePVs
from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
PV_EXTERNAL = get_pv_external_class()
SERVICE_NAME = "TUNEFBY"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):
@@ -43,21 +43,21 @@ class PVs(BasePVs):
qy_stepsiz = PV("AGEBD-TUNEBUMP:QY-STEPSIZE.VAL")
## Service specific PVs from other IOCs
inj_active = PV_EXTERNAL("AGEBD-PARAMS:INJECTION-ACTIVE.VAL")
dump_valve = PV_EXTERNAL("ARS01-VVPG-0210:PLC_STATUS.VAL")
hor_pinger_trig = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-H-Ena-Sel.VAL")
ver_pinger_trig = PV_EXTERNAL("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-V-Ena-Sel.VAL")
cur = PV_EXTERNAL("ARS07-DPCT-0000:CURR.VAL")
bpm_qy_pilot_int = PV_EXTERNAL("ARS07-DBPM-5530:PILOT-INT-SWITCH.VAL") # must be: 0 No Pilot
bpm_qy_pilot_ext = PV_EXTERNAL("ARS07-DBPM-5530:PILOT-EXT-SWITCH.VAL") # must be: 0 No Pilot
bpm_qy_chopper = PV_EXTERNAL("ARS07-DBPM-5530:CHOPPER-MODE.VAL") # must be: 0 Periodic
inj_active = PV("AGEBD-PARAMS:INJECTION-ACTIVE.VAL")
dump_valve = PV("ARS01-VVPG-0210:PLC_STATUS.VAL")
hor_pinger_trig = PV("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-H-Ena-Sel.VAL")
ver_pinger_trig = PV("AGETI-CVME-MASTER-TMA:Evt-SR-Pinger-V-Ena-Sel.VAL")
cur = PV("ARS07-DPCT-0000:CURR.VAL")
bpm_qy_pilot_int = PV("ARS07-DBPM-5530:PILOT-INT-SWITCH.VAL") # must be: 0 No Pilot
bpm_qy_pilot_ext = PV("ARS07-DBPM-5530:PILOT-EXT-SWITCH.VAL") # must be: 0 No Pilot
bpm_qy_chopper = PV("ARS07-DBPM-5530:CHOPPER-MODE.VAL") # must be: 0 Periodic
def __init__(self, service_name: str, pv_factory=PV):
super().__init__(service_name, pv_factory)
PV = pv_factory
# usually it is advisable to trigger the mainloop of a service on changes of certain PVs:
self.CallbackPV = PV_EXTERNAL("AGEBD-TUNEBUMP:QY.VAL", auto_monitor=dbr.DBE_VALUE)
self.CallbackPV = PV("AGEBD-TUNEBUMP:QY.VAL", auto_monitor=dbr.DBE_VALUE)
class Service(BaseService[PVs]):
@@ -4,6 +4,7 @@ from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_{{service_name_lower_underscores}} import PVs, Service
from agebd_{{service_name_lower_underscores}}.service import SERVICE_NAME
def main(
@@ -18,9 +19,8 @@ def main(
),
):
init_logging(log_level)
service_name = "{{ service_name_upper }}"
pvs = PVs(service_name=service_name)
service = Service(name=service_name, pvs=pvs)
pvs = PVs(service_name=SERVICE_NAME)
service = Service(name=SERVICE_NAME, pvs=pvs)
runner = CallbackRunner(service=service)
runner.start()
@@ -9,7 +9,8 @@ from agebd.utils import printgetversion
__version__ = printgetversion(__file__)
PV = get_pv_class()
SERVICE_NAME = "{{ service_name_upper }}"
PV = get_pv_class(service_name=SERVICE_NAME)
class PVs(BasePVs):