from enum import IntEnum, IntFlag
# region L23 enums
[docs]
class ReservedStatus(IntEnum):
"""Test resource reservation status"""
RELEASED = 0
"""Test resource is released."""
RESERVED_BY_YOU = 1
"""Test resource is reserved by you."""
RESERVED_BY_OTHER = 2
"""Test resource is reserved by another user."""
[docs]
class ReservedAction(IntEnum):
"""Reservation actions."""
RELEASE = 0
"""Release the test resource."""
RESERVE = 1
"""Reserve the test resource."""
RELINQUISH = 2
"""Force release other's ownership of the test resource."""
[docs]
class ChassisShutdownAction(IntEnum):
"""Chassis shutdown actions."""
RESTART = 1
"""Restart after shutdown."""
POWER_OFF = 2
"""Keep power-off after shutdown."""
[docs]
class OnOff(IntEnum):
"""On or Off."""
OFF = 0
"""Off"""
ON = 1
"""On"""
[docs]
class RESTControlAction(IntEnum):
"""Controls of Valkyrie REST server."""
START = 0
"""Start the REST server on the chassis."""
STOP = 1
"""Stop the REST server on the chassis."""
RESTART = 2
"""Restart the REST server on the chassis."""
[docs]
class ServiceStatus(IntEnum):
"""Service status."""
SERVICE_OFF = 0
"""Service is off."""
SERVICE_ON = 1
"""Service is on."""
[docs]
class ChassisSessionType(IntEnum):
"""The type of the session between the client and the chassis."""
MANAGER = 1
"""Connection on port 22606 running binary command (used by ValkyrieManager & VulcanManager)."""
SCRIPT = 2
"""Connection on port 22611, running CLI command."""
[docs]
class TimingSource(IntEnum):
"""Module's time sync mode."""
CHASSIS = 0
"""Module syncs to chassis's clock."""
EXTERNAL = 1
"""Module syncs to an external clock."""
MODULE = 2
"""Module syncs to its own clock."""
[docs]
class SMAInputFunction(IntEnum):
"""SMA input function"""
NOT_USED = 0
"""SMA input not used"""
TX2MHZ = 1
"""TX Clock Ref. 2.048 MHz"""
TX10MHZ = 2
"""TX Clock Ref. 10.0 MHz"""
[docs]
class SMAOutputFunction(IntEnum):
"""SMA output function"""
DISABLED = 0
"""Disabled"""
PASSTHROUGH = 1
"""Pass-through"""
P0SOF = 2
"""Port 0 Start-of-Frame Pulse"""
P1SOF = 3
"""Port 1 Start-of-Frame Pulse"""
REF2MHZ = 4
"""TX Clock (nom. 2.048 MHz)"""
REF10MHZ = 5
"""TX Clock (nom. 10.0 MHz)"""
REF125MHZ = 6
"""TX Clock (nom. 125 MHz)"""
REF156MHZ = 7
"""TX Clock (nom. 156.25 MHz)"""
P0RXCLK = 8
"""Port 0 RX Clock (nom. 10.0 MHz)"""
P1RXCLK = 9
"""Port 1 RX Clock (nom. 10.0 MHz)"""
P0RXCLK2MHZ = 10
"""Port 0 RX Clock (nom. 2.048 MHz)"""
P1RXCLK2MHZ = 11
"""Port 1 RX Clock (nom. 2.048 MHz)"""
TS_PPS = 12
"""Timing Source (Pulse-Per-Second)"""
[docs]
class SMAStatus(IntEnum):
"""SMA status"""
OK = 0
"""Status OK"""
NO_VALID_SIGNAL = 1
"""No valid signal"""
[docs]
class HasDemo(IntEnum):
"""Demo or not"""
NON_DEMO = 0
"""Not a demo unit"""
DEMO = 1
"""Demo unit"""
[docs]
class IsValid(IntEnum):
"""Whether it is valid"""
INVALID = 0
"""Invalid"""
VALID = 1
"""Valid"""
[docs]
class IsPermanent(IntEnum):
"""Whether it is permanent"""
NON_PERMANENT = 0
"""Not permanent"""
PERMANENT = 1
"""Permanent"""
[docs]
class YesNo(IntEnum):
NO = 0
"""No"""
YES = 1
"""Yes"""
[docs]
class UpdateState(IntEnum):
"""License update state"""
NONE = 0
"""None"""
UPDATING = 1
"""Updating"""
UPDATE_SUCCESS = 2
"""Update successful"""
UPDATE_FAIL = 3
"""Update failed"""
[docs]
class IsOnline(IntEnum):
"""Chassis online or not"""
OFFLINE = 0
"""Chassis offline"""
ONLINE = 1
"""Chassis online"""
[docs]
class PortSpeedMode(IntEnum):
"""Port speed mode"""
AUTO = 0
"""Auto negotiate with peer"""
F10M = 1
"""Forced to 10 Mbit/s"""
F100M = 2
"""Forced to 100 Mbit/s"""
F1G = 3
"""Forced to 1 Gbit/s"""
F10G = 4
"""Forced to 10 Gbit/s"""
F40G = 5
"""Forced to 40 Gbit/s"""
F100G = 6
"""Forced to 100 Gbit/s"""
F10MHDX = 7
"""Forced to 10 Mbit/s half-duplex"""
F100MHDX = 8
"""Forced to 100 Mbit/s half-duplex"""
F10M100M = 9
"""Auto negotiate to 10/100 Mbit/s"""
F100M1G = 10
"""Auto negotiate to 100 Mbit/s or 1 Gbit/s"""
F100M1G10G = 11
"""Auto negotiate to 100 Mbit/s or 1 Gbit/s or 10 Gbit/s"""
F2500M = 12
"""Forced to 2500 Mbit/s"""
F5G = 13
"""Forced to 5 Gbit/s"""
F100M1G2500M = 14
"""Auto negotiate to 100 Mbit/s or 1 Gbit/s or 2500 Mbit/s"""
F25G = 15
"""Forced to 25 Gbit/s"""
F50G = 16
"""Forced to 50 Gbit/s"""
F200G = 17
"""Forced to 200 Gbit/s"""
F400G = 18
"""Forced to 400 Gbit/s"""
F800G = 19
"""Forced to 800 Gbit/s"""
F1600G = 20
"""Forced to 1600 Gbit/s"""
UNKNOWN = 255
"""Speed mode unknown"""
[docs]
class SyncStatus(IntEnum):
"""Port sync status"""
NO_SYNC = 0
"""Not sync"""
IN_SYNC = 1
"""In sync with peer"""
[docs]
class LoopbackMode(IntEnum):
"""Port loopback mode"""
NONE = 0
"""Off"""
L1RX2TX = 1
"""L1 RX-to-TX"""
L2RX2TX = 2
"""L2 RX-to-TX"""
L3RX2TX = 3
"""L3 RX-to-TX"""
TXON2RX = 4
"""TX(on)-to-RX"""
TXOFF2RX = 5
"""TX(off)-to-RX"""
PORT2PORT = 6
"""Port-to-Port"""
[docs]
class TrafficOnOff(IntEnum):
"""Traffic status"""
OFF = 0
"""Traffic off"""
ON = 1
"""Traffic on"""
PREPARING = 2
"""Traffic preparing"""
[docs]
class StartOrStop(IntEnum):
STOP = 0
"""Stop the action"""
START = 1
"""Start the action"""
[docs]
class LatencyMode(IntEnum):
"""Latency measurement mode"""
LAST2LAST = 0
"""Last-to-Last"""
FIRST2LAST = 1
"""First-to-Last"""
LAST2FIRST = 2
"""Last-to-First"""
FIRST2FIRST = 3
"""First-to-First"""
[docs]
class SourceType(IntEnum):
TX_IFG = 0
"""TX IFG"""
TX_LEN = 1
"""TX Length"""
RX_IFG = 2
"""RX IFG"""
RX_LEN = 3
"""RX Length"""
RX_LATENCY = 4
"""RX Latency"""
RX_JITTER = 5
"""RX Jitter"""
[docs]
class PacketDetailSelection(IntEnum):
ALL = 0
"""All"""
TPLD = 1
"""Based on Test Payload ID"""
FILTER = 2
"""Based on filter"""
[docs]
class OnOffWithSuppress(IntEnum):
"""Stream status"""
OFF = 0
"""Off"""
ON = 1
"""On"""
SUPPRESS = 2
"""Suppressed"""
[docs]
class ProtocolOption(IntEnum):
"""Protocol header options"""
ETHERNET = 1
"""Ethernet II"""
VLAN = 2
"""VLAN"""
ARP = 3
"""Address Resolution Protocol"""
IP = 4
"""IPv4"""
IPV6 = 5
"""IPv6"""
UDP = 6
"""User Datagram Protocol (w/o checksum)"""
TCP = 7
"""Transmission Control Protocol (w/o checksum)"""
LLC = 8
"""Logic Link Control"""
SNAP = 9
"""Subnetwork Access Protocol"""
GTP = 10
"""GPRS Tunnelling Protocol"""
ICMP = 11
"""Internet Control Message Protocol"""
RTP = 12
"""Real-time Transport Protocol"""
RTCP = 13
"""RTP Control Protocol"""
STP = 14
"""Spanning Tree Protocol"""
SCTP = 15
"""Stream Control Transmission Protocol"""
MACCTRL = 16
"""MAC Control"""
MPLS = 17
"""Multiprotocol Label Switching"""
PBBTAG = 18
"""Provider Backbone Bridge tag"""
FCOE = 19
"""Fibre Channel over Ethernet"""
FC = 20
"""Fibre Channel"""
FCOETAIL = 21
"""Fibre Channel over Ethernet (tail)"""
IGMPV3L0 = 22
"""IGMPv3 Membership Query L=0"""
IGMPV3L1 = 23
"""IGMPv3 Membership Query L=1"""
UDPCHECK = 24
"""User Datagram Protocol (w/ checksum)"""
IGMPV2 = 25
"""Internet Group Management Protocol v2"""
MPLS_TP_OAM = 26
"""MPLS-TP, OAM Header"""
GRE_NOCHECK = 27
"""Generic Routing Encapsulation (w/o checksum)"""
GRE_CHECK = 28
"""Generic Routing Encapsulation (w/ checksum)"""
TCPCHECK = 29
"""Transmission Control Protocol (w/ checksum)"""
GTPV1L0 = 30
"""GTPv1 (no options), GPRS Tunneling Protocol v1"""
GTPV1L1 = 31
"""GTPv1 (w/ options), GPRS Tunneling Protocol v1"""
GTPV2L0 = 32
"""GTPv2 (no options), GPRS Tunneling Protocol v2"""
GTPV2L1 = 33
"""GTPv2 (w/ options), GPRS Tunneling Protocol v2"""
IGMPV1 = 34
"""Internet Group Management Protocol v1"""
PWETHCTRL = 35
"""PW Ethernet Control Word"""
VXLAN = 36
"""Virtual eXtensible LAN"""
ETHERNET_8023 = 37
"""Ethernet 802.3"""
NVGRE = 38
"""Generic Routing Encapsulation (Network Virtualization)"""
DHCPV4 = 39
"""Dynamic Host Configuration Protocol (IPv4)"""
GENEVE = 40
"""Generic Network Virtualization Encapsulation"""
XENA_TPLD = 41
XENA_TPLD_PI = 42
XENA_MICROTPLD = 43
ETHERNET_FCS = 44
MACCTRLPFC = 45
"""MAC Control for PFC"""
ECPRI = 46
"""Enhanced Common Public Radio Interface"""
ROE = 47
"""Radio over Ethernet"""
ETHERTYPE = 48
"""EtherType"""
# Generate RAW form 1...64 bytes
# _ignore_ = "ProtocolOption i"
# ProtocolOption = vars()
# for i in range(1, 65):
# ProtocolOption["RAW_%d" % i] = 256 - i # type: ignore
RAW_1 = 255
RAW_2 = 254
RAW_3 = 253
RAW_4 = 252
RAW_5 = 251
RAW_6 = 250
RAW_7 = 249
RAW_8 = 248
RAW_9 = 247
RAW_10 = 246
RAW_11 = 245
RAW_12 = 244
RAW_13 = 243
RAW_14 = 242
RAW_15 = 241
RAW_16 = 240
RAW_17 = 239
RAW_18 = 238
RAW_19 = 237
RAW_20 = 236
RAW_21 = 235
RAW_22 = 234
RAW_23 = 233
RAW_24 = 232
RAW_25 = 231
RAW_26 = 230
RAW_27 = 229
RAW_28 = 228
RAW_29 = 227
RAW_30 = 226
RAW_31 = 225
RAW_32 = 224
RAW_33 = 223
RAW_34 = 222
RAW_35 = 221
RAW_36 = 220
RAW_37 = 219
RAW_38 = 218
RAW_39 = 217
RAW_40 = 216
RAW_41 = 215
RAW_42 = 214
RAW_43 = 213
RAW_44 = 212
RAW_45 = 211
RAW_46 = 210
RAW_47 = 209
RAW_48 = 208
RAW_49 = 207
RAW_50 = 206
RAW_51 = 205
RAW_52 = 204
RAW_53 = 203
RAW_54 = 202
RAW_55 = 201
RAW_56 = 200
RAW_57 = 199
RAW_58 = 198
RAW_59 = 197
RAW_60 = 196
RAW_61 = 195
RAW_62 = 194
RAW_63 = 193
RAW_64 = 192
RAW_65 = 191
RAW_66 = 190
RAW_67 = 189
RAW_68 = 188
RAW_69 = 187
RAW_70 = 186
RAW_71 = 185
RAW_72 = 184
RAW_73 = 183
RAW_74 = 182
RAW_75 = 181
RAW_76 = 180
RAW_77 = 179
RAW_78 = 178
RAW_79 = 177
RAW_80 = 176
RAW_81 = 175
RAW_82 = 174
RAW_83 = 173
RAW_84 = 172
RAW_85 = 171
RAW_86 = 170
RAW_87 = 169
RAW_88 = 168
RAW_89 = 167
RAW_90 = 166
RAW_91 = 165
RAW_92 = 164
RAW_93 = 163
RAW_94 = 162
RAW_95 = 161
RAW_96 = 160
RAW_97 = 159
RAW_98 = 158
RAW_99 = 157
RAW_100 = 156
RAW_101 = 155
RAW_102 = 154
RAW_103 = 153
RAW_104 = 152
RAW_105 = 151
RAW_106 = 150
RAW_107 = 149
RAW_108 = 148
RAW_109 = 147
RAW_110 = 146
RAW_111 = 145
RAW_112 = 144
RAW_113 = 143
RAW_114 = 142
RAW_115 = 141
RAW_116 = 140
RAW_117 = 139
RAW_118 = 138
RAW_119 = 137
RAW_120 = 136
RAW_121 = 135
RAW_122 = 134
RAW_123 = 133
RAW_124 = 132
RAW_125 = 131
RAW_126 = 130
RAW_127 = 129
RAW_128 = 128
RAW_129 = 127
RAW_130 = 126
RAW_131 = 125
RAW_132 = 124
RAW_133 = 123
RAW_134 = 122
RAW_135 = 121
RAW_136 = 120
RAW_137 = 119
RAW_138 = 118
RAW_139 = 117
RAW_140 = 116
RAW_141 = 115
RAW_142 = 114
RAW_143 = 113
RAW_144 = 112
RAW_145 = 111
RAW_146 = 110
RAW_147 = 109
RAW_148 = 108
RAW_149 = 107
RAW_150 = 106
[docs]
class ModifierAction(IntEnum):
"""Modifier action mode"""
INC = 0
"""Incrementing"""
DEC = 1
"""Decrementing"""
RANDOM = 2
"""Random"""
[docs]
class LengthType(IntEnum):
"""Packet length type"""
FIXED = 0
"""Fixed"""
INCREMENTING = 1
"""Incrementing"""
BUTTERFLY = 2
"""Butterfly"""
RANDOM = 3
"""Random"""
MIX = 4
"""Mix"""
[docs]
class PayloadType(IntEnum):
"""Packet payload type"""
PATTERN = 0
"""Pattern"""
INC8 = INCREMENTING = 1
"""
.. versionchanged:: 1.1
Incrementing with 0xFF (8-bit mode)
"""
PRBS = 2
"""PRBS"""
RANDOM = 3
"""Random"""
DEC8 = DECREMENTING = 4
"""
.. versionchanged:: 1.1
Decrementing with 0xFF (8-bit mode)
"""
INC16 = 5
"""
.. versionadded:: 1.1
Incrementing with 0xFFFF (16-bit mode)
"""
DEC16 = 6
"""
.. versionadded:: 1.1
Decrementing with 0xFFFF (16-bit mode)
"""
[docs]
class MDIXMode(IntEnum):
"""MDIX mode"""
AUTO = 0
"""Auto"""
MDI = 1
"""MDI"""
MDIX = 2
"""MDIX"""
[docs]
class LengthCheckType(IntEnum):
AT_MOST = 0
"""At Most"""
AT_LEAST = 1
"""At Least"""
[docs]
class StartTrigger(IntEnum):
"""Capture start trigger"""
ON = 0
"""From Traffic On"""
FCSERR = 1
"""From FCS Error"""
FILTER = 2
"""From Filter"""
PLDERR = 3
"""From Payload Error"""
[docs]
class StopTrigger(IntEnum):
"""Capture stop trigger"""
FULL = 0
"""Until Capture Buffer Full"""
FCSERR = 1
"""Until Receiving FCS Error"""
FILTER = 2
"""Until Filter Matched"""
PLDERR = 3
"""Until Receiving Payload Error"""
USERSTOP = 4
"""Until User Stops"""
[docs]
class PacketType(IntEnum):
"""Type of Packet to Keep in Capture Buffer"""
ALL = 0
"""All Packets"""
FCSERR = 1
"""With FCS Errors"""
NOTPLD = 2
"""Without Test Payload"""
TPLD = 3
"""With Test Payload"""
FILTER = 4
"""Filtered Packets"""
PLDERR = 5
"""With Payload Errors"""
[docs]
class InjectErrorType(IntEnum):
"""Lane Injection Error Type"""
HEADERERROR = 1
"""Header Error"""
ALIGNERROR = 2
"""Alignment Error"""
BIP8ERROR = 3
"""BIP8 Error"""
[docs]
class AlignLockStatus(IntEnum):
"""Physical Lane Alignment Lock Status"""
ALIGNOFF = 0
"""Alignment Lock Off"""
ALIGNON = 1
"""Alignment Lock On"""
ALIGNOFFUNSTABLE = 2
"""Alignment Lock Off and Unstable"""
ALIGNONUNSTABLE = 3
"""Alignment Lock On but Unstable"""
[docs]
class PRBSLockStatus(IntEnum):
"""Physical Lane PRBS Lock Status"""
PRBSOFF = 0
"""PRBS Lock Off"""
PRBSON = 1
"""PRBS Lock On"""
PRBSOFFUNSTABLE = 2
"""PRBS Lock Off and Unstable"""
PRBSONUNSTABLE = 3
"""PRBS Lock On but Unstable"""
[docs]
class MulticastOperation(IntEnum):
"""IGMPv2 Request Type"""
OFF = 0
"""Off"""
ON = 1
"""On"""
JOIN = 2
"""Join"""
LEAVE = 3
"""Leave"""
[docs]
class MulticastExtOperation(IntEnum):
"""IGMPv2/v3Request Type"""
OFF = 0
"""Off"""
ON = 1
"""On"""
JOIN = 2
"""Join"""
LEAVE = 3
"""Leave"""
INCLUDE = 4
"""Include"""
EXCLUDE = 5
"""EXclude"""
LEAVE_TO_ALL = 6
"""Leave To All"""
GENERAL_QUERY = 7
"""General Query"""
GROUP_QUERY = 8
"""Group Query"""
[docs]
class IGMPVersion(IntEnum):
"""IGMP Version"""
IGMPV2 = 0
"""IGMP Version 2"""
IGMPV3 = 1
"""IGMP Version 3"""
[docs]
class TXMode(IntEnum):
"""Port TX Mode"""
NORMAL = 0
"""Normal"""
STRICTUNIFORM = 1
"""Strict Uniform"""
SEQUENTIAL = 2
"""Sequential"""
BURST = 3
"""Burst"""
[docs]
class PayloadMode(IntEnum):
"""Payload Mode"""
NORMAL = 0
"""Normal"""
EXTPL = 1
"""Extend Payload"""
CDF = 2
"""Custom Data Field"""
[docs]
class BRRMode(IntEnum):
"""BRR Mode"""
SLAVE = 0
"""Slave Mode"""
MASTER = 1
"""Master Mode"""
[docs]
class TXClockSource(IntEnum):
"""TX Clock Source"""
MODULELOCALCLOCK = 0
"""Module Local Clock"""
SMAINPUT = 1
"""SMA Input"""
P0RXCLK = 2
"""Port 0 RX Clock"""
P1RXCLK = 3
"""Port 1 RX Clock"""
P2RXCLK = 4
"""Port 2 RX Clock"""
P3RXCLK = 5
"""Port 3 RX Clock"""
P4RXCLK = 6
"""Port 4 RX Clock"""
P5RXCLK = 7
"""Port 5 RX Clock"""
P6RXCLK = 8
"""Port 6 RX Clock"""
P7RXCLK = 9
"""Port 7 RX Clock"""
[docs]
class TXClockStatus(IntEnum):
"""TX Clock Status"""
OK = 0
"""Clock OK"""
NOVALIDTXCLK = 1
"""No Valid TX Clock"""
[docs]
class LoopBandwidth(IntEnum):
"""Loop Bandwidth"""
BW103HZ = 1
"""Loop Bandwidth = 103 Hz"""
BW207HZ = 2
"""Loop Bandwidth = 207 Hz"""
BW416HZ = 3
"""Loop Bandwidth = 416 Hz"""
BW1683HZ = 4
"""Loop Bandwidth = 1683 Hz"""
BW7019HZ = 5
"""Loop Bandwidth = 7019 Hz"""
[docs]
class TXHState(IntEnum):
"""Recent Change in EEE State on TX"""
TXH_NA = 0
"""Leaving or Going Into"""
TXH_X = 1
"""No Activity"""
[docs]
class RXHState(IntEnum):
"""Recent Change in EEE State on RX"""
RXH_NA = 0
"""Leaving or Going Into"""
RXH_X = 1
"""No Activity"""
[docs]
class TXCState(IntEnum):
"""TX EEE State"""
TXC_ACTIVE = 0
"""Active"""
TXC_LPI = 1
"""Low Power"""
[docs]
class RXCState(IntEnum):
"""RX EEE State"""
RXC_ACTIVE = 0
"""Active"""
RXC_LPI = 1
"""Low Power"""
[docs]
class LinkState(IntEnum):
"""Low Power Mode Link State"""
LINK_DOWN = 0
"""Link Down"""
LINK_UP = 1
"""Link Up"""
[docs]
class FaultSignaling(IntEnum):
"""Fault Signaling Behavior"""
NORMAL = 0
"""Normal"""
FORCE_LOCAL = 1
"""Forced to Local"""
FORCE_REMOTE = 2
"""Forced to Remote"""
DISABLED = 3
"""Disabled"""
[docs]
class LocalFaultStatus(IntEnum):
"""Local Fault Status"""
OK = 0
"""OK"""
LOCAL_FAULT = 1
"""Local Fault"""
[docs]
class RemoteFaultStatus(IntEnum):
"""Remote Fault Status"""
OK = 0
"""OK"""
REMOTE_FAULT = 1
"""Remote Fault"""
[docs]
class TPLDMode(IntEnum):
"""Test Payload Mode"""
NORMAL = 0
"""Normal"""
MICRO = 1
"""Micro"""
[docs]
class SerdesStatus(IntEnum):
"""Serdes Status"""
STOPPED = 0
"""Stopped"""
STARTED = 1
"""Started"""
INITIALIZING = 2
"""Initializing"""
PLOTTING = 3
"""Plotting"""
[docs]
class FECMode(IntEnum):
"""FEX Mode"""
OFF = 0
"""Off"""
ON = 1
"""On"""
RS_FEC = 2
"""RS FEC"""
FC_FEC = 3
"""Firecode FEC"""
RS_FEC_KR = 4
"""RS FEC KR"""
RS_FEC_KP = 5
"""RS FEC KP"""
RS_FEC_INT = 6
"""RS FEC Int"""
[docs]
class PRBSInsertedType(IntEnum):
"""PRBS Type"""
CAUI_VIRTUAL = 0
"""CAUI Virtual"""
PHY_LINE = 1
"""PHY Line"""
PHY_HOST = 2
"""PHY Host"""
TCVR = 3
"""Transceiver"""
[docs]
class PRBSPolynomial(IntEnum):
"""PRBS Polynomial"""
PRBS7 = 0
"""PRBS-7"""
PRBS9 = 1
"""PRBS-9"""
PRBS11 = 2
"""PRBS-11"""
PRBS15 = 3
"""PRBS-15"""
PRBS23 = 4
"""PRBS-23"""
PRBS31 = 5
"""PRBS-31"""
PRBS58 = 6
"""PRBS-58"""
PRBS49 = 7
"""PRBS-49"""
PRBS10 = 8
"""PRBS-10"""
PRBS20 = 9
"""PRBS-20"""
PRBS13 = 10
"""PRBS-13"""
SSPRQ = 24
"""SSPRQ"""
SQUARE_WAVE = 25
"""Square Wave"""
[docs]
class PRBSInvertState(IntEnum):
"""PRBS Invert State"""
NON_INVERTED = 0
"""Non-inverted"""
INVERTED = 1
"""Inverted"""
[docs]
class PRBSStatisticsMode(IntEnum):
"""PRBS Statistics Mode"""
ACCUMULATIVE = 0
"""Accumulative"""
PERSECOND = 1
"""Per Second"""
[docs]
class PauseMode(IntEnum):
"""Pause Mode"""
NO_PAUSE = 0
"""No Pause"""
SYM_PAUSE = 1
"""Symmetric Pause"""
ASYM_PAUSE = 2
"""Asymmetric Pause"""
[docs]
class PFCMode(IntEnum):
"""The PFC CoS value of the stream"""
ZERO = 0
"""the PFC CoS value = 0"""
ONE = 1
"""the PFC CoS value = 1"""
TWO = 2
"""the PFC CoS value = 2"""
THREE = 3
"""the PFC CoS value = 3"""
FOUR = 4
"""the PFC CoS value = 4"""
FIVE = 5
"""the PFC CoS value = 5"""
SIX = 6
"""the PFC CoS value = 6"""
SEVEN = 7
"""the PFC CoS value = 7"""
VLAN_PCP = 128
"""PFC CoS value is automatically using the outer VLAN PCP value of the stream. If the VLAN field is missing, the stream won't have a PFC CoS."""
OFF = 129
"""Remove PFC CoS value of the stream."""
[docs]
class PRBSOnOff(IntEnum):
"""PRBS Status"""
PRBSOFF = 0
"""PRBS Off"""
PRBSON = 1
"""PRBS On"""
[docs]
class ErrorOnOff(IntEnum):
"""PRBS Error Injection Status"""
ERRORSOFF = 0
"""PRBS Error Injection Off"""
ERRORSON = 1
"""PRBS Error Injection On"""
[docs]
class PRBSPattern(IntEnum):
"""PRBS Pattern"""
PRBS7 = 0
"""PRBS-7"""
PRBS9 = 1
"""PRBS-9"""
PRBS11 = 2
"""PRBS-11"""
PRBS15 = 3
"""PRBS-15"""
PRBS23 = 4
"""PRBS-23"""
PRBS31 = 5
"""PRBS-31"""
PRBS58 = 6
"""PRBS-58"""
PRBS49 = 7
"""PRBS-49"""
PRBS10 = 8
"""PRBS-10"""
PRBS20 = 9
"""PRBS-20"""
PRBS13 = 10
"""PRBS-13"""
[docs]
class PHYSignalStatus(IntEnum):
"""PHY Signal Status"""
NO_SIGNAL = 0
"""No Signal"""
NO_CDRLOCK = 2
"""No CDR Lock"""
LOCKED = 3
"""Locked"""
[docs]
class OnOffDefault(IntEnum):
"""On Off Default Status"""
OFF = 0
"""Off"""
ON = 1
"""On"""
DEFAULT = 2
"""Default"""
[docs]
class TimeKeeperLicenseFileState(IntEnum):
"""TimeKeeper License File State"""
NA = 0
"""Not Available"""
INV = 1
"""Invalid"""
VALID = 2
"""Valid"""
[docs]
class TimeKeeperLicenseType(IntEnum):
"""TimeKeeper License Type"""
UNDEF = 0
"""Undefined"""
CLIENT = 1
"""TimeKeeper Client"""
SERVER = 2
"""TimeKeeper Server"""
[docs]
class TimeKeeperLicenseError(IntEnum):
"""TimeKeeper License Error"""
NO_LICENSE_ERROR = 0
"""No License Error"""
INVALID_SERIALNO = 1
"""Invalid Serial Number"""
INVALID_CHASSISTYPE = 2
"""Invalid Chassis Type"""
[docs]
class SystemUpdateStatus(IntEnum):
"""System Update Status"""
OK = 0
"""Update OK"""
FAILED_SCRIPT = 1
"""Script Failed"""
FAILED_PREP = 10
"""Preparation Failed"""
FAILED_FILENAME = 11
"""Filename Failed"""
FAILED_DECRYPT = 12
"""Decryption Failed"""
FAILED_UNPACK = 13
"""Unpacking Failed"""
FAILED_VERIFY = 14
"""Verification Failed"""
FAILED_MOVE = 15
"""Moving Failed"""
[docs]
class TimeKeeperServiceStatus(IntEnum):
"""TimeKeeper Service Status"""
STOPPED = 0
"""Service Stopped"""
STARTED = 1
"""Service Started"""
NA = 2
"""Not Available"""
[docs]
class TimeKeeperServiceAction(IntEnum):
"""TimeKeeper Service Action"""
STOP = 0
"""Stop"""
START = 1
"""Start"""
RESTART = 2
"""Restart"""
[docs]
class CustomDefaultCommand(IntEnum):
"""Custom Default Command"""
SET = 0
"""Set Custom Default"""
CLEAR = 1
"""Clear Custom Default"""
[docs]
class CustomDefaultScope(IntEnum):
"""Custom Default Scope"""
ALL = 0
"""All"""
INSTANCE = 1
"""Instance"""
[docs]
class TrafficError(IntEnum):
"""Traffic Error"""
NOT_PREPARED = 0
"""Not Prepared"""
RATE_LENGTH_ERROR = 1
"""Rate Length Error"""
PREPARED_OK = 2
"""Prepared OK"""
[docs]
class TrafficEngine(IntEnum):
"""Traffic Engine"""
TGA = 1
"""Normal TGA"""
MICRO_TGA = 2
"""Micro TGA"""
[docs]
class LinkTrainFrameLock(IntEnum):
"""L1 Link Training Frame Lock Status"""
LOST = 0
"""No Frame Lock detected"""
LOCKED = 1
"""Frame Lock detected"""
[docs]
class PPMSweepMode(IntEnum):
"""Module clock PPM Sweep Modes"""
NONE = 0
"""Off"""
TRIANGLE = 1
"""Triangle sweeping"""
[docs]
class PPMSweepStatus(IntEnum):
"""Module clock PPM Sweep Status"""
OFF = 0
"""Off"""
SWEEPING = 1
"""The module is sweeping"""
[docs]
class ReconciliationSublayerSupport(IntEnum):
"""Reconciliation Sublayer Support"""
NO_SUPPORT = 0
"""Not Supported"""
FAULT_SIGNALING = 1
"""Supported, which means P_FAULTSTATUS and P_FAULTSIGNALLING are supported by the port."""
[docs]
class StreamOption(IntEnum):
"""Stream Options"""
INCPLDFROM0 = 0
"""This flag affects the INC8/DEC8/INC16/DEC16 payload types (refer to the PS_PAYLOAD command): With the flag set, the first payload byte/word after the header will be 0 (INC8/INC16) or -1 (DEC8/DEC16). With the flag unset, the default is used: The first payload byte/word of the payload will be equal to <length of header> (INC8/INC16), or -<length of header> - 1 (DEC8/DEC16)."""
# endregion
# region L47 enums
[docs]
class Role(IntEnum):
"""L47 port role"""
CLIENT = 0
"""Client"""
SERVER = 1
"""Server"""
[docs]
class Timescale(IntEnum):
"""Time scale"""
MSECS = 0
"""Milliseconds"""
SECONDS = 1
"""Seconds"""
MINUTES = 2
"""Minutes"""
HOURS = 3
"""Hours"""
[docs]
class MSSType(IntEnum):
"""TCP Maximum Segment Type"""
FIXED = 0
"""Fixed"""
INCREMENT = 1
"""Incrementing"""
RANDOM = 2
"""Pseudorandom"""
[docs]
class RTOType(IntEnum):
"""TCP RTO Type"""
STATIC = 0
"""Static RTO"""
DYNAMIC = 1
"""Dynamic RTO"""
[docs]
class CongestionType(IntEnum):
"""TCP Congestion Control Algorithm"""
NONE = 0
"""No TCP Congestion Control"""
RENO = 1
"""RENO"""
NEW_RENO = 2
"""New RENO"""
[docs]
class IsEnabled(IntEnum):
DISABLE = 0
ENABLE = 1
[docs]
class AlgorithmMethod(IntEnum):
"""Algorithm to calculate the TCP initial congestion window (ICWND)"""
RFC5681 = 0
"""RFC 5681"""
RFC2581 = 1
"""RFC 2581"""
FIXED_FACTOR = 2
"""Fixed"""
[docs]
class AutoOrManual(IntEnum):
AUTOMATIC = 0
MANUAL = 1
[docs]
class EmbedIP(IntEnum):
"""Should Embed IP in MAC"""
DONT_EMBED_IP = 0
"""Do not embed"""
EMBED_IP = 1
"""Embed IP in MAC"""
[docs]
class ApplicationLayerBehavior(IntEnum):
"""L47 Test Application Type"""
NONE = 0
"""TCP connections are created according to the client and server ranges, and ramped up/down as specified in the load profile. But no payload is transmitted."""
RAW = 1
"""Differs from ``NONE`` in that it transmits payload when the TCP connection is established."""
REPLAY = 2
"""PCAP replay."""
[docs]
class TrafficScenario(IntEnum):
"""Traffic direction scenario"""
DOWNLOAD = 0
"""Server transmits payload to client."""
UPLOAD = 1
"""Client transmits payload to server."""
BOTH = 2
"""Payload is transmitted in both directions."""
ECHO = 3
"""Client transmits payload to server, server echoes the payload back"""
[docs]
class PayloadGenerationMethod(IntEnum):
"""Payload generation method."""
FIXED = 0
"""Payload has a fixed value."""
INCREMENT = 1
"""Payload consist of incrementing bytes."""
RANDOM = 2
"""Payload consists of pseudo random bytes with a repeat cycle of 1 MB."""
LONGRANDOM = 3
"""Payload consists of pseudo random bytes with a repeat cycle of 4 GB."""
[docs]
class InfiniteOrFinite(IntEnum):
INFINITE = 0
FINITE = 1
[docs]
class WhoClose(IntEnum):
"""How to close TCP connection when all payload has been transmitted."""
NONE = 0
"""Keep the connection open after last byte is transmitted"""
CLIENT = 1
"""Client closes the connection after last byte is receiver/transmitted"""
SERVER = 2
"""Server closes the connection after last byte is transmitted"""
[docs]
class LifecycleMode(IntEnum):
"""Connection lifecycle mode"""
ONCE = 0
"""Connections are established during the ramp-up phase and not closed until the ramp-down phase of the load profile. That is, each configured connection only exists once."""
IMMORTAL = 1
"""Connections are established during the ramp-up phase of the load profile, and are closed after the configured lifetime (configured by P4G_RAW_CONN_LIFETIME).
As connections close, new connections are established, attempting to keep the concurrent number of established connections constant.
A new connection will have the same IP address as the connection it replaces, but will have a new TCP port number.
This will simulate that the user (defined by the client IP address) is living on, and creates new connections as old connections close.
"""
REINCARNATE = 2
"""Connections are established during the ramp-up phase of the load profile, and are closed after the configured lifetime (configured by P4G_RAW_CONN_LIFETIME).
As connections close, new connections are established, attempting to keep the concurrent number of established connections constant.
A new connection will have the same TCP port number as the connection it replaces, but will have a new IP address.
This will simulate that the user (defined by the client IP address) ceases to exist, and new users appear as old users die.
"""
[docs]
class L47IPVersion(IntEnum):
"""IP version of the Connection Group"""
IPV4 = 4
"""IPv4"""
IPV6 = 6
"""IPv6"""
[docs]
class L47ProtocolType(IntEnum):
"""L4 protocol of the Connection Group"""
TCP = 0
"""TCP"""
UDP = 1
"""UDP"""
[docs]
class L47TrafficState(IntEnum):
"""L47 traffic state"""
OFF = 0
"""Off"""
ON = 1
"""On"""
STOP = 2
"""Stop"""
PREPARE = 3
"""Prepare"""
PRERUN = 4
"""Prerun"""
[docs]
class L47PortState(IntEnum):
"""L47 port state"""
OFF = 0
"""Off"""
PREPARE = 1
"""Prepare"""
PREPARE_RDY = 2
"""Prepare Ready"""
PREPARE_FAIL = 3
"""Prepare Failed"""
PRERUN = 4
"""Prerun"""
PRERUN_RDY = 5
"""Prepare Ready"""
RUNNING = 6
"""Running"""
STOPPING = 7
"""Stopping"""
STOPPED = 8
"""Stopped"""
DHCP = 9
"""DHCP Running"""
[docs]
class L47PortSpeed(IntEnum):
"""L47 port speed mode"""
AUTO = 0
"""Auto"""
F100M = 1
"""100 Mbit/s"""
F1G = 2
"""1 Gbit/s"""
F2_5G = 3
"""2.5 Gbit/s"""
F5G = 4
"""5 Gbit/s"""
F10G = 5
"""10 Gbit/s"""
F25G = 6
"""25 Gbit/s"""
F40G = 7
"""40 Gbit/s"""
F50G = 8
"""50 Gbit/s"""
F100G = 9
"""100 Gbit/s"""
[docs]
class CaptureSize(IntEnum):
"""Capture size"""
FULL = 0
"""Capture whole packets"""
SMALL = 1
"""Capture truncated packets"""
[docs]
class ReplayParserState(IntEnum):
OFF = 0
PARSING = 1
[docs]
class IsPresent(IntEnum):
NOT_PRESENT = 0
PRESENT = 1
[docs]
class LicenseSpeed(IntEnum):
UNDEFINED = 0
F100M = 1
F1G = 2
F2_5G = 3
F5G = 4
F10G = 5
F25G = 6
F40G = 7
F50G = 8
F100G = 9
[docs]
class TLSVersion(IntEnum):
"""TLS protocol version"""
SSLV3 = 0
"""SSL v3"""
TLS10 = 1
"""TLS v1.0"""
TLS11 = 2
"""TLS v1.1"""
TLS12 = 3
"""TLS v1.2"""
[docs]
class ResourceAllocationMode(IntEnum):
SIMPLE = 0
ADVANCED = 1
[docs]
class ReplaySchedulingMode(IntEnum):
BANDWIDTH = 0
TIME = 1
[docs]
class ReplaySyncBasedOn(IntEnum):
PER_CONN = 0
PER_USER = 1
# endregion
# region Impairment enums
[docs]
class CorruptionType(IntEnum):
"""Impairment corruption type"""
OFF = 0
"""Off"""
ETH = 1
"""Ethernet"""
IP = 2
"""IP"""
UDP = 3
"""UDP"""
TCP = 4
"""TCP"""
BER = 5
"""Bit Error Rate"""
[docs]
class PolicerMode(IntEnum):
"""Policer mode"""
L1 = 0
"""Policer performed at Layer 1 level. I.e. including the preamble and min inter-packet gap."""
L2 = 1
"""Policer performed at Layer 2 level. I.e. excluding the preamble and min inter-packet gap"""
[docs]
class FilterUse(IntEnum):
"""Use of filter."""
OFF = 0
"""No filtering will be done"""
AND = 1
"""Filtering will be done"""
[docs]
class InfoAction(IntEnum):
"""Action of filter."""
EXCLUDE = 0
"""Matching packets are excluded from the flow"""
INCLUDE = 1
"""Matching packets are included from the flow"""
[docs]
class L2PlusPresent(IntEnum):
"""Presence of Layer-2+ protocols"""
NA = 0
"""No Layer 2+ protocols"""
VLAN1 = 1
"""One VLAN Tag is present"""
VLAN2 = 2
"""Two VLAN Tags are present"""
MPLS = 3
"""MPLS label is present"""
[docs]
class L3Present(IntEnum):
"""Presence of Layer-3 protocols"""
NA = 0
"""No Layer 3 protocols"""
IP4 = 1
"""IPv4 is present"""
IP6 = 2
"""IPv6 is present"""
[docs]
class FilterMode(IntEnum):
"""Impairment Filter Mode"""
BASIC = 0
"""Basic Mode"""
EXTENDED = 1
"""Extended Mode"""
[docs]
class ImpairmentLatencyMode(IntEnum):
"""Impairment Latency Mode"""
NORMAL = 0
"""Normal"""
EXTENDED = 1
"""Extended"""
[docs]
class ShadowWorkingSelection(IntEnum):
"""Shadow Working Selection"""
SHADOW = 0
"""Shadow"""
WORKING = 1
"""Working"""
[docs]
class FilterType(IntEnum):
"""Filter Type for Impairment"""
SHADOW = 0
"""Shadow Copy"""
WORKING = 1
"""Working Copy"""
[docs]
class FilterVlanType(IntEnum):
"""VLAN PCP Settings for VLAN Filter"""
INNER = 0
"""VLAN1 (0) (INNER VLAN Tag is specified for the filter – used also when only 1 VLAN), indicates single/inner VLAN-TPID=0x8100"""
OUTER = 1
"""VLAN2 (1) (OUTER VLAN Tag is specified for the filter), indicates outer VLAN-TPID=0x88A8"""
[docs]
class LatencyTypeCustomDist(IntEnum):
"""Latency Type for Custom Distribution"""
INTERPACKET_DISTRIBUTION = 0
"""Interpacket Distribution"""
LATENCY_DISTRIBUTION = 1
"""Latency Distribution"""
[docs]
class ImpairmentTypeIndex(IntEnum):
"""Impairment Type Index"""
DROP = 0
"""Drop"""
MISORDER = 1
"""Misorder"""
LATENCYJITTER = 2
"""Delay/Jitter"""
DUPLICATION = 3
"""Duplication"""
CORRUPTION = 4
"""Corruption"""
POLICER = 5
"""Policer"""
SHAPER = 6
"""Shaper"""
# endregion
# region TSN enums
[docs]
class TSNConfigProfile(IntEnum):
"""TSN PTP Configuration profile"""
AUTOMOTIVE = 0
"""Defaults suitable for automotive testing"""
IEEE1588V2 = 1
"""Defaults suitable for PTP testing"""
[docs]
class TSNPortRole(IntEnum):
"""TSN port role"""
GRANDMASTER = 0
"""Grandmaster role"""
SLAVE = 1
"""Slave role"""
[docs]
class TSNDeviationMode(IntEnum):
FIXED = 0
[docs]
class TSNTimeSource(IntEnum):
"""TSN time source"""
ATOMIC = 0x10
"""Atomic"""
GPS = 0x20
"""GPS"""
TERRESTRIAL = 0x30
"""Terrestrial"""
PTP = 0x40
"""PTP"""
NTP = 0x50
"""NTP"""
HAND_SET = 0x60
"""Handset"""
OTHER = 0x90
"""Other"""
INTERNAL_OSC = 0xA0
"""Internal oscillator"""
[docs]
class TSNHistogramSource(IntEnum):
"""Data source for TSN histogram"""
DRIFT = 0
"""Post-servo offset to Grandmaster"""
DRIFTPRE = 1
"""Pre-servo offset to Grandmaster"""
PDELAY = 2
"""PDelay data."""
NRR = 3
"""Neighbor Rate Ratio data."""
[docs]
class TSNStatisticsTypes(IntEnum):
"""TSN Statistics Types"""
ALL = 0
"""All."""
PACKETCOUNT = 1
"""Packet count."""
OFFSET = 2
"""Offset."""
PDELAY = 3
"""PDelay."""
SYNCRATE = 4
"""Sync rate."""
# endregion
# region ANLT enums
[docs]
class AutoNegMode(IntEnum):
"""Auto Neg Mode"""
ANEG_OFF = 0
"""Auto Neg Off"""
ANEG_ON = 1
"""Auto Neg On"""
[docs]
class AutoNegTecAbility(IntEnum):
"""Auto Neg Technical Abilities"""
DEFAULT_TECH_MODE = 0
"""Default Tech Mode"""
IEEE_10G_KR = 4
"""IEEE 10G KR"""
IEEE_40G_CR4 = 16
"""IEEE 40G CR4"""
IEEE_100G_KR4 = 128
"""IEEE 100G KR4"""
IEEE_100G_CR4 = 256
"""IEEE 100G CR4"""
IEEE_25GBASE_CRS_KRS = 512
"""IEEE 25GBASE CRS KRS"""
IEEE_25GBASE_CR_KR = 1024
"""IEEE 25GBASE CR KR"""
IEEE_50GBASE_CR_KR = 8192
"""IEEE 50GBASE CR KR"""
IEEE_100GBASE_CR2_KR2 = 16384
"""IEEE 100GBASE CR2 KR2"""
IEEE_200GBASE_CR4_KR4 = 32768
"""IEEE 200GBASE CR4 KR4"""
IEEE_100GBASE_KR1 = 65536
"""IEEE 100GBASE KR1"""
IEEE_200GBASE_KR2 = 131072
"""IEEE 200GBASE KR2"""
IEEE_400GBASE_KR4 = 262144
"""IEEE 400GBASE KR4"""
EC_25GBASE_KR1 = 16777216
"""EC 25GBASE KR1"""
EC_25GBASE_CR1 = 33554432
"""EC 25GBASE CR1"""
EC_50GBASE_KR2 = 67108864
"""EC 50GBASE KR2"""
EC_50GBASE_CR2 = 134217728
"""EC 50GBASE CR2"""
EC_400GBASE_KR8 = 268435456
"""EC 400GBASE KR8"""
EC_800GBASE_KR8 = 536870912
"""EC 800GBASE KR8"""
EC_50G_CR1_KR1 = 503
"""EC 50G CR1 KR1"""
BAM_50G_CR1_KR1 = 504
"""BAM 50G CR1 KR1"""
BAM_50G_CR2_KR2 = 505
"""BAM 50G CR2 KR2"""
BAM_100G_CR2_KR2 = 1002
"""BAM 100G CR2 KR2"""
BAM_100G_CR4_KR4 = 1003
"""BAM 100G CR4 KR4"""
BAM_200G_CR2_KR2 = 2002
"""BAM 200G CR2 KR2"""
BAM_400G_CR8_KR8 = 4001
"""BAM 400G CR8 KR8"""
[docs]
class AutoNegFECOption(IntFlag):
"""Auto Neg FEC Options"""
DEFAULT_FEC = 0
"""Default FEC"""
NO_FEC = 1
"""No FEC"""
FCFEC = 2
"""Firecode FEC"""
RSFEC_CL91 = 4
"""RS FEC Cl91"""
RS528 = 256
"""RS 528"""
RS544 = 512
"""RS 544"""
RS272 = 1024
"""RS 272"""
RSFEC_CL161 = 8
"""RS CL 161"""
[docs]
class AutoNegFECType(IntEnum):
"""Auto Neg FEC Type"""
PENDING = 0
"""Pending"""
NO_FEC = 1
"""No FEC"""
RS_FEC = 513
"""RS FEC"""
FC_FEC = 257
"""Firecode FEC"""
[docs]
class AutoNegStatus(IntEnum):
"""Auto Neg Status"""
UNKNOWN = 0
"""Unknown"""
ENABLE = 1
"""Enabled"""
TRANSMIT_DISABLE = 2
"""Transmit Disabled"""
ABILITY_DETECT = 3
"""Ability Detected"""
ACKNOWLEDGE_DETECT = 4
"""Acknowledge Detected"""
COMPLETE_ACKNOWLEDGE = 5
"""Complete Acknowledge"""
NEXT_PAGE_WAIT = 6
"""Next Page Wait"""
AN_GOOD_CHECK = 7
"""AN Good Check"""
AN_GOOD = 8
"""AN Good"""
[docs]
class AutoNegFECStatus(IntFlag):
"""Auto Neg FEC Status"""
DEFAULT_FEC = 0
"""Default FEC"""
NO_FEC = 1
"""No FEC"""
FC_FEC = 2
"""Firecode FEC"""
RSFEC_CL91 = 4
"""RS FEC Cl91"""
RS528 = 256
"""RS 528"""
RS544 = 512
"""RS 544"""
RS272 = 1024
"""RS 272"""
RSFEC_CL161 = 8
"""RS CL 161"""
[docs]
class LinkTrainingMode(IntEnum):
"""Link Training Mode"""
START_AFTER_AUTONEG = 0
"""Link training starts automatically after autoneg is completed"""
STANDALONE = 1
"""Link training procedure is done automatically by the port"""
DISABLED = 2
"""Link training is disabled"""
INTERACTIVE = 3
"""Link training in interactive mode, requiring manual operation."""
UNKNOWN = 255
"""Unknown link training mode"""
[docs]
class PAM4FrameSize(IntEnum):
"""PAM4 Frame Size"""
P16K_FRAME = 0
"""16K Frame Size"""
P4K_FRAME = 1
"""4K Frame Size"""
[docs]
class LinkTrainingInitCondition(IntEnum):
"""Link Training Initialization Condition"""
NO_INIT = 0
"""No Initialization"""
INIT_ENABLED = 1
"""Initialization Enabled"""
[docs]
class NRZPreset(IntEnum):
"""Link Training NRZ Preset"""
NRZ_NO_PRESET = 0
"""NRZ without Preset"""
NRZ_WITH_PRESET = 1
"""NRZ with Preset"""
[docs]
class TimeoutMode(IntEnum):
"""Link Training Timeout Mode"""
DEFAULT = 0
"""Default Timeout"""
DISABLED = 255
"""Timeout Disabled"""
[docs]
class LinkTrainingStatusMode(IntEnum):
"""Link Training Status Mode"""
DISABLED = 0
"""Disabled"""
ENABLED = 1
"""Enabled"""
[docs]
class LinkTrainingStatus(IntEnum):
"""Link Training Status"""
NOT_TRAINED = 0
"""Not Trained"""
TRAINED = 1
"""Trained"""
[docs]
class LinkTrainingFailureType(IntEnum):
"""Link Training Failure Type"""
NO_FAILURE = 0
"""No Failure"""
FRAME_LOCK_ERROR = 1
"""Frame Lock Error"""
SNR_BELOW_THRESHOLD = 2
"""SNR Below Threshold"""
TIME_OUT_FAILURE = 3
"""Timeout Failure"""
[docs]
class Layer1ConfigType(IntEnum):
"""
.. versionadded:: 1.1
Enums for PL1_CFG_TMP's type.
"""
AUTO_LINK_RECOVERY = 0
"""ANLT Auto Link Recovery"""
AN_LOOPBACK = 1
"""Auto-negotiation loopback config"""
LT_INITIAL_MODULATION = 2
"""The initial modulation (0=NRZ, 1=PAM4, 2=PAM4_WITH_PRECODING) """
LL_DEBUG_INFO = 3
"""Return the an/lt module base and RX and TX (serdes index, base address)"""
LT_TRAINING_ALGORITHM = 4
"""The link training algorithm to use"""
ANLT_LOG_CONTROL = 5
"""Control what should be logged by anlt"""
ANLT_STRICT_MODE = 6
"""Set AN/LT strict mode. In strict mode errored framed will be ignored"""
AN_LT_XLA_MODE = 7
"""Set XLA mode. If enabled XLA dumps will, if triggered, be logged automatically"""
AN_EMPTY_NP = 8
"""Empty Next Pages mode. If enabled, the port forcibly sends empty NP pages. If disabled, the port does not send empty NP pages."""
[docs]
class Layer1LogType(IntEnum):
"""
.. versionadded:: 1.1
.. warning::
Still in beta mode. Subjected to changes
Enums for PL1_LOG's type.
"""
AN = 0
"""Log for auto-neg"""
LT = 1
"""Log for link training"""
[docs]
class LinkTrainAlgorithm(IntEnum):
"""
.. versionadded:: 1.2
Link Training Algorithm
"""
INTERACTIVE = 0
"""INTERACTIVE"""
ALG0 = 1
"""ALGORITHM 0"""
ALGN1 = 2
"""ALGORITHM -1"""
[docs]
class LinkTrainCmd(IntEnum):
"""
.. versionadded:: 1.1
Link Training commands
"""
CMD_NOP = 0
"""No operation. Used for 'ping' testing"""
CMD_INC = 1
"""Increment the coeff provided in ARG"""
CMD_DEC = 2
"""Decrement the coeff provided in ARG"""
CMD_PRESET = 3
"""Set the preset provided in ARG"""
CMD_ENCODING = 4
"""Set encoding provided in ARG"""
CMD_NO_EQ = 5
"""Set the coeff to NO_EQ"""
CMD_LOCAL_TRAINED = 255
"""Signal training completed"""
[docs]
class LinkTrainPresets(IntEnum):
"""
.. versionadded:: 1.1
Link Training presets
"""
PRESET_1 = 0
"""Preset 1"""
PRESET_2 = 1
"""Preset 2"""
PRESET_3 = 2
"""Preset 3"""
PRESET_4 = 3
"""Preset 4"""
PRESET_5 = 4
"""Preset 5"""
UNKNOWN = 255
"""Unknown coeff"""
[docs]
class LinkTrainCoeffs(IntEnum):
"""
.. versionadded:: 1.1
Link Training coefficients
"""
PRE = 0
"""Pre coeff c(-1)"""
MAIN = 1
"""Main coeff c(0)"""
POST = 2
"""Post coeff c(1)"""
PRE2 = 3
"""Pre2 coeff c(-2)"""
PRE3 = 4
"""Pre3 coeff c(-3)"""
UNKNOWN = 255
"""Unknown coeff"""
[docs]
class LinkTrainEncoding(IntEnum):
"""
.. versionadded:: 1.1
Link Training Encoding
"""
NRZ = 0
"""NRZ (PAM2)"""
PAM4 = 1
"""PAM4"""
PAM4_WITH_PRECODING = 2
"""PAM4 with precoding"""
UNKNOWN = 255
"""PAM4 with precoding"""
[docs]
class LinkTrainCmdResults(IntEnum):
"""
.. versionadded:: 1.1
Link Training Command Results
"""
UNKNOWN = 0x00 | 0
"""Unknown result"""
SUCCESS = 0x00 | 1
"""Command successfully completed"""
TIMEOUT = 0x00 | 2
"""Command timeout"""
FAILED = 0x00 | 3
"""Command failed"""
COEFF_STS_NOT_UPDATED = 0x80 | 0
"""Coeff did not update"""
COEFF_STS_UPDATED = 0x80 | 1
"""Coeff updated"""
COEFF_STS_AT_LIMIT = 0x80 | 2
"""Coeff at limit"""
COEFF_STS_NOT_SUPPORTED = 0x80 | 3
"""Coeff not supported"""
COEFF_STS_EQ_LIMIT = 0x80 | 4
"""EQ limit reached"""
COEFF_STS_C_AND_EQ_LIMIT = 0x80 | 6
"""Coeff and EQ limit reached"""
[docs]
class LinkTrainCmdFlags(IntEnum):
"""
.. versionadded:: 1.1
Link Training Command Flags
"""
NEW = 1
"""New command"""
IN_PROGRESS = 2
"""Command in progress"""
DONE = 4
"""Command done"""
LOCK = 8
"""Link locked"""
LOCK_LOST = 16
"""Link lock lost"""
OVERRUN = 32
"""Overrun detected"""
[docs]
class LinkTrainAnnounce(IntEnum):
"""
.. versionadded:: 1.1
Link Training Announce
"""
TRAINED = 0
"""The lane is trained"""
[docs]
class AnLtLogControl(IntEnum):
"""
.. versionadded:: 1.3
ANLT log control bits
"""
# 1st nibble
LOG_TYPE_DEBUG = 0x2
"""debug log output"""
LOG_TYPE_AN_TRACE = 0x4
"""autonegotiation trace output"""
LOG_TYPE_LT_TRACE = 0x8
"""link training trace output"""
# 2nd nibble
LOG_TYPE_ALG_TRACE = 0x10
"""link training algorithm trace"""
# 5th nibble
LOG_TYPE_FSM_PORT = 0x10000
"""port state machine transitions"""
LOG_TYPE_FSM_ANEG = 0x20000
"""autonegotiation state machine transitions. What we act on"""
LOG_TYPE_FSM_ANEG_STIMULI = 0x40000
"""autonegotiation stimuli state machine transitions. What we ask"""
LOG_TYPE_FSM_LT = 0x80000
"""link training state machine transitions"""
# 6th nibble
LOG_TYPE_FSM_LT_COEFF = 0x100000
"""link training coefficient state machine transitions. What we act on"""
LOG_TYPE_FSM_LT_STIMULI = 0x200000
"""link training stimuli state machine transitions. What we ask"""
LOG_TYPE_FSM_LT_ALG0 = 0x400000
"""link training algorithm 0 state machine transitions"""
LOG_TYPE_FSM_LT_ALG1 = 0x800000
"""link training algorithm -1 state machine transitions"""
[docs]
class RxEqExtCap(IntEnum):
"""Rx Equalizer Advanced Capability type."""
CTLE_LOW = 0
"""CTLE low frequency."""
CTLE_HIGH = 1
"""CTLE high frequency."""
AGC = 2
"""Automatic Gain Control"""
OC = 3
"""Offset Cancellation"""
CDR = 4
"""Clock and Data Recovery"""
PRE_FFE_1 = 5
"""Pre Feed-Forward Equalizer #1"""
PRE_FFE_2 = 6
"""Pre Feed-Forward Equalizer #2"""
PRE_FFE_3 = 7
"""Pre Feed-Forward Equalizer #3"""
PRE_FFE_4 = 8
"""Pre Feed-Forward Equalizer #4"""
PRE_FFE_5 = 9
"""Pre Feed-Forward Equalizer #5"""
PRE_FFE_6 = 10
"""Pre Feed-Forward Equalizer #6"""
PRE_FFE_7 = 11
"""Pre Feed-Forward Equalizer #7"""
PRE_FFE_8 = 12
"""Pre Feed-Forward Equalizer #8"""
DFE = 13
"""Decision Feedback Equalization"""
POST_FFE_1 = 14
"""Post Feed-Forward Equalizer #1"""
POST_FFE_2 = 15
"""Post Feed-Forward Equalizer #2"""
POST_FFE_3 = 16
"""Post Feed-Forward Equalizer #3"""
POST_FFE_4 = 17
"""Post Feed-Forward Equalizer #4"""
POST_FFE_5 = 18
"""Post Feed-Forward Equalizer #5"""
POST_FFE_6 = 19
"""Post Feed-Forward Equalizer #6"""
POST_FFE_7 = 20
"""Post Feed-Forward Equalizer #7"""
POST_FFE_8 = 21
"""Post Feed-Forward Equalizer #8"""
POST_FFE_9 = 22
"""Post Feed-Forward Equalizer #9"""
POST_FFE_10 = 23
"""Post Feed-Forward Equalizer #10"""
POST_FFE_11 = 24
"""Post Feed-Forward Equalizer #11"""
POST_FFE_12 = 25
"""Post Feed-Forward Equalizer #12"""
POST_FFE_13 = 26
"""Post Feed-Forward Equalizer #13"""
POST_FFE_14 = 27
"""Post Feed-Forward Equalizer #14"""
POST_FFE_15 = 28
"""Post Feed-Forward Equalizer #15"""
POST_FFE_16 = 29
"""Post Feed-Forward Equalizer #16"""
POST_FFE_17 = 30
"""Post Feed-Forward Equalizer #17"""
POST_FFE_18 = 31
"""Post Feed-Forward Equalizer #18"""
POST_FFE_19 = 32
"""Post Feed-Forward Equalizer #19"""
POST_FFE_20 = 33
"""Post Feed-Forward Equalizer #20"""
POST_FFE_21 = 34
"""Post Feed-Forward Equalizer #21"""
POST_FFE_22 = 35
"""Post Feed-Forward Equalizer #22"""
POST_FFE_23 = 36
"""Post Feed-Forward Equalizer #23"""
[docs]
class RxEqExtCapMode(IntEnum):
"""Status for Rx Equalizer Advanced Capability."""
AUTO = 0
"""Auto."""
MANUAL = 1
"""Manual."""
FREEZE = 2
"""Freeze."""
[docs]
class PreCodingMode(IntEnum):
"""Rx/Tx Pre-Coding Mode."""
OFF = 0
"""Off"""
ON = 1
"""On"""
[docs]
class GrayCodingMode(IntEnum):
"""Rx/Tx Gray-Coding Mode."""
OFF = 0
"""Off"""
ON = 1
"""On"""
[docs]
class Endianness(IntEnum):
"""Endianness (Big/Little Endian)."""
NORMAL = 0
"""Big Endian"""
REVERTED = 1
"""Little Endian"""
[docs]
class FreyaAutonegMode(IntEnum):
"""Auto Neg Mode"""
DISABLED = 0
"""Auto Neg Off"""
ENABLED = 1
"""Auto Neg On"""
[docs]
class FreyaLinkTrainingMode(IntEnum):
"""Link Training Mode"""
DISABLED = 0
"""Link training disabled"""
ENABLED_AUTO = 1
"""Link training in auto mode"""
ENABLED_INTERACTIVE = 2
"""Link training in interactive mode, requiring manual operation."""
[docs]
class FreyaTecAbility(IntFlag):
"""Auto Neg Technical Abilities"""
ETC_800G_CR8_KR8 = 1<<29
"""ETC_800G_CR8_KR8"""
ETC_400G_CR8_KR8 = 1<<28
"""ETC_400G_CR8_KR8"""
ETC_50G_CR2 = 1<<27
"""ETC_50G_CR2"""
ETC_50G_KR2 = 1<<26
"""ETC_50G_KR2"""
ETC_25G_CR = 1<<25
"""ETC_25G_CR"""
ETC_25G_KR = 1<<24
"""ETC_25G_KR"""
IEEE_1_6TBASE_CR8_KR8 = 1<<23
"""IEEE_1_6TBASE_CR8_KR8"""
IEEE_800GBASE_CR4_KR4 = 1<<22
"""IEEE_800GBASE_CR4_KR4"""
IEEE_400GBASE_CR2_KR2 = 1<<21
"""IEEE_400GBASE_CR2_KR2"""
IEEE_200GBASE_CR1_KR1 = 1<<20
"""IEEE_200GBASE_CR1_KR1"""
IEEE_800GBASE_CR8_KR8 = 1<<19
"""IEEE_800GBASE_CR8_KR8"""
IEEE_400GBASE_CR4_KR4 = 1<<18
"""IEEE_400GBASE_CR4_KR4"""
IEEE_200GBASE_CR2_KR2 = 1<<17
"""IEEE_200GBASE_CR2_KR2"""
IEEE_100GBASE_CR1_KR1 = 1<<16
"""IEEE_100GBASE_CR1_KR1"""
IEEE_200GBASE_CR4_KR4 = 1<<15
"""IEEE_200GBASE_CR4_KR4"""
IEEE_100GBASE_CR2_KR2 = 1<<14
"""IEEE_100GBASE_CR2_KR2"""
IEEE_50GBASE_CR_KR = 1<<13
"""IEEE_50GBASE_CR_KR"""
IEEE_5GBASE_KR = 1<<12
"""IEEE_5GBASE_KR"""
IEEE_2_5GBASE_KX = 1<<11
"""IEEE_2_5GBASE_KX"""
IEEE_25GBASE_CR_KR = 1<<10
"""IEEE_25GBASE_CR_KR"""
IEEE_25GBASE_CR_S_KR_S = 1<<9
"""IEEE_25GBASE_CR_S_KR_S"""
IEEE_100GBASE_CR4 = 1<<8
"""IEEE_100GBASE_CR4"""
IEEE_100GBASE_KR4 = 1<<7
"""IEEE_100GBASE_KR4"""
IEEE_100GBASE_KP4 = 1<<6
"""IEEE_100GBASE_KP4"""
IEEE_100GBASE_CR10 = 1<<5
"""IEEE_100GBASE_CR10"""
IEEE_40GBASE_CR4 = 1<<4
"""IEEE_40GBASE_CR4"""
IEEE_40GBASE_KR4 = 1<<3
"""IEEE_40GBASE_KR4"""
IEEE_10GBASE_KR = 1<<2
"""IEEE_10GBASE_KR"""
IEEE_10GBASE_KX4 = 1<<1
"""IEEE_10GBASE_KX4"""
IEEE_1000BASE_KX = 1<<0
"""IEEE_1000BASE_KX"""
[docs]
class FreyaFECAbility(IntFlag):
"""Auto Neg FEC ability"""
RS_FEC_Int = 1<<4
"""RS_FEC_Int"""
FC_FEC_25G_REQUEST = 1<<3
"""FC_FEC_25G_REQUEST"""
RS_FEC_25G_REQUEST = 1<<2
"""RS_FEC_25G_REQUEST"""
FC_FEC_10G_REQUEST = 1<<1
"""FC_FEC_10G_REQUEST"""
FC_FEC_10G_ABILITY = 1<<0
"""FC_FEC_10G_ABILITY"""
[docs]
class FreyaPauseAbility(IntFlag):
"""Auto Neg Pause ability"""
ASYM_PAUSE = 1<<1
"""ASYM_PAUSE"""
SYM_PAUSE = 1<<0
"""SYM_PAUSE"""
[docs]
class FreyaTechAbilityHCDStatus(IntEnum):
"""Auto Neg Pause ability"""
SUCCESS = 1
"""SUCCESS"""
FAILED = 2
"""FAILED"""
[docs]
class FreyaOutOfSyncPreset(IntEnum):
"""Link Training out-of-sync preset"""
IEEE = 0
"""IEEE"""
CURRENT = 1
"""CURRENT"""
[docs]
class Layer1Control(IntEnum):
"""Layer 1 control"""
SAMPLED_SIGNAL_INTEGRITY_SCAN = 0
"""SAMPLED_SIGNAL_INTEGRITY_SCAN"""
[docs]
class Layer1Opcode(IntEnum):
"""Layer 1 operation code"""
START_SCAN = 0
""" for sampled eye scan"""
[docs]
class FreyaPCSVariant(IntEnum):
"""PCS variant"""
IEEE = 1
"""IEEE"""
ETC = 2
"""ETC"""
[docs]
class FreyaTecAbilityHCD(IntEnum):
"""Auto Neg Technical Abilities"""
ETC_800G_CR8_KR8 = 29
"""ETC_800G_CR8_KR8"""
ETC_400G_CR8_KR8 = 28
"""ETC_400G_CR8_KR8"""
ETC_50G_CR2 = 27
"""ETC_50G_CR2"""
ETC_50G_KR2 = 26
"""ETC_50G_KR2"""
ETC_25G_CR = 25
"""ETC_25G_CR"""
ETC_25G_KR = 24
"""ETC_25G_KR"""
IEEE_1_6TBASE_CR8_KR8 = 23
"""IEEE_1_6TBASE_CR8_KR8"""
IEEE_800GBASE_CR4_KR4 = 22
"""IEEE_800GBASE_CR4_KR4"""
IEEE_400GBASE_CR2_KR2 = 21
"""IEEE_400GBASE_CR2_KR2"""
IEEE_200GBASE_CR1_KR1 = 20
"""IEEE_200GBASE_CR1_KR1"""
IEEE_800GBASE_CR8_KR8 = 19
"""IEEE_800GBASE_CR8_KR8"""
IEEE_400GBASE_CR4_KR4 = 18
"""IEEE_400GBASE_CR4_KR4"""
IEEE_200GBASE_CR2_KR2 = 17
"""IEEE_200GBASE_CR2_KR2"""
IEEE_100GBASE_CR1_KR1 = 16
"""IEEE_100GBASE_CR1_KR1"""
IEEE_200GBASE_CR4_KR4 = 15
"""IEEE_200GBASE_CR4_KR4"""
IEEE_100GBASE_CR2_KR2 = 14
"""IEEE_100GBASE_CR2_KR2"""
IEEE_50GBASE_CR_KR = 13
"""IEEE_50GBASE_CR_KR"""
IEEE_5GBASE_KR = 12
"""IEEE_5GBASE_KR"""
IEEE_2_5GBASE_KX = 11
"""IEEE_2_5GBASE_KX"""
IEEE_25GBASE_CR_KR = 10
"""IEEE_25GBASE_CR_KR"""
IEEE_25GBASE_CR_S_KR_S = 9
"""IEEE_25GBASE_CR_S_KR_S"""
IEEE_100GBASE_CR4 = 8
"""IEEE_100GBASE_CR4"""
IEEE_100GBASE_KR4 = 7
"""IEEE_100GBASE_KR4"""
IEEE_100GBASE_KP4 = 6
"""IEEE_100GBASE_KP4"""
IEEE_100GBASE_CR10 = 5
"""IEEE_100GBASE_CR10"""
IEEE_40GBASE_CR4 = 4
"""IEEE_40GBASE_CR4"""
IEEE_40GBASE_KR4 = 3
"""IEEE_40GBASE_KR4"""
IEEE_10GBASE_KR = 2
"""IEEE_10GBASE_KR"""
IEEE_10GBASE_KX4 = 1
"""IEEE_10GBASE_KX4"""
IEEE_1000BASE_KX = 0
"""IEEE_1000BASE_KX"""
[docs]
class FreyaPresetResponse(IntEnum):
"""Response to the received IC request"""
IGNORE = 0
"""Acknowledge the IC request without acting upon it (acknowledge but no changes)."""
ACCEPT = 1
"""Acknowledge the IC request and apply the corresponding preset value."""
[docs]
class FreyaPresetIndex(IntEnum):
"""Preset index for FreyaPresetResponse"""
PRESET1 = 0
"""Preset 1"""
PRESET2 = 1
"""Preset 2"""
PRESET3 = 2
"""Preset 3"""
PRESET4 = 3
"""Preset 4"""
PRESET5 = 4
"""Preset 5"""
LOS = 255
"""Preset when out of sync"""
[docs]
class FreyaTapIndex(IntEnum):
"""Preset index for FreyaPresetResponse"""
TAP0 = 0
"""pre (For Freya 112G and 56G serdes)"""
TAP1 = 1
"""main (For Freya 112G and 56G serdes)"""
TAP2 = 2
"""post (For Freya 112G and 56G serdes)"""
TAP3 = 3
"""pre2 (For Freya 112G and 56G serdes)"""
TAP4 = 4
"""pre3 (For Freya 112G and 56G serdes)"""
[docs]
class FreyaLinkTrainingRangeResponse(IntEnum):
"""Response when LT range is reached"""
AUTO = 0
"""The response is automatically determined by the serdes."""
IGNORE = 1
"""The increment/decrement request will be “acknowledged” without acting upon it."""
COEFF_AT_LIMIT = 2
"""Respond Coefficient At Limit (coefficient status = 010) to the increment/decrement request."""
EQ_AT_LIMIT = 3
"""Respond Equalization Limit (coefficient status = 100) to the increment/decrement request."""
COEFF_EQ_AT_LIMIT = 4
"""Respond Coefficient At Limit and Equalization Limit (coefficient status = 110) to the increment/decrement request."""
COEFF_NOT_SUPPORTED = 5
"""Respond Coefficient Not Supported (coefficient status = 011) to the increment/decrement request."""
[docs]
class FreyaAutorestartMode(IntEnum):
"""Response when LT range is reached"""
OFF = 0
WHEN_LINK_DOWN = 1
WHEN_LT_FAILED = 2
WHEN_LINK_DOWN_LT_FAILED = 3
# endregion
# region misc enums
[docs]
class DhcpState(IntEnum):
DHCP_STATE_UNKNOWN = 0
DHCP_STATE_RUNNING = 1
DHCP_STATE_COMPLETED = 2
DHCP_STATE_FAILED = 3
[docs]
class DhcpVlanState(IntEnum):
DHCP_VLAN_OFF = 0
DHCP_VLAN_ON = 1
[docs]
class VlanType(IntEnum):
TYPE_C = 0
TYPE_S = 1
[docs]
class ChassisModelNumber(IntEnum):
NA = 0
XB1 = 1
XB2 = 2
XB3 = 3
XB4 = 4
XB5 = 5
XB6 = 6
XB7 = 7
XB8 = 8
XB9 = 9
XB10 = 10
XB10_5 = 11
XB11 = 12
XB12 = 13
XB13 = 14
XB14 = 15
XB15 = 16
XB16 = 17
XB17 = 18
XB18 = 19
XB19 = 20
XB20 = 21
XB21 = 22
XB22 = 23
XB23 = 24
XB33 = 25
XC1 = 26
XC2 = 27
XC3 = 28
XC4 = 29
XC5 = 30
XC6 = 31
XC7 = 32
XC8 = 33
XC9 = 34
XC10 = 35
XC11 = 36
XC12 = 37
XC13 = 38
XC14 = 39
XC15 = 40
XC16 = 41
XC17 = 42
XC18 = 43
XC19 = 44
XC20 = 45
XC21 = 46
XC22 = 47
XC23 = 48
XC24 = 49
XC25 = 50
XC26 = 51
[docs]
class ChassisModelName(IntEnum):
NA = 0
B720 = 1
B720D = 2
B2400 = 3
Z_01_T_C_ODIN = 4
Z_100_Q_C_LOKI = 5
Z_10_S_C_ODIN = 6
Z_10_C_C_ODIN = 7
Z_10_R_C_ODIN = 8
Z_10_S_X_C_ODIN = 9
Z_01_S_C_ODIN = 10
Z_01_S_X_C_ODIN = 11
Z_400_Q_C_THOR = 12
Z_400_Q_LE_C_THOR = 13
Z_800_Q_C_FREYA = 14
Z_800_O_C_FREYA = 15
Z_800_Q_A_C_FREYA = 16
Z_800_O_A_C_FREYA = 17
E_100_Q_C_CHIMERA = 18
[docs]
class ModuleModelName(IntEnum):
NA = 0
Z_01_T_ODIN = 1
Z_100_Q_LOKI = 2
Z_10_S_ODIN = 3
Z_10_R_ODIN = 4
Z_10_S_X_ODIN = 5
Z_01_S_ODIN = 6
Z_01_S_X_ODIN = 7
Z_400_Q_THOR = 8
Z_400_Q_LE_THOR = 9
Z_800_Q_FREYA = 10
Z_800_O_FREYA = 11
E_100_Q_CHIMERA = 12
# endregion
# region FEC CW enums
[docs]
class FecCodewordBitErrorMaskMode(IntEnum):
"""FEC Codeword Bit Error Mask Mode"""
UNKNOWN = 0
"""Unknown"""
STATIC = 1
"""The bit error pattern stay the same for all errored symbols."""
ROTATE_HIGH = 2
"""The bit error pattern shifts one bit to the most significant bit per errored symbol."""
INC = 3
"""When mode is set to INC, bitmask will be ignored. Instead, the bit error pattern initiates from 000000001, 000000010, 000000011, continuing up to 111111111, and repeating the sequence as 000000001..."""
# endregion