tdl-xoa-driver 1.6.0__py3-none-any.whl → 1.6.2__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 (24) hide show
  1. {tdl_xoa_driver-1.6.0.dist-info → tdl_xoa_driver-1.6.2.dist-info}/METADATA +1 -1
  2. {tdl_xoa_driver-1.6.0.dist-info → tdl_xoa_driver-1.6.2.dist-info}/RECORD +24 -22
  3. {tdl_xoa_driver-1.6.0.dist-info → tdl_xoa_driver-1.6.2.dist-info}/licenses/LICENSE +1 -1
  4. xoa_driver/__init__.py +1 -1
  5. xoa_driver/internals/hli/ports/port_l23/bases/__init__.py +0 -0
  6. xoa_driver/internals/hli/ports/port_l23/bases/port_l23.py +267 -0
  7. xoa_driver/internals/hli/ports/port_l23/{trafficgen → bases}/port_l23_genuine.py +8 -17
  8. xoa_driver/internals/hli/ports/port_l23/{port_l23ve.py → bases/port_l23ve.py} +3 -3
  9. xoa_driver/internals/hli/ports/port_l23/family_edun.py +1 -1
  10. xoa_driver/internals/hli/ports/port_l23/family_freya.py +1 -1
  11. xoa_driver/internals/hli/ports/port_l23/family_loki.py +1 -1
  12. xoa_driver/internals/hli/ports/port_l23/family_odin.py +1 -1
  13. xoa_driver/internals/hli/ports/port_l23/family_thor.py +1 -1
  14. xoa_driver/internals/hli/ports/port_l23/layer1_edun.py +2 -2
  15. xoa_driver/internals/hli/ports/port_l23/layer1_freya.py +2 -2
  16. xoa_driver/internals/hli/ports/port_l23/layer1_loki.py +1 -1
  17. xoa_driver/internals/hli/ports/port_l23/layer1_thor.py +1 -1
  18. xoa_driver/internals/hli/ports/port_l23/trafficgen/{port_l23.py → tgen.py} +31 -213
  19. xoa_driver/ports.py +2 -2
  20. {tdl_xoa_driver-1.6.0.dist-info → tdl_xoa_driver-1.6.2.dist-info}/WHEEL +0 -0
  21. {tdl_xoa_driver-1.6.0.dist-info → tdl_xoa_driver-1.6.2.dist-info}/top_level.txt +0 -0
  22. /xoa_driver/internals/hli/ports/port_l23/trafficgen/{port_capture.py → capture.py} +0 -0
  23. /xoa_driver/internals/hli/ports/port_l23/trafficgen/{port_rx_stats.py → rx_stats.py} +0 -0
  24. /xoa_driver/internals/hli/ports/port_l23/trafficgen/{port_tx_stats.py → tx_stats.py} +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tdl-xoa-driver
3
- Version: 1.6.0
3
+ Version: 1.6.2
4
4
  Summary: TDL XOA Python API is a Python library providing user-friendly communication interfaces to Teledyne LeCroy Xena Ethernet traffic generation test equipment. It provides a rich collection of APIs that can be used to either write test scripts or develop applications.
5
5
  Home-page: https://github.com/xenanetworks/tdl-xoa-driver
6
6
  Author: Leonard Yu, Zoltan Hanisch
@@ -1,12 +1,12 @@
1
- tdl_xoa_driver-1.6.0.dist-info/licenses/LICENSE,sha256=Oc3Sih78tKR5tfTaIGcU3qytyX6JAzzAUlwW-qQaRaQ,11351
2
- xoa_driver/__init__.py,sha256=0mPmk_kWNa01i2iWdlHAT3iDgEBFtyptYPDRrfnN3P0,47
1
+ tdl_xoa_driver-1.6.2.dist-info/licenses/LICENSE,sha256=KcCGoRYa8BS0KGUIHDIAeebClL6sX1uRWVrtESwpjOo,11351
2
+ xoa_driver/__init__.py,sha256=BJtNZvzVxeMeeNgbM1nJZfXQM5-92oTAzf7iLMPcM5g,47
3
3
  xoa_driver/enums.py,sha256=qmRAxCh_nYCP-Va5YeGR7PO3d3Dueg44vtnzUohuGS0,8579
4
4
  xoa_driver/exceptions.py,sha256=baNpophPmeNujMTSfL9TsYHa3Gju2-ozNOg78n8tqN8,1957
5
5
  xoa_driver/hlfuncs.py,sha256=tfyhbYX86XWpc4yFoBrj1OYqVJJfDnoxC6tHLlWTHkQ,311
6
6
  xoa_driver/lli.py,sha256=PyT7DT9KxIM8PMw1JMu80J_KIifMPlCg9gd47J7SIjs,434
7
7
  xoa_driver/misc.py,sha256=JBFOiKU1z7DB99HXEDv-tiFM5PvNqNkcT7AxJXZ4lPk,1968
8
8
  xoa_driver/modules.py,sha256=sj7MeLNPqgPFtZU40WdrOQ7tV_WEFXCQfJ3FGnsE-BQ,10287
9
- xoa_driver/ports.py,sha256=v-WU212_EUrs2h7Hds-SQIItpADbrtWxMOkG_7PUUow,6907
9
+ xoa_driver/ports.py,sha256=TIn0Bqce7VWtm1p2w0s1lg-hVw48euOzu96tJXcVpx0,6908
10
10
  xoa_driver/testers.py,sha256=Wkjjl0880Qy7ZDULMKrKzsKKxPm_M1BcsTyms42teXs,743
11
11
  xoa_driver/utils.py,sha256=T1zjazXNDXOXFZV9KYBdHkCy3aXbZPeuep1B-QhOdBw,168
