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,3 +1,4 @@
|
|
|
1
|
+
"""Subtypes for various commands."""
|
|
1
2
|
import ipaddress
|
|
2
3
|
from dataclasses import dataclass
|
|
3
4
|
|
|
@@ -18,7 +19,7 @@ from .enums import (
|
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
@dataclass
|
|
21
|
-
class
|
|
22
|
+
class ArpEntry:
|
|
22
23
|
ipv4_address: ipaddress.IPv4Address
|
|
23
24
|
"""The IP address to match to the Target IP address in the ARP requests"""
|
|
24
25
|
|
|
@@ -33,7 +34,7 @@ class ArpChunk:
|
|
|
33
34
|
|
|
34
35
|
|
|
35
36
|
@dataclass
|
|
36
|
-
class
|
|
37
|
+
class NdpEntry:
|
|
37
38
|
ipv6_address: ipaddress.IPv6Address
|
|
38
39
|
"""The IP address to match to the Target IP address in the NDP Neighbor Solicitation"""
|
|
39
40
|
|
|
@@ -47,7 +48,7 @@ class NdpChunk:
|
|
|
47
48
|
"""The target MAC address to return in the NDP Neighbor Advertisement. If set t to all-zero, the port MAC address will be used."""
|
|
48
49
|
|
|
49
50
|
@dataclass
|
|
50
|
-
class
|
|
51
|
+
class DhcpEntry:
|
|
51
52
|
ipv4_address: ipaddress.IPv4Address = field(XmpIPv4Address()) # provided IP address by DHCP Server
|
|
52
53
|
subnet_mask: ipaddress.IPv4Address = field(XmpIPv4Address()) # provided Subnet mask by DHCP Server
|
|
53
54
|
braodcast_address: ipaddress.IPv4Address = field(XmpIPv4Address()) # provided Broadcast address by DHCP Server
|
|
@@ -146,7 +146,7 @@ class Order:
|
|
|
146
146
|
|
|
147
147
|
|
|
148
148
|
class OrderedMeta(type):
|
|
149
|
-
def __new__(cls: Type[
|
|
149
|
+
def __new__(cls: Type[OrderedMeta], clsname: str, bases: tuple[Type], clsdict: dict[str, Any]) -> OrderedMeta:
|
|
150
150
|
if clsname not in SKIP_CLASSES:
|
|
151
151
|
is_response = any(iter(cls_.__name__ == RESPONSE_CLS_NAME for cls_ in bases))
|
|
152
152
|
annotations = utils.resolve_annotations(
|
|
@@ -25,11 +25,16 @@ from xoa_driver.internals.commands import (
|
|
|
25
25
|
P_MACSEC_RXSC_CONF_OFFSET,
|
|
26
26
|
P_MACSEC_RXSC_CIPHERSUITE,
|
|
27
27
|
P_MACSEC_RXSC_TPLDID,
|
|
28
|
-
|
|
28
|
+
P_MACSEC_RXSC_LOWEST_PN,
|
|
29
29
|
P_MACSEC_TXSC_XPN_SSCI,
|
|
30
30
|
P_MACSEC_TXSC_XPN_SALT,
|
|
31
31
|
P_MACSEC_RXSC_XPN_SSCI,
|
|
32
32
|
P_MACSEC_RXSC_XPN_SALT,
|
|
33
|
+
P_MACSEC_RXSC_AN,
|
|
34
|
+
P_MACSEC_RXSC_NEXT_PN,
|
|
35
|
+
P_MACSEC_TXSC_NEXT_PN,
|
|
36
|
+
P_MACSEC_RXSC_PN,
|
|
37
|
+
P_MACSEC_TXSC_NEXT_AN,
|
|
33
38
|
)
|
|
34
39
|
if TYPE_CHECKING:
|
|
35
40
|
from xoa_driver.internals.core import interfaces as itf
|
|
@@ -109,6 +114,18 @@ class MACSecTxScConfig:
|
|
|
109
114
|
:type: P_MACSEC_TXSC_XPN_SALT
|
|
110
115
|
"""
|
|
111
116
|
|
|
117
|
+
self.next_pn = P_MACSEC_TXSC_NEXT_PN(conn, module_id, port_id, txsc_idx)
|
|
118
|
+
"""Configure TX SC's next expected PN value
|
|
119
|
+
|
|
120
|
+
:type: P_MACSEC_TXSC_NEXT_PN
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
self.next_an = P_MACSEC_TXSC_NEXT_AN(conn, module_id, port_id, txsc_idx)
|
|
124
|
+
"""Configure TX SC's next AN value
|
|
125
|
+
|
|
126
|
+
:type: P_MACSEC_TXSC_NEXT_AN
|
|
127
|
+
"""
|
|
128
|
+
|
|
112
129
|
class MACSecRxScConfig:
|
|
113
130
|
"""MACSec RX SC Configuration"""
|
|
114
131
|
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, rxsc_idx: int) -> None:
|
|
@@ -137,8 +154,11 @@ class MACSecRxScConfig:
|
|
|
137
154
|
:type: P_MACSEC_RXSC_CIPHERSUITE
|
|
138
155
|
"""
|
|
139
156
|
|
|
140
|
-
self.
|
|
141
|
-
"""Configure RX SC's
|
|
157
|
+
self.lowest_pn = P_MACSEC_RXSC_LOWEST_PN(conn, module_id, port_id, rxsc_idx)
|
|
158
|
+
"""Configure RX SC's lowest expected PN
|
|
159
|
+
|
|
160
|
+
:type: P_MACSEC_RXSC_LOWEST_PN
|
|
161
|
+
"""
|
|
142
162
|
|
|
143
163
|
self.tpld_id = P_MACSEC_RXSC_TPLDID(conn, module_id, port_id, rxsc_idx)
|
|
144
164
|
"""Configure RX SC's TPLD ID value
|
|
@@ -158,6 +178,24 @@ class MACSecRxScConfig:
|
|
|
158
178
|
:type: P_MACSEC_RXSC_XPN_SALT
|
|
159
179
|
"""
|
|
160
180
|
|
|
181
|
+
self.an = P_MACSEC_RXSC_AN(conn, module_id, port_id, rxsc_idx)
|
|
182
|
+
"""Configure RX SC's AN value
|
|
183
|
+
|
|
184
|
+
:type: P_MACSEC_RXSC_AN
|
|
185
|
+
"""
|
|
186
|
+
|
|
187
|
+
self.next_pn = P_MACSEC_RXSC_NEXT_PN(conn, module_id, port_id, rxsc_idx)
|
|
188
|
+
"""Configure RX SC's next expected PN value
|
|
189
|
+
|
|
190
|
+
:type: P_MACSEC_RXSC_NEXT_PN
|
|
191
|
+
"""
|
|
192
|
+
|
|
193
|
+
self.pn = P_MACSEC_RXSC_PN(conn, module_id, port_id, rxsc_idx)
|
|
194
|
+
""" the latest recovered PN for the Rx SC., 64-bit in hex.
|
|
195
|
+
|
|
196
|
+
:type: P_MACSEC_RXSC_PN
|
|
197
|
+
"""
|
|
198
|
+
|
|
161
199
|
|
|
162
200
|
BS = TypeVar("BS")
|
|
163
201
|
|
|
@@ -13,71 +13,7 @@ if typing.TYPE_CHECKING:
|
|
|
13
13
|
from .module_l23_base import ModuleL23
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
D_FAMELY_ID = CapID(1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
|
17
|
-
F_FAMELY_ID = CapID(0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
|
18
16
|
|
|
19
17
|
|
|
20
|
-
CombiTypes = typing.Union[
|
|
21
|
-
ports.POdin1G4S4PCombi,
|
|
22
|
-
ports.POdin10G4S2PCombi,
|
|
23
|
-
]
|
|
24
18
|
|
|
25
|
-
CombiTypesB = typing.Union[
|
|
26
|
-
ports.POdin1G4S4PCombi_b,
|
|
27
|
-
ports.POdin10G4S2PCombi_b,
|
|
28
|
-
]
|
|
29
19
|
|
|
30
|
-
|
|
31
|
-
async def _port_resolver(conn: "itf.IConnection", module_id: int, port_id: int, port_map: typing.Dict[int, typing.Type]) -> typing.Coroutine[typing.Any, typing.Any, CombiTypes]:
|
|
32
|
-
cap = await P_CAPABILITIES(conn, module_id, port_id).get()
|
|
33
|
-
current_port_id = CapID.create_from_capabilities(cap)
|
|
34
|
-
port_type = port_map[current_port_id.to_int()]
|
|
35
|
-
return await port_type(conn, module_id, port_id)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
@typing.final
|
|
39
|
-
@revisions.register_valkyrie_module(rev="Odin-10G-4S-2P-Combi")
|
|
40
|
-
class MOdin10G4S2PCombi(ModuleL23):
|
|
41
|
-
"""Test module Odin-10G-4S-2P-Combi
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
45
|
-
super().__init__(conn, init_data)
|
|
46
|
-
PORTS_MAP = {
|
|
47
|
-
D_FAMELY_ID.to_int(): ports.POdin1G4S4PCombi,
|
|
48
|
-
F_FAMELY_ID.to_int(): ports.POdin10G4S2PCombi,
|
|
49
|
-
}
|
|
50
|
-
self.ports: pm.PortsCombiManager[CombiTypes] = pm.PortsCombiManager(
|
|
51
|
-
conn=conn,
|
|
52
|
-
resolver=functools.partial(_port_resolver, port_map=PORTS_MAP),
|
|
53
|
-
module_id=self.module_id,
|
|
54
|
-
ports_count=self.ports_count
|
|
55
|
-
)
|
|
56
|
-
"""Port Index Manager of Odin-10G-4S-2P-Combi
|
|
57
|
-
|
|
58
|
-
:type: PortsCombiManager
|
|
59
|
-
"""
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
@typing.final
|
|
63
|
-
@revisions.register_valkyrie_module(rev="Odin-10G-4S-2P-Combi[b]")
|
|
64
|
-
class MOdin10G4S2PCombi_b(ModuleL23):
|
|
65
|
-
"""Test module Odin-10G-4S-2P-Combi[b]
|
|
66
|
-
"""
|
|
67
|
-
|
|
68
|
-
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
69
|
-
super().__init__(conn, init_data)
|
|
70
|
-
PORTS_MAP = {
|
|
71
|
-
D_FAMELY_ID.to_int(): ports.POdin1G4S4PCombi_b,
|
|
72
|
-
F_FAMELY_ID.to_int(): ports.POdin10G4S2PCombi_b,
|
|
73
|
-
}
|
|
74
|
-
self.ports: pm.PortsCombiManager[CombiTypesB] = pm.PortsCombiManager(
|
|
75
|
-
conn=conn,
|
|
76
|
-
resolver=functools.partial(_port_resolver, port_map=PORTS_MAP),
|
|
77
|
-
module_id=self.module_id,
|
|
78
|
-
ports_count=self.ports_count
|
|
79
|
-
)
|
|
80
|
-
"""Port Index Manager of Odin-10G-4S-2P-Combi[b]
|
|
81
|
-
|
|
82
|
-
:type: PortsCombiManager
|
|
83
|
-
"""
|
|
@@ -96,4 +96,32 @@ class MLoki100G5S4P_a(ModuleL23):
|
|
|
96
96
|
module_id=self.module_id,
|
|
97
97
|
ports_count=self.ports_count
|
|
98
98
|
)
|
|
99
|
-
"""Port index manager of Loki-100G-5S-4P[a]"""
|
|
99
|
+
"""Port index manager of Loki-100G-5S-4P[a]"""
|
|
100
|
+
|
|
101
|
+
@typing.final
|
|
102
|
+
@revisions.register_valkyrie_module(rev="Loki-100G-5S-1P")
|
|
103
|
+
class MLoki100G5S1P(ModuleL23):
|
|
104
|
+
"""Test module Loki-100G-5S-1P"""
|
|
105
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
106
|
+
super().__init__(conn, init_data)
|
|
107
|
+
self.ports: pm.PortsManager[ports.PLoki100G5S1P] = pm.PortsManager(
|
|
108
|
+
conn=conn,
|
|
109
|
+
ports_type=ports.PLoki100G5S1P,
|
|
110
|
+
module_id=self.module_id,
|
|
111
|
+
ports_count=self.ports_count
|
|
112
|
+
)
|
|
113
|
+
"""Port Index Manager of Loki-100G-5S-1P"""
|
|
114
|
+
|
|
115
|
+
@typing.final
|
|
116
|
+
@revisions.register_valkyrie_module(rev="Loki-100G-5S-2P")
|
|
117
|
+
class MLoki100G5S2P(ModuleL23):
|
|
118
|
+
"""Test module Loki-100G-5S-2P"""
|
|
119
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
120
|
+
super().__init__(conn, init_data)
|
|
121
|
+
self.ports: pm.PortsManager[ports.PLoki100G5S2P] = pm.PortsManager(
|
|
122
|
+
conn=conn,
|
|
123
|
+
ports_type=ports.PLoki100G5S2P,
|
|
124
|
+
module_id=self.module_id,
|
|
125
|
+
ports_count=self.ports_count
|
|
126
|
+
)
|
|
127
|
+
"""Port Index Manager of Loki-100G-5S-2P"""
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
import functools
|
|
3
|
+
from xoa_driver import ports
|
|
4
|
+
from xoa_driver.internals.hli import revisions
|
|
5
|
+
from xoa_driver.internals.utils.managers import ports_manager as pm
|
|
6
|
+
from xoa_driver.internals.utils.cap_id import CapID
|
|
7
|
+
from xoa_driver.internals.commands import P_CAPABILITIES
|
|
8
|
+
|
|
9
|
+
if typing.TYPE_CHECKING:
|
|
10
|
+
from xoa_driver.internals.core import interfaces as itf
|
|
11
|
+
from .. import __interfaces as m_itf
|
|
12
|
+
|
|
13
|
+
from .module_l23_base import ModuleL23
|
|
14
|
+
|
|
15
|
+
D_FAMELY_ID = CapID(1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
|
16
|
+
F_FAMELY_ID = CapID(0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
CombiTypes = typing.Union[
|
|
20
|
+
ports.POdin1G4S4PCombi,
|
|
21
|
+
ports.POdin10G4S2PCombi,
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
CombiTypesB = typing.Union[
|
|
25
|
+
ports.POdin1G4S4PCombi_b,
|
|
26
|
+
ports.POdin10G4S2PCombi_b,
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
async def _port_resolver(conn: "itf.IConnection", module_id: int, port_id: int, port_map: typing.Dict[int, typing.Type]) -> typing.Coroutine[typing.Any, typing.Any, CombiTypes]:
|
|
30
|
+
cap = await P_CAPABILITIES(conn, module_id, port_id).get()
|
|
31
|
+
current_port_id = CapID.create_from_capabilities(cap)
|
|
32
|
+
port_type = port_map[current_port_id.to_int()]
|
|
33
|
+
return await port_type(conn, module_id, port_id)
|
|
34
|
+
|
|
35
|
+
@typing.final
|
|
36
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-4S-2P-Combi")
|
|
37
|
+
class MOdin10G4S2PCombi(ModuleL23):
|
|
38
|
+
"""Test module Odin-10G-4S-2P-Combi
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
42
|
+
super().__init__(conn, init_data)
|
|
43
|
+
PORTS_MAP = {
|
|
44
|
+
D_FAMELY_ID.to_int(): ports.POdin1G4S4PCombi,
|
|
45
|
+
F_FAMELY_ID.to_int(): ports.POdin10G4S2PCombi,
|
|
46
|
+
}
|
|
47
|
+
self.ports: pm.PortsCombiManager[CombiTypes] = pm.PortsCombiManager(
|
|
48
|
+
conn=conn,
|
|
49
|
+
resolver=functools.partial(_port_resolver, port_map=PORTS_MAP),
|
|
50
|
+
module_id=self.module_id,
|
|
51
|
+
ports_count=self.ports_count
|
|
52
|
+
)
|
|
53
|
+
"""Port Index Manager of Odin-10G-4S-2P-Combi
|
|
54
|
+
|
|
55
|
+
:type: PortsCombiManager
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@typing.final
|
|
60
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-4S-2P-Combi[b]")
|
|
61
|
+
class MOdin10G4S2PCombi_b(ModuleL23):
|
|
62
|
+
"""Test module Odin-10G-4S-2P-Combi[b]
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
66
|
+
super().__init__(conn, init_data)
|
|
67
|
+
PORTS_MAP = {
|
|
68
|
+
D_FAMELY_ID.to_int(): ports.POdin1G4S4PCombi_b,
|
|
69
|
+
F_FAMELY_ID.to_int(): ports.POdin10G4S2PCombi_b,
|
|
70
|
+
}
|
|
71
|
+
self.ports: pm.PortsCombiManager[CombiTypesB] = pm.PortsCombiManager(
|
|
72
|
+
conn=conn,
|
|
73
|
+
resolver=functools.partial(_port_resolver, port_map=PORTS_MAP),
|
|
74
|
+
module_id=self.module_id,
|
|
75
|
+
ports_count=self.ports_count
|
|
76
|
+
)
|
|
77
|
+
"""Port Index Manager of Odin-10G-4S-2P-Combi[b]
|
|
78
|
+
|
|
79
|
+
:type: PortsCombiManager
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
@typing.final
|
|
83
|
+
@revisions.register_valkyrie_module(rev="Odin-1G-3S-6P")
|
|
84
|
+
class MOdin1G3S6P(ModuleL23):
|
|
85
|
+
"""Test module Odin-1G-3S-6P"""
|
|
86
|
+
|
|
87
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
88
|
+
super().__init__(conn, init_data)
|
|
89
|
+
self.ports: pm.PortsManager[ports.POdin1G3S6P] = pm.PortsManager(
|
|
90
|
+
conn=conn,
|
|
91
|
+
ports_type=ports.POdin1G3S6P,
|
|
92
|
+
module_id=self.module_id,
|
|
93
|
+
ports_count=self.ports_count
|
|
94
|
+
)
|
|
95
|
+
"""Port Index Manager of Odin-1G-3S-6P"""
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@typing.final
|
|
99
|
+
@revisions.register_valkyrie_module(rev="Odin-1G-3S-6P[b]")
|
|
100
|
+
class MOdin1G3S6P_b(ModuleL23):
|
|
101
|
+
"""Test module Odin-1G-3S-6P[b]"""
|
|
102
|
+
|
|
103
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
104
|
+
super().__init__(conn, init_data)
|
|
105
|
+
self.ports: pm.PortsManager[ports.POdin1G3S6P_b] = pm.PortsManager(
|
|
106
|
+
conn=conn,
|
|
107
|
+
ports_type=ports.POdin1G3S6P_b,
|
|
108
|
+
module_id=self.module_id,
|
|
109
|
+
ports_count=self.ports_count
|
|
110
|
+
)
|
|
111
|
+
"""Port Index Manager of Odin-1G-3S-6P[b]"""
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
@typing.final
|
|
115
|
+
@revisions.register_valkyrie_module(rev="Odin-1G-3S-6P-E")
|
|
116
|
+
class MOdin1G3S6PE(ModuleL23):
|
|
117
|
+
"""Test module Odin-1G-3S-6P-E"""
|
|
118
|
+
|
|
119
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
120
|
+
super().__init__(conn, init_data)
|
|
121
|
+
self.ports: pm.PortsManager[ports.POdin1G3S6PE] = pm.PortsManager(
|
|
122
|
+
conn=conn,
|
|
123
|
+
ports_type=ports.POdin1G3S6PE,
|
|
124
|
+
module_id=self.module_id,
|
|
125
|
+
ports_count=self.ports_count
|
|
126
|
+
)
|
|
127
|
+
"""Port Index Manager of Odin-1G-3S-6P-E"""
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@typing.final
|
|
131
|
+
@revisions.register_valkyrie_module(rev="Odin-1G-3S-2P-T")
|
|
132
|
+
class MOdin1G3S2PT(ModuleL23):
|
|
133
|
+
"""Test module Odin-1G-3S-2P-T"""
|
|
134
|
+
|
|
135
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
136
|
+
super().__init__(conn, init_data)
|
|
137
|
+
self.ports: pm.PortsManager[ports.POdin1G3S2PT] = pm.PortsManager(
|
|
138
|
+
conn=conn,
|
|
139
|
+
ports_type=ports.POdin1G3S2PT,
|
|
140
|
+
module_id=self.module_id,
|
|
141
|
+
ports_count=self.ports_count
|
|
142
|
+
)
|
|
143
|
+
"""Port Index Manager of Odin-1G-3S-2P-T"""
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
@typing.final
|
|
147
|
+
@revisions.register_valkyrie_module(rev="Odin-5G-4S-6P-CU")
|
|
148
|
+
class MOdin5G4S6PCU(ModuleL23):
|
|
149
|
+
"""Test module Odin-5G-4S-6P-CU"""
|
|
150
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
151
|
+
super().__init__(conn, init_data)
|
|
152
|
+
self.ports: pm.PortsManager[ports.POdin5G4S6PCU] = pm.PortsManager(
|
|
153
|
+
conn=conn,
|
|
154
|
+
ports_type=ports.POdin5G4S6PCU,
|
|
155
|
+
module_id=self.module_id,
|
|
156
|
+
ports_count=self.ports_count
|
|
157
|
+
)
|
|
158
|
+
"""Port Index Manager of Odin-5G-4S-6P-CU"""
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
@typing.final
|
|
162
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-5S-6P-CU")
|
|
163
|
+
class MOdin10G5S6PCU(ModuleL23):
|
|
164
|
+
"""Test module Odin-10G-5S-6P-CU"""
|
|
165
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
166
|
+
super().__init__(conn, init_data)
|
|
167
|
+
self.ports: pm.PortsManager[ports.POdin10G5S6PCU] = pm.PortsManager(
|
|
168
|
+
conn=conn,
|
|
169
|
+
ports_type=ports.POdin10G5S6PCU,
|
|
170
|
+
module_id=self.module_id,
|
|
171
|
+
ports_count=self.ports_count
|
|
172
|
+
)
|
|
173
|
+
"""Port Index Manager of Odin-10G-5S-6P-CU"""
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
@typing.final
|
|
177
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-5S-6P-CU[b]")
|
|
178
|
+
class MOdin10G5S6PCU_b(ModuleL23):
|
|
179
|
+
"""Test module Odin-10G-5S-6P-CU[b]"""
|
|
180
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
181
|
+
super().__init__(conn, init_data)
|
|
182
|
+
self.ports: pm.PortsManager[ports.POdin10G5S6PCU_b] = pm.PortsManager(
|
|
183
|
+
conn=conn,
|
|
184
|
+
ports_type=ports.POdin10G5S6PCU_b,
|
|
185
|
+
module_id=self.module_id,
|
|
186
|
+
ports_count=self.ports_count
|
|
187
|
+
)
|
|
188
|
+
"""Port Index Manager of Odin-10G-5S-6P-CU[b]"""
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
@typing.final
|
|
192
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-3S-6P-CU")
|
|
193
|
+
class MOdin10G3S6PCU(ModuleL23):
|
|
194
|
+
"""Test module Odin-10G-3S-6P-CU"""
|
|
195
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
196
|
+
super().__init__(conn, init_data)
|
|
197
|
+
self.ports: pm.PortsManager[ports.POdin10G3S6PCU] = pm.PortsManager(
|
|
198
|
+
conn=conn,
|
|
199
|
+
ports_type=ports.POdin10G3S6PCU,
|
|
200
|
+
module_id=self.module_id,
|
|
201
|
+
ports_count=self.ports_count
|
|
202
|
+
)
|
|
203
|
+
"""Port Index Manager of Odin-10G-3S-6P-CU"""
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
@typing.final
|
|
207
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-3S-2P-CU")
|
|
208
|
+
class MOdin10G3S2PCU(ModuleL23):
|
|
209
|
+
"""Test module Odin-10G-3S-2P-CU"""
|
|
210
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
211
|
+
super().__init__(conn, init_data)
|
|
212
|
+
self.ports: pm.PortsManager[ports.POdin10G3S2PCU] = pm.PortsManager(
|
|
213
|
+
conn=conn,
|
|
214
|
+
ports_type=ports.POdin10G3S2PCU,
|
|
215
|
+
module_id=self.module_id,
|
|
216
|
+
ports_count=self.ports_count
|
|
217
|
+
)
|
|
218
|
+
"""Port Index Manager of Odin-10G-3S-2P-CU"""
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
@typing.final
|
|
222
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-1S-2P")
|
|
223
|
+
class MOdin10G1S2P(ModuleL23):
|
|
224
|
+
"""Test module Odin-10G-1S-2P"""
|
|
225
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
226
|
+
super().__init__(conn, init_data)
|
|
227
|
+
self.ports: pm.PortsManager[ports.POdin10G1S2P] = pm.PortsManager(
|
|
228
|
+
conn=conn,
|
|
229
|
+
ports_type=ports.POdin10G1S2P,
|
|
230
|
+
module_id=self.module_id,
|
|
231
|
+
ports_count=self.ports_count
|
|
232
|
+
)
|
|
233
|
+
"""Port Index Manager of Odin-10G-1S-2P"""
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
@typing.final
|
|
237
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-1S-2P[b]")
|
|
238
|
+
class MOdin10G1S2P_b(ModuleL23):
|
|
239
|
+
"""Test module Odin-10G-1S-2P[b]"""
|
|
240
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
241
|
+
super().__init__(conn, init_data)
|
|
242
|
+
self.ports: pm.PortsManager[ports.POdin10G1S2P_b] = pm.PortsManager(
|
|
243
|
+
conn=conn,
|
|
244
|
+
ports_type=ports.POdin10G1S2P_b,
|
|
245
|
+
module_id=self.module_id,
|
|
246
|
+
ports_count=self.ports_count
|
|
247
|
+
)
|
|
248
|
+
"""Port Index Manager of Odin-10G-1S-2P[b]"""
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
@typing.final
|
|
252
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-1S-2P[c]")
|
|
253
|
+
class MOdin10G1S2P_c(ModuleL23):
|
|
254
|
+
"""Test module Odin-10G-1S-2P[c]"""
|
|
255
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
256
|
+
super().__init__(conn, init_data)
|
|
257
|
+
self.ports: pm.PortsManager[ports.POdin10G1S2P_c] = pm.PortsManager(
|
|
258
|
+
conn=conn,
|
|
259
|
+
ports_type=ports.POdin10G1S2P_c,
|
|
260
|
+
module_id=self.module_id,
|
|
261
|
+
ports_count=self.ports_count
|
|
262
|
+
)
|
|
263
|
+
"""Port Index Manager of Odin-10G-1S-2P[c]"""
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
@typing.final
|
|
267
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-1S-6P")
|
|
268
|
+
class MOdin10G1S6P(ModuleL23):
|
|
269
|
+
"""Test module Odin-10G-1S-6P"""
|
|
270
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
271
|
+
super().__init__(conn, init_data)
|
|
272
|
+
self.ports: pm.PortsManager[ports.POdin10G1S6P] = pm.PortsManager(
|
|
273
|
+
conn=conn,
|
|
274
|
+
ports_type=ports.POdin10G1S6P,
|
|
275
|
+
module_id=self.module_id,
|
|
276
|
+
ports_count=self.ports_count
|
|
277
|
+
)
|
|
278
|
+
"""Port Index Manager of Odin-10G-1S-6P"""
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
@typing.final
|
|
282
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-1S-6P[b]")
|
|
283
|
+
class MOdin10G1S6P_b(ModuleL23):
|
|
284
|
+
"""Test module Odin-10G-1S-6P[b]"""
|
|
285
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
286
|
+
super().__init__(conn, init_data)
|
|
287
|
+
self.ports: pm.PortsManager[ports.POdin10G1S6P_b] = pm.PortsManager(
|
|
288
|
+
conn=conn,
|
|
289
|
+
ports_type=ports.POdin10G1S6P_b,
|
|
290
|
+
module_id=self.module_id,
|
|
291
|
+
ports_count=self.ports_count
|
|
292
|
+
)
|
|
293
|
+
"""Port Index Manager of Odin-10G-1S-6P[b]"""
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
@typing.final
|
|
297
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-1S-2P-T")
|
|
298
|
+
class MOdin10G1S2PT(ModuleL23):
|
|
299
|
+
"""Test module Odin-10G-1S-2P-T"""
|
|
300
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
301
|
+
super().__init__(conn, init_data)
|
|
302
|
+
self.ports: pm.PortsManager[ports.POdin10G1S2PT] = pm.PortsManager(
|
|
303
|
+
conn=conn,
|
|
304
|
+
ports_type=ports.POdin10G1S2PT,
|
|
305
|
+
module_id=self.module_id,
|
|
306
|
+
ports_count=self.ports_count
|
|
307
|
+
)
|
|
308
|
+
"""Port Index Manager of Odin-10G-1S-2P-T"""
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
@typing.final
|
|
312
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-1S-2P[d]")
|
|
313
|
+
class MOdin10G1S2P_d(ModuleL23):
|
|
314
|
+
"""Test module Odin-10G-1S-2P[d]"""
|
|
315
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
316
|
+
super().__init__(conn, init_data)
|
|
317
|
+
self.ports: pm.PortsManager[ports.POdin10G1S2P_d] = pm.PortsManager(
|
|
318
|
+
conn=conn,
|
|
319
|
+
ports_type=ports.POdin10G1S2P_d,
|
|
320
|
+
module_id=self.module_id,
|
|
321
|
+
ports_count=self.ports_count
|
|
322
|
+
)
|
|
323
|
+
"""Port Index Manager of Odin-10G-1S-2P[d]"""
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
@typing.final
|
|
327
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-1S-12P")
|
|
328
|
+
class MOdin10G1S12P(ModuleL23):
|
|
329
|
+
"""Test module Odin-10G-1S-12P"""
|
|
330
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
331
|
+
super().__init__(conn, init_data)
|
|
332
|
+
self.ports: pm.PortsManager[ports.POdin10G1S12P] = pm.PortsManager(
|
|
333
|
+
conn=conn,
|
|
334
|
+
ports_type=ports.POdin10G1S12P,
|
|
335
|
+
module_id=self.module_id,
|
|
336
|
+
ports_count=self.ports_count
|
|
337
|
+
)
|
|
338
|
+
"""Port Index Manager Odin-10G-1S-12P"""
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
@typing.final
|
|
342
|
+
@revisions.register_valkyrie_module(rev="Odin-10G-6S-6P[a]")
|
|
343
|
+
class MOdin10G6S6P_a(ModuleL23):
|
|
344
|
+
"""Test module Odin-10G-6S-6P[a]"""
|
|
345
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
346
|
+
super().__init__(conn, init_data)
|
|
347
|
+
self.ports: pm.PortsManager[ports.POdin10G6S6P_a] = pm.PortsManager(
|
|
348
|
+
conn=conn,
|
|
349
|
+
ports_type=ports.POdin10G6S6P_a,
|
|
350
|
+
module_id=self.module_id,
|
|
351
|
+
ports_count=self.ports_count
|
|
352
|
+
)
|
|
353
|
+
"""Port Index Manager Odin-10G-6S-6P[a]"""
|
|
354
|
+
|
|
355
|
+
@typing.final
|
|
356
|
+
@revisions.register_valkyrie_module(rev="Odin-100G-3S-1P")
|
|
357
|
+
class MOdin100G3S1P(ModuleL23):
|
|
358
|
+
"""Test module Odin-100G-3S-1P"""
|
|
359
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
360
|
+
super().__init__(conn, init_data)
|
|
361
|
+
self.ports: pm.PortsManager[ports.POdin100G3S1P] = pm.PortsManager(
|
|
362
|
+
conn=conn,
|
|
363
|
+
ports_type=ports.POdin100G3S1P,
|
|
364
|
+
module_id=self.module_id,
|
|
365
|
+
ports_count=self.ports_count
|
|
366
|
+
)
|
|
367
|
+
"""Port Index Manager of Odin-100G-3S-1P"""
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
@typing.final
|
|
371
|
+
@revisions.register_valkyrie_module(rev="Odin-1G-3S-6P-T1-RJ45")
|
|
372
|
+
class MOdin1G3S6PT1RJ45(ModuleL23):
|
|
373
|
+
"""Test module Odin-1G-3S-6P-T1-RJ45"""
|
|
374
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
375
|
+
super().__init__(conn, init_data)
|
|
376
|
+
self.ports: pm.PortsManager[ports.POdin1G3S6PT1RJ45] = pm.PortsManager(
|
|
377
|
+
conn=conn,
|
|
378
|
+
ports_type=ports.POdin1G3S6PT1RJ45,
|
|
379
|
+
module_id=self.module_id,
|
|
380
|
+
ports_count=self.ports_count
|
|
381
|
+
)
|
|
382
|
+
"""Port Index Manager of Odin-1G-3S-6P-T1-RJ45"""
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
@typing.final
|
|
386
|
+
@revisions.register_valkyrie_module(rev="Odin-40G-2S-2P")
|
|
387
|
+
class MOdin40G2S2P(ModuleL23):
|
|
388
|
+
"""Test module Odin-40G-2S-2P"""
|
|
389
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
390
|
+
super().__init__(conn, init_data)
|
|
391
|
+
self.ports: pm.PortsManager[ports.POdin40G2S2P] = pm.PortsManager(
|
|
392
|
+
conn=conn,
|
|
393
|
+
ports_type=ports.POdin40G2S2P,
|
|
394
|
+
module_id=self.module_id,
|
|
395
|
+
ports_count=self.ports_count
|
|
396
|
+
)
|
|
397
|
+
"""Port Index Manager of Odin-40G-2S-2P"""
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
@typing.final
|
|
401
|
+
@revisions.register_valkyrie_module(rev="Odin-40G-2S-2P-B")
|
|
402
|
+
class MOdin40G2S2PB(ModuleL23):
|
|
403
|
+
"""Test module Odin-40G-2S-2P-B"""
|
|
404
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
405
|
+
super().__init__(conn, init_data)
|
|
406
|
+
self.ports: pm.PortsManager[ports.POdin40G2S2PB] = pm.PortsManager(
|
|
407
|
+
conn=conn,
|
|
408
|
+
ports_type=ports.POdin40G2S2PB,
|
|
409
|
+
module_id=self.module_id,
|
|
410
|
+
ports_count=self.ports_count
|
|
411
|
+
)
|
|
412
|
+
"""Port Index Manager of Odin-40G-2S-2P-B"""
|