Skip to content

GPIO

GPIO readback, static drive, timed pulses, and pulse-width trigger configuration live on AqProtocolExerciser. Import enums and payload types from aqpxlib.gpio or aqpxlib—not from aqpxlib.message.

Public exports

Name Kind Use
PxIoState enum Levels for set_gpio_state, pulse edges, and reported pin state
PxGpioWidthTriggerMode enum set_gpio_trigger(..., mode=...)
PxGpioPinState message Return type of get_gpio_state
PxGpioTriggerEvent message event_msg.global_event.gpio_trigger when handling gpio_trigger

PxIoState

Logical I/O state for a single GPIO line.

Logical level for one GPIO line.

Member Meaning
LOW Driven or sampled low
HIGH Driven or sampled high
HIGH_Z High impedance (not actively driven)

PxGpioWidthTriggerMode

Width-condition selector for set_gpio_trigger.

Member Meaning
TRIGGER_PULSE_WIDTH_IN_RANGE Fire when width is inside [min_duration_ns, max_duration_ns] (with low_pulse / high_pulse)
TRIGGER_PULSE_WIDTH_OUT_OF_RANGE Fire when width is outside that window

PxGpioPinState

PxGpioPinState(
    pin_idx: int = uint32_field(1),
    output_state: Optional[PxIoState] = enum_field(2, optional=True),
    input_state: Optional[PxIoState] = enum_field(3, optional=True),
)

One pin’s snapshot from get_gpio_state(gpio_idx=…).

Field Meaning
pin_idx Pin index
output_state Driven level, if known (None when not driving / unknown)
input_state Sampled input (None when unavailable)

PxGpioTriggerEvent

PxGpioTriggerEvent(
    pin_idx: int = uint32_field(1),
    pulse_duration: int = uint64_field(2),
    pulse_polarity: bool = bool_field(3),
)

Payload for the gpio_trigger handler (PxEventMsg.global_event.gpio_trigger).

Field Meaning
pin_idx Pin that matched
pulse_duration Width in nanoseconds
pulse_polarity Detected polarity

Exerciser methods

AqProtocolExerciser

AqProtocolExerciser(
    generation: str = "PX2K", host: str = "localhost", port: int = 60600
)

AqProtocolExerciser class.

METHOD DESCRIPTION
get_gpio_state

Read electrical state for one GPIO pin.

set_gpio_state

Drive a static logic level on one GPIO pin.

send_gpio_pulse

Emit one pulse: idle → active_state for active_time_nsidle_state.

set_gpio_trigger

Configure GPIO pulse-width triggering (fires gpio_trigger global events).

get_gpio_state

get_gpio_state(gpio_idx: int) -> PxGpioPinState

Read electrical state for one GPIO pin.

The instrument returns status for all pins; this method selects gpio_idx.

PARAMETER DESCRIPTION

gpio_idx

Index of the pin to read.

TYPE: int

RETURNS DESCRIPTION
PxGpioPinState

pin_idx plus optional output_state (driven level)

TYPE: PxGpioPinState

PxGpioPinState

and input_state (sampled level).

RAISES DESCRIPTION
ValueError

If gpio_idx is negative or not present in the reply.

set_gpio_state

set_gpio_state(gpio_idx: int, state: PxIoState) -> None

Drive a static logic level on one GPIO pin.

PARAMETER DESCRIPTION

gpio_idx

Pin index to drive.

TYPE: int

state

Target level (see PxIoState: LOW, HIGH, HIGH_Z).

TYPE: PxIoState

Note

The server may reject the operation if the pin is owned by another protocol.

send_gpio_pulse

Emit one pulse: idle → active_state for active_time_nsidle_state.

Supported only on GPIO indices 8 and 9. Pulse width must be greater than 5 ns and less than 1 second.

PARAMETER DESCRIPTION

gpio_idx

Pin index; must be 8 or 9.

TYPE: int

active_state

Level during the active portion of the pulse.

TYPE: PxIoState

idle_state

Level after the pulse completes.

TYPE: PxIoState

active_time_ns

Width of the active portion in nanoseconds.

TYPE: int

RAISES DESCRIPTION
ValueError

If gpio_idx is not 8 or 9, or active_time_ns is outside (5, 1_000_000_000).

set_gpio_trigger

set_gpio_trigger(
    gpio_idx: int,
    min_duration_ns: int,
    max_duration_ns: int,
    low_pulse: bool = False,
    high_pulse: bool = False,
    mode: PxGpioWidthTriggerMode = TRIGGER_PULSE_WIDTH_IN_RANGE,
) -> None

Configure GPIO pulse-width triggering (fires gpio_trigger global events).

Supported only on GPIO indices 8 and 9. Both duration bounds must be greater than 5 ns and less than 1 second.

PARAMETER DESCRIPTION

gpio_idx

Pin index; must be 8 or 9.

TYPE: int

min_duration_ns

Minimum pulse width for the condition (nanoseconds).

TYPE: int

max_duration_ns

Maximum pulse width for the condition (nanoseconds).

TYPE: int

low_pulse

Include low-going pulses when True.

TYPE: bool DEFAULT: False

high_pulse

Include high-going pulses when True.

TYPE: bool DEFAULT: False

mode

TRIGGER_PULSE_WIDTH_IN_RANGE or TRIGGER_PULSE_WIDTH_OUT_OF_RANGE.

TYPE: PxGpioWidthTriggerMode DEFAULT: TRIGGER_PULSE_WIDTH_IN_RANGE

RAISES DESCRIPTION
ValueError

If gpio_idx is invalid or durations are out of range.