diff --git a/quam/components/channels.py b/quam/components/channels.py index af29ad08..31086ee5 100644 --- a/quam/components/channels.py +++ b/quam/components/channels.py @@ -11,6 +11,8 @@ LFAnalogInputPort, LFFEMAnalogInputPort, LFFEMAnalogOutputPort, + MWFEMAnalogInputPort, + MWFEMAnalogOutputPort, OPXPlusAnalogInputPort, OPXPlusAnalogOutputPort, OPXPlusDigitalOutputPort, @@ -1477,3 +1479,32 @@ class InIQOutSingleChannel(SingleChannel, InIQChannel): """ pass + + +@quam_dataclass +class MWChannel(QuamComponent): + opx_output: MWFEMAnalogOutputPort + upconverter: int = 1 + + def apply_to_config(self, config: Dict) -> None: + super().apply_to_config(config) + + element_cfg = config["elements"][self.name] + element_cfg["MWInput"] = tuple(self.opx_output.port) + element_cfg["upconverter"] = self.upconverter + + +@quam_dataclass +class InMWChannel(QuamComponent): + opx_input: MWFEMAnalogInputPort + + def apply_to_config(self, config: Dict) -> None: + super().apply_to_config(config) + + element_cfg = config["elements"][self.name] + element_cfg["MWOutput"] = tuple(self.opx_input.port) + + +@quam_dataclass +class InOutMWChannel(MWChannel, InMWChannel): + pass