Source code for semi_cr.core.lab.station.routing_v1.profiles
from semi_cr.core.lab.devices.multiplexer import Multiplexer
from semi_cr.core.lab.devices.tankinductor import TankInductor
from semi_cr.core.lab.station.context import StationContext
from semi_cr.core.lab.measurements.profiles.helpers import get_profile_section
from semi_cr.core.lab.station.routing_v1.rf.models import OPXIQReceiver, OPXRFSource
from semi_cr.core.lab.station.routing_v1.rf.opx import find_opx_input_for_pin, find_opx_output_for_pin
[docs]
def find_rf_source_for_method(
context: StationContext,
device: TankInductor | Multiplexer,
profile_name: str,
method_name: str,
subprofile_name: str | None = None,
) -> OPXRFSource:
profile_spec = get_profile_section(
device,
profile_name,
subprofile_name,
)
method_spec = profile_spec.methods[method_name]
role_pin_name = method_spec.roles["rf_source"]
device_pin_name = profile_spec.pins[role_pin_name].device_pin
route = find_opx_output_for_pin(
context,
device,
device_pin_name,
)
return route
[docs]
def find_iq_receiver_for_method(
context: StationContext,
device: TankInductor | Multiplexer,
profile_name: str,
method_name: str,
) -> OPXIQReceiver:
profile_spec = device.measurement_profiles[profile_name]
method_spec = profile_spec.methods[method_name]
role_pin_name = method_spec.roles["iq_receiver"]
device_pin_name = profile_spec.pins[role_pin_name].device_pin
route = find_opx_input_for_pin(
context,
device,
device_pin_name,
)
return route
[docs]
def find_iq_receivers_for_method(
context: StationContext,
device: Multiplexer,
profile_name: str,
method_name: str,
subprofile_name: str | None = None,
) -> dict[str, OPXIQReceiver]:
profile_spec = get_profile_section(
device,
profile_name,
subprofile_name,
)
method_spec = profile_spec.methods[method_name]
role_pin_names = method_spec.roles["iq_receivers"]
return {
channel_name: find_opx_input_for_pin(
context,
device,
profile_spec.pins[role_pin_name].device_pin,
)
for channel_name, role_pin_name in role_pin_names.items()
}