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() }