12
12
  xoa_driver/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -139,16 +139,19 @@ xoa_driver/internals/hli/modules/modules_l23/module_l23_base.py,sha256=TIB77QUNf
139
139
  xoa_driver/internals/hli/ports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
140
  xoa_driver/internals/hli/ports/base_port.py,sha256=8p25Wh2lTd9CEFueuhm-y8yvNMIW8yoz6oUxVbWlFC8,3646
141
141
  xoa_driver/internals/hli/ports/port_l23/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- xoa_driver/internals/hli/ports/port_l23/family_edun.py,sha256=xPImEmcJt6tQdrXnE-XQDeyA2vs7BbF8NYh1L7M7S1o,1243
143
- xoa_driver/internals/hli/ports/port_l23/family_freya.py,sha256=p3E52vqtEdKbW1HgEwovwmlaBo-PQ-_01wvAc-7izrM,2833
144
- xoa_driver/internals/hli/ports/port_l23/family_loki.py,sha256=GbcoknAsT0FKslA7InxxIzDEO1YcZlCLTD8c3B1pupY,2062
145
- xoa_driver/internals/hli/ports/port_l23/family_odin.py,sha256=qgxY4y6vczhSEaJdlgurOpZJludk-KvK7wdop3BH52c,4944
146
- xoa_driver/internals/hli/ports/port_l23/family_thor.py,sha256=CVVR7VqbqaYg1MgC5mJmOnoD-F3iLDwd8IChTecuK5c,1605
147
- xoa_driver/internals/hli/ports/port_l23/layer1_edun.py,sha256=ouRcetXi6yv-CN3k0nI6lUwrHhvtZyvw6iYoMt2iets,3142
148
- xoa_driver/internals/hli/ports/port_l23/layer1_freya.py,sha256=zbZ9TSW-p-ZsAR5viN565UVjqW-Y4UOerXzabMdPvXI,3267
149
- xoa_driver/internals/hli/ports/port_l23/layer1_loki.py,sha256=HEn4_ijU6hcz0IoQdYGvLNOCHsw_ECFixnBX0w0APrY,2233
150
- xoa_driver/internals/hli/ports/port_l23/layer1_thor.py,sha256=OJZtWbn3NLxqc8YIYgWrYmXIb8xdesMWU1qv9-2Vzzg,2224
151
- xoa_driver/internals/hli/ports/port_l23/port_l23ve.py,sha256=ft3FGYcWIPYKGv4jm5YBSKk60r00g9xIsqwISoJ79Rw,2992
142
+ xoa_driver/internals/hli/ports/port_l23/family_edun.py,sha256=HxsbDBJicobUFqcLGPAwYD5T6qaAgTi-m-cj4JjfSs4,1238
143
+ xoa_driver/internals/hli/ports/port_l23/family_freya.py,sha256=0IHBp0HrguZpKdZTpirPLbPw2NbllW1AOE11mBSCx5s,2828
144
+ xoa_driver/internals/hli/ports/port_l23/family_loki.py,sha256=GA9Xt8XaH6nEHnZ6n88irTmChoH-yIKMbDe7NIQSbT4,2057
145
+ xoa_driver/internals/hli/ports/port_l23/family_odin.py,sha256=aDicYULaIpta5MJ-pCkbInFewcBWWSEqTKED5ytbzP0,4939
146
+ xoa_driver/internals/hli/ports/port_l23/family_thor.py,sha256=AmvOB_7csbvr-KIKXPIRuzfMXHBbSbdnmmiU79k-tBs,1600
147
+ xoa_driver/internals/hli/ports/port_l23/layer1_edun.py,sha256=JjC56MUwie5qq1DtPZdepBrpA7sCCBgNw4NdzOZcVes,3134
148
+ xoa_driver/internals/hli/ports/port_l23/layer1_freya.py,sha256=bpYGVQZSh1Xroz734cWPiF2LVW-2MFreUlMB-L4GmF8,3259
149
+ xoa_driver/internals/hli/ports/port_l23/layer1_loki.py,sha256=NvvwpDIRfizv5sDjTsuwyZGrvkL-nvsu8c5YXpBl0Yk,2229
150
+ xoa_driver/internals/hli/ports/port_l23/layer1_thor.py,sha256=_D6VgDzMfCIHK6yNRebHUjpn6KiI3MllAVxh3CRKzBU,2220
151
+ xoa_driver/internals/hli/ports/port_l23/bases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
+ xoa_driver/internals/hli/ports/port_l23/bases/port_l23.py,sha256=Yp2_7NI7dnki2C01Jr2kGZQ0mcxZJhzx4mHm_qt_tv0,6761
153
+ xoa_driver/internals/hli/ports/port_l23/bases/port_l23_genuine.py,sha256=h_IbIwOehkqkTzVw8cXoXOFJNZGBRFOpyeG6A07KLKw,5115
154
+ xoa_driver/internals/hli/ports/port_l23/bases/port_l23ve.py,sha256=BeTQG9ehAcrg0rfR1SSMvN9L-UoAIYDdiA175sDINlM,2973
152
155
  xoa_driver/internals/hli/ports/port_l23/chimera/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
156
  xoa_driver/internals/hli/ports/port_l23/chimera/pe_custom_distribution.py,sha256=hQ7IbqWjMuLqhtdBiN2rUSJpNmaaqfcZn6ZP2qA6gPM,3763
154
157
  xoa_driver/internals/hli/ports/port_l23/chimera/pe_distribution.py,sha256=o4JrDRm83ict_uJHTDgOrd_Q6ru-Q6GdKnPSqhr5PAg,5970
