Skip to content

device

frog.gui.hardware_set.device ¤

Helper functions for managing connections to devices.

Classes¤

ActiveDeviceManager(active_devices=None) ¤

Bases: QObject

A class used by the frontend to monitor and control backend devices.

Create a new _ActiveDeviceManager.

Source code in src/frog/gui/hardware_set/device.py
88
89
90
91
92
93
94
95
96
97
98
def __init__(
    self,
    active_devices: dict[DeviceInstanceRef, ActiveDeviceProperties] | None = None,
) -> None:
    """Create a new _ActiveDeviceManager."""
    super().__init__()
    self._active_devices = active_devices or {}
    pub.subscribe(self._on_device_open_start, "device.before_opening")
    pub.subscribe(self._on_device_open_end, "device.after_opening")
    pub.subscribe(self._on_device_closed, "device.closed")
    pub.subscribe(self._on_device_error, "device.error")
Attributes¤
connected_devices property ¤

Active devices which are connected (not connecting).

devices property ¤

The current active devices.

Functions¤
disconnect_all() ¤

Disconnect from all devices.

Source code in src/frog/gui/hardware_set/device.py
114
115
116
117
118
def disconnect_all(self) -> None:
    """Disconnect from all devices."""
    # We need to make a copy because keys will be removed as we close devices
    for device in list(self._active_devices.keys()):
        pub.sendMessage("device.close", instance=device)

ActiveDeviceProperties(args, state) dataclass ¤

The properties of a device that is connecting or connected.

Attributes¤
args instance-attribute ¤

Arguments used to open the device.

state instance-attribute ¤

Whether the device is connecting or connected.

Functions¤
__post_init__() ¤

Check whether user attempted to create for a disconnected device.

Source code in src/frog/gui/hardware_set/device.py
51
52
53
54
55
56
def __post_init__(self) -> None:
    """Check whether user attempted to create for a disconnected device."""
    if self.state == ConnectionStatus.DISCONNECTED:
        raise ValueError(
            "Cannot create ActiveDeviceProperties for disconnected device"
        )

ConnectionStatus ¤

Bases: Enum

The connection state of a device.

OpenDeviceArgs(instance, class_name, params=frozendict()) dataclass ¤

Arguments needed to open a device.

Functions¤
close() ¤

Close the device.

Source code in src/frog/gui/hardware_set/device.py
30
31
32
def close(self) -> None:
    """Close the device."""
    close_device(self.instance)
create(instance, class_name, params=frozendict()) classmethod ¤

Create an OpenDeviceArgs using basic types.

Source code in src/frog/gui/hardware_set/device.py
34
35
36
37
38
39
@classmethod
def create(
    cls, instance: str, class_name: str, params: Mapping[str, Any] = frozendict()
) -> OpenDeviceArgs:
    """Create an OpenDeviceArgs using basic types."""
    return cls(DeviceInstanceRef.from_str(instance), class_name, frozendict(params))
open() ¤

Open the device.

Source code in src/frog/gui/hardware_set/device.py
26
27
28
def open(self) -> None:
    """Open the device."""
    open_device(self.class_name, self.instance, self.params)

Functions¤

close_device(instance) ¤

Close a connection to a device.

Source code in src/frog/gui/hardware_set/device.py
76
77
78
def close_device(instance: DeviceInstanceRef) -> None:
    """Close a connection to a device."""
    pub.sendMessage("device.close", instance=instance)

open_device(class_name, instance, params) ¤

Open a connection to a device.

Source code in src/frog/gui/hardware_set/device.py
67
68
69
70
71
72
73
def open_device(
    class_name: str, instance: DeviceInstanceRef, params: Mapping[str, Any]
) -> None:
    """Open a connection to a device."""
    pub.sendMessage(
        "device.open", class_name=class_name, instance=instance, params=params
    )