Skip to content

Commit 6d91915

Browse files
committed
Updated FastCS to 0.9.0 and fixed enum issue
1 parent d587a48 commit 6d91915

File tree

3 files changed

+19
-40
lines changed

3 files changed

+19
-40
lines changed

src/fastcs_pandablocks/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
from pathlib import Path
44

55
from fastcs import FastCS
6-
from fastcs.launch import EpicsPVAOptions
76
from fastcs.transport import EpicsGUIOptions, EpicsIOCOptions
7+
from fastcs.transport.epics.pva.options import EpicsPVAOptions
88

99
from . import panda, types
1010
from ._version import __version__
@@ -19,7 +19,7 @@ def ioc(
1919
screens_directory: Path | None = None,
2020
poll_period: float = DEFAULT_POLL_PERIOD,
2121
):
22-
p4p_ioc_options = EpicsPVAOptions(ioc=EpicsIOCOptions(pv_prefix=pv_prefix))
22+
p4p_ioc_options = EpicsPVAOptions(pva_ioc=EpicsIOCOptions(pv_prefix=pv_prefix))
2323
if screens_directory:
2424
if not screens_directory.is_dir():
2525
raise ValueError(

src/fastcs_pandablocks/panda/blocks/blocks.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
from fastcs_pandablocks.panda.client_wrapper import RawPanda
2828
from fastcs_pandablocks.panda.handlers import (
29-
ArmHandler,
29+
ArmSender,
3030
BitGroupOnUpdate,
3131
CaptureHandler,
3232
DefaultFieldHandler,
@@ -133,9 +133,9 @@ async def _add_pcap_arm(self):
133133
pcap_block.add_attribute(
134134
pcap_name + PandaName(field="Arm"),
135135
AttrRW(
136-
Enum(ArmHandler.ArmCommand),
136+
Enum(ArmSender.ArmCommand),
137137
description="Arm/Disarm the PandA.",
138-
handler=ArmHandler(self._raw_panda.arm, self._raw_panda.disarm),
138+
handler=ArmSender(self._raw_panda.arm, self._raw_panda.disarm),
139139
group=WidgetGroup.CAPTURE.value,
140140
),
141141
)
@@ -512,7 +512,9 @@ async def updated_scaled_on_offset_change(*_):
512512
handler=CaptureHandler(
513513
capture_panda_name, self._raw_panda.put_value_to_panda
514514
),
515-
initial_value=capture_enum.members[int(initial_values[panda_name])],
515+
initial_value=capture_enum.members[
516+
capture_enum.names.index(initial_values[capture_panda_name])
517+
],
516518
)
517519
parent_block.add_attribute(
518520
capture_panda_name,

src/fastcs_pandablocks/panda/handlers.py

Lines changed: 11 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
import asyncio
22
import enum
3-
import logging
43
from collections.abc import Callable, Coroutine
54
from dataclasses import dataclass
65
from typing import Any
76

8-
from fastcs.attributes import AttrR, AttrRW, AttrW, Handler, Sender, Updater
7+
from fastcs.attributes import (
8+
AttrHandlerR,
9+
AttrHandlerRW,
10+
AttrHandlerW,
11+
AttrRW,
12+
)
913
from fastcs.datatypes import Bool, DataType, Enum, Float, Int, String, T
1014

1115
from fastcs_pandablocks.types import PandaName
@@ -47,7 +51,7 @@ def attribute_value_to_panda_value(fastcs_datatype: DataType[T], value: T) -> st
4751
raise NotImplementedError(f"Unknown datatype {fastcs_datatype}")
4852

4953

50-
class DefaultFieldSender(Sender):
54+
class DefaultFieldSender(AttrHandlerW):
5155
"""Default sender for sending introspected attributes."""
5256

5357
def __init__(
@@ -60,11 +64,8 @@ def __init__(
6064
self.panda_name = panda_name
6165
self.put_value_to_panda = put_value_to_panda
6266

63-
async def put(self, controller: Any, attr: AttrW[T], value: T) -> None:
64-
await self.put_value_to_panda(self.panda_name, attr.datatype, value)
6567

66-
67-
class DefaultFieldUpdater(Updater):
68+
class DefaultFieldUpdater(AttrHandlerR):
6869
"""Default updater for updating introspected attributes."""
6970

7071
#: We update the fields from the top level
@@ -73,11 +74,8 @@ class DefaultFieldUpdater(Updater):
7374
def __init__(self, panda_name: PandaName):
7475
self.panda_name = panda_name
7576

76-
async def update(self, controller: Any, attr: AttrR) -> None:
77-
pass # TODO: update the attr with the value from the panda
78-
7977

80-
class DefaultFieldHandler(DefaultFieldSender, DefaultFieldUpdater, Handler):
78+
class DefaultFieldHandler(DefaultFieldSender, DefaultFieldUpdater, AttrHandlerRW):
8179
"""Default handler for sending and updating introspected attributes."""
8280

8381
def __init__(
@@ -90,20 +88,12 @@ def __init__(
9088
super().__init__(panda_name, put_value_to_panda)
9189

9290

93-
class TableFieldHandler(Handler):
91+
class TableFieldHandler(AttrHandlerRW):
9492
"""A handler for updating Table valued attributes."""
9593

9694
def __init__(self, panda_name: PandaName):
9795
self.panda_name = panda_name
9896

99-
async def update(self, controller: Any, attr: AttrR) -> None:
100-
# TODO: Convert to panda value
101-
...
102-
103-
async def put(self, controller: Any, attr: AttrW, value: Any) -> None:
104-
# TODO: Convert to attribtue value
105-
...
106-
10797

10898
class CaptureHandler(DefaultFieldHandler):
10999
"""A handler for capture attributes. Not currently used."""
@@ -143,7 +133,7 @@ async def __call__(self, value: Any):
143133
)
144134

145135

146-
class ArmHandler(Handler):
136+
class ArmSender(AttrHandlerW):
147137
"""A sender for arming and disarming the Pcap."""
148138

149139
class ArmCommand(enum.Enum):
@@ -157,16 +147,3 @@ def __init__(
157147
):
158148
self.arm = arm
159149
self.disarm = disarm
160-
161-
async def put(
162-
self, controller: Any, attr: AttrW[ArmCommand], value: ArmCommand
163-
) -> None:
164-
if value is self.ArmCommand.ARM:
165-
logging.info("Arming PandA.")
166-
await self.arm()
167-
else:
168-
logging.info("Disarming PandA.")
169-
await self.disarm()
170-
171-
async def update(self, controller: Any, attr: AttrR[ArmCommand]) -> None:
172-
pass

0 commit comments

Comments
 (0)