@@ -181,12 +184,11 @@ xoa_driver/internals/hli/ports/port_l23/tcvr/__init__.py,sha256=47DEQpj8HBSa-_TI
181
184
  xoa_driver/internals/hli/ports/port_l23/tcvr/cmis.py,sha256=gqCRk6JFbU4waol2zEaaORWvQE3IIrT-ASHm-DFUl-U,5713
182
185
  xoa_driver/internals/hli/ports/port_l23/tcvr/transceiver.py,sha256=MzX2p109NyFKz4lhEyT6MAOQZ7uDCeJpM6Sx2rPcm84,4459
183
186
  xoa_driver/internals/hli/ports/port_l23/trafficgen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
- xoa_driver/internals/hli/ports/port_l23/trafficgen/port_capture.py,sha256=mH_yPZW_3lTX9n1NTCMQlIixd5BWcb5VRfCrtpzY8I8,1955
185
- xoa_driver/internals/hli/ports/port_l23/trafficgen/port_l23.py,sha256=5QvtKSx2Wawhx4fQzqaE8CmynBDtIHTQjOhINoK5Lm0,13897
186
- xoa_driver/internals/hli/ports/port_l23/trafficgen/port_l23_genuine.py,sha256=oTnHyVoe_nHbksnbINM7anqURuGYkLD1hYGQ9CJzgTM,5347
187
- xoa_driver/internals/hli/ports/port_l23/trafficgen/port_rx_stats.py,sha256=cIn-TU13WCOKPWrzeX0nUskII_rN2kNuZmU4ASWOfsY,5617
188
- xoa_driver/internals/hli/ports/port_l23/trafficgen/port_tx_stats.py,sha256=VU9whbQl5v1BoFbjvqOrjxAh_n6VGwzyMs8FpWevLCg,3121
187
+ xoa_driver/internals/hli/ports/port_l23/trafficgen/capture.py,sha256=mH_yPZW_3lTX9n1NTCMQlIixd5BWcb5VRfCrtpzY8I8,1955
189
188
  xoa_driver/internals/hli/ports/port_l23/trafficgen/runt.py,sha256=VuxgV2piV57hUlDKcO2sucYwhwpsVO3nwiE1qvexo6g,849
189
+ xoa_driver/internals/hli/ports/port_l23/trafficgen/rx_stats.py,sha256=cIn-TU13WCOKPWrzeX0nUskII_rN2kNuZmU4ASWOfsY,5617
190
+ xoa_driver/internals/hli/ports/port_l23/trafficgen/tgen.py,sha256=vhjTH3VP5SLT0vrd9GEb6HnLLOt0iPaKDWNhzfcg8aE,9377
191
+ xoa_driver/internals/hli/ports/port_l23/trafficgen/tx_stats.py,sha256=VU9whbQl5v1BoFbjvqOrjxAh_n6VGwzyMs8FpWevLCg,3121
190
192
  xoa_driver/internals/hli/ports/port_l47/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
193
  xoa_driver/internals/hli/ports/port_l47/counters.py,sha256=jWeE-aLajVs_R1QIMCIumSYxEYMNezZ2IjElek-__M0,5816
192
194
  xoa_driver/internals/hli/ports/port_l47/main.py,sha256=THEqV_SJaEtHwj0Nyd-KG3N1xP0Ck6zc5WzUA12Y188,6376
@@ -226,7 +228,7 @@ xoa_driver/internals/utils/managers/abc.py,sha256=M3XgI2FVQLUXixS5SKnZTm0MweHY6D
226
228
  xoa_driver/internals/utils/managers/exceptions.py,sha256=fqLSin-OQCIKuhpzvK6RZThF3FJ8FsHers4EmqM9gSs,628
227
229
  xoa_driver/internals/utils/managers/modules_manager.py,sha256=sCEhqUu7Waot16rucJ5nI9FyHuFEeU_sBx1JjZdhDJg,3236
228
230
  xoa_driver/internals/utils/managers/ports_manager.py,sha256=cmXGWMVbHB27E7e0t-K9mUDessdU_t_v-6WUtpqbIho,3554
229
- tdl_xoa_driver-1.6.0.dist-info/METADATA,sha256=quZ6mQf8QYc_yWxkHY0SOgFqB3eNuNu5DrTx0Xxrkag,4176
230
- tdl_xoa_driver-1.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
231
- tdl_xoa_driver-1.6.0.dist-info/top_level.txt,sha256=sBbN3hwpa4s2VxsUBoWJ5jIqqDr50vgcEb-V8kL7pvE,11
232
- tdl_xoa_driver-1.6.0.dist-info/RECORD,,
231
+ tdl_xoa_driver-1.6.2.dist-info/METADATA,sha256=-oC1ibfLF2P3oodLq3pCePMCgzL9H54WwixWlf6sJbo,4176
232
+ tdl_xoa_driver-1.6.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
233
+ tdl_xoa_driver-1.6.2.dist-info/top_level.txt,sha256=sBbN3hwpa4s2VxsUBoWJ5jIqqDr50vgcEb-V8kL7pvE,11
234
+ tdl_xoa_driver-1.6.2.dist-info/RECORD,,
@@ -187,7 +187,7 @@
187
187
  same "printed page" as the copyright notice for easier
188
188
  identification within third-party archives.
189
189
 
190
- Copyright 2025 Teledyne LeCroy Xena
190
+ Copyright 2026 Teledyne LeCroy Xena
191
191
 
192
192
  Licensed under the Apache License, Version 2.0 (the "License");
193
193
  you may not use this file except in compliance with the License.
xoa_driver/__init__.py CHANGED
@@ -1,2 +1,2 @@
1
- __version__ = "1.6.0"
1
+ __version__ = "1.6.2"
2
2
  __short_version__ = "1.6"
