feature: add new service postmortemlog

This commit is contained in:
Benjamin Labrecque
2026-07-16 09:50:04 +02:00
parent 7b34c743ee
commit 637594bb82
13 changed files with 1843 additions and 1 deletions
+1 -1
View File
@@ -8,4 +8,4 @@ The ports are configured in the [service registry](../../docs/ioc/ioc_overview.m
| AGEBD-CPCL-NTURNS | IOC providing PVs for the DBPM3 stage0 and stage1 nr. of turns calculation service |
| AGEBD-CPCL-DBPM3CURR | |
| AGEBD-CPCL-TAUBPM | |
| AGEBD-CPCL-ORBITBUMP | |
| AGEBD-CPCL-POSTMORTEMLOG | |
@@ -0,0 +1,47 @@
[project]
name = "agebd-postmortemlog"
version = "0.1.0"
description = "AGEBD-POSTMORTEMLOG Service"
requires-python = "==3.10.*"
dependencies = [
"agebd",
]
[dependency-groups]
dev = [
"pyepics>=3.5.8",
"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"]
@@ -0,0 +1 @@
from .service import PVs, Service
@@ -0,0 +1,31 @@
import typer
from agebd.enums import LogLevel
from agebd.runner import CallbackRunner
from agebd.utils import init_logging
from agebd_postmortemlog 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 = "POSTMORTEMLOG"
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)
@@ -0,0 +1,93 @@
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-POSTMORTEMLOG: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-POSTMORTEMLOG: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-POSTMORTEMLOG: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)
#######################################################################################
#######################################################################################
@@ -0,0 +1,9 @@
from agebd_postmortemlog 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()
+275
View File
@@ -0,0 +1,275 @@
version = 1
revision = 3
requires-python = "==3.10.*"
[[package]]
name = "agebd"
version = "0.1.0"
source = { editable = "../../../../packages/agebd" }
dependencies = [
{ name = "typer" },
]
[package.metadata]
requires-dist = [{ 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-postmortemlog"
version = "0.1.0"
source = { editable = "." }
dependencies = [
{ name = "agebd" },
]
[package.dev-dependencies]
dev = [
{ name = "pyepics" },
{ name = "pytest" },
{ name = "ruff" },
]
[package.metadata]
requires-dist = [{ name = "agebd", editable = "../../../../packages/agebd" }]
[package.metadata.requires-dev]
dev = [
{ name = "pyepics", specifier = ">=3.5.8" },
{ 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 = "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" },
]
@@ -0,0 +1,129 @@
file POSTMORTEMLOG.template {
pattern
{ DEVICE }
{ AGEBD-POSTMORTEMLOG }
}
file POSTMORTEMLOG_15min10Hz.template {
pattern
{ NAME INP}
# ---------- BEAM CURRENT --------------
{ CURRBPM AGEBD-DBPM3CURR:CURRENT-AVG }
{ CURRPCT ARS07-DPCT-0000:CURR }
# ---------- BEAM LIFETIME --------------
{ TAUBPM AGEBD-TAUBPM:TAU }
{ TAUPCT AGEBD-TAUPCT:TAU }
# ---------- TUNES --------------
{ QX AGEBD-TUNEBUMP:QX }
{ QY AGEBD-TUNEBUMP:QY }
{ QZ AGEBD-TUNEBUMP:QZ }
# ---------- LOSSES --------------
{ ARS01-DDRM-0375 ARS01-DDRM-0375:FET1_DOSE }
{ ABRTL-DDRM-0670 ABRTL-DDRM-0670:FET1_BIAS_DOSE }
{ ABRTL-DDRM-0950 ABRTL-DDRM-0950:FET1_DOSE }
{ ARS01-DDRM-1530 ARS01-DDRM-1530:FET1_BIAS_DOSE }
{ X05LA-DDRM-0330 X05LA-DDRM-0330:FET1_BIAS_DOSE }
{ ARS05-DDRM-1530 ARS05-DDRM-1530:FET1_BIAS_DOSE }
{ ARS05-DDRM-3500 ARS05-DDRM-3500:FET1_BIAS_DOSE }
{ X09LA-DDRM-0330 X09LA-DDRM-0330:FET1_BIAS_DOSE }
{ ARS09-DDRM-1530 ARS09-DDRM-1530:FET1_BIAS_DOSE }
{ ARS09-DDRM-3500 ARS09-DDRM-3500:FET2_BIAS_DOSE }
{ ARS12-DDRM-1530 ARS12-DDRM-1530:FET1_BIAS_DOSE }
{ ARS12-DDRM-3500 ARS12-DDRM-3500:FET2_BIAS_DOSE }
{ ARS12-DDRM-4400 ARS12-DDRM-4400:FET2_BIAS_DOSE }
{ ARS12-DDRM-5480 ARS12-DDRM-5480:FET1_BIAS_DOSE }
# ---------- RF --------------
{ MASTERFREQ-SET AGERF-MO01:FREQ-SET }
{ MASTERFREQ-GET AGERF-MO01:FREQ-GET }
{ RFPOW-0140-INP ARS05-RCAV-0140:CO1i-POWER-MAX }
{ RFPOW-0060-INP ARS05-RCAV-0060:CO1i-POWER-MAX }
{ RFPOW-0230-INP ARS05-RCAV-0230:CO1i-POWER-MAX }
{ RFPOW-0310-INP ARS05-RCAV-0310:CO1i-POWER-MAX }
{ RFPOW-0060-REF ARS05-RCAV-0060:CO1r-POWER-MAX }
{ RFPOW-0140-REF ARS05-RCAV-0140:CO1r-POWER-MAX }
{ RFPOW-0230-REF ARS05-RCAV-0230:CO1r-POWER-MAX }
{ RFPOW-0310-REF ARS05-RCAV-0310:CO1r-POWER-MAX }
# ---------- BEAM SIZE --------------
{ X01DD-SIGX X01DD-FE-CAM1:SIG-X }
{ X01DD-SIGY X01DD-FE-CAM1:SIG-Y }
{ X08DB-SIGX X08DB-FE-CAM1:SIG-X }
{ X08DB-SIGY X08DB-FE-CAM1:SIG-Y }
# ---------- VACUUM --------------
{ VACMAX ARIVA-VMAVE:PRESS-MAX }
{ VACMAXFE ARIVA-VMAVE-FE:PRESS-MAX }
{ ARS01-VMCC-0110 ARS01-VMCC-0110:PRESSURE }
{ ARS01-VMCC-0210 ARS01-VMCC-0210:PRESSURE }
{ ARS01-VMCC-0225 ARS01-VMCC-0225:PRESSURE }
{ ARS01-VMCC-0310 ARS01-VMCC-0310:PRESSURE }
{ ARS01-VMCC-1550 ARS01-VMCC-1550:PRESSURE }
{ ARS01-VMCC-3510 ARS01-VMCC-3510:PRESSURE }
{ ARS01-VMCC-5460 ARS01-VMCC-5460:PRESSURE }
{ ARS02-VMCC-0110 ARS02-VMCC-0110:PRESSURE }
{ ARS02-VMCC-0210 ARS02-VMCC-0210:PRESSURE }
{ ARS02-VMCC-0310 ARS02-VMCC-0310:PRESSURE }
{ ARS02-VMCC-1550 ARS02-VMCC-1550:PRESSURE }
{ ARS02-VMCC-3510 ARS02-VMCC-3510:PRESSURE }
{ ARS02-VMCC-5460 ARS02-VMCC-5460:PRESSURE }
{ ARS03-VMCC-0110 ARS03-VMCC-0110:PRESSURE }
{ ARS03-VMCC-0320 ARS03-VMCC-0320:PRESSURE }
{ ARS03-VMCC-1550 ARS03-VMCC-1550:PRESSURE }
{ ARS03-VMCC-3510 ARS03-VMCC-3510:PRESSURE }
{ ARS03-VMCC-5460 ARS03-VMCC-5460:PRESSURE }
{ ARS04-VMCC-0110 ARS04-VMCC-0110:PRESSURE }
{ ARS04-VMCC-1550 ARS04-VMCC-1550:PRESSURE }
{ ARS04-VMCC-3510 ARS04-VMCC-3510:PRESSURE }
{ ARS04-VMCC-5460 ARS04-VMCC-5460:PRESSURE }
{ ARS05-VMCC-0110 ARS05-VMCC-0110:PRESSURE }
{ ARS05-VMCC-0115 ARS05-VMCC-0115:PRESSURE }
{ ARS05-VMCC-0210 ARS05-VMCC-0210:PRESSURE }
{ ARS05-VMCC-0215 ARS05-VMCC-0215:PRESSURE }
{ ARS05-VMCC-0310 ARS05-VMCC-0310:PRESSURE }
{ ARS05-VMCC-0315 ARS05-VMCC-0315:PRESSURE }
{ ARS05-VMCC-0410 ARS05-VMCC-0410:PRESSURE }
{ ARS05-VMCC-0415 ARS05-VMCC-0415:PRESSURE }
{ ARS05-VMCC-0510 ARS05-VMCC-0510:PRESSURE }
{ ARS05-VMCC-0520 ARS05-VMCC-0520:PRESSURE }
{ ARS05-VMCC-0530 ARS05-VMCC-0530:PRESSURE }
{ ARS05-VMCC-0810 ARS05-VMCC-0810:PRESSURE }
{ ARS05-VMCC-1550 ARS05-VMCC-1550:PRESSURE }
{ ARS05-VMCC-3510 ARS05-VMCC-3510:PRESSURE }
{ ARS05-VMCC-5460 ARS05-VMCC-5460:PRESSURE }
{ ARS06-VMCC-0110 ARS06-VMCC-0110:PRESSURE }
{ ARS06-VMCC-1550 ARS06-VMCC-1550:PRESSURE }
{ ARS06-VMCC-3510 ARS06-VMCC-3510:PRESSURE }
{ ARS06-VMCC-5460 ARS06-VMCC-5460:PRESSURE }
{ ARS07-VMCC-0010 ARS07-VMCC-0010:PRESSURE }
{ ARS07-VMCC-0120 ARS07-VMCC-0120:PRESSURE }
{ ARS07-VMCC-0210 ARS07-VMCC-0210:PRESSURE }
{ ARS07-VMCC-1550 ARS07-VMCC-1550:PRESSURE }
{ ARS07-VMCC-3510 ARS07-VMCC-3510:PRESSURE }
{ ARS07-VMCC-5460 ARS07-VMCC-5460:PRESSURE }
{ ARS08-VMCC-0110 ARS08-VMCC-0110:PRESSURE }
{ ARS08-VMCC-1550 ARS08-VMCC-1550:PRESSURE }
{ ARS08-VMCC-3510 ARS08-VMCC-3510:PRESSURE }
{ ARS08-VMCC-5460 ARS08-VMCC-5460:PRESSURE }
{ ARS09-VMCC-0110 ARS09-VMCC-0110:PRESSURE }
{ ARS09-VMCC-0120 ARS09-VMCC-0120:PRESSURE }
{ ARS09-VMCC-0410 ARS09-VMCC-0410:PRESSURE }
{ ARS09-VMCC-0510 ARS09-VMCC-0510:PRESSURE }
{ ARS09-VMCC-0810 ARS09-VMCC-0810:PRESSURE }
{ ARS09-VMCC-1550 ARS09-VMCC-1550:PRESSURE }
{ ARS09-VMCC-3510 ARS09-VMCC-3510:PRESSURE }
{ ARS09-VMCC-5460 ARS09-VMCC-5460:PRESSURE }
{ ARS10-VMCC-0110 ARS10-VMCC-0110:PRESSURE }
{ ARS10-VMCC-1550 ARS10-VMCC-1550:PRESSURE }
{ ARS10-VMCC-3510 ARS10-VMCC-3510:PRESSURE }
{ ARS10-VMCC-5460 ARS10-VMCC-5460:PRESSURE }
{ ARS11-VMCC-0110 ARS11-VMCC-0110:PRESSURE }
{ ARS11-VMCC-0210 ARS11-VMCC-0210:PRESSURE }
{ ARS11-VMCC-0310 ARS11-VMCC-0310:PRESSURE }
{ ARS11-VMCC-0410 ARS11-VMCC-0410:PRESSURE }
{ ARS11-VMCC-0510 ARS11-VMCC-0510:PRESSURE }
{ ARS11-VMCC-1550 ARS11-VMCC-1550:PRESSURE }
{ ARS11-VMCC-3510 ARS11-VMCC-3510:PRESSURE }
{ ARS11-VMCC-5460 ARS11-VMCC-5460:PRESSURE }
{ ARS12-VMCC-0110 ARS12-VMCC-0110:PRESSURE }
{ ARS12-VMCC-1550 ARS12-VMCC-1550:PRESSURE }
{ ARS12-VMCC-3510 ARS12-VMCC-3510:PRESSURE }
{ ARS12-VMCC-5460 ARS12-VMCC-5460:PRESSURE }
}
@@ -0,0 +1,6 @@
cpu_architecture: x86_64
epics_version: 7.0.8
ioc_host: sls-vserv-bd-01{{ agebd_env }}
ioc_port: {{ ioc_port }}
os: RHEL8
os_id: rhel
@@ -0,0 +1,37 @@
# This is a template for preaparing an IOC providing BD Service specific PVs
# Access Security Groups:
# DEFAULT - logt wenn EGU oder so veraendert werden
# LOG - logt wenn neuer wert geschrieben wird
# PROTECTED - verhindert versuchte caputs auf alle fields ausser VAL
# READONLY - verhindert versuchte caputs und aktiviert caputlog
# Input links can specify CA, CP, or CPP.
# If the input link specifies CA, it will be forced to be a Channel Access link.
# If the input link specifies CP, it will also be forced to be a Channel Access link; in addition, it will cause the record containing the input link to process whenever a monitor is posted, no matter what the record's SCAN field specifies.
# If the input link specifies CPP, it means the same thing as CP, except that the record will be processed if and only if the record itself specifies passive in its SCAN field. Output links can specify CA, which will simply cause them to be Channel Access links.
#
record(ao, "$(DEVICE):AO") {
field(DESC, "Analog Output Record (ao)")
field(ASG, "PROTECTED")
field(VAL, "0")
field(PINI, "YES")
}
record(bo, "$(DEVICE):BO") {
field(DESC, "Binary Output Record (bo)")
field(ASG, "READONLY")
field(ZSV, "MINOR")
field(OSV, "NO_ALARM")
field(VAL, "1")
field(PINI, "YES")
}
# TODO: ok?
record(bo, "$(DEVICE):CALLBACK") {
field(DESC, "Callback PV to listen to for changes")
field(ASG, "READONLY")
field(ZSV, "MINOR")
field(OSV, "NO_ALARM")
field(VAL, "1")
field(PINI, "YES")
}
@@ -0,0 +1 @@
epicsEnvSet("ENGINEER", "armborst")
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,16 @@
[Unit]
Description=AGEBD-SERVICE-POSTMORTEMLOG
After=network.target
[Service]
Environment=AGEBD_ENV={{ agebd_env }}
ExecStart=/sls/bd/hla/{{ agebd_env }}/bin/start_service.sh POSTMORTEMLOG
Restart=no
[Install]
WantedBy=default.target
# https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html
# systemctl --user daemon-reload
# systemctl --user enable /sls/bd/bin/systemd/AGEBD-SERVICE-POSTMORTEMLOG.service
# systemctl --user start AGEBD-SERVICE-POSTMORTEMLOG