tdl-xoa-driver 1.2.0__py3-none-any.whl → 1.4.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.2.0.dist-info → tdl_xoa_driver-1.4.0.dist-info}/METADATA +5 -5
- tdl_xoa_driver-1.4.0.dist-info/RECORD +218 -0
- {tdl_xoa_driver-1.2.0.dist-info → tdl_xoa_driver-1.4.0.dist-info}/WHEEL +1 -1
- xoa_driver/__init__.py +2 -2
- xoa_driver/enums.py +2 -0
- xoa_driver/functions/anlt.py +2 -2
- xoa_driver/functions/exceptions.py +7 -0
- xoa_driver/functions/mgmt.py +62 -25
- xoa_driver/hlfuncs.py +1 -1
- xoa_driver/internals/commands/enums.py +10 -1
- xoa_driver/internals/commands/m_commands.py +35 -3
- xoa_driver/internals/commands/p_commands.py +12 -10
- xoa_driver/internals/commands/pt_commands.py +21 -1
- xoa_driver/internals/commands/px_commands.py +1686 -6
- xoa_driver/internals/core/transporter/_request_id_counter.py +1 -1
- xoa_driver/internals/core/transporter/protocol/payload/__init__.py +3 -1
- xoa_driver/internals/core/transporter/protocol/payload/field.py +41 -0
- xoa_driver/internals/core/transporter/protocol/payload/types.py +19 -0
- xoa_driver/internals/{hli_v1 → hli}/indices/filter/base_filter.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/length_term.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/base_macsecsc.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/indices/match_term.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/port_dataset.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/streams/base_stream.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/module_chimera.py +20 -15
- xoa_driver/internals/{hli_v1 → hli}/modules/module_l47.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_combi.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_d.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_e.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_f.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_g.py +17 -2
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_h.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_i.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_j.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_k.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_l.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_l1.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_m.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_n.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/module_l23_base.py +18 -12
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_l23.py +3 -3
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_l23_genuine.py +4 -4
- xoa_driver/internals/hli/ports/port_l23/bases/port_transceiver.py +247 -0
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_transmission_statistics.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/port_chimera.py +1 -1
- xoa_driver/internals/{hli_v2 → hli}/ports/port_l23/family_g.py +5 -0
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/port_l23ve.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/main.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/testers/l23_tester.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/testers/l47_tester.py +2 -2
- xoa_driver/internals/state_storage/modules_state.py +1 -1
- xoa_driver/misc.py +12 -17
- xoa_driver/modules.py +18 -22
- xoa_driver/ports.py +20 -20
- xoa_driver/testers.py +4 -8
- tdl_xoa_driver-1.2.0.dist-info/RECORD +0 -325
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transceiver.py +0 -117
- xoa_driver/internals/hli_v1/ports/port_l23/family_g.py +0 -77
- xoa_driver/internals/hli_v2/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/base_index.py +0 -39
- xoa_driver/internals/hli_v2/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/connection_group/cg.py +0 -115
- xoa_driver/internals/hli_v2/indices/connection_group/histogram.py +0 -59
- xoa_driver/internals/hli_v2/indices/connection_group/l2.py +0 -71
- xoa_driver/internals/hli_v2/indices/connection_group/l3.py +0 -96
- xoa_driver/internals/hli_v2/indices/connection_group/raw.py +0 -148
- xoa_driver/internals/hli_v2/indices/connection_group/replay.py +0 -89
- xoa_driver/internals/hli_v2/indices/connection_group/tcp.py +0 -261
- xoa_driver/internals/hli_v2/indices/connection_group/tls.py +0 -166
- xoa_driver/internals/hli_v2/indices/connection_group/udp.py +0 -112
- xoa_driver/internals/hli_v2/indices/connection_group/user_state.py +0 -25
- xoa_driver/internals/hli_v2/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/filter/base_filter.py +0 -50
- xoa_driver/internals/hli_v2/indices/filter/genuine_filter.py +0 -17
- xoa_driver/internals/hli_v2/indices/length_term.py +0 -44
- xoa_driver/internals/hli_v2/indices/match_term.py +0 -49
- xoa_driver/internals/hli_v2/indices/port_dataset.py +0 -53
- xoa_driver/internals/hli_v2/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/streams/base_stream.py +0 -234
- xoa_driver/internals/hli_v2/indices/streams/genuine_stream.py +0 -32
- xoa_driver/internals/hli_v2/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/__interfaces.py +0 -21
- xoa_driver/internals/hli_v2/modules/base_module.py +0 -125
- xoa_driver/internals/hli_v2/modules/module_chimera.py +0 -358
- xoa_driver/internals/hli_v2/modules/module_l23ve.py +0 -58
- xoa_driver/internals/hli_v2/modules/module_l47.py +0 -230
- xoa_driver/internals/hli_v2/modules/module_l47ve.py +0 -8
- xoa_driver/internals/hli_v2/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_combi.py +0 -73
- xoa_driver/internals/hli_v2/modules/modules_l23/family_d.py +0 -75
- xoa_driver/internals/hli_v2/modules/modules_l23/family_e.py +0 -85
- xoa_driver/internals/hli_v2/modules/modules_l23/family_f.py +0 -144
- xoa_driver/internals/hli_v2/modules/modules_l23/family_g.py +0 -84
- xoa_driver/internals/hli_v2/modules/modules_l23/family_h.py +0 -40
- xoa_driver/internals/hli_v2/modules/modules_l23/family_i.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_j.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_k.py +0 -39
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l.py +0 -55
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l1.py +0 -797
- xoa_driver/internals/hli_v2/modules/modules_l23/family_m.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_n.py +0 -40
- xoa_driver/internals/hli_v2/modules/modules_l23/module_l23_base.py +0 -339
- xoa_driver/internals/hli_v2/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/base_port.py +0 -105
- xoa_driver/internals/hli_v2/ports/port_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_capture.py +0 -64
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23.py +0 -441
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23_genuine.py +0 -172
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +0 -156
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transceiver.py +0 -117
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transmission_statistics.py +0 -59
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/_utils.py +0 -15
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/general.py +0 -340
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/shadow.py +0 -99
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/working.py +0 -36
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +0 -116
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_distribution.py +0 -102
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_chimera.py +0 -113
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_emulation.py +0 -420
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/reception_statistics.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/transmission_statistics.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/family_combi.py +0 -36
- xoa_driver/internals/hli_v2/ports/port_l23/family_d.py +0 -49
- xoa_driver/internals/hli_v2/ports/port_l23/family_e.py +0 -96
- xoa_driver/internals/hli_v2/ports/port_l23/family_f.py +0 -144
- xoa_driver/internals/hli_v2/ports/port_l23/family_h.py +0 -60
- xoa_driver/internals/hli_v2/ports/port_l23/family_i.py +0 -66
- xoa_driver/internals/hli_v2/ports/port_l23/family_j.py +0 -53
- xoa_driver/internals/hli_v2/ports/port_l23/family_k.py +0 -58
- xoa_driver/internals/hli_v2/ports/port_l23/family_l.py +0 -67
- xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +0 -149
- xoa_driver/internals/hli_v2/ports/port_l23/family_m.py +0 -28
- xoa_driver/internals/hli_v2/ports/port_l23/fault_jkl.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ghijkl.py +0 -342
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ijkl_chimera.py +0 -50
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_l.py +0 -65
- xoa_driver/internals/hli_v2/ports/port_l23/port_l23ve.py +0 -81
- xoa_driver/internals/hli_v2/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l47/counters.py +0 -146
- xoa_driver/internals/hli_v2/ports/port_l47/main.py +0 -137
- xoa_driver/internals/hli_v2/ports/port_l47/packet_engine.py +0 -20
- xoa_driver/internals/hli_v2/revisions.py +0 -11
- xoa_driver/internals/hli_v2/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/_base_tester.py +0 -207
- xoa_driver/internals/hli_v2/testers/genuine/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/health.py +0 -16
- xoa_driver/internals/hli_v2/testers/genuine/l_23/rest_api.py +0 -34
- xoa_driver/internals/hli_v2/testers/genuine/l_23/time_keeper.py +0 -50
- xoa_driver/internals/hli_v2/testers/genuine/l_23/upload_file.py +0 -26
- xoa_driver/internals/hli_v2/testers/genuine/management_interface.py +0 -38
- xoa_driver/internals/hli_v2/testers/l23_tester.py +0 -159
- xoa_driver/internals/hli_v2/testers/l23ve_tester.py +0 -98
- xoa_driver/internals/hli_v2/testers/l47_tester.py +0 -95
- xoa_driver/internals/hli_v2/testers/l47ve_tester.py +0 -50
- xoa_driver/v2/__init__.py +0 -11
- xoa_driver/v2/misc.py +0 -77
- xoa_driver/v2/modules.py +0 -308
- xoa_driver/v2/ports.py +0 -232
- xoa_driver/v2/testers.py +0 -24
- {tdl_xoa_driver-1.2.0.dist-info → tdl_xoa_driver-1.4.0.dist-info}/licenses/LICENSE +0 -0
- {tdl_xoa_driver-1.2.0.dist-info → tdl_xoa_driver-1.4.0.dist-info}/top_level.txt +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/base_index.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/cg.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/histogram.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/l2.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/l3.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/raw.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/replay.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/tcp.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/tls.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/udp.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/user_state.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/filter/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/filter/genuine_filter.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/genuine_macsecsc.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/streams/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/streams/genuine_stream.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/__interfaces.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/base_module.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/module_l23ve.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/module_l47ve.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/base_port.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_capture.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_reception_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/_utils.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/general.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/shadow.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/working.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/pe_custom_distribution.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/pe_distribution.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/port_emulation.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/reception_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/transmission_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_combi.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_d.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_e.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_f.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_h.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_i.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_j.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_k.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_l.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_l1.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_m.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/fault_jkl.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/freya_l1.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_ghijkl.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_ijkl_chimera.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_l.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/counters.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/packet_engine.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/revisions.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/_base_tester.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/health.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/rest_api.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/time_keeper.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/upload_file.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/management_interface.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/l23ve_tester.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/l47ve_tester.py +0 -0
|
@@ -1,441 +0,0 @@
|
|
|
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
|
-
)
|
|
55
|
-
if typing.TYPE_CHECKING:
|
|
56
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
57
|
-
from xoa_driver.internals.hli_v2.ports import base_port
|
|
58
|
-
from xoa_driver.internals.utils import attributes as utils
|
|
59
|
-
from xoa_driver.internals.utils.indices import index_manager as idx_mgr
|
|
60
|
-
from xoa_driver.internals.state_storage import ports_state
|
|
61
|
-
from xoa_driver.internals.hli_v2.indices.length_term import LengthTermIdx
|
|
62
|
-
from xoa_driver.internals.hli_v2.indices.match_term import MatchTermIdx
|
|
63
|
-
|
|
64
|
-
from .port_capture import PortCapture
|
|
65
|
-
|
|
66
|
-
LengthTermIndices = idx_mgr.IndexManager[LengthTermIdx]
|
|
67
|
-
MatchTermIndices = idx_mgr.IndexManager[MatchTermIdx]
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
class TxSinglePacket:
|
|
71
|
-
"""L23 port single-packet transmission"""
|
|
72
|
-
|
|
73
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
74
|
-
self.send = P_XMITONE(conn, module_id, port_id)
|
|
75
|
-
"""Send one packet from the L23 port without a stream config.
|
|
76
|
-
Representation of P_XMITONE
|
|
77
|
-
"""
|
|
78
|
-
|
|
79
|
-
self.time = P_XMITONETIME(conn, module_id, port_id)
|
|
80
|
-
"""The time at which the latest packet was transmitted using the P_XMITONE` command.
|
|
81
|
-
Representation of P_XMITONETIME
|
|
82
|
-
"""
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
class TxConfiguration:
|
|
86
|
-
"""L23 port TX configuration"""
|
|
87
|
-
|
|
88
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
89
|
-
self.mode = P_TXMODE(conn, module_id, port_id)
|
|
90
|
-
"""L23 port TX mode.
|
|
91
|
-
Representation of P_TXMODE
|
|
92
|
-
"""
|
|
93
|
-
|
|
94
|
-
self.enable = P_TXENABLE(conn, module_id, port_id)
|
|
95
|
-
"""Enabling L23 port TX.
|
|
96
|
-
Representation of P_TXENABLE
|
|
97
|
-
"""
|
|
98
|
-
|
|
99
|
-
self.time_limit = P_TXTIMELIMIT(conn, module_id, port_id)
|
|
100
|
-
"""L23 port TX time limit.
|
|
101
|
-
Representation of P_TXTIMELIMIT
|
|
102
|
-
"""
|
|
103
|
-
|
|
104
|
-
self.time = P_TXTIME(conn, module_id, port_id)
|
|
105
|
-
"""L23 port TX time.
|
|
106
|
-
Representation of P_TXTIME
|
|
107
|
-
"""
|
|
108
|
-
|
|
109
|
-
self.prepare = P_TXPREPARE(conn, module_id, port_id)
|
|
110
|
-
"""Prepare L23 port for transmission.
|
|
111
|
-
Representation of P_TXPREPARE
|
|
112
|
-
"""
|
|
113
|
-
|
|
114
|
-
self.delay = P_TXDELAY(conn, module_id, port_id)
|
|
115
|
-
"""L23 port TX delay.
|
|
116
|
-
Representation of P_TXDELAY
|
|
117
|
-
"""
|
|
118
|
-
|
|
119
|
-
self.packet_limit = P_TXPACKETLIMIT(conn, module_id, port_id)
|
|
120
|
-
"""L23 port TX packet limit
|
|
121
|
-
Representation of P_TXPACKETLIMIT
|
|
122
|
-
"""
|
|
123
|
-
|
|
124
|
-
self.burst_period = P_TXBURSTPERIOD(conn, module_id, port_id)
|
|
125
|
-
"""L23 port TX burst period.
|
|
126
|
-
Representation of P_TXBURSTPERIOD
|
|
127
|
-
"""
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
class Rate:
|
|
131
|
-
"""L23 port TX rate"""
|
|
132
|
-
|
|
133
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
134
|
-
self.fraction = P_RATEFRACTION(conn, module_id, port_id)
|
|
135
|
-
"""L23 port rate in ppm.
|
|
136
|
-
Representation of P_RATEFRACTION
|
|
137
|
-
"""
|
|
138
|
-
|
|
139
|
-
self.pps = P_RATEPPS(conn, module_id, port_id)
|
|
140
|
-
"""L23 port rate in packets per second.
|
|
141
|
-
Representation of P_RATEPPS
|
|
142
|
-
"""
|
|
143
|
-
|
|
144
|
-
self.l2_bps = P_RATEL2BPS(conn, module_id, port_id)
|
|
145
|
-
"""L23 port rate in L2 bits per second.
|
|
146
|
-
Representation of P_RATEL2BPS
|
|
147
|
-
"""
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
class Multicast:
|
|
151
|
-
"""L23 port multicast configuration"""
|
|
152
|
-
|
|
153
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
154
|
-
self.mode = P_MULTICAST(conn, module_id, port_id)
|
|
155
|
-
"""L23 port multicast mode.
|
|
156
|
-
Representation of P_MULTICAST
|
|
157
|
-
"""
|
|
158
|
-
|
|
159
|
-
self.mode_extended = P_MULTICASTEXT(conn, module_id, port_id)
|
|
160
|
-
"""L23 port multicast extended mode.
|
|
161
|
-
Representation of P_MULTICASTEXT
|
|
162
|
-
"""
|
|
163
|
-
|
|
164
|
-
self.source_list = P_MCSRCLIST(conn, module_id, port_id)
|
|
165
|
-
"""L23 port multicast source list.
|
|
166
|
-
Representation of P_MCSRCLIST
|
|
167
|
-
"""
|
|
168
|
-
|
|
169
|
-
self.header = P_MULTICASTHDR(conn, module_id, port_id)
|
|
170
|
-
"""L23 port multicast IGMP header.
|
|
171
|
-
Representation of P_MULTICASTHDR
|
|
172
|
-
"""
|
|
173
|
-
|
|
174
|
-
self.igmpv3_group_record_bundle = P_IGMPV3_GROUP_RECORD_BUNDLE(conn, module_id, port_id)
|
|
175
|
-
"""Configure if a single membership report bundles multiple multicast group records to decrease the number of packets sent when using IGMPv3. This command returns <NOTVALID> when the IGMP version is not IGMPv3.
|
|
176
|
-
|
|
177
|
-
:type: P_IGMPV3_GROUP_RECORD_BUNDLE
|
|
178
|
-
"""
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
class IPv4:
|
|
182
|
-
"""L23 port IPv4 configuration"""
|
|
183
|
-
|
|
184
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
185
|
-
self.address = P_IPADDRESS(conn, module_id, port_id)
|
|
186
|
-
"""L23 port IPv4 address.
|
|
187
|
-
Representation of P_IPADDRESS
|
|
188
|
-
"""
|
|
189
|
-
|
|
190
|
-
self.arp_reply = P_ARPREPLY(conn, module_id, port_id)
|
|
191
|
-
"""L23 port reply to ARP request.
|
|
192
|
-
Representation of P_ARPREPLY
|
|
193
|
-
"""
|
|
194
|
-
|
|
195
|
-
self.ping_reply = P_PINGREPLY(conn, module_id, port_id)
|
|
196
|
-
"""L23 port reply to PING request.
|
|
197
|
-
Representation of P_PINGREPLY
|
|
198
|
-
"""
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
class IPv6:
|
|
202
|
-
"""L23 port IPv6 configuration"""
|
|
203
|
-
|
|
204
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
205
|
-
self.address = P_IPV6ADDRESS(conn, module_id, port_id)
|
|
206
|
-
"""L23 port IPv6 address.
|
|
207
|
-
Representation of P_IPV6ADDRESS
|
|
208
|
-
"""
|
|
209
|
-
|
|
210
|
-
self.arp_reply = P_ARPV6REPLY(conn, module_id, port_id)
|
|
211
|
-
"""L23 port reply to NDP Neighbor Solicitation.
|
|
212
|
-
Representation of P_ARPV6REPLY
|
|
213
|
-
"""
|
|
214
|
-
|
|
215
|
-
self.ping_reply = P_PINGV6REPLY(conn, module_id, port_id)
|
|
216
|
-
"""L23 port reply to PINGv6 request.
|
|
217
|
-
Representation of P_PINGV6REPLY
|
|
218
|
-
"""
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
class NetworkConfiguration: # will be extended in genuine ports
|
|
222
|
-
"""L23 port networking configuration"""
|
|
223
|
-
|
|
224
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
225
|
-
self.mac_address = P_MACADDRESS(conn, module_id, port_id)
|
|
226
|
-
"""L23 port MAC address.
|
|
227
|
-
Representation of P_MACADDRESS
|
|
228
|
-
"""
|
|
229
|
-
|
|
230
|
-
self.ipv4 = IPv4(conn, module_id, port_id)
|
|
231
|
-
"""L23 port IPv4 address configuration.
|
|
232
|
-
"""
|
|
233
|
-
|
|
234
|
-
self.ipv6 = IPv6(conn, module_id, port_id)
|
|
235
|
-
"""L23 port IPv6 address configuration.
|
|
236
|
-
"""
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
class LatencyConfiguration:
|
|
240
|
-
"""L23 port latency configuration"""
|
|
241
|
-
|
|
242
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
243
|
-
self.offset = P_LATENCYOFFSET(conn, module_id, port_id)
|
|
244
|
-
"""L23 port latency offset.
|
|
245
|
-
Representation of P_LATENCYOFFSET
|
|
246
|
-
"""
|
|
247
|
-
|
|
248
|
-
self.mode = P_LATENCYMODE(conn, module_id, port_id)
|
|
249
|
-
"""L23 port latency measurement mode.
|
|
250
|
-
Representation of P_LATENCYMODE
|
|
251
|
-
"""
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
class Mix:
|
|
255
|
-
"""L23 port IMIX configuration"""
|
|
256
|
-
|
|
257
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
258
|
-
self.weights = P_MIXWEIGHTS(conn, module_id, port_id)
|
|
259
|
-
"""L23 port IMIX weights
|
|
260
|
-
Representation of P_MIXWEIGHTS
|
|
261
|
-
"""
|
|
262
|
-
|
|
263
|
-
self.lengths = tuple(
|
|
264
|
-
P_MIXLENGTH(conn, module_id, port_id, idx)
|
|
265
|
-
for idx in range(16)
|
|
266
|
-
) # TODO: need to add manager for handle specific indices only
|
|
267
|
-
"""L23 port IMIX lengths.
|
|
268
|
-
Representation of P_MIXLENGTH
|
|
269
|
-
"""
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
class Speed:
|
|
273
|
-
"""L23 port speed configuration"""
|
|
274
|
-
|
|
275
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
276
|
-
self.current = P_SPEED(conn, module_id, port_id)
|
|
277
|
-
"""L23 port current speed in units of Mbps.
|
|
278
|
-
Representation of P_SPEED
|
|
279
|
-
"""
|
|
280
|
-
|
|
281
|
-
self.reduction = P_SPEEDREDUCTION(conn, module_id, port_id)
|
|
282
|
-
"""L23 port speed reduction in ppm.
|
|
283
|
-
Representation of P_SPEEDREDUCTION
|
|
284
|
-
"""
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
class Traffic:
|
|
288
|
-
"""L23 port traffic generation"""
|
|
289
|
-
|
|
290
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
291
|
-
self.state = P_TRAFFIC(conn, module_id, port_id)
|
|
292
|
-
"""L23 port traffic status and action.
|
|
293
|
-
Representation of P_TRAFFIC
|
|
294
|
-
"""
|
|
295
|
-
|
|
296
|
-
self.error = P_TRAFFICERR(conn, module_id, port_id)
|
|
297
|
-
"""L23 port traffic error.
|
|
298
|
-
Representation of P_TRAFFICERR
|
|
299
|
-
"""
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
class BasePortL23(base_port.BasePort[ports_state.PortL23LocalState]):
|
|
303
|
-
"""L23 port layout which is relevant to all L23 ports."""
|
|
304
|
-
|
|
305
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
306
|
-
super().__init__(conn, module_id, port_id)
|
|
307
|
-
self.capabilities = P_CAPABILITIES(conn, module_id, port_id)
|
|
308
|
-
"""L23 port capabilities.
|
|
309
|
-
Representation of P_CAPABILITIES
|
|
310
|
-
"""
|
|
311
|
-
|
|
312
|
-
self.capabilities_ext = P_CAPABILITIES_EXT(conn, module_id, port_id)
|
|
313
|
-
"""L23 port capabilities ext.
|
|
314
|
-
|
|
315
|
-
Representation of P_CAPABILITIES_EXT
|
|
316
|
-
"""
|
|
317
|
-
|
|
318
|
-
self.pause = P_PAUSE(conn, module_id, port_id)
|
|
319
|
-
"""L23 port response to Ethernet PAUSE frames.
|
|
320
|
-
Representation of P_PAUSE
|
|
321
|
-
"""
|
|
322
|
-
|
|
323
|
-
self.loop_back = P_LOOPBACK(conn, module_id, port_id)
|
|
324
|
-
"""L23 port loopback mode.
|
|
325
|
-
Representation of P_LOOPBACK
|
|
326
|
-
"""
|
|
327
|
-
|
|
328
|
-
self.errors_count = P_ERRORS(conn, module_id, port_id)
|
|
329
|
-
"""L23 port errors.
|
|
330
|
-
Representation of P_ERRORS
|
|
331
|
-
"""
|
|
332
|
-
|
|
333
|
-
self.interframe_gap = P_INTERFRAMEGAP(conn, module_id, port_id)
|
|
334
|
-
"""L23 port interframe gap.
|
|
335
|
-
Representation of P_INTERFRAMEGAP
|
|
336
|
-
"""
|
|
337
|
-
|
|
338
|
-
self.max_header_length = P_MAXHEADERLENGTH(conn, module_id, port_id)
|
|
339
|
-
"""L23 port maximum header length.
|
|
340
|
-
Representation of P_MAXHEADERLENGTH
|
|
341
|
-
"""
|
|
342
|
-
|
|
343
|
-
self.tpld_mode = P_TPLDMODE(conn, module_id, port_id)
|
|
344
|
-
"""L23 port test payload mode.
|
|
345
|
-
Representation of P_TPLDMODE
|
|
346
|
-
"""
|
|
347
|
-
|
|
348
|
-
self.pfc_enable = P_PFCENABLE(conn, module_id, port_id)
|
|
349
|
-
"""L23 port Ethernet Priority Flow Control (PFC).
|
|
350
|
-
Representation of P_PFCENABLE
|
|
351
|
-
"""
|
|
352
|
-
|
|
353
|
-
self.random_seed = P_RANDOMSEED(conn, module_id, port_id)
|
|
354
|
-
"""L23 port seed value.
|
|
355
|
-
Representation of P_RANDOMSEED
|
|
356
|
-
"""
|
|
357
|
-
|
|
358
|
-
self.payload_mode = P_PAYLOADMODE(conn, module_id, port_id)
|
|
359
|
-
"""L23 port payload mode.
|
|
360
|
-
Representation of P_PAYLOADMODE
|
|
361
|
-
"""
|
|
362
|
-
|
|
363
|
-
self.autotrain = P_AUTOTRAIN(conn, module_id, port_id)
|
|
364
|
-
"""L23 port interval between auto training packets.
|
|
365
|
-
Representation of P_AUTOTRAIN
|
|
366
|
-
"""
|
|
367
|
-
|
|
368
|
-
self.gap_monitor = P_GAPMONITOR(conn, module_id, port_id)
|
|
369
|
-
"""L23 port gap monitor.
|
|
370
|
-
Representation of P_GAPMONITOR
|
|
371
|
-
"""
|
|
372
|
-
|
|
373
|
-
self.checksum = P_CHECKSUM(conn, module_id, port_id)
|
|
374
|
-
"""L23 port extra payload integrity checksum.
|
|
375
|
-
Representation of P_CHECKSUM
|
|
376
|
-
"""
|
|
377
|
-
|
|
378
|
-
self.arp_rx_table = P_ARPRXTABLE(conn, module_id, port_id)
|
|
379
|
-
"""L23 port ARP table.
|
|
380
|
-
Representation of P_ARPRXTABLE
|
|
381
|
-
"""
|
|
382
|
-
|
|
383
|
-
self.ndp_rx_table = P_NDPRXTABLE(conn, module_id, port_id)
|
|
384
|
-
"""L23 port NDP table.
|
|
385
|
-
Representation of P_NDPRXTABLE
|
|
386
|
-
"""
|
|
387
|
-
|
|
388
|
-
self.capturer = PortCapture(conn, module_id, port_id)
|
|
389
|
-
"""L23 port capturer configuration."""
|
|
390
|
-
|
|
391
|
-
self.speed = Speed(conn, module_id, port_id)
|
|
392
|
-
"""L23 port speed configuration."""
|
|
393
|
-
|
|
394
|
-
self.traffic = Traffic(conn, module_id, port_id)
|
|
395
|
-
"""L23 port traffic configuration."""
|
|
396
|
-
|
|
397
|
-
self.mix = Mix(conn, module_id, port_id)
|
|
398
|
-
"""L23 port IMIX configuration."""
|
|
399
|
-
|
|
400
|
-
self.latency_config = LatencyConfiguration(conn, module_id, port_id)
|
|
401
|
-
"""L23 port latency configuration."""
|
|
402
|
-
|
|
403
|
-
self.rate = Rate(conn, module_id, port_id)
|
|
404
|
-
"""L23 port rate."""
|
|
405
|
-
|
|
406
|
-
self.tx_config = TxConfiguration(conn, module_id, port_id)
|
|
407
|
-
"""L23 port TX configuration."""
|
|
408
|
-
|
|
409
|
-
self.tx_single_pkt = TxSinglePacket(conn, module_id, port_id)
|
|
410
|
-
"""L23 port single-packet TX configuration."""
|
|
411
|
-
|
|
412
|
-
self.multicast = Multicast(conn, module_id, port_id)
|
|
413
|
-
"""L23 port multicast configuration."""
|
|
414
|
-
|
|
415
|
-
self.net_config = NetworkConfiguration(conn, module_id, port_id)
|
|
416
|
-
"""L23 port network configuration."""
|
|
417
|
-
|
|
418
|
-
self.local_states = ports_state.PortL23LocalState()
|
|
419
|
-
"""L23 port local states."""
|
|
420
|
-
|
|
421
|
-
self.length_terms: LengthTermIndices = idx_mgr.IndexManager(
|
|
422
|
-
conn,
|
|
423
|
-
LengthTermIdx,
|
|
424
|
-
module_id,
|
|
425
|
-
port_id
|
|
426
|
-
)
|
|
427
|
-
"""L23 port's length term index manager."""
|
|
428
|
-
|
|
429
|
-
self.match_terms: MatchTermIndices = idx_mgr.IndexManager(
|
|
430
|
-
conn,
|
|
431
|
-
MatchTermIdx,
|
|
432
|
-
module_id,
|
|
433
|
-
port_id
|
|
434
|
-
)
|
|
435
|
-
"""L23 port's match term index manager."""
|
|
436
|
-
|
|
437
|
-
on_speed_change = functools.partialmethod(utils.on_event, P_SPEED)
|
|
438
|
-
"""Register a callback to the event that the port's speed changes."""
|
|
439
|
-
|
|
440
|
-
on_traffic_change = functools.partialmethod(utils.on_event, P_TRAFFIC)
|
|
441
|
-
"""Register a callback to the event that the port's traffic status changes."""
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import functools
|
|
2
|
-
from typing import TYPE_CHECKING
|
|
3
|
-
if TYPE_CHECKING:
|
|
4
|
-
from xoa_driver.internals.core import interfaces as itf
|
|
5
|
-
from xoa_driver.internals.commands import (
|
|
6
|
-
P_FLASH,
|
|
7
|
-
P_SPEEDSELECTION,
|
|
8
|
-
P_SPEEDS_SUPPORTED,
|
|
9
|
-
P_UAT_MODE,
|
|
10
|
-
P_UAT_FLR,
|
|
11
|
-
P_STATUS,
|
|
12
|
-
P_TCVRSTATUS,
|
|
13
|
-
P_LOADMODE,
|
|
14
|
-
PP_FECMODE,
|
|
15
|
-
)
|
|
16
|
-
from xoa_driver.internals.utils import attributes as utils
|
|
17
|
-
from xoa_driver.internals.utils.indices import index_manager as idx_mgr
|
|
18
|
-
from xoa_driver.internals.hli_v2.indices.streams.genuine_stream import GenuineStreamIdx
|
|
19
|
-
from xoa_driver.internals.hli_v2.indices.filter.genuine_filter import GenuineFilterIdx
|
|
20
|
-
from xoa_driver.internals.hli_v2.indices.port_dataset import PortDatasetIdx
|
|
21
|
-
from xoa_driver.internals.state_storage import ports_state
|
|
22
|
-
|
|
23
|
-
from .port_l23 import (
|
|
24
|
-
BasePortL23,
|
|
25
|
-
Speed,
|
|
26
|
-
# TxConfiguration,
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
from .port_transceiver import PortTransceiver
|
|
30
|
-
from .port_reception_statistics import GenuinePortReceptionStatistics
|
|
31
|
-
from .port_transmission_statistics import PortTransmissionStatistics
|
|
32
|
-
|
|
33
|
-
StreamIndices = idx_mgr.IndexManager[GenuineStreamIdx]
|
|
34
|
-
FilterIndices = idx_mgr.IndexManager[GenuineFilterIdx]
|
|
35
|
-
PortDatasetIndices = idx_mgr.IndexManager[PortDatasetIdx]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class SpeedMode:
|
|
39
|
-
"""L23 port's speed mode"""
|
|
40
|
-
|
|
41
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
42
|
-
self.selection = P_SPEEDSELECTION(conn, module_id, port_id)
|
|
43
|
-
"""L23 port speed mode selection.
|
|
44
|
-
Representation of P_SPEEDSELECTION
|
|
45
|
-
"""
|
|
46
|
-
|
|
47
|
-
self.supported = P_SPEEDS_SUPPORTED(conn, module_id, port_id)
|
|
48
|
-
"""L23 port's supported speed modes.
|
|
49
|
-
Representation of P_SPEEDS_SUPPORTED
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
class GenuineSpeed(Speed):
|
|
54
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
55
|
-
super().__init__(conn, module_id, port_id)
|
|
56
|
-
self.mode = SpeedMode(conn, module_id, port_id)
|
|
57
|
-
"""L23 port's speed mode."""
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
class UnAvailableTime:
|
|
61
|
-
"""UnAvailable Time"""
|
|
62
|
-
|
|
63
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
64
|
-
self.mode = P_UAT_MODE(conn, module_id, port_id)
|
|
65
|
-
"""L23 port's Unavailable Time mode.
|
|
66
|
-
Representation of P_UAT_MODE
|
|
67
|
-
"""
|
|
68
|
-
|
|
69
|
-
self.frame_loss_ratio = P_UAT_FLR(conn, module_id, port_id)
|
|
70
|
-
"""L23 port's Frame Loss Ratio for UAT.
|
|
71
|
-
Representation of P_UAT_FLR
|
|
72
|
-
"""
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
class PortStatistics:
|
|
76
|
-
"""L23 port statistics"""
|
|
77
|
-
|
|
78
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
79
|
-
self.rx = GenuinePortReceptionStatistics(conn, module_id, port_id)
|
|
80
|
-
"""L23 port's RX statistics."""
|
|
81
|
-
|
|
82
|
-
self.tx = PortTransmissionStatistics(conn, module_id, port_id)
|
|
83
|
-
"""L23 port's TX statistics."""
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
class BasePortL23Genuine(BasePortL23):
|
|
87
|
-
"""L23 port basic configuration."""
|
|
88
|
-
|
|
89
|
-
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
90
|
-
super().__init__(conn, module_id, port_id)
|
|
91
|
-
|
|
92
|
-
self._local_states = ports_state.PortL23GenuineLocalState()
|
|
93
|
-
|
|
94
|
-
self.flash = P_FLASH(conn, module_id, port_id)
|
|
95
|
-
"""L23 port flashes.
|
|
96
|
-
Representation of P_FLASH
|
|
97
|
-
"""
|
|
98
|
-
|
|
99
|
-
self.status = P_STATUS(conn, module_id, port_id)
|
|
100
|
-
"""L23 port's received optical signal level'.
|
|
101
|
-
Representation of P_STATUS
|
|
102
|
-
"""
|
|
103
|
-
|
|
104
|
-
self.config_load_mode = P_LOADMODE(conn, module_id, port_id)
|
|
105
|
-
"""Chimera Port loading mode.
|
|
106
|
-
Representation of P_LOADMODE
|
|
107
|
-
"""
|
|
108
|
-
|
|
109
|
-
self.tcvr_status = P_TCVRSTATUS(conn, module_id, port_id)
|
|
110
|
-
"""L23 port transceiver status information.
|
|
111
|
-
Representation of P_TCVRSTATUS
|
|
112
|
-
"""
|
|
113
|
-
|
|
114
|
-
self.fec_mode = PP_FECMODE(conn, module_id, port_id)
|
|
115
|
-
"""L23 port FEC mode.
|
|
116
|
-
Representation of PP_FECMODE
|
|
117
|
-
"""
|
|
118
|
-
|
|
119
|
-
self.speed = GenuineSpeed(conn, module_id, port_id)
|
|
120
|
-
"""L23 port speed configuration.
|
|
121
|
-
"""
|
|
122
|
-
|
|
123
|
-
self.uat = UnAvailableTime(conn, module_id, port_id)
|
|
124
|
-
"""L23 port UnAvailable Time configuration.
|
|
125
|
-
"""
|
|
126
|
-
|
|
127
|
-
self.transceiver = PortTransceiver(conn, module_id, port_id)
|
|
128
|
-
"""L23 port transceiver configuration.
|
|
129
|
-
"""
|
|
130
|
-
|
|
131
|
-
self.statistics = PortStatistics(conn, module_id, port_id)
|
|
132
|
-
"""L23 port statistics.
|
|
133
|
-
"""
|
|
134
|
-
|
|
135
|
-
self.streams: StreamIndices = idx_mgr.IndexManager(
|
|
136
|
-
conn,
|
|
137
|
-
GenuineStreamIdx,
|
|
138
|
-
module_id,
|
|
139
|
-
port_id
|
|
140
|
-
)
|
|
141
|
-
"""L23 port stream index manager.
|
|
142
|
-
"""
|
|
143
|
-
|
|
144
|
-
self.filters: FilterIndices = idx_mgr.IndexManager(
|
|
145
|
-
conn,
|
|
146
|
-
GenuineFilterIdx,
|
|
147
|
-
module_id,
|
|
148
|
-
port_id
|
|
149
|
-
)
|
|
150
|
-
"""L23 port filter index manager.
|
|
151
|
-
"""
|
|
152
|
-
|
|
153
|
-
self.datasets: PortDatasetIndices = idx_mgr.IndexManager(
|
|
154
|
-
conn,
|
|
155
|
-
PortDatasetIdx,
|
|
156
|
-
module_id,
|
|
157
|
-
port_id
|
|
158
|
-
)
|
|
159
|
-
"""L23 port histogram index manager.
|
|
160
|
-
"""
|
|
161
|
-
|
|
162
|
-
@property
|
|
163
|
-
def info(self) -> ports_state.PortL23GenuineLocalState:
|
|
164
|
-
return self._local_states
|
|
165
|
-
|
|
166
|
-
async def _setup(self):
|
|
167
|
-
await self._local_states.initiate(self)
|
|
168
|
-
self._local_states.register_subscriptions(self)
|
|
169
|
-
return self
|
|
170
|
-
|
|
171
|
-
on_speed_selection_change = functools.partialmethod(utils.on_event, P_SPEEDSELECTION)
|
|
172
|
-
"""Register a callback to the event that the port's speed mode changes."""
|