@@ -0,0 +1,267 @@
1
+ import functools
2
+ import typing
3
+ from xoa_driver.internals.commands import (
4
+ P_CAPABILITIES,
5
+ P_SPEED,
6
+ P_SPEEDREDUCTION,
7
+ P_INTERFRAMEGAP,
8
+ P_MACADDRESS,
9
+ P_IPADDRESS,
10
+ P_ARPREPLY,
11
+ P_PINGREPLY,
12
+ P_PAUSE,
13
+ P_RANDOMSEED,
14
+ P_LOOPBACK,
15
+ P_TRAFFIC,
16
+ # P_CAPTURE,
17
+ P_XMITONE,
18
+ P_LATENCYOFFSET,
19
+ P_LATENCYMODE,
20
+ P_AUTOTRAIN,
21
+ P_MIXWEIGHTS,
22
+ P_TRAFFICERR,
23
+ P_GAPMONITOR,
24
+ P_CHECKSUM,
25
+ P_MIXLENGTH,
26
+ P_ARPRXTABLE,
27
+ P_NDPRXTABLE,
28
+ P_MULTICAST,
29
+ P_MULTICASTEXT,
30
+ P_MCSRCLIST,
31
+ P_MULTICASTHDR,
32
+ P_TXMODE,
33
+ P_RATEFRACTION,
34
+ P_RATEPPS,
35
+ P_RATEL2BPS,
36
+ P_PAYLOADMODE,
37
+ P_TXENABLE,
38
+ P_MAXHEADERLENGTH,
39
+ P_TXTIMELIMIT,
40
+ P_TXTIME,
41
+ P_XMITONETIME,
42
+ P_IPV6ADDRESS,
43
+ P_ARPV6REPLY,
44
+ P_PINGV6REPLY,
45
+ P_ERRORS,
46
+ P_TXPREPARE,
47
+ P_TXDELAY,
48
+ P_TPLDMODE,
49
+ P_TXPACKETLIMIT,
50
+ P_PFCENABLE,
51
+ P_TXBURSTPERIOD,
52
+ P_CAPABILITIES_EXT,
53
+ P_IGMPV3_GROUP_RECORD_BUNDLE,
54
+ P_USED_TPLDID,
55
+ )
56
+ if typing.TYPE_CHECKING:
57
+ from xoa_driver.internals.core import interfaces as itf
58
+ from xoa_driver.internals.hli.ports import base_port
59
+ from xoa_driver.internals.utils import attributes as utils
60
+ from xoa_driver.internals.utils.indices import index_manager as idx_mgr
61
+ from xoa_driver.internals.state_storage import ports_state
62
+ from xoa_driver.internals.hli.indices.length_term import LengthTermIdx
63
+ from xoa_driver.internals.hli.indices.match_term import MatchTermIdx
64
+
65
+ from ..trafficgen.capture import PortCapture
66
+ from ..trafficgen.tgen import *
67
+
68
+ LengthTermIndices = idx_mgr.IndexManager[LengthTermIdx]
69
+ MatchTermIndices = idx_mgr.IndexManager[MatchTermIdx]
70
+
71
+
72
+ class BasePortL23(base_port.BasePort[ports_state.PortL23LocalState]):
73
+ """L23 port layout which is relevant to all L23 ports."""
74
+
75
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
76
+ super().__init__(conn, module_id, port_id)
77
+ self.capabilities = P_CAPABILITIES(conn, module_id, port_id)
78
+ """L23 Port capabilities
79
+
80
+ :type: P_CAPABILITIES
81
+ """
82
+
83
+ self.capabilities_ext = P_CAPABILITIES_EXT(conn, module_id, port_id)
84
+ """L23 port capabilities ext.
85
+
86
+ :type: P_CAPABILITIES_EXT
87
+ """
88
+
89
+ self.pause = P_PAUSE(conn, module_id, port_id)
90
+ """L23 port response to Ethernet PAUSE frames.
91
+
92
+ :type: P_PAUSE
93
+ """
94
+
95
+ self.loopback = P_LOOPBACK(conn, module_id, port_id)
96
+ """L23 port loopback mode.
97
+
98
+ :type: P_LOOPBACK
99
+ """
100
+
101
+ self.errors_count = P_ERRORS(conn, module_id, port_id)
102
+ """L23 port errors.
103
+
104
+ :type: P_ERRORS
105
+ """
106
+
107
+ self.interframe_gap = P_INTERFRAMEGAP(conn, module_id, port_id)
108
+ """L23 port interframe gap.
109
+
110
+ :type: P_INTERFRAMEGAP
111
+ """
112
+
113
+ self.max_header_length = P_MAXHEADERLENGTH(conn, module_id, port_id)
114
+ """L23 port maximum header length.
115
+
116
+ :type: P_MAXHEADERLENGTH
117
+ """
118
+
119
+ self.tpld_mode = P_TPLDMODE(conn, module_id, port_id)
120
+ """L23 port test payload mode.
121
+
122
+ :type: P_TPLDMODE
123
+ """
124
+
125
+ self.pfc_enable = P_PFCENABLE(conn, module_id, port_id)
126
+ """L23 port Ethernet Priority Flow Control (PFC).
127
+
128
+ :type: P_PFCENABLE
129
+ """
130
+
131
+ self.random_seed = P_RANDOMSEED(conn, module_id, port_id)
132
+ """L23 port seed value.
133
+
134
+ :type: P_RANDOMSEED
135
+ """
136
+
137
+ self.payload_mode = P_PAYLOADMODE(conn, module_id, port_id)
138
+ """L23 port payload mode.
139
+
140
+ :type: P_PAYLOADMODE
141
+ """
142
+
143
+ self.gap_monitor = P_GAPMONITOR(conn, module_id, port_id)
144
+ """L23 port gap monitor.
145
+
146
+ :type: P_GAPMONITOR
147
+ """
148
+
149
+ self.checksum = P_CHECKSUM(conn, module_id, port_id)
150
+ """L23 port extra payload integrity checksum.
151
+
152
+ :type: P_CHECKSUM
153
+ """
154
+
155
+ self.arp_rx_table = P_ARPRXTABLE(conn, module_id, port_id)
156
+ """L23 port ARP table.
157
+
158
+ :type: P_ARPRXTABLE
159
+ """
160
+
161
+ self.ndp_rx_table = P_NDPRXTABLE(conn, module_id, port_id)
162
+ """L23 port NDP table.
163
+
164
+ :type: P_NDPRXTABLE
165
+ """
166
+
167
+ self.capturer = PortCapture(conn, module_id, port_id)
168
+ """L23 port capturer configuration.
169
+
170
+ :type: PortCapture
171
+ """
172
+
173
+ self.speed = Speed(conn, module_id, port_id)
174
+ """L23 port speed configuration.
175
+
176
+ :type: Speed
177
+ """
178
+
179
+ self.traffic = Traffic(conn, module_id, port_id)
180
+ """L23 port traffic configuration.
181
+
182
+ :type: Traffic
183
+ """
184
+
185
+ self.mix = Mix(conn, module_id, port_id)
186
+ """L23 port IMIX configuration.
187
+
188
+ :type: Mix
189
+ """
190
+
191
+ self.latency_config = LatencyConfiguration(conn, module_id, port_id)
192
+ """L23 port latency configuration.
193
+
194
+ self.latency_config = LatencyConfiguration(conn, module_id, port_id)
195
+ :type:
196
+ """
197
+
198
+ self.rate = TxRate(conn, module_id, port_id)
199
+ """L23 port rate.
200
+
201
+ :type: Rate
202
+ """
203
+
204
+ self.tx_config = TxConfiguration(conn, module_id, port_id)
205
+ """L23 port TX configuration.
206
+
207
+ :type: TxConfiguration
208
+ """
209
+
210
+ self.tx_single_pkt = TxSinglePacket(conn, module_id, port_id)
211
+ """L23 port single-packet TX configuration.
212
+
213
+ :type: TxSinglePacket
214
+ """
215
+
216
+ self.multicast = Multicast(conn, module_id, port_id)
217
+ """L23 port multicast configuration.
218
+
219
+ :type: Multicast
220
+ """
221
+
222
+ self.net_config = NetConfig(conn, module_id, port_id)
223
+ """L23 port network configuration, including MAC and IP addresses.
224
+
225
+ :type: NetConfig
226
+ """
227
+
228
+
229
+ self.local_states = ports_state.PortL23LocalState()
230
+ """L23 port local states.
231
+
232
+ :type: PortL23LocalState
233
+ """
234
+
235
+ self.length_terms: LengthTermIndices = idx_mgr.IndexManager(
236
+ conn,
237
+ LengthTermIdx,
238
+ module_id,
239
+ port_id
240
+ )
241
+ """L23 port's length term index manager.
242
+
243
+ :type: LengthTermIndices
244
+ """
245
+
246
+ self.match_terms: MatchTermIndices = idx_mgr.IndexManager(
247
+ conn,
248
+ MatchTermIdx,
249
+ module_id,
250
+ port_id
251
+ )
252
+ """L23 port's match term index manager.
253
+
254
+ :type: MatchTermIndices
255
+ """
256
+
257
+ self.used_tpld_ids = P_USED_TPLDID(conn, module_id, port_id)
258
+ """TG port's used TPLD IDs.
259
+
260
+ :type: P_USED_TPLDID
261
+ """
262
+
263
+ on_speed_change = functools.partialmethod(utils.on_event, P_SPEED)
264
+ """Register a callback to the event that the port's speed changes."""
265
+
266
+ on_traffic_change = functools.partialmethod(utils.on_event, P_TRAFFIC)
267
+ """Register a callback to the event that the port's traffic status changes."""
@@ -20,24 +20,22 @@ from xoa_driver.internals.hli.indices.filter.genuine_filter import GenuineFilter
20
20
  from xoa_driver.internals.hli.indices.port_dataset import PortDatasetIdx
