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.
Files changed (111) hide show
  1. {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/METADATA +8 -8
  2. {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/RECORD +91 -89
  3. xoa_driver/__init__.py +2 -2
  4. xoa_driver/enums.py +10 -10
  5. xoa_driver/functions/anlt.py +60 -78
  6. xoa_driver/functions/cli/__init__.py +5 -5
  7. xoa_driver/functions/cli/port_config.py +16 -7
  8. xoa_driver/functions/cli/{test_case_config.py → testbed_config.py} +53 -46
  9. xoa_driver/functions/cmis/_replies.py +4 -4
  10. xoa_driver/functions/mgmt.py +206 -250
  11. xoa_driver/functions/tools.py +11 -6
  12. xoa_driver/internals/commands/c_commands.py +59 -0
  13. xoa_driver/internals/commands/enums.py +101 -90
  14. xoa_driver/internals/commands/m4_commands.py +25 -0
  15. xoa_driver/internals/commands/m4e_commands.py +6 -0
  16. xoa_driver/internals/commands/m_commands.py +51 -1
  17. xoa_driver/internals/commands/p4_commands.py +63 -1
  18. xoa_driver/internals/commands/p4e_commands.py +9 -0
  19. xoa_driver/internals/commands/p4g_commands.py +139 -0
  20. xoa_driver/internals/commands/p_commands.py +493 -63
  21. xoa_driver/internals/commands/pc_commands.py +9 -0
  22. xoa_driver/internals/commands/pd_commands.py +11 -0
  23. xoa_driver/internals/commands/pe_commands.py +27 -0
  24. xoa_driver/internals/commands/pec_commands.py +9 -0
  25. xoa_driver/internals/commands/ped_commands.py +23 -0
  26. xoa_driver/internals/commands/pef_commands.py +43 -0
  27. xoa_driver/internals/commands/pf_commands.py +11 -0
  28. xoa_driver/internals/commands/pl1_commands.py +442 -118
  29. xoa_driver/internals/commands/pl_commands.py +8 -0
  30. xoa_driver/internals/commands/pm_commands.py +11 -0
  31. xoa_driver/internals/commands/pp_commands.py +128 -82
  32. xoa_driver/internals/commands/pr_commands.py +25 -0
  33. xoa_driver/internals/commands/ps_commands.py +47 -1
  34. xoa_driver/internals/commands/pt_commands.py +15 -0
  35. xoa_driver/internals/commands/px_commands.py +180 -136
  36. xoa_driver/internals/commands/subtypes.py +4 -3
  37. xoa_driver/internals/core/transporter/protocol/payload/base_struct.py +1 -1
  38. xoa_driver/internals/hli/indices/macsecscs/base_macsecsc.py +41 -3
  39. xoa_driver/internals/hli/modules/modules_l23/family_combi.py +0 -64
  40. xoa_driver/internals/hli/modules/modules_l23/family_edun.py +0 -2
  41. xoa_driver/internals/hli/modules/modules_l23/{family_g.py → family_loki.py} +29 -1
  42. xoa_driver/internals/hli/modules/modules_l23/family_odin.py +412 -0
  43. xoa_driver/internals/hli/modules/modules_l23/{family_l.py → family_thor.py} +44 -0
  44. xoa_driver/internals/hli/ports/port_l23/chimera/port_chimera.py +3 -3
  45. xoa_driver/internals/hli/ports/port_l23/family_edun.py +9 -44
  46. xoa_driver/internals/hli/ports/port_l23/{family_l1.py → family_freya.py} +10 -45
  47. xoa_driver/internals/hli/ports/port_l23/{family_g.py → family_loki.py} +33 -32
  48. xoa_driver/internals/hli/ports/port_l23/family_odin.py +225 -0
  49. xoa_driver/internals/hli/ports/port_l23/family_thor.py +67 -0
  50. xoa_driver/internals/hli/ports/port_l23/layer1/anlt.py +512 -0
  51. xoa_driver/internals/hli/ports/port_l23/layer1/brr.py +26 -0
  52. xoa_driver/internals/hli/ports/port_l23/layer1/eye_diagram.py +71 -0
  53. xoa_driver/internals/hli/ports/port_l23/{pcs_pma_ijkl_chimera.py → layer1/impair.py} +7 -7
  54. xoa_driver/internals/hli/ports/port_l23/layer1/laser_power.py +28 -0
  55. xoa_driver/internals/hli/ports/port_l23/{family_e.py → layer1/lower_power.py} +1 -51
  56. xoa_driver/internals/hli/ports/port_l23/{freya_l1.py → layer1/medium.py} +38 -358
  57. xoa_driver/internals/hli/ports/port_l23/layer1/pcs_fec.py +219 -0
  58. xoa_driver/internals/hli/ports/port_l23/layer1/pma.py +43 -0
  59. xoa_driver/internals/hli/ports/port_l23/layer1/prbs.py +39 -0
  60. xoa_driver/internals/hli/ports/port_l23/layer1/preamble.py +25 -0
  61. xoa_driver/internals/hli/ports/port_l23/{fault_jkl.py → layer1/rs_fault.py} +2 -2
  62. xoa_driver/internals/hli/ports/port_l23/layer1/siv.py +69 -0
  63. xoa_driver/internals/hli/ports/port_l23/layer1_edun.py +103 -0
  64. xoa_driver/internals/hli/ports/port_l23/layer1_freya.py +103 -0
  65. xoa_driver/internals/hli/ports/port_l23/layer1_loki.py +74 -0
  66. xoa_driver/internals/hli/ports/port_l23/layer1_thor.py +70 -0
  67. xoa_driver/internals/hli/ports/port_l23/port_l23ve.py +4 -4
  68. xoa_driver/internals/hli/ports/port_l23/sec/__init__.py +0 -0
  69. xoa_driver/internals/hli/ports/port_l23/sec/macsec.py +108 -0
  70. xoa_driver/internals/hli/ports/port_l23/tcvr/__init__.py +0 -0
  71. xoa_driver/internals/hli/ports/port_l23/{bases/port_transceiver.py → tcvr/cmis.py} +4 -118
  72. xoa_driver/internals/hli/ports/port_l23/tcvr/transceiver.py +124 -0
  73. xoa_driver/internals/hli/ports/port_l23/trafficgen/__init__.py +0 -0
  74. xoa_driver/internals/hli/ports/port_l23/{bases → trafficgen}/port_l23.py +1 -1
  75. xoa_driver/internals/hli/ports/port_l23/{bases → trafficgen}/port_l23_genuine.py +5 -45
  76. xoa_driver/internals/hli/ports/port_l23/{bases/port_reception_statistics.py → trafficgen/port_rx_stats.py} +0 -21
  77. xoa_driver/internals/hli/ports/port_l23/{bases/port_transmission_statistics.py → trafficgen/port_tx_stats.py} +2 -22
  78. xoa_driver/internals/hli/ports/port_l23/trafficgen/runt.py +32 -0
  79. xoa_driver/internals/hli/testers/l23_tester.py +1 -3
  80. xoa_driver/internals/utils/indices/_interfaces.py +18 -6
  81. xoa_driver/internals/utils/indices/index_manager.py +8 -2
  82. xoa_driver/internals/utils/managers/ports_manager.py +5 -2
  83. xoa_driver/misc.py +6 -6
  84. xoa_driver/modules.py +31 -47
  85. xoa_driver/ports.py +10 -29
  86. xoa_driver/internals/hli/modules/modules_l23/family_d.py +0 -75
  87. xoa_driver/internals/hli/modules/modules_l23/family_e.py +0 -85
  88. xoa_driver/internals/hli/modules/modules_l23/family_f.py +0 -145
  89. xoa_driver/internals/hli/modules/modules_l23/family_h.py +0 -40
  90. xoa_driver/internals/hli/modules/modules_l23/family_i.py +0 -25
  91. xoa_driver/internals/hli/modules/modules_l23/family_j.py +0 -25
  92. xoa_driver/internals/hli/modules/modules_l23/family_k.py +0 -39
  93. xoa_driver/internals/hli/modules/modules_l23/family_m.py +0 -25
  94. xoa_driver/internals/hli/modules/modules_l23/family_n.py +0 -40
  95. xoa_driver/internals/hli/ports/port_l23/family_combi.py +0 -37
  96. xoa_driver/internals/hli/ports/port_l23/family_d.py +0 -51
  97. xoa_driver/internals/hli/ports/port_l23/family_f.py +0 -151
  98. xoa_driver/internals/hli/ports/port_l23/family_h.py +0 -67
  99. xoa_driver/internals/hli/ports/port_l23/family_i.py +0 -84
  100. xoa_driver/internals/hli/ports/port_l23/family_j.py +0 -68
  101. xoa_driver/internals/hli/ports/port_l23/family_k.py +0 -73
  102. xoa_driver/internals/hli/ports/port_l23/family_l.py +0 -82
  103. xoa_driver/internals/hli/ports/port_l23/family_m.py +0 -29
  104. xoa_driver/internals/hli/ports/port_l23/pcs_pma_ghijkl.py +0 -369
  105. xoa_driver/internals/hli/ports/port_l23/pcs_pma_l.py +0 -78
  106. {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/WHEEL +0 -0
  107. {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/licenses/LICENSE +0 -0
  108. {tdl_xoa_driver-1.5.0b2.dist-info → tdl_xoa_driver-1.6.0.dist-info}/top_level.txt +0 -0
  109. /xoa_driver/internals/hli/modules/modules_l23/{family_l1.py → family_freya.py} +0 -0
  110. /xoa_driver/internals/hli/ports/port_l23/{bases → layer1}/__init__.py +0 -0
  111. /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 - 5000m s; increments of 1 ms; 0 = constant BER
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 'PMA pulse error inject'.
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 'PMA pulse error inject'.
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) on Thor and Loki modules.
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
- pre: int = field(XmpInt())
1136
- """integer, preemphasis, (range: Module dependent), default = 0 (neutral)."""
1137
- main: int = field(XmpInt())
1138
- """integer, amplification, (range: Module dependent), default = 0 (neutral)."""
1139
- post: int = field(XmpInt())
1140
- """integer, postemphasis, (range: Module dependent), default = 0 (neutral)."""
1141
- pre2: int = field(XmpInt())
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
- pre: int = field(XmpInt())
1152
- """integer, preemphasis, (range: Module dependent), default = 0 (neutral)."""
1153
- main: int = field(XmpInt())
1154
- """integer, amplification, (range: Module dependent), default = 0 (neutral)."""
1155
- post: int = field(XmpInt())
1156
- """integer, postemphasis, (range: Module dependent), default = 0 (neutral)."""
1157
- pre2: int = field(XmpInt())
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 in the
1168
- transmission direction (towards the transceiver cage) on Thor and Loki modules.
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: preemphasis, (range: Module dependent), default = 0 (neutral).
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, pre2: int, pre: int, main: int, post: int, pre3_post2: int, post3: int) -> Token[None]:
1177
- """Set the equalizer settings of the on-board PHY in the
1178
- transmission direction (towards the transceiver cage) on Thor and Loki modules.
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 pre2: pre2 emphasis
1181
- :type pre2: int
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
- pre2=pre2,
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 settings of the PHY - for Thor-400G-7S-1P Thor-400G-7S-1P[b]
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: AutoNegTecAbility = field(XmpInt())
1975
- """coded integer, technical ability."""
1976
- fec_capable: int = field(XmpInt())
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: int = field(XmpInt())
1975
+ fec_requested: Hex = field(XmpHex(size=1))
1979
1976
  """coded integer, FEC requested."""
1980
- pause_mode: PauseMode = field(XmpInt())
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: AutoNegTecAbility = field(XmpInt())
1987
- """coded integer, technical ability."""
1988
- fec_capable: int = field(XmpInt())
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: int = field(XmpInt())
1987
+ fec_requested: Hex = field(XmpHex(size=1))
1991
1988
  """coded integer, FEC requested."""
1992
- pause_mode: PauseMode = field(XmpInt())
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: AutoNegTecAbility, fec_capable: AutoNegFECOption, fec_requested: AutoNegFECOption, pause_mode: PauseMode) -> Token[None]:
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: AutoNegTecAbility
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: AutoNegFECOption
2009
+ :type fec_capable: Hex
2013
2010
  :param fec_requested: FEC requested
2014
- :type fec_requested: AutoNegFECOption
2015
- :param pause_mode: pause mode
2016
- :type pause_mode: PauseMode
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
- Status of auto-negotiation settings of the PHY - for Thor-400G-7S-1P[b] and [c]
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: AutoNegTecAbility = field(XmpInt())
2052
+ tec_ability: Hex = field(XmpHex(size=8))
2056
2053
  """coded integer, technical ability."""
2057
- fec_capable: int = field(XmpInt())
2054
+ fec_capable: Hex = field(XmpHex(size=1))
2058
2055
  """coded integer, FEC capable partner."""
2059
- fec_requested: int = field(XmpInt())
2056
+ fec_requested: Hex = field(XmpHex(size=1))
2060
2057
  """coded integer, FEC requested partner."""
2061
- pause_mode: PauseMode = field(XmpInt())
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
+ ]