tdl-xoa-driver 1.5.0b2__py3-none-any.whl → 1.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/METADATA +8 -8
- {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/RECORD +91 -89
- xoa_driver/__init__.py +2 -2
- xoa_driver/enums.py +10 -10
- xoa_driver/functions/anlt.py +60 -78
- xoa_driver/functions/cli/__init__.py +5 -5
- xoa_driver/functions/cli/port_config.py +16 -7
- xoa_driver/functions/cli/{test_case_config.py → testbed_config.py} +53 -46
- xoa_driver/functions/cmis/_replies.py +4 -4
- xoa_driver/functions/mgmt.py +206 -250
- xoa_driver/functions/tools.py +11 -6
- xoa_driver/internals/commands/c_commands.py +59 -0
- xoa_driver/internals/commands/enums.py +101 -90
- xoa_driver/internals/commands/m4_commands.py +25 -0
- xoa_driver/internals/commands/m4e_commands.py +6 -0
- xoa_driver/internals/commands/m_commands.py +51 -1
- xoa_driver/internals/commands/p4_commands.py +63 -1
- xoa_driver/internals/commands/p4e_commands.py +9 -0
- xoa_driver/internals/commands/p4g_commands.py +139 -0
- xoa_driver/internals/commands/p_commands.py +493 -63
- xoa_driver/internals/commands/pc_commands.py +9 -0
- xoa_driver/internals/commands/pd_commands.py +11 -0
- xoa_driver/internals/commands/pe_commands.py +27 -0
- xoa_driver/internals/commands/pec_commands.py +9 -0
- xoa_driver/internals/commands/ped_commands.py +23 -0
- xoa_driver/internals/commands/pef_commands.py +43 -0
- xoa_driver/internals/commands/pf_commands.py +11 -0
- xoa_driver/internals/commands/pl1_commands.py +442 -118
- xoa_driver/internals/commands/pl_commands.py +8 -0
- xoa_driver/internals/commands/pm_commands.py +11 -0
- xoa_driver/internals/commands/pp_commands.py +128 -82
- xoa_driver/internals/commands/pr_commands.py +25 -0
- xoa_driver/internals/commands/ps_commands.py +47 -1
- xoa_driver/internals/commands/pt_commands.py +15 -0
- xoa_driver/internals/commands/px_commands.py +180 -136
- xoa_driver/internals/commands/subtypes.py +4 -3
- xoa_driver/internals/core/transporter/protocol/payload/base_struct.py +1 -1
- xoa_driver/internals/hli/indices/macsecscs/base_macsecsc.py +41 -3
- xoa_driver/internals/hli/modules/modules_l23/family_combi.py +0 -64
- xoa_driver/internals/hli/modules/modules_l23/family_edun.py +0 -2
- xoa_driver/internals/hli/modules/modules_l23/{family_g.py → family_loki.py} +29 -1
- xoa_driver/internals/hli/modules/modules_l23/family_odin.py +412 -0
- xoa_driver/internals/hli/modules/modules_l23/{family_l.py → family_thor.py} +44 -0
- xoa_driver/internals/hli/ports/port_l23/chimera/port_chimera.py +3 -3
- xoa_driver/internals/hli/ports/port_l23/family_edun.py +9 -44
- xoa_driver/internals/hli/ports/port_l23/{family_l1.py → family_freya.py} +10 -45
- xoa_driver/internals/hli/ports/port_l23/{family_g.py → family_loki.py} +33 -32
- xoa_driver/internals/hli/ports/port_l23/family_odin.py +225 -0
- xoa_driver/internals/hli/ports/port_l23/family_thor.py +67 -0
- xoa_driver/internals/hli/ports/port_l23/layer1/anlt.py +512 -0
- xoa_driver/internals/hli/ports/port_l23/layer1/brr.py +26 -0
- xoa_driver/internals/hli/ports/port_l23/layer1/eye_diagram.py +71 -0
- xoa_driver/internals/hli/ports/port_l23/{pcs_pma_ijkl_chimera.py → layer1/impair.py} +7 -7
- xoa_driver/internals/hli/ports/port_l23/layer1/laser_power.py +28 -0
- xoa_driver/internals/hli/ports/port_l23/{family_e.py → layer1/lower_power.py} +1 -51
- xoa_driver/internals/hli/ports/port_l23/{freya_l1.py → layer1/medium.py} +38 -358
- xoa_driver/internals/hli/ports/port_l23/layer1/pcs_fec.py +219 -0
- xoa_driver/internals/hli/ports/port_l23/layer1/pma.py +43 -0
- xoa_driver/internals/hli/ports/port_l23/layer1/prbs.py +39 -0
- xoa_driver/internals/hli/ports/port_l23/layer1/preamble.py +25 -0
- xoa_driver/internals/hli/ports/port_l23/{fault_jkl.py → layer1/rs_fault.py} +2 -2
- xoa_driver/internals/hli/ports/port_l23/layer1/siv.py +69 -0
- xoa_driver/internals/hli/ports/port_l23/layer1_edun.py +103 -0
- xoa_driver/internals/hli/ports/port_l23/layer1_freya.py +103 -0
- xoa_driver/internals/hli/ports/port_l23/layer1_loki.py +74 -0
- xoa_driver/internals/hli/ports/port_l23/layer1_thor.py +70 -0
- xoa_driver/internals/hli/ports/port_l23/port_l23ve.py +4 -4
- xoa_driver/internals/hli/ports/port_l23/sec/__init__.py +0 -0
- xoa_driver/internals/hli/ports/port_l23/sec/macsec.py +108 -0
- xoa_driver/internals/hli/ports/port_l23/tcvr/__init__.py +0 -0
- xoa_driver/internals/hli/ports/port_l23/{bases/port_transceiver.py → tcvr/cmis.py} +4 -118
- xoa_driver/internals/hli/ports/port_l23/tcvr/transceiver.py +124 -0
- xoa_driver/internals/hli/ports/port_l23/trafficgen/__init__.py +0 -0
- xoa_driver/internals/hli/ports/port_l23/{bases → trafficgen}/port_l23.py +1 -1
- xoa_driver/internals/hli/ports/port_l23/{bases → trafficgen}/port_l23_genuine.py +5 -45
- xoa_driver/internals/hli/ports/port_l23/{bases/port_reception_statistics.py → trafficgen/port_rx_stats.py} +0 -21
- xoa_driver/internals/hli/ports/port_l23/{bases/port_transmission_statistics.py → trafficgen/port_tx_stats.py} +2 -22
- xoa_driver/internals/hli/ports/port_l23/trafficgen/runt.py +32 -0
- xoa_driver/internals/hli/testers/l23_tester.py +1 -3
- xoa_driver/internals/utils/indices/_interfaces.py +18 -6
- xoa_driver/internals/utils/indices/index_manager.py +8 -2
- xoa_driver/internals/utils/managers/ports_manager.py +5 -2
- xoa_driver/misc.py +6 -6
- xoa_driver/modules.py +31 -47
- xoa_driver/ports.py +10 -29
- xoa_driver/internals/hli/modules/modules_l23/family_d.py +0 -75
- xoa_driver/internals/hli/modules/modules_l23/family_e.py +0 -85
- xoa_driver/internals/hli/modules/modules_l23/family_f.py +0 -145
- xoa_driver/internals/hli/modules/modules_l23/family_h.py +0 -40
- xoa_driver/internals/hli/modules/modules_l23/family_i.py +0 -25
- xoa_driver/internals/hli/modules/modules_l23/family_j.py +0 -25
- xoa_driver/internals/hli/modules/modules_l23/family_k.py +0 -39
- xoa_driver/internals/hli/modules/modules_l23/family_m.py +0 -25
- xoa_driver/internals/hli/modules/modules_l23/family_n.py +0 -40
- xoa_driver/internals/hli/ports/port_l23/family_combi.py +0 -37
- xoa_driver/internals/hli/ports/port_l23/family_d.py +0 -51
- xoa_driver/internals/hli/ports/port_l23/family_f.py +0 -151
- xoa_driver/internals/hli/ports/port_l23/family_h.py +0 -67
- xoa_driver/internals/hli/ports/port_l23/family_i.py +0 -84
- xoa_driver/internals/hli/ports/port_l23/family_j.py +0 -68
- xoa_driver/internals/hli/ports/port_l23/family_k.py +0 -73
- xoa_driver/internals/hli/ports/port_l23/family_l.py +0 -82
- xoa_driver/internals/hli/ports/port_l23/family_m.py +0 -29
- xoa_driver/internals/hli/ports/port_l23/pcs_pma_ghijkl.py +0 -369
- xoa_driver/internals/hli/ports/port_l23/pcs_pma_l.py +0 -78
- {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/WHEEL +0 -0
- {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/licenses/LICENSE +0 -0
- {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/top_level.txt +0 -0
- /xoa_driver/internals/hli/modules/modules_l23/{family_l1.py → family_freya.py} +0 -0
- /xoa_driver/internals/hli/ports/port_l23/{bases → layer1}/__init__.py +0 -0
- /xoa_driver/internals/hli/ports/port_l23/{bases → trafficgen}/port_capture.py +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"""Port Length Term Commands"""
|
|
1
2
|
from __future__ import annotations
|
|
2
3
|
from dataclasses import dataclass
|
|
3
4
|
import typing
|
|
@@ -176,3 +177,10 @@ class PL_LENGTH:
|
|
|
176
177
|
set_at_least = functools.partialmethod(set, LengthCheckType.AT_LEAST)
|
|
177
178
|
"""Set the length check to be longer than or equal to the given length (at least).
|
|
178
179
|
"""
|
|
180
|
+
|
|
181
|
+
__all__ = [
|
|
182
|
+
"PL_CREATE",
|
|
183
|
+
"PL_DELETE",
|
|
184
|
+
"PL_INDICES",
|
|
185
|
+
"PL_LENGTH",
|
|
186
|
+
]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"""Port Match Term Commands"""
|
|
1
2
|
from __future__ import annotations
|
|
2
3
|
from dataclasses import dataclass
|
|
3
4
|
import typing
|
|
@@ -254,3 +255,13 @@ class PM_MATCH:
|
|
|
254
255
|
"""
|
|
255
256
|
|
|
256
257
|
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex], mask=mask, value=value))
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
__all__ = [
|
|
261
|
+
"PM_CREATE",
|
|
262
|
+
"PM_DELETE",
|
|
263
|
+
"PM_INDICES",
|
|
264
|
+
"PM_MATCH",
|
|
265
|
+
"PM_POSITION",
|
|
266
|
+
"PM_PROTOCOL",
|
|
267
|
+
]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"""Port Basic Layer 1 Commands"""
|
|
1
2
|
from __future__ import annotations
|
|
2
3
|
from dataclasses import dataclass
|
|
3
4
|
import typing
|
|
@@ -263,6 +264,14 @@ class PP_TXPRBSCONFIG:
|
|
|
263
264
|
error_on_off=error_on_off
|
|
264
265
|
)
|
|
265
266
|
)
|
|
267
|
+
|
|
268
|
+
set_on = functools.partialmethod(set, 17, PRBSOnOff.PRBSON, ErrorOnOff.ERRORSOFF)
|
|
269
|
+
"""Enable PRBS transmission on this SerDes without error injection.
|
|
270
|
+
"""
|
|
271
|
+
|
|
272
|
+
set_off = functools.partialmethod(set, 17, PRBSOnOff.PRBSOFF, ErrorOnOff.ERRORSOFF)
|
|
273
|
+
"""Disable PRBS transmission on this SerDes without error injection.
|
|
274
|
+
"""
|
|
266
275
|
|
|
267
276
|
|
|
268
277
|
@register_command
|
|
@@ -595,7 +604,7 @@ class PP_PMAERRPUL_PARAMS:
|
|
|
595
604
|
def set(self, duration: int, period: int, repetition: int, coeff: int, exp: int) -> Token[None]:
|
|
596
605
|
"""Set PMA pulse error injection settings.
|
|
597
606
|
|
|
598
|
-
:param duration: 0 ms -
|
|
607
|
+
:param duration: 0 ms - 5000 ms; increments of 1 ms; 0 = constant BER
|
|
599
608
|
:type duration: int
|
|
600
609
|
:param period: 10 ms - 50000 ms; number of ms - must be multiple of 10 ms
|
|
601
610
|
:type period: int
|
|
@@ -840,7 +849,7 @@ class PP_TXLASERPOWER:
|
|
|
840
849
|
@dataclass
|
|
841
850
|
class PP_PMAERRPUL_ENABLE:
|
|
842
851
|
"""
|
|
843
|
-
Enable / disable
|
|
852
|
+
Enable / disable PMA pulse error inject.
|
|
844
853
|
"""
|
|
845
854
|
|
|
846
855
|
code: typing.ClassVar[int] = 300
|
|
@@ -868,8 +877,8 @@ class PP_PMAERRPUL_ENABLE:
|
|
|
868
877
|
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
869
878
|
|
|
870
879
|
def set(self, on_off: OnOff) -> Token[None]:
|
|
871
|
-
"""Set the status of
|
|
872
|
-
|
|
880
|
+
"""Set the status of PMA pulse error inject.
|
|
881
|
+
|
|
873
882
|
:param on_off: whether PMA pulse error inject is enabled
|
|
874
883
|
:type on_off: OnOff
|
|
875
884
|
"""
|
|
@@ -1117,7 +1126,19 @@ class PP_EYEINFO:
|
|
|
1117
1126
|
class PP_PHYTXEQ:
|
|
1118
1127
|
"""
|
|
1119
1128
|
Control and monitor the equalizer settings of the on-board PHY in the
|
|
1120
|
-
transmission direction (towards the transceiver cage)
|
|
1129
|
+
transmission direction (towards the transceiver cage).
|
|
1130
|
+
|
|
1131
|
+
This command returns a variable number of tap values with module-dependent ordering:
|
|
1132
|
+
|
|
1133
|
+
- **Legacy Loki-2P/Thor**: Original fixed format [pre, main, post, pre2, pre3, mode]
|
|
1134
|
+
- **Regular Freya**: Original fixed format [pre, main, post, pre2, pre3, mode]
|
|
1135
|
+
- **Loki-4P and H-Freya/Edun**: Variable number in N*pre, main, M*post layout
|
|
1136
|
+
[pre_n, pre_n-1, ..., pre_1, main, post_1, post_2, ..., post_m]
|
|
1137
|
+
|
|
1138
|
+
Use P_CAPABILITIES to query ``numtxeqtaps`` and ``numtxeqpretaps`` to determine
|
|
1139
|
+
the number of taps and layout:
|
|
1140
|
+
- ``numtxeqpretaps``: Number of precursor taps (N)
|
|
1141
|
+
- ``numtxeqtaps - numtxeqpretaps - 1``: Number of postcursor taps (M)
|
|
1121
1142
|
|
|
1122
1143
|
.. versionchanged:: 1.1
|
|
1123
1144
|
|
|
@@ -1132,63 +1153,46 @@ class PP_PHYTXEQ:
|
|
|
1132
1153
|
_serdes_xindex: int
|
|
1133
1154
|
|
|
1134
1155
|
class GetDataAttr(ResponseBodyStruct):
|
|
1135
|
-
|
|
1136
|
-
"""
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
"""integer, preemphasis, (range: Module dependent), default = 0 (neutral)."""
|
|
1143
|
-
pre3_post2: int = field(XmpInt())
|
|
1144
|
-
"""integer, postemphasis, (range: Module dependent), default = 0 (neutral)."""
|
|
1145
|
-
post3: int = field(XmpInt())
|
|
1146
|
-
"""integer, postemphasis, (range: Module dependent), default = 0 (neutral)."""
|
|
1147
|
-
mode: int = field(XmpInt())
|
|
1148
|
-
"""integer, value must be 4"""
|
|
1156
|
+
tap_values: typing.List[int] = field(XmpSequence(types_chunk=[XmpInt()]))
|
|
1157
|
+
"""list of integers, TX EQ tap values. The number and layout depend on the platform:
|
|
1158
|
+
|
|
1159
|
+
- Legacy Loki-2P/Thor and Regular Freya: [pre, main, post, pre2, pre3, mode]
|
|
1160
|
+
- Loki-4P and H-Freya/Edun: [pre_n, ..., pre_1, main, post_1, ..., post_m]
|
|
1161
|
+
where N = numtxeqpretaps and M = numtxeqtaps - numtxeqpretaps - 1
|
|
1162
|
+
"""
|
|
1149
1163
|
|
|
1150
1164
|
class SetDataAttr(RequestBodyStruct):
|
|
1151
|
-
|
|
1152
|
-
"""
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
"""integer, preemphasis, (range: Module dependent), default = 0 (neutral)."""
|
|
1159
|
-
pre3_post2: int = field(XmpInt())
|
|
1160
|
-
"""integer, postemphasis, (range: Module dependent), default = 0 (neutral)."""
|
|
1161
|
-
post3: int = field(XmpInt())
|
|
1162
|
-
"""integer, postemphasis, (range: Module dependent), default = 0 (neutral)."""
|
|
1163
|
-
mode: int = field(XmpInt())
|
|
1164
|
-
"""integer, value must be 4"""
|
|
1165
|
+
tap_values: typing.List[int] = field(XmpSequence(types_chunk=[XmpInt()]))
|
|
1166
|
+
"""list of integers, TX EQ tap values. The number and layout depend on the platform:
|
|
1167
|
+
|
|
1168
|
+
- Legacy Loki-2P/Thor and Regular Freya: [pre, main, post, pre2, pre3, mode]
|
|
1169
|
+
- Loki-4P and H-Freya/Edun: [pre_n, ..., pre_1, main, post_1, ..., post_m]
|
|
1170
|
+
where N = numtxeqpretaps and M = numtxeqtaps - numtxeqpretaps - 1
|
|
1171
|
+
"""
|
|
1165
1172
|
|
|
1166
1173
|
def get(self) -> Token[GetDataAttr]:
|
|
1167
|
-
"""Get the equalizer settings of the on-board PHY
|
|
1168
|
-
|
|
1174
|
+
"""Get the TX equalizer settings of the on-board PHY.
|
|
1175
|
+
|
|
1176
|
+
The returned tap values layout depends on the platform. Query P_CAPABILITIES
|
|
1177
|
+
for ``numtxeqtaps`` and ``numtxeqpretaps`` to determine the format.
|
|
1169
1178
|
|
|
1170
|
-
:return:
|
|
1179
|
+
:return: list of TX EQ tap values
|
|
1171
1180
|
:rtype: PP_PHYTXEQ.GetDataAttr
|
|
1172
1181
|
"""
|
|
1173
1182
|
|
|
1174
1183
|
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex]))
|
|
1175
1184
|
|
|
1176
|
-
def set(self,
|
|
1177
|
-
"""Set the equalizer settings of the on-board PHY
|
|
1178
|
-
|
|
1185
|
+
def set(self, tap_values: typing.List[int]) -> Token[None]:
|
|
1186
|
+
"""Set the TX equalizer settings of the on-board PHY.
|
|
1187
|
+
|
|
1188
|
+
The tap values layout depends on the platform. Query P_CAPABILITIES
|
|
1189
|
+
for ``numtxeqtaps`` and ``numtxeqpretaps`` to determine the required format:
|
|
1190
|
+
|
|
1191
|
+
- Legacy Loki-2P/Thor and Regular Freya: [pre, main, post, pre2, pre3, mode]
|
|
1192
|
+
- Loki-4P and H-Freya/Edun: [pre_n, ..., pre_1, main, post_1, ..., post_m]
|
|
1179
1193
|
|
|
1180
|
-
:param
|
|
1181
|
-
:type
|
|
1182
|
-
:param pre: pre emphasis
|
|
1183
|
-
:type pre: int
|
|
1184
|
-
:param main: main emphasis
|
|
1185
|
-
:type main: int
|
|
1186
|
-
:param post: post emphasis
|
|
1187
|
-
:type post: int
|
|
1188
|
-
:param pre3_post2: post2 or pre3 emphasis
|
|
1189
|
-
:type pre3_post2: int
|
|
1190
|
-
:param post3: post3 emphasis
|
|
1191
|
-
:type post3: int
|
|
1194
|
+
:param tap_values: list of TX EQ tap values in platform-specific order
|
|
1195
|
+
:type tap_values: typing.List[int]
|
|
1192
1196
|
"""
|
|
1193
1197
|
|
|
1194
1198
|
return Token(
|
|
@@ -1198,13 +1202,7 @@ class PP_PHYTXEQ:
|
|
|
1198
1202
|
module=self._module,
|
|
1199
1203
|
port=self._port,
|
|
1200
1204
|
indices=[self._serdes_xindex],
|
|
1201
|
-
|
|
1202
|
-
pre=pre,
|
|
1203
|
-
main=main,
|
|
1204
|
-
post=post,
|
|
1205
|
-
pre3_post2=pre3_post2,
|
|
1206
|
-
post3=post3,
|
|
1207
|
-
mode=4))
|
|
1205
|
+
tap_values=tap_values))
|
|
1208
1206
|
|
|
1209
1207
|
|
|
1210
1208
|
@register_command
|
|
@@ -1957,8 +1955,7 @@ class PP_PHYRXEQSTATUS_EXT:
|
|
|
1957
1955
|
@dataclass
|
|
1958
1956
|
class PP_AUTONEG:
|
|
1959
1957
|
"""
|
|
1960
|
-
Auto-negotiation
|
|
1961
|
-
and [c]
|
|
1958
|
+
Basic Auto-negotiation configuration and control
|
|
1962
1959
|
"""
|
|
1963
1960
|
|
|
1964
1961
|
code: typing.ClassVar[int] = 381
|
|
@@ -1971,25 +1968,25 @@ class PP_AUTONEG:
|
|
|
1971
1968
|
class GetDataAttr(ResponseBodyStruct):
|
|
1972
1969
|
mode: AutoNegMode = field(XmpInt())
|
|
1973
1970
|
"""coded integer, mode"""
|
|
1974
|
-
tec_ability:
|
|
1975
|
-
"""
|
|
1976
|
-
fec_capable:
|
|
1971
|
+
tec_ability: Hex = field(XmpHex(size=8))
|
|
1972
|
+
"""hex string, technical ability."""
|
|
1973
|
+
fec_capable: Hex = field(XmpHex(size=1))
|
|
1977
1974
|
"""coded integer, FEC capable."""
|
|
1978
|
-
fec_requested:
|
|
1975
|
+
fec_requested: Hex = field(XmpHex(size=1))
|
|
1979
1976
|
"""coded integer, FEC requested."""
|
|
1980
|
-
pause_mode:
|
|
1977
|
+
pause_mode: Hex = field(XmpHex(size=1))
|
|
1981
1978
|
"""coded integer, pause mode."""
|
|
1982
1979
|
|
|
1983
1980
|
class SetDataAttr(RequestBodyStruct):
|
|
1984
1981
|
mode: AutoNegMode = field(XmpInt())
|
|
1985
1982
|
"""coded integer, mode"""
|
|
1986
|
-
tec_ability:
|
|
1987
|
-
"""
|
|
1988
|
-
fec_capable:
|
|
1983
|
+
tec_ability: Hex = field(XmpHex(size=8))
|
|
1984
|
+
"""hex string, technical ability."""
|
|
1985
|
+
fec_capable: Hex = field(XmpHex(size=1))
|
|
1989
1986
|
"""coded integer, FEC capable."""
|
|
1990
|
-
fec_requested:
|
|
1987
|
+
fec_requested: Hex = field(XmpHex(size=1))
|
|
1991
1988
|
"""coded integer, FEC requested."""
|
|
1992
|
-
pause_mode:
|
|
1989
|
+
pause_mode: Hex = field(XmpHex(size=1))
|
|
1993
1990
|
"""coded integer, pause mode."""
|
|
1994
1991
|
|
|
1995
1992
|
def get(self) -> Token[GetDataAttr]:
|
|
@@ -2001,19 +1998,19 @@ class PP_AUTONEG:
|
|
|
2001
1998
|
|
|
2002
1999
|
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
2003
2000
|
|
|
2004
|
-
def set(self, mode: AutoNegMode, tec_ability:
|
|
2001
|
+
def set(self, mode: AutoNegMode, tec_ability: Hex, fec_capable: Hex, fec_requested: Hex, pause_mode: Hex) -> Token[None]:
|
|
2005
2002
|
"""Set the auto-negotiation settings of the PHY.
|
|
2006
2003
|
|
|
2007
2004
|
:param mode: auto neg mode
|
|
2008
2005
|
:type mode: AutoNegMode
|
|
2009
|
-
:param tec_ability: technical ability
|
|
2010
|
-
:type tec_ability:
|
|
2006
|
+
:param tec_ability: technical ability (hex string with 0x prefix or AutoNegTecAbility enum)
|
|
2007
|
+
:type tec_ability: Hex
|
|
2011
2008
|
:param fec_capable: FEC capable
|
|
2012
|
-
:type fec_capable:
|
|
2009
|
+
:type fec_capable: Hex
|
|
2013
2010
|
:param fec_requested: FEC requested
|
|
2014
|
-
:type fec_requested:
|
|
2015
|
-
:param pause_mode: pause mode
|
|
2016
|
-
:type pause_mode:
|
|
2011
|
+
:type fec_requested: Hex
|
|
2012
|
+
:param pause_mode: pause mode (hex string with 0x prefix or PauseMode enum)
|
|
2013
|
+
:type pause_mode: Hex
|
|
2017
2014
|
"""
|
|
2018
2015
|
|
|
2019
2016
|
return Token(
|
|
@@ -2035,7 +2032,7 @@ class PP_AUTONEG:
|
|
|
2035
2032
|
@dataclass
|
|
2036
2033
|
class PP_AUTONEGSTATUS:
|
|
2037
2034
|
"""
|
|
2038
|
-
|
|
2035
|
+
Basic Auto-negotiation status
|
|
2039
2036
|
"""
|
|
2040
2037
|
|
|
2041
2038
|
code: typing.ClassVar[int] = 382
|
|
@@ -2052,13 +2049,13 @@ class PP_AUTONEGSTATUS:
|
|
|
2052
2049
|
"""codec integer, FEC."""
|
|
2053
2050
|
auto_state: AutoNegStatus = field(XmpInt())
|
|
2054
2051
|
"""coded integer, auto-negotiation state."""
|
|
2055
|
-
tec_ability:
|
|
2052
|
+
tec_ability: Hex = field(XmpHex(size=8))
|
|
2056
2053
|
"""coded integer, technical ability."""
|
|
2057
|
-
fec_capable:
|
|
2054
|
+
fec_capable: Hex = field(XmpHex(size=1))
|
|
2058
2055
|
"""coded integer, FEC capable partner."""
|
|
2059
|
-
fec_requested:
|
|
2056
|
+
fec_requested: Hex = field(XmpHex(size=1))
|
|
2060
2057
|
"""coded integer, FEC requested partner."""
|
|
2061
|
-
pause_mode:
|
|
2058
|
+
pause_mode: Hex = field(XmpHex(size=1))
|
|
2062
2059
|
"""coded integer, pause mode."""
|
|
2063
2060
|
|
|
2064
2061
|
def get(self) -> Token[GetDataAttr]:
|
|
@@ -2339,3 +2336,52 @@ class PP_PRECODINGSTATUS:
|
|
|
2339
2336
|
"""
|
|
2340
2337
|
|
|
2341
2338
|
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._serdes_xindex]))
|
|
2339
|
+
|
|
2340
|
+
|
|
2341
|
+
__all__ = [
|
|
2342
|
+
"PP_ALARMS_ERRORS",
|
|
2343
|
+
"PP_AUTONEG",
|
|
2344
|
+
"PP_AUTONEGSTATUS",
|
|
2345
|
+
"PP_EYEBER",
|
|
2346
|
+
"PP_EYEDWELLBITS",
|
|
2347
|
+
"PP_EYEINFO",
|
|
2348
|
+
"PP_EYEMEASURE",
|
|
2349
|
+
"PP_EYEREAD",
|
|
2350
|
+
"PP_EYERESOLUTION",
|
|
2351
|
+
"PP_FECMODE",
|
|
2352
|
+
"PP_GRAYCODING",
|
|
2353
|
+
"PP_LINKFLAP_ENABLE",
|
|
2354
|
+
"PP_LINKFLAP_PARAMS",
|
|
2355
|
+
"PP_LINKTRAIN",
|
|
2356
|
+
"PP_LINKTRAINSTATUS",
|
|
2357
|
+
"PP_PHYAUTONEG",
|
|
2358
|
+
"PP_PHYAUTOTUNE",
|
|
2359
|
+
"PP_PHYRETUNE",
|
|
2360
|
+
"PP_PHYRXEQ",
|
|
2361
|
+
"PP_PHYRXEQSTATUS_EXT",
|
|
2362
|
+
"PP_PHYRXEQ_EXT",
|
|
2363
|
+
"PP_PHYSETTINGS",
|
|
2364
|
+
"PP_PHYSIGNALSTATUS",
|
|
2365
|
+
"PP_PHYTXEQ",
|
|
2366
|
+
"PP_PMAERRPUL_ENABLE",
|
|
2367
|
+
"PP_PMAERRPUL_PARAMS",
|
|
2368
|
+
"PP_PRBSTYPE",
|
|
2369
|
+
"PP_PRECODING",
|
|
2370
|
+
"PP_PRECODINGSTATUS",
|
|
2371
|
+
"PP_RXCLEAR",
|
|
2372
|
+
"PP_RXFECSTATS",
|
|
2373
|
+
"PP_RXLANEERRORS",
|
|
2374
|
+
"PP_RXLANELOCK",
|
|
2375
|
+
"PP_RXLANESTATUS",
|
|
2376
|
+
"PP_RXLASERPOWER",
|
|
2377
|
+
"PP_RXPRBSSTATUS",
|
|
2378
|
+
"PP_RXPRBSTYPE",
|
|
2379
|
+
"PP_RXTOTALSTATS",
|
|
2380
|
+
"PP_TXERRORRATE",
|
|
2381
|
+
"PP_TXINJECTONE",
|
|
2382
|
+
"PP_TXLANECONFIG",
|
|
2383
|
+
"PP_TXLANEINJECT",
|
|
2384
|
+
"PP_TXLASERPOWER",
|
|
2385
|
+
"PP_TXPRBSCONFIG",
|
|
2386
|
+
"PP_TXPRBSTYPE",
|
|
2387
|
+
]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"""Port Rx Statistics Commands"""
|
|
1
2
|
from __future__ import annotations
|
|
2
3
|
from dataclasses import dataclass
|
|
3
4
|
import typing
|
|
@@ -803,3 +804,27 @@ class PR_FLOWCLEAR:
|
|
|
803
804
|
"""
|
|
804
805
|
|
|
805
806
|
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
__all__ = [
|
|
810
|
+
"PR_CALIBRATE",
|
|
811
|
+
"PR_CLEAR",
|
|
812
|
+
"PR_EXTRA",
|
|
813
|
+
"PR_FILTER",
|
|
814
|
+
"PR_FILTEREXT",
|
|
815
|
+
"PR_FLOWCLEAR",
|
|
816
|
+
"PR_FLOWTOTAL",
|
|
817
|
+
"PR_NOTPLD",
|
|
818
|
+
"PR_NOTPLDEXT",
|
|
819
|
+
"PR_PFCSTATS",
|
|
820
|
+
"PR_TOTAL",
|
|
821
|
+
"PR_TOTALEXT",
|
|
822
|
+
"PR_TPLDERRORS",
|
|
823
|
+
"PR_TPLDJITTER",
|
|
824
|
+
"PR_TPLDLATENCY",
|
|
825
|
+
"PR_TPLDS",
|
|
826
|
+
"PR_TPLDTRAFFIC",
|
|
827
|
+
"PR_TPLDTRAFFICEXT",
|
|
828
|
+
"PR_UAT_STATUS",
|
|
829
|
+
"PR_UAT_TIME",
|
|
830
|
+
]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"""Port Stream Commands"""
|
|
1
2
|
from __future__ import annotations
|
|
2
3
|
from dataclasses import dataclass
|
|
3
4
|
import ipaddress
|
|
@@ -2306,4 +2307,49 @@ class PS_MODIFIER_ENDIAN:
|
|
|
2306
2307
|
|
|
2307
2308
|
set_little_endia = functools.partialmethod(set, mode=ModifierEndianness.LITTLE)
|
|
2308
2309
|
"""Set a stream modifier endianness to Little Endian.
|
|
2309
|
-
"""
|
|
2310
|
+
"""
|
|
2311
|
+
|
|
2312
|
+
__all__ = [
|
|
2313
|
+
"PS_ARPREQUEST",
|
|
2314
|
+
"PS_AUTOADJUST",
|
|
2315
|
+
"PS_BURST",
|
|
2316
|
+
"PS_BURSTGAP",
|
|
2317
|
+
"PS_CDFCOUNT",
|
|
2318
|
+
"PS_CDFDATA",
|
|
2319
|
+
"PS_CDFOFFSET",
|
|
2320
|
+
"PS_COMMENT",
|
|
2321
|
+
"PS_CREATE",
|
|
2322
|
+
"PS_DELETE",
|
|
2323
|
+
"PS_ENABLE",
|
|
2324
|
+
"PS_EXTPAYLOAD",
|
|
2325
|
+
"PS_HEADERPROTOCOL",
|
|
2326
|
+
"PS_INDICES",
|
|
2327
|
+
"PS_INJECTFCSERR",
|
|
2328
|
+
"PS_INJECTMISERR",
|
|
2329
|
+
"PS_INJECTPLDERR",
|
|
2330
|
+
"PS_INJECTSEQERR",
|
|
2331
|
+
"PS_INJECTTPLDERR",
|
|
2332
|
+
"PS_INSERTFCS",
|
|
2333
|
+
"PS_IPV4GATEWAY",
|
|
2334
|
+
"PS_IPV6GATEWAY",
|
|
2335
|
+
"PS_MACSEC_ASSIGN",
|
|
2336
|
+
"PS_MACSEC_ENABLE",
|
|
2337
|
+
"PS_MODIFIER",
|
|
2338
|
+
"PS_MODIFIERCOUNT",
|
|
2339
|
+
"PS_MODIFIEREXT",
|
|
2340
|
+
"PS_MODIFIEREXTCOUNT",
|
|
2341
|
+
"PS_MODIFIEREXTRANGE",
|
|
2342
|
+
"PS_MODIFIERRANGE",
|
|
2343
|
+
"PS_MODIFIER_ENDIAN",
|
|
2344
|
+
"PS_OPTIONS",
|
|
2345
|
+
"PS_PACKETHEADER",
|
|
2346
|
+
"PS_PACKETLENGTH",
|
|
2347
|
+
"PS_PACKETLIMIT",
|
|
2348
|
+
"PS_PAYLOAD",
|
|
2349
|
+
"PS_PFCPRIORITY",
|
|
2350
|
+
"PS_PINGREQUEST",
|
|
2351
|
+
"PS_RATEFRACTION",
|
|
2352
|
+
"PS_RATEL2BPS",
|
|
2353
|
+
"PS_RATEPPS",
|
|
2354
|
+
"PS_TPLDID",
|
|
2355
|
+
]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"""Port Tx Statistics Commands"""
|
|
1
2
|
from __future__ import annotations
|
|
2
3
|
from dataclasses import dataclass
|
|
3
4
|
import typing
|
|
@@ -382,3 +383,17 @@ class PT_FLOWCLEAR:
|
|
|
382
383
|
"""
|
|
383
384
|
|
|
384
385
|
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
__all__ = [
|
|
389
|
+
"PT_CLEAR",
|
|
390
|
+
"PT_EXTRA",
|
|
391
|
+
"PT_FLOWCLEAR",
|
|
392
|
+
"PT_FLOWTOTAL",
|
|
393
|
+
"PT_NOTPLD",
|
|
394
|
+
"PT_NOTPLDEXT",
|
|
395
|
+
"PT_STREAM",
|
|
396
|
+
"PT_STREAMEXT",
|
|
397
|
+
"PT_TOTAL",
|
|
398
|
+
"PT_TOTALEXT",
|
|
399
|
+
]
|