21
21
  from xoa_driver.internals.state_storage import ports_state
22
22
 
23
- from .port_l23 import (
24
- BasePortL23,
25
- Speed,
26
- # TxConfiguration,
27
- )
23
+ from .port_l23 import BasePortL23
28
24
 
29
25
  from ..tcvr.transceiver import Transceiver
30
- from .port_rx_stats import GenuinePortReceptionStatistics
31
- from .port_tx_stats import GenuinePortTransmissionStatistics
26
+ from ..trafficgen.rx_stats import GenuinePortReceptionStatistics
27
+ from ..trafficgen.tx_stats import GenuinePortTransmissionStatistics
28
+ from ..trafficgen.tgen import *
32
29
 
33
30
  StreamIndices = idx_mgr.IndexManager[GenuineStreamIdx]
34
31
  FilterIndices = idx_mgr.IndexManager[GenuineFilterIdx]
35
32
  PortDatasetIndices = idx_mgr.IndexManager[PortDatasetIdx]
36
33
 
37
- class SpeedMode:
38
- """L23 port's speed mode"""
39
34
 
35
+ class GenuineSpeed(Speed):
40
36
  def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
37
+ super().__init__(conn, module_id, port_id)
38
+
41
39
  self.selection = P_SPEEDSELECTION(conn, module_id, port_id)
42
40
  """L23 port speed mode selection.
43
41
 
@@ -51,13 +49,6 @@ class SpeedMode:
51
49
  """
