tdl-xoa-driver 1.5.1__py3-none-any.whl → 1.6.1__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.1.dist-info}/METADATA +1 -1
- {tdl_xoa_driver-1.5.1.dist-info → tdl_xoa_driver-1.6.1.dist-info}/RECORD +87 -88
- {tdl_xoa_driver-1.5.1.dist-info → tdl_xoa_driver-1.6.1.dist-info}/licenses/LICENSE +1 -1
- 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 +8 -43
- xoa_driver/internals/hli/ports/port_l23/{family_l1.py → family_freya.py} +9 -44
- xoa_driver/internals/hli/ports/port_l23/{family_g.py → family_loki.py} +32 -31
- 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/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/trafficgen/runt.py +32 -0
- xoa_driver/internals/hli/ports/port_l23/{bases/port_reception_statistics.py → trafficgen/rx_stats.py} +0 -21
- xoa_driver/internals/hli/ports/port_l23/{bases/port_l23.py → trafficgen/tgen.py} +31 -213
- xoa_driver/internals/hli/ports/port_l23/{bases/port_transmission_statistics.py → trafficgen/tx_stats.py} +2 -22
- 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/bases/port_l23_genuine.py +0 -229
- 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
- xoa_driver/internals/hli/ports/port_l23/port_l23ve.py +0 -101
- {tdl_xoa_driver-1.5.1.dist-info → tdl_xoa_driver-1.6.1.dist-info}/WHEEL +0 -0
- {tdl_xoa_driver-1.5.1.dist-info → tdl_xoa_driver-1.6.1.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/port_capture.py → trafficgen/capture.py} +0 -0
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import functools
|
|
2
|
-
from typing import TYPE_CHECKING, Tuple
|
|
3
|
-
from typing import Self
|
|
4
|
-
from xoa_driver.internals.commands import (
|
|
5
|
-
P_DYNAMIC,
|
|
6
|
-
)
|
|
7
|
-
from xoa_driver.internals.utils import attributes as utils
|
|
8
|
-
if TYPE_CHECKING:
|
|
9
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
10
|
-
|
|
11
|
-
from .bases.port_l23_genuine import BasePortL23Genuine
|
|
12
|
-
from .pcs_pma_ghijkl import (
|
|
13
|
-
PcsPma,
|
|
14
|
-
SerDes,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class FamilyH(BasePortL23Genuine):
|
|
19
|
-
serdes: Tuple[SerDes, ...]
|
|
20
|
-
"""SerDes index
|
|
21
|
-
|
|
22
|
-
:type: Tuple[SerDes, ...]
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
26
|
-
super().__init__(conn, module_id, port_id)
|
|
27
|
-
self.dynamic = P_DYNAMIC(conn, module_id, port_id)
|
|
28
|
-
"""L23 port's dynamic traffic change.
|
|
29
|
-
|
|
30
|
-
:type: P_DYNAMIC
|
|
31
|
-
"""
|
|
32
|
-
|
|
33
|
-
async def _setup(self) -> Self:
|
|
34
|
-
await super()._setup()
|
|
35
|
-
self.serdes = tuple(
|
|
36
|
-
SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
|
|
37
|
-
for serdes_xindex in range(self.info.capabilities.serdes_count)
|
|
38
|
-
)
|
|
39
|
-
return self
|
|
40
|
-
|
|
41
|
-
on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
|
|
42
|
-
"""Register a callback to the event that the port's dynamic traffic setting changes."""
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class PLoki100G5S1P(FamilyH):
|
|
46
|
-
"""L23 port on Loki-100G-5S-1P module.
|
|
47
|
-
"""
|
|
48
|
-
|
|
49
|
-
pcs_pma: PcsPma
|
|
50
|
-
"""PCS/PMA settings.
|
|
51
|
-
|
|
52
|
-
:type: ~xoa_driver.internals.hli_v1.ports.port_l23.pcs_pma_ghijkl.PcsPma
|
|
53
|
-
"""
|
|
54
|
-
|
|
55
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
56
|
-
super().__init__(conn, module_id, port_id)
|
|
57
|
-
|
|
58
|
-
async def _setup(self) -> Self:
|
|
59
|
-
await super()._setup()
|
|
60
|
-
self.pcs_pma = PcsPma(self._conn, self)
|
|
61
|
-
return self
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
class POdin100G3S1P(FamilyH):
|
|
65
|
-
"""L23 port on Odin-100G-3S-1P module.
|
|
66
|
-
"""
|
|
67
|
-
...
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import functools
|
|
2
|
-
from typing import TYPE_CHECKING, Tuple
|
|
3
|
-
from typing import Self
|
|
4
|
-
from xoa_driver.internals.commands import (
|
|
5
|
-
P_FAULTSIGNALING,
|
|
6
|
-
P_FAULTSTATUS,
|
|
7
|
-
P_DYNAMIC,
|
|
8
|
-
)
|
|
9
|
-
from xoa_driver.internals.utils import attributes as utils
|
|
10
|
-
if TYPE_CHECKING:
|
|
11
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
12
|
-
|
|
13
|
-
from .bases.port_l23_genuine import BasePortL23Genuine
|
|
14
|
-
from .pcs_pma_ijkl_chimera import PcsPma as PcsPma1
|
|
15
|
-
from .pcs_pma_ghijkl import (
|
|
16
|
-
PcsPma as PcsPma2,
|
|
17
|
-
SerDes,
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class PcsPma(PcsPma1, PcsPma2):
|
|
22
|
-
"""PCS/PMA layer for Family I
|
|
23
|
-
"""
|
|
24
|
-
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
25
|
-
PcsPma1.__init__(self, conn, port)
|
|
26
|
-
PcsPma2.__init__(self, conn, port)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class Fault:
|
|
30
|
-
"""L23 port fault settings."""
|
|
31
|
-
|
|
32
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
33
|
-
self.signaling = P_FAULTSIGNALING(conn, module_id, port_id)
|
|
34
|
-
"""L23 port fault signaling.
|
|
35
|
-
|
|
36
|
-
:type: P_FAULTSIGNALING
|
|
37
|
-
"""
|
|
38
|
-
|
|
39
|
-
self.status = P_FAULTSTATUS(conn, module_id, port_id)
|
|
40
|
-
"""L23 port fault status.
|
|
41
|
-
|
|
42
|
-
:type: P_FAULTSTATUS
|
|
43
|
-
"""
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
class FamilyI(BasePortL23Genuine):
|
|
47
|
-
pcs_pma: PcsPma
|
|
48
|
-
"""PCS/PMA layer
|
|
49
|
-
|
|
50
|
-
:type: PcsPma
|
|
51
|
-
"""
|
|
52
|
-
|
|
53
|
-
serdes: Tuple[SerDes, ...]
|
|
54
|
-
"""SerDes index
|
|
55
|
-
|
|
56
|
-
:type: Tuple[SerDes, ...]
|
|
57
|
-
"""
|
|
58
|
-
|
|
59
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
60
|
-
super().__init__(conn, module_id, port_id)
|
|
61
|
-
self.dynamic = P_DYNAMIC(conn, module_id, port_id)
|
|
62
|
-
"""L23 port's dynamic traffic change.
|
|
63
|
-
|
|
64
|
-
:type: P_DYNAMIC
|
|
65
|
-
"""
|
|
66
|
-
self.fault = Fault(conn, module_id, port_id)
|
|
67
|
-
|
|
68
|
-
async def _setup(self) -> Self:
|
|
69
|
-
await super()._setup()
|
|
70
|
-
self.pcs_pma = PcsPma(self._conn, self)
|
|
71
|
-
self.serdes = tuple(
|
|
72
|
-
SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
|
|
73
|
-
for serdes_xindex in range(self.info.capabilities.serdes_count)
|
|
74
|
-
)
|
|
75
|
-
return self
|
|
76
|
-
|
|
77
|
-
on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
|
|
78
|
-
"""Register a callback to the event that the port's dynamic traffic setting changes."""
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
class PLoki100G5S2P(FamilyI):
|
|
82
|
-
"""L23 port on Loki-100G-5S-2P module.
|
|
83
|
-
"""
|
|
84
|
-
...
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import functools
|
|
2
|
-
from typing import TYPE_CHECKING, Tuple
|
|
3
|
-
from typing import Self
|
|
4
|
-
from xoa_driver.internals.commands import (
|
|
5
|
-
# P_FAULTSIGNALING,
|
|
6
|
-
P_DYNAMIC,
|
|
7
|
-
)
|
|
8
|
-
from xoa_driver.internals.utils import attributes as utils
|
|
9
|
-
if TYPE_CHECKING:
|
|
10
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
11
|
-
|
|
12
|
-
from .bases.port_l23_genuine import BasePortL23Genuine
|
|
13
|
-
from .fault_jkl import Fault
|
|
14
|
-
from .pcs_pma_ijkl_chimera import PcsPma as PcsPma1
|
|
15
|
-
from .pcs_pma_ghijkl import (
|
|
16
|
-
PcsPma as PcsPma2,
|
|
17
|
-
SerDes,
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class PcsPma(PcsPma1, PcsPma2):
|
|
22
|
-
"""PCS/PMA layer for Family J
|
|
23
|
-
"""
|
|
24
|
-
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
25
|
-
PcsPma1.__init__(self, conn, port)
|
|
26
|
-
PcsPma2.__init__(self, conn, port)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class FamilyJ(BasePortL23Genuine):
|
|
30
|
-
pcs_pma: PcsPma
|
|
31
|
-
"""PCS/PMA layer
|
|
32
|
-
|
|
33
|
-
:type: PcsPma
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
serdes: Tuple[SerDes, ...]
|
|
37
|
-
"""SerDes index
|
|
38
|
-
|
|
39
|
-
:type: Tuple[SerDes, ...]
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
43
|
-
super().__init__(conn, module_id, port_id)
|
|
44
|
-
self.dynamic = P_DYNAMIC(conn, module_id, port_id)
|
|
45
|
-
"""L23 port's dynamic traffic change.
|
|
46
|
-
|
|
47
|
-
:type: P_DYNAMIC
|
|
48
|
-
"""
|
|
49
|
-
|
|
50
|
-
self.fault = Fault(conn, module_id, port_id)
|
|
51
|
-
|
|
52
|
-
async def _setup(self) -> Self:
|
|
53
|
-
await super()._setup()
|
|
54
|
-
self.pcs_pma = PcsPma(self._conn, self)
|
|
55
|
-
self.serdes = tuple(
|
|
56
|
-
SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
|
|
57
|
-
for serdes_xindex in range(self.info.capabilities.serdes_count)
|
|
58
|
-
)
|
|
59
|
-
return self
|
|
60
|
-
|
|
61
|
-
on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
|
|
62
|
-
"""Register a callback to the event that the port's dynamic traffic setting changes."""
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
class PThor100G5S4P(FamilyJ):
|
|
66
|
-
"""L23 port on Thor-100G-5S-4P module.
|
|
67
|
-
"""
|
|
68
|
-
...
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import functools
|
|
2
|
-
from typing import TYPE_CHECKING, Tuple
|
|
3
|
-
from typing import Self
|
|
4
|
-
from xoa_driver.internals.commands import (
|
|
5
|
-
# P_FAULTSIGNALING,
|
|
6
|
-
P_DYNAMIC,
|
|
7
|
-
)
|
|
8
|
-
from xoa_driver.internals.utils import attributes as utils
|
|
9
|
-
if TYPE_CHECKING:
|
|
10
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
11
|
-
|
|
12
|
-
from .bases.port_l23_genuine import BasePortL23Genuine
|
|
13
|
-
from .fault_jkl import Fault
|
|
14
|
-
from .pcs_pma_ijkl_chimera import PcsPma as PcsPma1
|
|
15
|
-
from .pcs_pma_ghijkl import (
|
|
16
|
-
PcsPma as PcsPma2,
|
|
17
|
-
SerDes,
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class PcsPma(PcsPma1, PcsPma2):
|
|
22
|
-
"""PCS/PMA layer for Family K
|
|
23
|
-
"""
|
|
24
|
-
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
25
|
-
PcsPma1.__init__(self, conn, port)
|
|
26
|
-
PcsPma2.__init__(self, conn, port)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class FamilyK(BasePortL23Genuine):
|
|
30
|
-
pcs_pma: PcsPma
|
|
31
|
-
"""PCS/PMA layer
|
|
32
|
-
|
|
33
|
-
:type: PcsPma
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
serdes: Tuple[SerDes, ...]
|
|
37
|
-
"""SerDes index
|
|
38
|
-
|
|
39
|
-
:type: Tuple[SerDes, ...]
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
43
|
-
super().__init__(conn, module_id, port_id)
|
|
44
|
-
self.dynamic = P_DYNAMIC(conn, module_id, port_id)
|
|
45
|
-
"""L23 port's dynamic traffic change.
|
|
46
|
-
|
|
47
|
-
:type: P_DYNAMIC
|
|
48
|
-
"""
|
|
49
|
-
|
|
50
|
-
self.fault = Fault(conn, module_id, port_id)
|
|
51
|
-
|
|
52
|
-
async def _setup(self) -> Self:
|
|
53
|
-
await super()._setup()
|
|
54
|
-
self.pcs_pma = PcsPma(self._conn, self)
|
|
55
|
-
self.serdes = tuple(
|
|
56
|
-
SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
|
|
57
|
-
for serdes_xindex in range(self.info.capabilities.serdes_count)
|
|
58
|
-
)
|
|
59
|
-
return self
|
|
60
|
-
|
|
61
|
-
on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
|
|
62
|
-
"""Register a callback to the event that the port's dynamic traffic setting changes."""
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
class PThor400G7S1P(FamilyK):
|
|
66
|
-
"""L23 port on Thor-400G-7S-1P module.
|
|
67
|
-
"""
|
|
68
|
-
...
|
|
69
|
-
|
|
70
|
-
class PThor400G7S1PLE(FamilyK):
|
|
71
|
-
"""L23 port on Thor-400G-7S-1P LE module.
|
|
72
|
-
"""
|
|
73
|
-
...
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import functools
|
|
2
|
-
from typing import TYPE_CHECKING, Tuple
|
|
3
|
-
from typing import Self
|
|
4
|
-
from xoa_driver.internals.commands import (
|
|
5
|
-
# P_FAULTSIGNALING,
|
|
6
|
-
P_DYNAMIC,
|
|
7
|
-
)
|
|
8
|
-
from xoa_driver.internals.utils import attributes as utils
|
|
9
|
-
if TYPE_CHECKING:
|
|
10
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
11
|
-
|
|
12
|
-
from .bases.port_l23_genuine import BasePortL23Genuine
|
|
13
|
-
from .fault_jkl import Fault
|
|
14
|
-
from .pcs_pma_ijkl_chimera import PcsPma as PcsPma1
|
|
15
|
-
from .pcs_pma_ghijkl import (
|
|
16
|
-
PcsPma as PcsPma2,
|
|
17
|
-
SerDes,
|
|
18
|
-
)
|
|
19
|
-
from .pcs_pma_l import PcsPma as PcsPma3
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class PcsPma(PcsPma1, PcsPma2, PcsPma3):
|
|
23
|
-
"""PCS/PMA layer for Family L
|
|
24
|
-
"""
|
|
25
|
-
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
26
|
-
PcsPma1.__init__(self, conn, port)
|
|
27
|
-
PcsPma2.__init__(self, conn, port)
|
|
28
|
-
PcsPma3.__init__(self, conn, port)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class FamilyL(BasePortL23Genuine):
|
|
32
|
-
pcs_pma: PcsPma
|
|
33
|
-
"""PCS/PMA layer
|
|
34
|
-
|
|
35
|
-
:type: PcsPma
|
|
36
|
-
"""
|
|
37
|
-
|
|
38
|
-
serdes: Tuple[SerDes, ...]
|
|
39
|
-
"""SerDes index
|
|
40
|
-
|
|
41
|
-
:type: Tuple[SerDes, ...]
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
45
|
-
super().__init__(conn, module_id, port_id)
|
|
46
|
-
self.dynamic = P_DYNAMIC(conn, module_id, port_id)
|
|
47
|
-
"""L23 port's dynamic traffic change.
|
|
48
|
-
|
|
49
|
-
:type: P_DYNAMIC
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
self.fault = Fault(conn, module_id, port_id)
|
|
53
|
-
|
|
54
|
-
async def _setup(self) -> Self:
|
|
55
|
-
await super()._setup()
|
|
56
|
-
self.pcs_pma = PcsPma(self._conn, self)
|
|
57
|
-
self.serdes = tuple(
|
|
58
|
-
SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
|
|
59
|
-
for serdes_xindex in range(self.info.capabilities.serdes_count)
|
|
60
|
-
)
|
|
61
|
-
return self
|
|
62
|
-
|
|
63
|
-
on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
|
|
64
|
-
"""Register a callback to the event that the port's dynamic traffic setting changes."""
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
class PThor400G7S1P_b(FamilyL):
|
|
68
|
-
"""L23 port on Thor-400G-7S-1P[b] module.
|
|
69
|
-
"""
|
|
70
|
-
...
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
class PThor400G7S1P_c(FamilyL):
|
|
74
|
-
"""L23 port on Thor-400G-7S-1P[c] module.
|
|
75
|
-
"""
|
|
76
|
-
...
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
class PThor400G7S1P_d(FamilyL):
|
|
80
|
-
"""L23 port on Thor-400G-7S-1P[d] module.
|
|
81
|
-
"""
|
|
82
|
-
...
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING
|
|
2
|
-
|
|
3
|
-
from xoa_driver.internals.commands import P_BRRMODE, P_BRRSTATUS
|
|
4
|
-
|
|
5
|
-
from .bases.port_l23_genuine import BasePortL23Genuine
|
|
6
|
-
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class FamilyM(BasePortL23Genuine):
|
|
12
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
13
|
-
super().__init__(conn, module_id, port_id)
|
|
14
|
-
self.brr_mode = P_BRRMODE(conn, module_id, port_id)
|
|
15
|
-
"""BRR mode.
|
|
16
|
-
|
|
17
|
-
:type: P_BRRMODE
|
|
18
|
-
"""
|
|
19
|
-
self.brr_status = P_BRRSTATUS(conn, module_id, port_id)
|
|
20
|
-
"""Actual BRR status.
|
|
21
|
-
|
|
22
|
-
:type: P_BRRSTATUS
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class POdin1G3S6PT1RJ45(FamilyM):
|
|
27
|
-
"""L23 port on Odin-1G-3S-6P-T1-RJ45 module.
|
|
28
|
-
"""
|
|
29
|
-
...
|