tdl-xoa-driver 1.5.1__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.1.dist-info → tdl_xoa_driver-1.6.0.dist-info}/METADATA +1 -1
- {tdl_xoa_driver-1.5.1.dist-info → tdl_xoa_driver-1.6.0.dist-info}/RECORD +89 -88
- xoa_driver/__init__.py +2 -2
- xoa_driver/enums.py +10 -10
- xoa_driver/functions/anlt.py +60 -78
- xoa_driver/functions/cli/testbed_config.py +1 -1
- 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 +455 -61
- 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 +315 -48
- 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 +84 -27
- 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/edun_l1.py +0 -181
- 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.1.dist-info → tdl_xoa_driver-1.6.0.dist-info}/WHEEL +0 -0
- {tdl_xoa_driver-1.5.1.dist-info → tdl_xoa_driver-1.6.0.dist-info}/licenses/LICENSE +0 -0
- {tdl_xoa_driver-1.5.1.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,369 +0,0 @@
|
|
|
1
|
-
from typing import (
|
|
2
|
-
TYPE_CHECKING,
|
|
3
|
-
Tuple,
|
|
4
|
-
)
|
|
5
|
-
from typing import Self
|
|
6
|
-
if TYPE_CHECKING:
|
|
7
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
8
|
-
from xoa_driver.internals.commands import (
|
|
9
|
-
PP_ALARMS_ERRORS,
|
|
10
|
-
PP_TXLANECONFIG,
|
|
11
|
-
PP_TXLANEINJECT,
|
|
12
|
-
PP_TXPRBSCONFIG,
|
|
13
|
-
PP_TXERRORRATE,
|
|
14
|
-
PP_TXINJECTONE,
|
|
15
|
-
PP_RXTOTALSTATS,
|
|
16
|
-
PP_RXFECSTATS,
|
|
17
|
-
PP_RXLANELOCK,
|
|
18
|
-
PP_RXLANESTATUS,
|
|
19
|
-
PP_RXLANEERRORS,
|
|
20
|
-
PP_RXPRBSSTATUS,
|
|
21
|
-
PP_RXCLEAR,
|
|
22
|
-
PP_RXLASERPOWER,
|
|
23
|
-
PP_TXLASERPOWER,
|
|
24
|
-
PP_EYEMEASURE,
|
|
25
|
-
PP_EYERESOLUTION,
|
|
26
|
-
PP_EYEREAD,
|
|
27
|
-
PP_EYEINFO,
|
|
28
|
-
PP_PHYTXEQ,
|
|
29
|
-
PP_PHYRETUNE,
|
|
30
|
-
PP_PHYAUTOTUNE,
|
|
31
|
-
PP_EYEBER,
|
|
32
|
-
PP_PHYAUTONEG,
|
|
33
|
-
PP_TXPRBSTYPE,
|
|
34
|
-
PP_RXPRBSTYPE,
|
|
35
|
-
# PP_FECMODE, # moved to all genuine ports
|
|
36
|
-
PP_EYEDWELLBITS,
|
|
37
|
-
PP_PHYSIGNALSTATUS,
|
|
38
|
-
PP_PRBSTYPE,
|
|
39
|
-
PP_PHYSETTINGS,
|
|
40
|
-
PP_PHYRXEQ,
|
|
41
|
-
)
|
|
42
|
-
from xoa_driver import enums
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class PcsPmaAlarms:
|
|
46
|
-
"""L23 high-speed port PCS/PMA alarms"""
|
|
47
|
-
|
|
48
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
49
|
-
self.errors = PP_ALARMS_ERRORS(conn, module_id, port_id)
|
|
50
|
-
"""Error count of each alarm on a L23 high-speed port.
|
|
51
|
-
|
|
52
|
-
:type: PP_ALARMS_ERRORS
|
|
53
|
-
"""
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
class PcsPmaTransceiver:
|
|
57
|
-
"""L23 high-speed port PCS/PMA transceivers"""
|
|
58
|
-
|
|
59
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
60
|
-
self.tx_laser_power = PP_TXLASERPOWER(conn, module_id, port_id)
|
|
61
|
-
"""Power of TX laser.
|
|
62
|
-
|
|
63
|
-
:type: PP_TXLASERPOWER
|
|
64
|
-
"""
|
|
65
|
-
|
|
66
|
-
self.rx_laser_power = PP_RXLASERPOWER(conn, module_id, port_id)
|
|
67
|
-
"""Power of RX laser.
|
|
68
|
-
|
|
69
|
-
:type: PP_RXLASERPOWER
|
|
70
|
-
"""
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
class PcsPmaRxLaneStatus:
|
|
74
|
-
"""L23 high-speed port PCS/PMA lane status"""
|
|
75
|
-
|
|
76
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, lane_idx: int) -> None:
|
|
77
|
-
self.errors = PP_RXLANEERRORS(conn, module_id, port_id, lane_idx)
|
|
78
|
-
"""RX lane error statistics.
|
|
79
|
-
|
|
80
|
-
:type: PP_RXLANEERRORS
|
|
81
|
-
"""
|
|
82
|
-
|
|
83
|
-
self.lock = PP_RXLANELOCK(conn, module_id, port_id, lane_idx)
|
|
84
|
-
"""RX lane lock.
|
|
85
|
-
|
|
86
|
-
:type: PP_RXLANELOCK
|
|
87
|
-
"""
|
|
88
|
-
|
|
89
|
-
self.status = PP_RXLANESTATUS(conn, module_id, port_id, lane_idx)
|
|
90
|
-
"""RX lane status
|
|
91
|
-
|
|
92
|
-
:type: PP_RXLANESTATUS
|
|
93
|
-
"""
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
class PcsPmaTxErrorGeneration:
|
|
97
|
-
"""L23 high-speed port PCS/PMA TX error generation."""
|
|
98
|
-
|
|
99
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
100
|
-
self.error_rate = PP_TXERRORRATE(conn, module_id, port_id)
|
|
101
|
-
"""The rate of continuous bit-level error injection.
|
|
102
|
-
|
|
103
|
-
:type: PP_TXERRORRATE
|
|
104
|
-
"""
|
|
105
|
-
|
|
106
|
-
self.inject_one = PP_TXINJECTONE(conn, module_id, port_id)
|
|
107
|
-
"""Inject a single bit-level error.
|
|
108
|
-
|
|
109
|
-
:type: PP_TXINJECTONE
|
|
110
|
-
"""
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
class PcsPmaRx:
|
|
114
|
-
"""L23 high-speed port PCS/PMA RX"""
|
|
115
|
-
|
|
116
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
117
|
-
self.total_status = PP_RXTOTALSTATS(conn, module_id, port_id)
|
|
118
|
-
"""RX FEC total counters.
|
|
119
|
-
|
|
120
|
-
:type: PP_RXTOTALSTATS
|
|
121
|
-
"""
|
|
122
|
-
|
|
123
|
-
self.fec_status = PP_RXFECSTATS(conn, module_id, port_id)
|
|
124
|
-
"""RX FEC statistics.
|
|
125
|
-
|
|
126
|
-
:type: PP_RXFECSTATS
|
|
127
|
-
"""
|
|
128
|
-
|
|
129
|
-
self.clear = PP_RXCLEAR(conn, module_id, port_id)
|
|
130
|
-
"""Clear all the PCS/PMA receiver statistics.
|
|
131
|
-
|
|
132
|
-
:type: PP_RXCLEAR
|
|
133
|
-
"""
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
class PcsPmaPhy:
|
|
137
|
-
"""L23 high-speed port PCS/PMA PHY settings."""
|
|
138
|
-
|
|
139
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
140
|
-
self.auto_neg = PP_PHYAUTONEG(conn, module_id, port_id)
|
|
141
|
-
""" Auto-negotiation settings of the PHY.
|
|
142
|
-
|
|
143
|
-
:type: PP_PHYAUTONEG
|
|
144
|
-
"""
|
|
145
|
-
|
|
146
|
-
self.signal_status = PP_PHYSIGNALSTATUS(conn, module_id, port_id)
|
|
147
|
-
"""The PHY signal status.
|
|
148
|
-
|
|
149
|
-
:type: PP_PHYSIGNALSTATUS
|
|
150
|
-
"""
|
|
151
|
-
|
|
152
|
-
self.settings = PP_PHYSETTINGS(conn, module_id, port_id)
|
|
153
|
-
"""Low-level PHY settings
|
|
154
|
-
|
|
155
|
-
:type: PP_PHYSETTINGS
|
|
156
|
-
"""
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
class Lane:
|
|
160
|
-
"""L23 high-speed port lane configuration and status."""
|
|
161
|
-
|
|
162
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, lane_idx: int) -> None:
|
|
163
|
-
self.rx_status = PcsPmaRxLaneStatus(conn, module_id, port_id, lane_idx)
|
|
164
|
-
"""PCS/PMA RX lane status.
|
|
165
|
-
"""
|
|
166
|
-
|
|
167
|
-
self.tx_error_inject = PP_TXLANEINJECT(conn, module_id, port_id, lane_idx)
|
|
168
|
-
"""Inject CAUI error into a TX lane.
|
|
169
|
-
|
|
170
|
-
:type: PP_TXLANEINJECT
|
|
171
|
-
"""
|
|
172
|
-
|
|
173
|
-
self.tx_config = PP_TXLANECONFIG(conn, module_id, port_id, lane_idx)
|
|
174
|
-
"""TX lane configuration.
|
|
175
|
-
|
|
176
|
-
:type: PP_TXLANECONFIG
|
|
177
|
-
"""
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
class PcsPma:
|
|
181
|
-
"""L23 high-speed port PCS/PMA"""
|
|
182
|
-
|
|
183
|
-
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
184
|
-
self._conn = conn
|
|
185
|
-
self.__port = port
|
|
186
|
-
|
|
187
|
-
self.alarms = PcsPmaAlarms(conn, *port.kind)
|
|
188
|
-
"""PCS/PMA alarms
|
|
189
|
-
|
|
190
|
-
:type: PcsPmaAlarms
|
|
191
|
-
"""
|
|
192
|
-
|
|
193
|
-
self.transceiver = PcsPmaTransceiver(conn, *port.kind)
|
|
194
|
-
"""PCS/PMA transceiver
|
|
195
|
-
|
|
196
|
-
:type: PcsPmaTransceiver
|
|
197
|
-
"""
|
|
198
|
-
|
|
199
|
-
self.error_gen = PcsPmaTxErrorGeneration(conn, *port.kind)
|
|
200
|
-
"""PCS/PMA error generation
|
|
201
|
-
|
|
202
|
-
:type: PcsPmaTxErrorGeneration
|
|
203
|
-
"""
|
|
204
|
-
|
|
205
|
-
self.rx = PcsPmaRx(conn, *port.kind)
|
|
206
|
-
"""PCS/PMA RX
|
|
207
|
-
|
|
208
|
-
:type: PcsPmaRx
|
|
209
|
-
"""
|
|
210
|
-
|
|
211
|
-
self.phy = PcsPmaPhy(conn, *port.kind)
|
|
212
|
-
"""PCS/PMA PHY
|
|
213
|
-
|
|
214
|
-
:type: PcsPmaPhy
|
|
215
|
-
"""
|
|
216
|
-
|
|
217
|
-
self.prbs_config = PRBSConfig(conn, *port.kind)
|
|
218
|
-
"""PCS/PMA PRBS Configuration
|
|
219
|
-
|
|
220
|
-
:type: PRBSConfig
|
|
221
|
-
"""
|
|
222
|
-
|
|
223
|
-
self.lanes: Tuple["Lane", ...] = tuple(
|
|
224
|
-
Lane(self._conn, *self.__port.kind, lane_idx=idx)
|
|
225
|
-
for idx in range(self.__port.info.capabilities.lane_count)
|
|
226
|
-
) # TODO: need to fix, currently port.info.capabilities must be none because lanes are created before awaiting the port
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
class PRBSConfig:
|
|
230
|
-
"""L23 high-speed port PRBS configuration."""
|
|
231
|
-
|
|
232
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
233
|
-
self.type = PP_PRBSTYPE(conn, module_id, port_id)
|
|
234
|
-
"""PRBS type used when in PRBS mode.
|
|
235
|
-
|
|
236
|
-
:type: PP_PRBSTYPE
|
|
237
|
-
"""
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
class SDEyeDiagram:
|
|
241
|
-
"""L23 high-speed port SerDes eye diagram."""
|
|
242
|
-
|
|
243
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
244
|
-
self.__conn = conn
|
|
245
|
-
self.__module_id = module_id
|
|
246
|
-
self.__port_id = port_id
|
|
247
|
-
self.__serdes_index = serdes_xindex
|
|
248
|
-
self.measure = PP_EYEMEASURE(conn, module_id, port_id, serdes_xindex)
|
|
249
|
-
"""BER eye measurement.
|
|
250
|
-
|
|
251
|
-
:type: PP_EYEMEASURE
|
|
252
|
-
"""
|
|
253
|
-
|
|
254
|
-
self.resolution = PP_EYERESOLUTION(conn, module_id, port_id, serdes_xindex)
|
|
255
|
-
"""Resolution for BER eye measurement.
|
|
256
|
-
|
|
257
|
-
:type: PP_EYERESOLUTION
|
|
258
|
-
"""
|
|
259
|
-
|
|
260
|
-
self.info = PP_EYEINFO(conn, module_id, port_id, serdes_xindex)
|
|
261
|
-
"""Information of BER eye measurement.
|
|
262
|
-
|
|
263
|
-
:type: PP_EYEINFO
|
|
264
|
-
"""
|
|
265
|
-
|
|
266
|
-
self.ber = PP_EYEBER(conn, module_id, port_id, serdes_xindex)
|
|
267
|
-
"""BER estimation of an eye diagram.
|
|
268
|
-
|
|
269
|
-
:type: PP_EYEBER
|
|
270
|
-
"""
|
|
271
|
-
|
|
272
|
-
self.dwell_bits = PP_EYEDWELLBITS(conn, module_id, port_id, serdes_xindex)
|
|
273
|
-
"""Dwell bits for an eye capture.
|
|
274
|
-
|
|
275
|
-
:type: PP_EYEDWELLBITS
|
|
276
|
-
"""
|
|
277
|
-
|
|
278
|
-
def __await__(self):
|
|
279
|
-
return self._setup().__await__()
|
|
280
|
-
|
|
281
|
-
async def _setup(self) -> Self:
|
|
282
|
-
resolution = await self.resolution.get()
|
|
283
|
-
self.read_column = tuple(
|
|
284
|
-
PP_EYEREAD(
|
|
285
|
-
self.__conn,
|
|
286
|
-
self.__module_id,
|
|
287
|
-
self.__port_id,
|
|
288
|
-
self.__serdes_index,
|
|
289
|
-
_colum_xindex=x
|
|
290
|
-
)
|
|
291
|
-
for x in range(resolution.x_resolution)
|
|
292
|
-
)
|
|
293
|
-
return self
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
class SDPhy:
|
|
297
|
-
"""L23 high-speed port SerDes PHY configuration and status."""
|
|
298
|
-
|
|
299
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
300
|
-
self.tx_equalizer = PP_PHYTXEQ(conn, module_id, port_id, serdes_xindex)
|
|
301
|
-
"""Equalizer settings of the on-board PHY in the TX direction.
|
|
302
|
-
|
|
303
|
-
:type: PP_PHYTXEQ
|
|
304
|
-
"""
|
|
305
|
-
|
|
306
|
-
self.rx_equalizer = PP_PHYRXEQ(conn, module_id, port_id, serdes_xindex)
|
|
307
|
-
"""Equalizer settings of the on-board PHY in the RX direction.
|
|
308
|
-
|
|
309
|
-
:type: PP_PHYRXEQ
|
|
310
|
-
"""
|
|
311
|
-
|
|
312
|
-
self.retune = PP_PHYRETUNE(conn, module_id, port_id, serdes_xindex)
|
|
313
|
-
"""Retuning of the PHY.
|
|
314
|
-
|
|
315
|
-
:type: PP_PHYRETUNE
|
|
316
|
-
"""
|
|
317
|
-
|
|
318
|
-
self.autotune = PP_PHYAUTOTUNE(conn, module_id, port_id, serdes_xindex)
|
|
319
|
-
"""Autotune of the PHY.
|
|
320
|
-
|
|
321
|
-
:type: PP_PHYAUTOTUNE
|
|
322
|
-
"""
|
|
323
|
-
|
|
324
|
-
class Prbs:
|
|
325
|
-
"""L23 high-speed port SerDes PRBS configuration and status."""
|
|
326
|
-
|
|
327
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
328
|
-
self.control = PP_TXPRBSCONFIG(conn, module_id, port_id, serdes_xindex)
|
|
329
|
-
"""TX PRBS configuration of a SerDes.
|
|
330
|
-
|
|
331
|
-
:type: PP_TXPRBSCONFIG
|
|
332
|
-
"""
|
|
333
|
-
|
|
334
|
-
self.status = PP_RXPRBSSTATUS(conn, module_id, port_id, serdes_xindex)
|
|
335
|
-
"""RX PRBS status on a SerDes
|
|
336
|
-
|
|
337
|
-
:type: PP_RXPRBSSTATUS
|
|
338
|
-
"""
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
class SerDes:
|
|
343
|
-
"""L23 high-speed port SerDes configuration and status."""
|
|
344
|
-
|
|
345
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
346
|
-
self.prbs = Prbs(conn, module_id, port_id, serdes_xindex)
|
|
347
|
-
"""PRBS configuration
|
|
348
|
-
|
|
349
|
-
:type: Prbs
|
|
350
|
-
"""
|
|
351
|
-
|
|
352
|
-
self.phy = SDPhy(conn, module_id, port_id, serdes_xindex)
|
|
353
|
-
"""PHY configuration
|
|
354
|
-
|
|
355
|
-
:type: SDPhy
|
|
356
|
-
"""
|
|
357
|
-
|
|
358
|
-
self.eye_diagram = SDEyeDiagram(conn, module_id, port_id, serdes_xindex)
|
|
359
|
-
"""Eye diagram
|
|
360
|
-
|
|
361
|
-
:type: SDEyeDiagram
|
|
362
|
-
"""
|
|
363
|
-
|
|
364
|
-
def __await__(self):
|
|
365
|
-
return self._setup().__await__()
|
|
366
|
-
|
|
367
|
-
async def _setup(self) -> Self:
|
|
368
|
-
await self.eye_diagram
|
|
369
|
-
return self
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
from typing import (
|
|
2
|
-
TYPE_CHECKING,
|
|
3
|
-
Tuple,
|
|
4
|
-
)
|
|
5
|
-
if TYPE_CHECKING:
|
|
6
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
7
|
-
from xoa_driver.internals.commands import (
|
|
8
|
-
PP_AUTONEG,
|
|
9
|
-
PP_AUTONEGSTATUS,
|
|
10
|
-
PP_LINKTRAIN,
|
|
11
|
-
PP_LINKTRAINSTATUS,
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class AutoNeg:
|
|
16
|
-
"""L23 high-speed port PCS/PMA auto-negotiation"""
|
|
17
|
-
|
|
18
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
19
|
-
self.settings = PP_AUTONEG(conn, module_id, port_id)
|
|
20
|
-
"""Auto-negotiation settings of the PHY.
|
|
21
|
-
|
|
22
|
-
:type: PP_AUTONEG
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
self.status = PP_AUTONEGSTATUS(conn, module_id, port_id)
|
|
26
|
-
"""Status of auto-negotiation settings of the PHY.
|
|
27
|
-
|
|
28
|
-
:type: PP_AUTONEGSTATUS
|
|
29
|
-
"""
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class LinkTrain:
|
|
33
|
-
"""L23 high-speed port PCS/PMA link training"""
|
|
34
|
-
|
|
35
|
-
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
36
|
-
self.settings = PP_LINKTRAIN(conn, *port.kind)
|
|
37
|
-
"""Link training settings.
|
|
38
|
-
|
|
39
|
-
:type: PP_LINKTRAIN
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
self.per_lane_status: Tuple[PP_LINKTRAINSTATUS, ...] = tuple(
|
|
43
|
-
PP_LINKTRAINSTATUS(conn, *port.kind, _serdes_xindex=idx)
|
|
44
|
-
for idx in range(port.info.capabilities.serdes_count)
|
|
45
|
-
)
|
|
46
|
-
"""Link training status.
|
|
47
|
-
|
|
48
|
-
:type: PP_LINKTRAINSTATUS
|
|
49
|
-
"""
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
class PcsPma:
|
|
53
|
-
"""L23 high-speed port PCS/PMA settings"""
|
|
54
|
-
|
|
55
|
-
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
56
|
-
self.auto_neg = AutoNeg(conn, *port.kind)
|
|
57
|
-
"""PCS/PMA auto-negotiation settings.
|
|
58
|
-
|
|
59
|
-
:type: AutoNeg
|
|
60
|
-
"""
|
|
61
|
-
|
|
62
|
-
self.link_training = LinkTrain(conn, port)
|
|
63
|
-
"""PCS/PMA link training settings.
|
|
64
|
-
|
|
65
|
-
:type: LinkTrain
|
|
66
|
-
"""
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
# # Temporary ports are not supporting LinkTrain, in future release of xenaserver it will be the same as regular PcsPma
|
|
70
|
-
# class PcsPmaL1:
|
|
71
|
-
# """L23 high-speed port PCS/PMA settings"""
|
|
72
|
-
|
|
73
|
-
# def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
74
|
-
# self.auto_neg = AutoNeg(conn, *port.kind)
|
|
75
|
-
# """PCS/PMA auto-negotiation settings.
|
|
76
|
-
|
|
77
|
-
# :type: AutoNeg
|
|
78
|
-
# """
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|