52
50
 
53
51
 
54
- class GenuineSpeed(Speed):
55
- def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
56
- super().__init__(conn, module_id, port_id)
57
- self.mode = SpeedMode(conn, module_id, port_id)
58
- """L23 port's speed mode."""
59
-
60
-
61
52
  class UnAvailableTime:
62
53
  """UnAvailable Time"""
63
54
 
@@ -68,7 +59,7 @@ class UnAvailableTime:
68
59
  :type: P_UAT_MODE
69
60
  """
70
61
 
71
- self.frame_loss_ratio = P_UAT_FLR(conn, module_id, port_id)
62
+ self.flr = P_UAT_FLR(conn, module_id, port_id)
72
63
  """L23 port's Frame Loss Ratio for UAT.
73
64
 
74
65
  :type: P_UAT_FLR
@@ -1,7 +1,7 @@
1
1
  from typing import TYPE_CHECKING
2
- from .trafficgen.port_l23 import BasePortL23
3
- from .trafficgen.port_rx_stats import PortReceptionStatistics
4
- from .trafficgen.port_tx_stats import PortTxStats
2
+ from .port_l23 import BasePortL23
3
+ from ..trafficgen.rx_stats import PortReceptionStatistics
4
+ from ..trafficgen.tx_stats import PortTxStats
5
5
 
