90 lines
2.5 KiB
Python
90 lines
2.5 KiB
Python
"""ctypes layouts for protocol status unions used by the driver."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import ctypes
|
|
|
|
|
|
class DeviceStatusV1(ctypes.LittleEndianStructure):
|
|
"""Device status bit layout for V1 family."""
|
|
|
|
_pack_ = 1
|
|
_fields_ = [
|
|
("extRefAvailable", ctypes.c_uint8, 1),
|
|
("extRefInUse", ctypes.c_uint8, 1),
|
|
("FPGA_configured", ctypes.c_uint8, 1),
|
|
("source_locked", ctypes.c_uint8, 1),
|
|
("LO1_locked", ctypes.c_uint8, 1),
|
|
("ADC_overload", ctypes.c_uint8, 1),
|
|
("unlevel", ctypes.c_uint8, 1),
|
|
("_unused", ctypes.c_uint8, 1),
|
|
("temp_source", ctypes.c_uint8),
|
|
("temp_LO1", ctypes.c_uint8),
|
|
("temp_MCU", ctypes.c_uint8),
|
|
]
|
|
|
|
|
|
class DeviceStatusVFF(ctypes.LittleEndianStructure):
|
|
"""Device status bit layout for VFF family."""
|
|
|
|
_pack_ = 1
|
|
_fields_ = [
|
|
("source_locked", ctypes.c_uint8, 1),
|
|
("LO_locked", ctypes.c_uint8, 1),
|
|
("ADC_overload", ctypes.c_uint8, 1),
|
|
("unlevel", ctypes.c_uint8, 1),
|
|
("_unused", ctypes.c_uint8, 4),
|
|
("temp_MCU", ctypes.c_uint8),
|
|
]
|
|
|
|
|
|
class DeviceStatusVFE(ctypes.LittleEndianStructure):
|
|
"""Device status bit layout for VFE family."""
|
|
|
|
_pack_ = 1
|
|
_fields_ = [
|
|
("source_locked", ctypes.c_uint8, 1),
|
|
("LO_locked", ctypes.c_uint8, 1),
|
|
("ADC_overload", ctypes.c_uint8, 1),
|
|
("unlevel", ctypes.c_uint8, 1),
|
|
("_unused", ctypes.c_uint8, 4),
|
|
("temp_MCU", ctypes.c_uint8),
|
|
("temp_eCal", ctypes.c_uint16),
|
|
("power_heater", ctypes.c_uint16),
|
|
]
|
|
|
|
|
|
class DeviceStatusVD0(ctypes.LittleEndianStructure):
|
|
"""Device status bit layout for VD0/VE0 families."""
|
|
|
|
_pack_ = 1
|
|
_fields_ = [
|
|
("extRefAvailable", ctypes.c_uint8, 1),
|
|
("extRefInUse", ctypes.c_uint8, 1),
|
|
("FPGA_configured", ctypes.c_uint8, 1),
|
|
("source_locked", ctypes.c_uint8, 1),
|
|
("LO_locked", ctypes.c_uint8, 1),
|
|
("ADC_overload", ctypes.c_uint8, 1),
|
|
("unlevel", ctypes.c_uint8, 1),
|
|
("_unused", ctypes.c_uint8, 1),
|
|
("temp_MCU", ctypes.c_uint8),
|
|
("supply_voltage", ctypes.c_uint16),
|
|
("supply_current", ctypes.c_uint16),
|
|
]
|
|
|
|
|
|
class DeviceStatusUnion(ctypes.Union):
|
|
"""6-byte device-status union shared across hardware families."""
|
|
|
|
_pack_ = 1
|
|
_fields_ = [
|
|
("V1", DeviceStatusV1),
|
|
("VFF", DeviceStatusVFF),
|
|
("VFE", DeviceStatusVFE),
|
|
("VD0", DeviceStatusVD0),
|
|
("raw", ctypes.c_uint8 * 6),
|
|
]
|
|
|
|
|
|
assert ctypes.sizeof(DeviceStatusUnion) == 6
|