# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: qm/pb/octave.proto
# plugin: python-betterproto
from dataclasses import dataclass
from typing import List

import betterproto


class OctaveRfInputPortName(betterproto.Enum):
    RF_IN1 = 0
    RF_IN2 = 1


class OctaveIfOutputPortName(betterproto.Enum):
    IF1 = 0
    IF2 = 1


class OctaveIfInputPortName(betterproto.Enum):
    I1 = 0
    Q1 = 1
    I2 = 2
    Q2 = 3
    I3 = 4
    Q3 = 5
    I4 = 6
    Q4 = 7
    I5 = 8
    Q5 = 9


class OctaveSynthesizerOutputName(betterproto.Enum):
    Synth1 = 0
    Synth2 = 1
    Synth3 = 2
    Synth4 = 3
    Synth5 = 4


class OctaveRfOutputPortName(betterproto.Enum):
    RF1 = 0
    RF2 = 1
    RF3 = 2
    RF4 = 3
    RF5 = 4


class OctaveDigitalOutputPortName(betterproto.Enum):
    DigOut1 = 0
    DigOut2 = 1


class OctaveDigitalInputPortName(betterproto.Enum):
    DigIn1 = 0
    DigIn2 = 1
    DigIn3 = 2
    DigIn4 = 3
    DigIn5 = 4


class OctaveLoSourceInput(betterproto.Enum):
    Internal = 0
    Off = -1
    Dmd1LO = 1
    Dmd2LO = 2
    LO1 = 10
    LO2 = 11
    LO3 = 12
    LO4 = 13
    LO5 = 14
    IF1_LO_I = 22
    """RF_IN1 = 20;    RF_IN2 = 21;"""

    IF1_LO_Q = 23
    IF2_LO_I = 24
    IF2_LO_Q = 25


@dataclass(eq=False, repr=False)
class Octave(betterproto.Message):
    pass


@dataclass(eq=False, repr=False)
class OctaveConfig(betterproto.Message):
    loopbacks: List["OctaveLoopback"] = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class OctaveLoopback(betterproto.Message):
    lo_source_input: "OctaveLoSourceInput" = betterproto.enum_field(1)
    lo_source_generator: "OctaveSynthesizerPort" = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class OctaveIfOutputPort(betterproto.Message):
    device_name: str = betterproto.string_field(1)
    port_name: "OctaveIfOutputPortName" = betterproto.enum_field(2)


@dataclass(eq=False, repr=False)
class OctaveIfInputPort(betterproto.Message):
    device_name: str = betterproto.string_field(1)
    port_name: "OctaveIfInputPortName" = betterproto.enum_field(2)


@dataclass(eq=False, repr=False)
class OctaveRfInputPort(betterproto.Message):
    device_name: str = betterproto.string_field(1)
    port_name: "OctaveRfInputPortName" = betterproto.enum_field(2)


@dataclass(eq=False, repr=False)
class OctaveSynthesizerPort(betterproto.Message):
    device_name: str = betterproto.string_field(1)
    port_name: "OctaveSynthesizerOutputName" = betterproto.enum_field(2)


@dataclass(eq=False, repr=False)
class OctaveOutputPort(betterproto.Message):
    device_name: str = betterproto.string_field(1)
    port_name: "OctaveRfOutputPortName" = betterproto.enum_field(2)


@dataclass(eq=False, repr=False)
class OctaveDigitalOutputPort(betterproto.Message):
    device_name: str = betterproto.string_field(1)
    port_name: "OctaveDigitalOutputPortName" = betterproto.enum_field(2)


@dataclass(eq=False, repr=False)
class OctaveDigitalInputPort(betterproto.Message):
    device_name: str = betterproto.string_field(1)
    port_name: "OctaveDigitalInputPortName" = betterproto.enum_field(2)