6
6
  from xoa_driver.internals.commands import (
7
7
  P_MDIXMODE,
@@ -12,7 +12,7 @@ from xoa_driver.internals.utils import attributes as utils
12
12
  if TYPE_CHECKING:
13
13
  from xoa_driver.internals.core import interfaces as itf
14
14
 
15
- from .trafficgen.port_l23_genuine import BasePortL23Genuine
15
+ from .bases.port_l23_genuine import BasePortL23Genuine
16
16
  from .layer1_edun import Layer1
17
17
 
18
18
 
@@ -12,7 +12,7 @@ from xoa_driver.internals.utils import attributes as utils
12
12
  if TYPE_CHECKING:
13
13
  from xoa_driver.internals.core import interfaces as itf
14
14
 
15
- from .trafficgen.port_l23_genuine import BasePortL23Genuine
15
+ from .bases.port_l23_genuine import BasePortL23Genuine
16
16
  from .layer1_freya import Layer1
17
17
 
18
18
 
@@ -11,7 +11,7 @@ from xoa_driver.internals.utils import attributes as utils
11
11
  if TYPE_CHECKING:
12
12
  from xoa_driver.internals.core import interfaces as itf
13
13
 
14
- from .trafficgen.port_l23_genuine import BasePortL23Genuine
14
+ from .bases.port_l23_genuine import BasePortL23Genuine
15
15
  from .layer1_loki import Layer1
16
16
  from .sec.macsec import MacSec
17
17
 
@@ -10,7 +10,7 @@ from xoa_driver.internals.commands import (
10
10
  from xoa_driver.internals.utils import attributes as utils
11
11
  if TYPE_CHECKING:
12
12
  from xoa_driver.internals.core import interfaces as itf
13
- from .trafficgen.port_l23_genuine import BasePortL23Genuine
13
+ from .bases.port_l23_genuine import BasePortL23Genuine
14
14
  from .layer1.lower_power import LowPowerMode
15
15
  from .trafficgen.runt import Runt
16
16
  from .layer1.preamble import Preamble
@@ -11,7 +11,7 @@ from xoa_driver.internals.utils import attributes as utils
11
11
  if TYPE_CHECKING:
12
12
  from xoa_driver.internals.core import interfaces as itf
13
13
 
14
- from .trafficgen.port_l23_genuine import BasePortL23Genuine
14
+ from .bases.port_l23_genuine import BasePortL23Genuine
15
15
  from .layer1_thor import Layer1
16
16
 
17
17
 
@@ -61,7 +61,7 @@ class EdunPcsLayer(PcsLayer):
61
61
  module_id, port_id = port.kind
62
62
  PcsLayer.__init__(self, conn, port)
63
63
 
64
- self.pcs_variant = PL1_PCS_VARIANT(conn, module_id, port_id)
64
+ self.variant = PL1_PCS_VARIANT(conn, module_id, port_id)
65
65
  """PCS variant configuration
66
66
  """
67
67
 
@@ -84,7 +84,7 @@ class Layer1:
84
84
  """RS Fault configuration and status
85
85
  """
86
86
 
87
- self.pcs_fec = EdunPcsLayer(conn, port)
87
+ self.pcs = EdunPcsLayer(conn, port)
88
88
  """Edun PCS and FEC configuration and status
89
89
  """
90
90
 
@@ -61,7 +61,7 @@ class FreyaPcsLayer(PcsLayer):
61
61
  module_id, port_id = port.kind
62
62
  PcsLayer.__init__(self, conn, port)
63
63
 
64
- self.pcs_variant = PL1_PCS_VARIANT(conn, module_id, port_id)
64
+ self.variant = PL1_PCS_VARIANT(conn, module_id, port_id)
65
65
  """PCS variant configuration
66
66
  """
67
67
 
@@ -85,7 +85,7 @@ class Layer1:
85
85
  """RS Fault configuration and status
86
86
  """
87
87
 
88
- self.pcs_fec = FreyaPcsLayer(conn, port)
88
+ self.pcs = FreyaPcsLayer(conn, port)
89
89
  """Freya PCS and FEC configuration and status
90
90
  """
91
91
 
@@ -62,7 +62,7 @@ class Layer1:
62
62
  self.rs_fault = RsFault(conn, module_id, port_id)
63
63
  """RS Fault Management"""
64
64
 
65
- self.pcs_fec = PcsLayer(conn, port)
65
+ self.pcs = PcsLayer(conn, port)
66
66
  """PCS/FEC layer"""
67
67
 
68
68
  self.prbs_config = PP_PRBSTYPE(conn, module_id, port_id)
@@ -54,7 +54,7 @@ class Layer1:
54
54
  self.rs_fault = RsFault(conn, module_id, port_id)
55
55
  """RS Fault Management"""
56
56
 
57
- self.pcs_fec = PcsLayer(conn, port)
57
+ self.pcs = PcsLayer(conn, port)
58
58
  """PCS/FEC layer"""
59
59
 
60
60
  self.prbs_config = PP_PRBSTYPE(conn, module_id, port_id)
@@ -62,7 +62,7 @@ from xoa_driver.internals.state_storage import ports_state
62
62
  from xoa_driver.internals.hli.indices.length_term import LengthTermIdx
63
63
  from xoa_driver.internals.hli.indices.match_term import MatchTermIdx
64
64
 
65
- from .port_capture import PortCapture
65
+ from .capture import PortCapture
66
66
 
67
67
  LengthTermIndices = idx_mgr.IndexManager[LengthTermIdx]
68
68
  MatchTermIndices = idx_mgr.IndexManager[MatchTermIdx]
@@ -138,7 +138,7 @@ class TxConfiguration:
138
138
  """
139
139
 
140
140
 
141
- class Rate:
141
+ class TxRate:
142
142
  """L23 port TX rate"""
143
143
 
144
144
  def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
@@ -161,6 +161,24 @@ class Rate:
161
161
  """
162
162
 
163
163
 
164
+ class MacControl:
165
+ """MAC control configuration
166
+ """
167
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
168
+
169
+ self.address = P_MACADDRESS(conn, module_id, port_id)
170
+ """MAC address configuration. This attribute allows the user to configure the MAC address for the port.
171
+
172
+ :type: P_MACADDRESS
173
+ """
174
+
175
+ self.autotrain = P_AUTOTRAIN(conn, module_id, port_id)
176
+ """Interval between MAC auto training packets. This attribute allows the user to configure the interval at which MAC auto training packets are sent. Auto training packets are used to optimize the performance of the MAC layer and to ensure proper communication between devices.
177
+
178
+ :type: P_AUTOTRAIN
179
+ """
180
+
181
+
164
182
  class Multicast:
165
183
  """L23 port multicast configuration"""
166
184
 
@@ -240,23 +258,26 @@ class IPv6:
240
258
  :type: P_PINGV6REPLY
241
259
  """
242
260
 
243
-
244
- class NetworkConfiguration: # will be extended in genuine ports
245
- """L23 port networking configuration"""
261
+ class NetConfig:
262
+ """L23 port network interface configuration"""
246
263
 
247
264
  def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
248
- self.mac_address = P_MACADDRESS(conn, module_id, port_id)
249
- """L23 port MAC address.
265
+ self.mac = MacControl(conn, module_id, port_id)
266
+ """L23 port MAC address and control.
250
267
 
251
- :type: P_MACADDRESS
268
+ :type: P_IPV6ADDRESS
252
269
  """
253
270
 
254
271
  self.ipv4 = IPv4(conn, module_id, port_id)
255
- """L23 port IPv4 address configuration.
272
+ """L23 port IPv4 configuration.
273
+
274
+ :type: IPv4
256
275
  """
257
276
 
258
277
  self.ipv6 = IPv6(conn, module_id, port_id)
259
- """L23 port IPv6 address configuration.
278
+ """L23 port IPv6 configuration.
279
+
280
+ :type: IPv6
260
281
  """
261
282
 
262
283
 
@@ -329,206 +350,3 @@ class Traffic:
329
350
 
330
351
  :type: P_TRAFFICERR
331
352
  """
332
-
333
-
334
- class BasePortL23(base_port.BasePort[ports_state.PortL23LocalState]):
335
- """L23 port layout which is relevant to all L23 ports."""
336
-
337
- def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
338
- super().__init__(conn, module_id, port_id)
339
- self.capabilities = P_CAPABILITIES(conn, module_id, port_id)
340
- """L23 Port capabilities
341
-
342
- :type: P_CAPABILITIES
343
- """
344
-
345
- self.capabilities_ext = P_CAPABILITIES_EXT(conn, module_id, port_id)
346
- """L23 port capabilities ext.
347
-
348
- :type: P_CAPABILITIES_EXT
349
- """
350
-
351
- self.pause = P_PAUSE(conn, module_id, port_id)
352
- """L23 port response to Ethernet PAUSE frames.
353
-
354
- :type: P_PAUSE
355
- """
356
-
357
- self.loop_back = P_LOOPBACK(conn, module_id, port_id)
358
- """L23 port loopback mode.
359
-
360
- :type: P_LOOPBACK
361
- """
362
-
363
- self.errors_count = P_ERRORS(conn, module_id, port_id)
364
- """L23 port errors.
365
-
366
- :type: P_ERRORS
367
- """
368
-
369
- self.interframe_gap = P_INTERFRAMEGAP(conn, module_id, port_id)
370
- """L23 port interframe gap.
371
-
372
- :type: P_INTERFRAMEGAP
373
- """
374
-
375
- self.max_header_length = P_MAXHEADERLENGTH(conn, module_id, port_id)
376
- """L23 port maximum header length.
377
-
378
- :type: P_MAXHEADERLENGTH
379
- """
380
-
381
- self.tpld_mode = P_TPLDMODE(conn, module_id, port_id)
382
- """L23 port test payload mode.
383
-
384
- :type: P_TPLDMODE
385
- """
386
-
387
- self.pfc_enable = P_PFCENABLE(conn, module_id, port_id)
388
- """L23 port Ethernet Priority Flow Control (PFC).
389
-
390
- :type: P_PFCENABLE
391
- """
392
-
393
- self.random_seed = P_RANDOMSEED(conn, module_id, port_id)
394
- """L23 port seed value.
395
-
396
- :type: P_RANDOMSEED
397
- """
398
-
399
- self.payload_mode = P_PAYLOADMODE(conn, module_id, port_id)
400
- """L23 port payload mode.
401
-
402
- :type: P_PAYLOADMODE
403
- """
404
-
405
- self.autotrain = P_AUTOTRAIN(conn, module_id, port_id)
406
- """L23 port interval between auto training packets.
407
-
408
- :type: P_AUTOTRAIN
409
- """
410
-
411
- self.gap_monitor = P_GAPMONITOR(conn, module_id, port_id)
412
- """L23 port gap monitor.
413
-
414
- :type: P_GAPMONITOR
415
- """
416
-
417
- self.checksum = P_CHECKSUM(conn, module_id, port_id)
418
- """L23 port extra payload integrity checksum.
419
-
420
- :type: P_CHECKSUM
421
- """
422
-
423
- self.arp_rx_table = P_ARPRXTABLE(conn, module_id, port_id)
424
- """L23 port ARP table.
425
-
426
- :type: P_ARPRXTABLE
427
- """
428
-
429
- self.ndp_rx_table = P_NDPRXTABLE(conn, module_id, port_id)
430
- """L23 port NDP table.
431
-
432
- :type: P_NDPRXTABLE
433
- """
434
-
435
- self.capturer = PortCapture(conn, module_id, port_id)
436
- """L23 port capturer configuration.
437
-
438
- :type: PortCapture
439
- """
440
-
441
- self.speed = Speed(conn, module_id, port_id)
442
- """L23 port speed configuration.
443
-
444
- :type: Speed
445
- """
446
-
447
- self.traffic = Traffic(conn, module_id, port_id)
448
- """L23 port traffic configuration.
449
-
450
- :type: Traffic
451
- """
452
-
453
- self.mix = Mix(conn, module_id, port_id)
454
- """L23 port IMIX configuration.
455
-
456
- :type: Mix
457
- """
458
-
459
- self.latency_config = LatencyConfiguration(conn, module_id, port_id)
460
- """L23 port latency configuration.
461
-
462
- self.latency_config = LatencyConfiguration(conn, module_id, port_id)
463
- :type:
464
- """
465
-
466
- self.rate = Rate(conn, module_id, port_id)
467
- """L23 port rate.
468
-
469
- :type: Rate
470
- """
471
-
472
- self.tx_config = TxConfiguration(conn, module_id, port_id)
473
- """L23 port TX configuration.
474
-
475
- :type: TxConfiguration
476
- """
477
-
478
- self.tx_single_pkt = TxSinglePacket(conn, module_id, port_id)
479
- """L23 port single-packet TX configuration.
480
-
481
- :type: TxSinglePacket
482
- """
483
-
484
- self.multicast = Multicast(conn, module_id, port_id)
485
- """L23 port multicast configuration.
486
-
487
- :type: Multicast
488
- """
489
-
490
- self.net_config = NetworkConfiguration(conn, module_id, port_id)
491
- """L23 port network configuration.
492
-
493
- :type: NetworkConfiguration
494
- """
495
-
496
- self.local_states = ports_state.PortL23LocalState()
497
- """L23 port local states.
498
-
499
- :type: PortL23LocalState
500
- """
501
-
502
- self.length_terms: LengthTermIndices = idx_mgr.IndexManager(
503
- conn,
504
- LengthTermIdx,
505
- module_id,
506
- port_id
507
- )
508
- """L23 port's length term index manager.
509
-
510
- :type: LengthTermIndices
511
- """
512
-
513
- self.match_terms: MatchTermIndices = idx_mgr.IndexManager(
514
- conn,
515
- MatchTermIdx,
516
- module_id,
517
- port_id
518
- )
519
- """L23 port's match term index manager.
520
-
521
- :type: MatchTermIndices
522
- """
523
-
524
- self.used_tpld_ids = P_USED_TPLDID(conn, module_id, port_id)
525
- """TG port's used TPLD IDs.
526
-
527
- :type: P_USED_TPLDID
528
- """
529
-
530
- on_speed_change = functools.partialmethod(utils.on_event, P_SPEED)
531
- """Register a callback to the event that the port's speed changes."""
532
-
533
- on_traffic_change = functools.partialmethod(utils.on_event, P_TRAFFIC)
534
- """Register a callback to the event that the port's traffic status changes."""
xoa_driver/ports.py CHANGED
@@ -5,7 +5,7 @@ import typing
5
5
 
6
6
  from .internals.hli.ports.port_l47.main import PortL47
7
7
 
8
- from .internals.hli.ports.port_l23.port_l23ve import PortL23VE
8
+ from .internals.hli.ports.port_l23.bases.port_l23ve import PortL23VE
9
9
  from .internals.hli.ports.port_l23.chimera.port_chimera import (
10
10
  PortChimera,
11
11
  PChi100G5S2P,
@@ -13,7 +13,7 @@ from .internals.hli.ports.port_l23.chimera.port_chimera import (
13
13
  PChi40G2S2P,
14
14
  )
15
15
 
16
- from .internals.hli.ports.port_l23.trafficgen.port_l23 import BasePortL23
16
+ from .internals.hli.ports.port_l23.bases.port_l23 import BasePortL23
17
17
  from xoa_driver.internals.hli.ports.port_l23.family_odin import (
18
18
  POdin1G4S4PCombi,
19
19
  POdin1G4S4PCombi_b,