tdl-xoa-driver 1.0.0b1__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.0.0b1.dist-info/LICENSE +202 -0
- tdl_xoa_driver-1.0.0b1.dist-info/METADATA +177 -0
- tdl_xoa_driver-1.0.0b1.dist-info/RECORD +325 -0
- tdl_xoa_driver-1.0.0b1.dist-info/WHEEL +5 -0
- tdl_xoa_driver-1.0.0b1.dist-info/top_level.txt +1 -0
- xoa_driver/__init__.py +2 -0
- xoa_driver/enums.py +399 -0
- xoa_driver/exceptions.py +77 -0
- xoa_driver/functions/__init__.py +0 -0
- xoa_driver/functions/anlt.py +744 -0
- xoa_driver/functions/anlt_ll_debug.py +429 -0
- xoa_driver/functions/cli.py +581 -0
- xoa_driver/functions/exceptions.py +72 -0
- xoa_driver/functions/headers.py +608 -0
- xoa_driver/functions/mgmt.py +515 -0
- xoa_driver/functions/tools.py +256 -0
- xoa_driver/hlfuncs.py +18 -0
- xoa_driver/internals/__init__.py +0 -0
- xoa_driver/internals/commands/__init__.py +31 -0
- xoa_driver/internals/commands/c_commands.py +2041 -0
- xoa_driver/internals/commands/enums.py +3289 -0
- xoa_driver/internals/commands/m4_commands.py +700 -0
- xoa_driver/internals/commands/m4e_commands.py +107 -0
- xoa_driver/internals/commands/m_commands.py +1875 -0
- xoa_driver/internals/commands/p4_commands.py +2221 -0
- xoa_driver/internals/commands/p4e_commands.py +160 -0
- xoa_driver/internals/commands/p4g_commands.py +7253 -0
- xoa_driver/internals/commands/p_commands.py +6000 -0
- xoa_driver/internals/commands/pc_commands.py +335 -0
- xoa_driver/internals/commands/pd_commands.py +355 -0
- xoa_driver/internals/commands/pe_commands.py +1018 -0
- xoa_driver/internals/commands/pec_commands.py +265 -0
- xoa_driver/internals/commands/ped_commands.py +1034 -0
- xoa_driver/internals/commands/pef_commands.py +2216 -0
- xoa_driver/internals/commands/pf_commands.py +379 -0
- xoa_driver/internals/commands/pl1_commands.py +1588 -0
- xoa_driver/internals/commands/pl_commands.py +178 -0
- xoa_driver/internals/commands/pm_commands.py +256 -0
- xoa_driver/internals/commands/pp_commands.py +2341 -0
- xoa_driver/internals/commands/pr_commands.py +812 -0
- xoa_driver/internals/commands/ps_commands.py +2311 -0
- xoa_driver/internals/commands/pt_commands.py +370 -0
- xoa_driver/internals/commands/px_commands.py +303 -0
- xoa_driver/internals/commands/subtypes.py +86 -0
- xoa_driver/internals/core/__init__.py +0 -0
- xoa_driver/internals/core/builders.py +39 -0
- xoa_driver/internals/core/exceptions.py +69 -0
- xoa_driver/internals/core/funcs.py +81 -0
- xoa_driver/internals/core/funcs.pyi +1072 -0
- xoa_driver/internals/core/interfaces.py +47 -0
- xoa_driver/internals/core/token.py +44 -0
- xoa_driver/internals/core/transporter/__init__.py +0 -0
- xoa_driver/internals/core/transporter/_processor.py +83 -0
- xoa_driver/internals/core/transporter/_publisher.py +101 -0
- xoa_driver/internals/core/transporter/_request_id_counter.py +28 -0
- xoa_driver/internals/core/transporter/_stream.py +99 -0
- xoa_driver/internals/core/transporter/_typings.py +43 -0
- xoa_driver/internals/core/transporter/exceptions.py +44 -0
- xoa_driver/internals/core/transporter/handler.py +127 -0
- xoa_driver/internals/core/transporter/logger/__init__.py +10 -0
- xoa_driver/internals/core/transporter/logger/__logger.py +94 -0
- xoa_driver/internals/core/transporter/logger/__state_off.py +32 -0
- xoa_driver/internals/core/transporter/logger/__state_on_default.py +70 -0
- xoa_driver/internals/core/transporter/logger/__state_on_loguru.py +51 -0
- xoa_driver/internals/core/transporter/logger/__state_on_user.py +48 -0
- xoa_driver/internals/core/transporter/protocol/__init__.py +0 -0
- xoa_driver/internals/core/transporter/protocol/_constants.py +77 -0
- xoa_driver/internals/core/transporter/protocol/_utils.py +59 -0
- xoa_driver/internals/core/transporter/protocol/exceptions.py +271 -0
- xoa_driver/internals/core/transporter/protocol/payload/__init__.py +70 -0
- xoa_driver/internals/core/transporter/protocol/payload/base_struct.py +283 -0
- xoa_driver/internals/core/transporter/protocol/payload/descriptor.py +119 -0
- xoa_driver/internals/core/transporter/protocol/payload/exceptions.py +20 -0
- xoa_driver/internals/core/transporter/protocol/payload/field.py +296 -0
- xoa_driver/internals/core/transporter/protocol/payload/types.py +173 -0
- xoa_driver/internals/core/transporter/protocol/payload/utils.py +53 -0
- xoa_driver/internals/core/transporter/protocol/struct_header.py +123 -0
- xoa_driver/internals/core/transporter/protocol/struct_request.py +65 -0
- xoa_driver/internals/core/transporter/protocol/struct_response.py +89 -0
- xoa_driver/internals/core/transporter/registry.py +43 -0
- xoa_driver/internals/exceptions/__init__.py +9 -0
- xoa_driver/internals/exceptions/modules.py +13 -0
- xoa_driver/internals/exceptions/testers.py +21 -0
- xoa_driver/internals/hli_v1/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/base_index.py +39 -0
- xoa_driver/internals/hli_v1/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/connection_group/cg.py +186 -0
- xoa_driver/internals/hli_v1/indices/connection_group/histogram.py +78 -0
- xoa_driver/internals/hli_v1/indices/connection_group/l2.py +94 -0
- xoa_driver/internals/hli_v1/indices/connection_group/l3.py +130 -0
- xoa_driver/internals/hli_v1/indices/connection_group/raw.py +200 -0
- xoa_driver/internals/hli_v1/indices/connection_group/replay.py +109 -0
- xoa_driver/internals/hli_v1/indices/connection_group/tcp.py +314 -0
- xoa_driver/internals/hli_v1/indices/connection_group/tls.py +198 -0
- xoa_driver/internals/hli_v1/indices/connection_group/udp.py +133 -0
- xoa_driver/internals/hli_v1/indices/connection_group/user_state.py +28 -0
- xoa_driver/internals/hli_v1/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/filter/base_filter.py +65 -0
- xoa_driver/internals/hli_v1/indices/filter/genuine_filter.py +20 -0
- xoa_driver/internals/hli_v1/indices/length_term.py +49 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/base_macsecsc.py +224 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/genuine_macsecsc.py +72 -0
- xoa_driver/internals/hli_v1/indices/match_term.py +64 -0
- xoa_driver/internals/hli_v1/indices/port_dataset.py +72 -0
- xoa_driver/internals/hli_v1/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/streams/base_stream.py +405 -0
- xoa_driver/internals/hli_v1/indices/streams/genuine_stream.py +64 -0
- xoa_driver/internals/hli_v1/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v1/modules/__interfaces.py +21 -0
- xoa_driver/internals/hli_v1/modules/base_module.py +138 -0
- xoa_driver/internals/hli_v1/modules/module_chimera.py +366 -0
- xoa_driver/internals/hli_v1/modules/module_l23ve.py +73 -0
- xoa_driver/internals/hli_v1/modules/module_l47.py +397 -0
- xoa_driver/internals/hli_v1/modules/module_l47ve.py +9 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_combi.py +83 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_d.py +75 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_e.py +85 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_f.py +145 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_g.py +84 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_h.py +40 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_i.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_j.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_k.py +39 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_l.py +55 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_l1.py +800 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_m.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_n.py +40 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/module_l23_base.py +383 -0
- xoa_driver/internals/hli_v1/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/base_port.py +125 -0
- xoa_driver/internals/hli_v1/ports/port_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_capture.py +70 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23.py +527 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23_genuine.py +229 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py +231 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transceiver.py +117 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transmission_statistics.py +131 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/general.py +396 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/shadow.py +104 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/working.py +36 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_custom_distribution.py +125 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_distribution.py +174 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_chimera.py +119 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_emulation.py +244 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/reception_statistics.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/transmission_statistics.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_combi.py +37 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_d.py +51 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_e.py +107 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_f.py +151 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_g.py +77 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_h.py +67 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_i.py +84 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_j.py +68 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_k.py +73 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_l.py +82 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py +166 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_m.py +29 -0
- xoa_driver/internals/hli_v1/ports/port_l23/fault_jkl.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/freya_l1.py +722 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ghijkl.py +369 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ijkl_chimera.py +60 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_l.py +78 -0
- xoa_driver/internals/hli_v1/ports/port_l23/port_l23ve.py +101 -0
- xoa_driver/internals/hli_v1/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l47/counters.py +174 -0
- xoa_driver/internals/hli_v1/ports/port_l47/main.py +228 -0
- xoa_driver/internals/hli_v1/ports/port_l47/packet_engine.py +31 -0
- xoa_driver/internals/hli_v1/revisions.py +11 -0
- xoa_driver/internals/hli_v1/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/_base_tester.py +259 -0
- xoa_driver/internals/hli_v1/testers/genuine/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/health.py +16 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/rest_api.py +38 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/time_keeper.py +57 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/upload_file.py +29 -0
- xoa_driver/internals/hli_v1/testers/genuine/management_interface.py +42 -0
- xoa_driver/internals/hli_v1/testers/l23_tester.py +196 -0
- xoa_driver/internals/hli_v1/testers/l23ve_tester.py +114 -0
- xoa_driver/internals/hli_v1/testers/l47_tester.py +106 -0
- xoa_driver/internals/hli_v1/testers/l47ve_tester.py +54 -0
- 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 +39 -0
- xoa_driver/internals/hli_v2/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/connection_group/cg.py +115 -0
- xoa_driver/internals/hli_v2/indices/connection_group/histogram.py +59 -0
- xoa_driver/internals/hli_v2/indices/connection_group/l2.py +71 -0
- xoa_driver/internals/hli_v2/indices/connection_group/l3.py +96 -0
- xoa_driver/internals/hli_v2/indices/connection_group/raw.py +148 -0
- xoa_driver/internals/hli_v2/indices/connection_group/replay.py +89 -0
- xoa_driver/internals/hli_v2/indices/connection_group/tcp.py +261 -0
- xoa_driver/internals/hli_v2/indices/connection_group/tls.py +166 -0
- xoa_driver/internals/hli_v2/indices/connection_group/udp.py +112 -0
- xoa_driver/internals/hli_v2/indices/connection_group/user_state.py +25 -0
- xoa_driver/internals/hli_v2/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/filter/base_filter.py +50 -0
- xoa_driver/internals/hli_v2/indices/filter/genuine_filter.py +17 -0
- xoa_driver/internals/hli_v2/indices/length_term.py +44 -0
- xoa_driver/internals/hli_v2/indices/match_term.py +49 -0
- xoa_driver/internals/hli_v2/indices/port_dataset.py +53 -0
- xoa_driver/internals/hli_v2/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/streams/base_stream.py +234 -0
- xoa_driver/internals/hli_v2/indices/streams/genuine_stream.py +32 -0
- xoa_driver/internals/hli_v2/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/__interfaces.py +21 -0
- xoa_driver/internals/hli_v2/modules/base_module.py +125 -0
- xoa_driver/internals/hli_v2/modules/module_chimera.py +358 -0
- xoa_driver/internals/hli_v2/modules/module_l23ve.py +58 -0
- xoa_driver/internals/hli_v2/modules/module_l47.py +230 -0
- xoa_driver/internals/hli_v2/modules/module_l47ve.py +8 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_combi.py +73 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_d.py +75 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_e.py +85 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_f.py +144 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_g.py +84 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_h.py +40 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_i.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_j.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_k.py +39 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l.py +55 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l1.py +797 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_m.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_n.py +40 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/module_l23_base.py +339 -0
- xoa_driver/internals/hli_v2/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/base_port.py +105 -0
- 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 +64 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23.py +441 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23_genuine.py +172 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +156 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transceiver.py +117 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transmission_statistics.py +59 -0
- 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 +15 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/general.py +340 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/shadow.py +99 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/working.py +36 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +116 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_distribution.py +102 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_chimera.py +113 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_emulation.py +420 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/reception_statistics.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/transmission_statistics.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_combi.py +36 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_d.py +49 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_e.py +96 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_f.py +144 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_g.py +77 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_h.py +60 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_i.py +66 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_j.py +53 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_k.py +58 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_l.py +67 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +149 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_m.py +28 -0
- xoa_driver/internals/hli_v2/ports/port_l23/fault_jkl.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ghijkl.py +342 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ijkl_chimera.py +50 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_l.py +65 -0
- xoa_driver/internals/hli_v2/ports/port_l23/port_l23ve.py +81 -0
- xoa_driver/internals/hli_v2/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l47/counters.py +146 -0
- xoa_driver/internals/hli_v2/ports/port_l47/main.py +137 -0
- xoa_driver/internals/hli_v2/ports/port_l47/packet_engine.py +20 -0
- xoa_driver/internals/hli_v2/revisions.py +11 -0
- xoa_driver/internals/hli_v2/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/_base_tester.py +207 -0
- 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 +16 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/rest_api.py +34 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/time_keeper.py +50 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/upload_file.py +26 -0
- xoa_driver/internals/hli_v2/testers/genuine/management_interface.py +38 -0
- xoa_driver/internals/hli_v2/testers/l23_tester.py +159 -0
- xoa_driver/internals/hli_v2/testers/l23ve_tester.py +98 -0
- xoa_driver/internals/hli_v2/testers/l47_tester.py +95 -0
- xoa_driver/internals/hli_v2/testers/l47ve_tester.py +50 -0
- xoa_driver/internals/state_storage/__init__.py +0 -0
- xoa_driver/internals/state_storage/_speed_detector.py +121 -0
- xoa_driver/internals/state_storage/modules_state.py +128 -0
- xoa_driver/internals/state_storage/ports_state.py +154 -0
- xoa_driver/internals/state_storage/testers_state.py +104 -0
- xoa_driver/internals/utils/__init__.py +0 -0
- xoa_driver/internals/utils/attributes.py +33 -0
- xoa_driver/internals/utils/cap_id.py +63 -0
- xoa_driver/internals/utils/con_traffic_light.py +88 -0
- xoa_driver/internals/utils/indices/__init__.py +0 -0
- xoa_driver/internals/utils/indices/_interfaces.py +26 -0
- xoa_driver/internals/utils/indices/header_modifier_manager.py +56 -0
- xoa_driver/internals/utils/indices/index_manager.py +95 -0
- xoa_driver/internals/utils/indices/observer.py +17 -0
- xoa_driver/internals/utils/kind.py +19 -0
- xoa_driver/internals/utils/managers/__init__.py +0 -0
- xoa_driver/internals/utils/managers/abc.py +44 -0
- xoa_driver/internals/utils/managers/exceptions.py +22 -0
- xoa_driver/internals/utils/managers/modules_manager.py +118 -0
- xoa_driver/internals/utils/managers/ports_manager.py +116 -0
- xoa_driver/internals/utils/rev_tool.py +21 -0
- xoa_driver/internals/utils/session.py +117 -0
- xoa_driver/internals/warn.py +32 -0
- xoa_driver/lli.py +15 -0
- xoa_driver/misc.py +57 -0
- xoa_driver/modules.py +448 -0
- xoa_driver/ports.py +332 -0
- xoa_driver/testers.py +37 -0
- xoa_driver/utils.py +12 -0
- xoa_driver/v2/__init__.py +11 -0
- xoa_driver/v2/misc.py +77 -0
- xoa_driver/v2/modules.py +308 -0
- xoa_driver/v2/ports.py +232 -0
- xoa_driver/v2/testers.py +24 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
|
|
3
|
+
from xoa_driver.internals.commands import P_BRRMODE, P_BRRSTATUS
|
|
4
|
+
|
|
5
|
+
from .bases.port_l23_genuine import BasePortL23Genuine
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from xoa_driver.internals.core import interfaces as itf
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class FamilyM(BasePortL23Genuine):
|
|
12
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
13
|
+
super().__init__(conn, module_id, port_id)
|
|
14
|
+
self.brr_mode = P_BRRMODE(conn, module_id, port_id)
|
|
15
|
+
"""BRR mode.
|
|
16
|
+
Representation of P_BRRMODE
|
|
17
|
+
"""
|
|
18
|
+
self.brr_status = P_BRRSTATUS(conn, module_id, port_id)
|
|
19
|
+
"""Actual BRR status.
|
|
20
|
+
|
|
21
|
+
:type: P_BRRSTATUS
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class POdin1G3S6PT1RJ45(FamilyM):
|
|
26
|
+
"""L23 port on Odin-1G-3S-6P-T1-RJ45 module.
|
|
27
|
+
"""
|
|
28
|
+
...
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
from xoa_driver.internals.commands import (
|
|
3
|
+
P_FAULTSIGNALING,
|
|
4
|
+
P_FAULTSTATUS,
|
|
5
|
+
)
|
|
6
|
+
if TYPE_CHECKING:
|
|
7
|
+
from xoa_driver.internals.core import interfaces as itf
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Fault:
|
|
11
|
+
"""L23 port fault settings."""
|
|
12
|
+
|
|
13
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
14
|
+
self.signaling = P_FAULTSIGNALING(conn, module_id, port_id)
|
|
15
|
+
"""L23 port fault signaling.
|
|
16
|
+
Representation ofP_FAULTSIGNALING
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
self.status = P_FAULTSTATUS(conn, module_id, port_id)
|
|
20
|
+
"""L23 port fault status.
|
|
21
|
+
Representation of P_FAULTSTATUS
|
|
22
|
+
"""
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
TYPE_CHECKING,
|
|
3
|
+
Tuple,
|
|
4
|
+
)
|
|
5
|
+
from typing_extensions import Self
|
|
6
|
+
if TYPE_CHECKING:
|
|
7
|
+
from xoa_driver.internals.core import interfaces as itf
|
|
8
|
+
from xoa_driver.internals.commands import (
|
|
9
|
+
PP_ALARMS_ERRORS,
|
|
10
|
+
PP_TXLANECONFIG,
|
|
11
|
+
PP_TXLANEINJECT,
|
|
12
|
+
PP_TXPRBSCONFIG,
|
|
13
|
+
PP_TXERRORRATE,
|
|
14
|
+
PP_TXINJECTONE,
|
|
15
|
+
PP_RXTOTALSTATS,
|
|
16
|
+
PP_RXFECSTATS,
|
|
17
|
+
PP_RXLANELOCK,
|
|
18
|
+
PP_RXLANESTATUS,
|
|
19
|
+
PP_RXLANEERRORS,
|
|
20
|
+
PP_RXPRBSSTATUS,
|
|
21
|
+
PP_RXCLEAR,
|
|
22
|
+
PP_RXLASERPOWER,
|
|
23
|
+
PP_TXLASERPOWER,
|
|
24
|
+
PP_EYEMEASURE,
|
|
25
|
+
PP_EYERESOLUTION,
|
|
26
|
+
PP_EYEREAD,
|
|
27
|
+
PP_EYEINFO,
|
|
28
|
+
PP_PHYTXEQ,
|
|
29
|
+
PP_PHYRETUNE,
|
|
30
|
+
PP_PHYAUTOTUNE,
|
|
31
|
+
PP_EYEBER,
|
|
32
|
+
PP_PHYAUTONEG,
|
|
33
|
+
PP_TXPRBSTYPE,
|
|
34
|
+
PP_RXPRBSTYPE,
|
|
35
|
+
# PP_FECMODE, # moved to all genuine ports
|
|
36
|
+
PP_EYEDWELLBITS,
|
|
37
|
+
PP_PHYSIGNALSTATUS,
|
|
38
|
+
PP_PRBSTYPE,
|
|
39
|
+
PP_PHYSETTINGS,
|
|
40
|
+
PP_PHYRXEQ,
|
|
41
|
+
PP_PRECODING,
|
|
42
|
+
PP_GRAYCODING,
|
|
43
|
+
PP_PRECODINGSTATUS,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class PcsPmaAlarms:
|
|
48
|
+
"""L23 high-speed port PCS/PMA alarms"""
|
|
49
|
+
|
|
50
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
51
|
+
self.errors = PP_ALARMS_ERRORS(conn, module_id, port_id)
|
|
52
|
+
"""Error count of each alarm on a L23 high-speed port.
|
|
53
|
+
Representation of PP_ALARMS_ERRORS
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class PcsPmaTransceiver:
|
|
58
|
+
"""L23 high-speed port PCS/PMA transceivers"""
|
|
59
|
+
|
|
60
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
61
|
+
self.tx_laser_power = PP_TXLASERPOWER(conn, module_id, port_id)
|
|
62
|
+
"""Power of TX laser.
|
|
63
|
+
Representation of PP_TXLASERPOWER
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
self.rx_laser_power = PP_RXLASERPOWER(conn, module_id, port_id)
|
|
67
|
+
"""Power of RX laser.
|
|
68
|
+
Representation of PP_RXLASERPOWER
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class PcsPmaRxLaneStatus:
|
|
73
|
+
"""L23 high-speed port PCS/PMA lane status"""
|
|
74
|
+
|
|
75
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, lane_idx: int) -> None:
|
|
76
|
+
self.errors = PP_RXLANEERRORS(conn, module_id, port_id, lane_idx)
|
|
77
|
+
"""RX lane error statistics.
|
|
78
|
+
Representation of PP_RXLANEERRORS
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
self.lock = PP_RXLANELOCK(conn, module_id, port_id, lane_idx)
|
|
82
|
+
"""RX lane lock.
|
|
83
|
+
Representation of PP_RXLANELOCK
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
self.status = PP_RXLANESTATUS(conn, module_id, port_id, lane_idx)
|
|
87
|
+
"""RX lane status
|
|
88
|
+
Representation of PP_RXLANESTATUS
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class PcsPmaTxErrorGeneration:
|
|
93
|
+
"""L23 high-speed port PCS/PMA TX error generation."""
|
|
94
|
+
|
|
95
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
96
|
+
self.error_rate = PP_TXERRORRATE(conn, module_id, port_id)
|
|
97
|
+
"""The rate of continuous bit-level error injection.
|
|
98
|
+
Representation of PP_TXERRORRATE
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
self.inject_one = PP_TXINJECTONE(conn, module_id, port_id)
|
|
102
|
+
"""Inject a single bit-level error.
|
|
103
|
+
Representation of PP_TXINJECTONE
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class PcsPmaRx:
|
|
108
|
+
"""L23 high-speed port PCS/PMA RX"""
|
|
109
|
+
|
|
110
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
111
|
+
self.total_status = PP_RXTOTALSTATS(conn, module_id, port_id)
|
|
112
|
+
"""RX FEC total counters.
|
|
113
|
+
Representation of PP_RXTOTALSTATS
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
self.fec_status = PP_RXFECSTATS(conn, module_id, port_id)
|
|
117
|
+
"""RX FEC statistics.
|
|
118
|
+
Representation of PP_RXFECSTATS
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
self.clear = PP_RXCLEAR(conn, module_id, port_id)
|
|
122
|
+
"""Clear all the PCS/PMA receiver statistics.
|
|
123
|
+
Representation of PP_RXCLEAR
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class PcsPmaPhy:
|
|
128
|
+
"""L23 high-speed port PCS/PMA PHY settings."""
|
|
129
|
+
|
|
130
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
131
|
+
self.auto_neg = PP_PHYAUTONEG(conn, module_id, port_id)
|
|
132
|
+
""" Auto-negotiation settings of the PHY.
|
|
133
|
+
Representation of PP_PHYAUTONEG
|
|
134
|
+
"""
|
|
135
|
+
|
|
136
|
+
self.signal_status = PP_PHYSIGNALSTATUS(conn, module_id, port_id)
|
|
137
|
+
"""The PHY signal status.
|
|
138
|
+
Representation of PP_PHYSIGNALSTATUS
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
self.settings = PP_PHYSETTINGS(conn, module_id, port_id)
|
|
142
|
+
"""Low-level PHY settings
|
|
143
|
+
Representation of PP_PHYSETTINGS
|
|
144
|
+
"""
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class Lane:
|
|
148
|
+
"""L23 high-speed port lane configuration and status."""
|
|
149
|
+
|
|
150
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, lane_idx: int) -> None:
|
|
151
|
+
self.rx_status = PcsPmaRxLaneStatus(conn, module_id, port_id, lane_idx)
|
|
152
|
+
"""PCS/PMA RX lane status.
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
self.tx_error_inject = PP_TXLANEINJECT(conn, module_id, port_id, lane_idx)
|
|
156
|
+
"""Inject CAUI error into a TX lane.
|
|
157
|
+
Representation of PP_TXLANEINJECT
|
|
158
|
+
"""
|
|
159
|
+
|
|
160
|
+
self.tx_config = PP_TXLANECONFIG(conn, module_id, port_id, lane_idx)
|
|
161
|
+
"""TX lane configuration.
|
|
162
|
+
Representation of PP_TXLANECONFIG
|
|
163
|
+
"""
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
class PcsPma:
|
|
167
|
+
"""L23 high-speed port PCS/PMA"""
|
|
168
|
+
|
|
169
|
+
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
170
|
+
self._conn = conn
|
|
171
|
+
self.__port = port
|
|
172
|
+
|
|
173
|
+
self.alarms = PcsPmaAlarms(conn, *port.kind)
|
|
174
|
+
"""PCS/PMA alarms"""
|
|
175
|
+
|
|
176
|
+
self.transceiver = PcsPmaTransceiver(conn, *port.kind)
|
|
177
|
+
"""PCS/PMA transceiver"""
|
|
178
|
+
|
|
179
|
+
self.error_gen = PcsPmaTxErrorGeneration(conn, *port.kind)
|
|
180
|
+
"""PCS/PMA error generation"""
|
|
181
|
+
|
|
182
|
+
self.rx = PcsPmaRx(conn, *port.kind)
|
|
183
|
+
"""PCS/PMA RX"""
|
|
184
|
+
|
|
185
|
+
self.phy = PcsPmaPhy(conn, *port.kind)
|
|
186
|
+
"""PCS/PMA PHY"""
|
|
187
|
+
|
|
188
|
+
self.prbs_config = PRBSConfig(conn, *port.kind)
|
|
189
|
+
"""PCS/PMA PRBS configuration"""
|
|
190
|
+
|
|
191
|
+
self.lanes: Tuple["Lane", ...] = tuple(
|
|
192
|
+
Lane(self._conn, *self.__port.kind, lane_idx=idx)
|
|
193
|
+
for idx in range(self.__port.info.capabilities.lane_count)
|
|
194
|
+
) # TODO: need to fix, currently port.info.capabilities must be none because lanes are created before awaiting the port
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class PRBSConfig:
|
|
198
|
+
"""L23 high-speed port PRBS configuration."""
|
|
199
|
+
|
|
200
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
201
|
+
self.type = PP_PRBSTYPE(conn, module_id, port_id)
|
|
202
|
+
"""PRBS type used when in PRBS mode.
|
|
203
|
+
Representation of PP_PRBSTYPE
|
|
204
|
+
"""
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
class SDEyeDiagram:
|
|
208
|
+
"""L23 high-speed port SerDes eye diagram."""
|
|
209
|
+
|
|
210
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
211
|
+
self.__conn = conn
|
|
212
|
+
self.__module_id = module_id
|
|
213
|
+
self.__port_id = port_id
|
|
214
|
+
self.__serdes_index = serdes_xindex
|
|
215
|
+
self.measure = PP_EYEMEASURE(conn, module_id, port_id, serdes_xindex)
|
|
216
|
+
"""BER eye measurement.
|
|
217
|
+
Representation of PP_EYEMEASURE
|
|
218
|
+
"""
|
|
219
|
+
|
|
220
|
+
self.resolution = PP_EYERESOLUTION(conn, module_id, port_id, serdes_xindex)
|
|
221
|
+
"""Resolution for BER eye measurement.
|
|
222
|
+
Representation of PP_EYERESOLUTION
|
|
223
|
+
"""
|
|
224
|
+
|
|
225
|
+
self.info = PP_EYEINFO(conn, module_id, port_id, serdes_xindex)
|
|
226
|
+
"""Information of BER eye measurement.
|
|
227
|
+
Representation of PP_EYEINFO
|
|
228
|
+
"""
|
|
229
|
+
|
|
230
|
+
self.ber = PP_EYEBER(conn, module_id, port_id, serdes_xindex)
|
|
231
|
+
"""BER estimation of an eye diagram.
|
|
232
|
+
Representation of PP_EYEBER
|
|
233
|
+
"""
|
|
234
|
+
|
|
235
|
+
self.dwell_bits = PP_EYEDWELLBITS(conn, module_id, port_id, serdes_xindex)
|
|
236
|
+
"""Dwell bits for an eye capture.
|
|
237
|
+
Representation of PP_EYEDWELLBITS
|
|
238
|
+
"""
|
|
239
|
+
|
|
240
|
+
def __await__(self):
|
|
241
|
+
return self._setup().__await__()
|
|
242
|
+
|
|
243
|
+
async def _setup(self) -> Self:
|
|
244
|
+
resolution = await self.resolution.get()
|
|
245
|
+
self.read_column = tuple(
|
|
246
|
+
PP_EYEREAD(
|
|
247
|
+
self.__conn,
|
|
248
|
+
self.__module_id,
|
|
249
|
+
self.__port_id,
|
|
250
|
+
self.__serdes_index,
|
|
251
|
+
_colum_xindex=x
|
|
252
|
+
)
|
|
253
|
+
for x in range(resolution.x_resolution)
|
|
254
|
+
)
|
|
255
|
+
return self
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
class SDPhy:
|
|
259
|
+
"""L23 high-speed port SerDes PHY configuration and status."""
|
|
260
|
+
|
|
261
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
262
|
+
self.tx_equalizer = PP_PHYTXEQ(conn, module_id, port_id, serdes_xindex)
|
|
263
|
+
"""Equalizer settings of the on-board PHY in the TX direction.
|
|
264
|
+
Representation of PP_PHYTXEQ
|
|
265
|
+
"""
|
|
266
|
+
|
|
267
|
+
self.rx_equalizer = PP_PHYRXEQ(conn, module_id, port_id, serdes_xindex)
|
|
268
|
+
"""Equalizer settings of the on-board PHY in the RX direction.
|
|
269
|
+
Representation of PP_PHYRXEQ
|
|
270
|
+
"""
|
|
271
|
+
|
|
272
|
+
self.retune = PP_PHYRETUNE(conn, module_id, port_id, serdes_xindex)
|
|
273
|
+
"""Retuning of the PHY.
|
|
274
|
+
Representation of PP_PHYRETUNE
|
|
275
|
+
"""
|
|
276
|
+
|
|
277
|
+
self.autotune = PP_PHYAUTOTUNE(conn, module_id, port_id, serdes_xindex)
|
|
278
|
+
"""Autotune of the PHY.
|
|
279
|
+
Representation of PP_PHYAUTOTUNE
|
|
280
|
+
"""
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
class SDPma:
|
|
284
|
+
"""L23 high-speed port PMA"""
|
|
285
|
+
|
|
286
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
287
|
+
self.precoding_config = PP_PRECODING(conn, module_id, port_id, serdes_xindex)
|
|
288
|
+
"""GET/SET Pre-Coding Configurations. (only for Freya)
|
|
289
|
+
|
|
290
|
+
:type: PP_PRECODING
|
|
291
|
+
"""
|
|
292
|
+
|
|
293
|
+
self.precoding_status = PP_PRECODINGSTATUS(conn, module_id, port_id, serdes_xindex)
|
|
294
|
+
"""GET/SET Pre-Coding Configurations. (only for Freya)
|
|
295
|
+
|
|
296
|
+
:type: PP_PRECODING
|
|
297
|
+
"""
|
|
298
|
+
|
|
299
|
+
self.graycoding = PP_GRAYCODING(conn, module_id, port_id, serdes_xindex)
|
|
300
|
+
"""GET/SET Gray-Coding Configurations. (only for Freya)
|
|
301
|
+
|
|
302
|
+
:type: PP_GRAYCODING
|
|
303
|
+
"""
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
class Prbs:
|
|
307
|
+
"""L23 high-speed port SerDes PRBS configuration and status."""
|
|
308
|
+
|
|
309
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
310
|
+
self.tx_config = PP_TXPRBSCONFIG(conn, module_id, port_id, serdes_xindex)
|
|
311
|
+
"""TX PRBS configuration of a SerDes.
|
|
312
|
+
Representation of PP_TXPRBSCONFIG
|
|
313
|
+
"""
|
|
314
|
+
|
|
315
|
+
self.status = PP_RXPRBSSTATUS(conn, module_id, port_id, serdes_xindex)
|
|
316
|
+
"""RX PRBS status on a SerDes
|
|
317
|
+
Representation of PP_RXPRBSSTATUS
|
|
318
|
+
"""
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
class SerDes:
|
|
322
|
+
"""L23 high-speed port SerDes configuration and status."""
|
|
323
|
+
|
|
324
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, serdes_xindex: int) -> None:
|
|
325
|
+
self.prbs = Prbs(conn, module_id, port_id, serdes_xindex)
|
|
326
|
+
"""PRBS configuration"""
|
|
327
|
+
|
|
328
|
+
self.phy = SDPhy(conn, module_id, port_id, serdes_xindex)
|
|
329
|
+
"""PHY configuration"""
|
|
330
|
+
|
|
331
|
+
self.eye_diagram = SDEyeDiagram(conn, module_id, port_id, serdes_xindex)
|
|
332
|
+
"""Eye diagram"""
|
|
333
|
+
|
|
334
|
+
self.pma = SDPma(conn, module_id, port_id, serdes_xindex)
|
|
335
|
+
"""PMA layer"""
|
|
336
|
+
|
|
337
|
+
def __await__(self):
|
|
338
|
+
return self._setup().__await__()
|
|
339
|
+
|
|
340
|
+
async def _setup(self) -> Self:
|
|
341
|
+
await self.eye_diagram
|
|
342
|
+
return self
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
if TYPE_CHECKING:
|
|
3
|
+
from xoa_driver.internals.core import interfaces as itf
|
|
4
|
+
from xoa_driver.internals.commands import (
|
|
5
|
+
PP_LINKFLAP_PARAMS,
|
|
6
|
+
PP_LINKFLAP_ENABLE,
|
|
7
|
+
PP_PMAERRPUL_PARAMS,
|
|
8
|
+
PP_PMAERRPUL_ENABLE,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class LinkFlap:
|
|
13
|
+
"""L23 high-speed port link flap."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
16
|
+
self.params = PP_LINKFLAP_PARAMS(conn, module_id, port_id)
|
|
17
|
+
"""Link flap parameters.
|
|
18
|
+
Representation of PP_LINKFLAP_PARAMS
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
self.enable = PP_LINKFLAP_ENABLE(conn, module_id, port_id)
|
|
22
|
+
"""Link flap control.
|
|
23
|
+
Representation of PP_LINKFLAP_ENABLE
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class PmaPulseErrInj:
|
|
28
|
+
"""L23 high-speed port PMA pulse error injection."""
|
|
29
|
+
|
|
30
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
31
|
+
self.params = PP_PMAERRPUL_PARAMS(conn, module_id, port_id)
|
|
32
|
+
"""PMA pulse error injection parameters.
|
|
33
|
+
Representation of PP_PMAERRPUL_PARAMS
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
self.enable = PP_PMAERRPUL_ENABLE(conn, module_id, port_id)
|
|
37
|
+
"""PMA pulse error injection control.
|
|
38
|
+
Representation of PP_PMAERRPUL_ENABLE
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class PcsPma:
|
|
43
|
+
"""PCS/PMA settings"""
|
|
44
|
+
|
|
45
|
+
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
46
|
+
self.link_flap = LinkFlap(conn, *port.kind)
|
|
47
|
+
"""Link flap settings."""
|
|
48
|
+
|
|
49
|
+
self.pma_pulse_err_inj = PmaPulseErrInj(conn, *port.kind)
|
|
50
|
+
"""PMA pulse error injection settings."""
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
TYPE_CHECKING,
|
|
3
|
+
Tuple,
|
|
4
|
+
)
|
|
5
|
+
if TYPE_CHECKING:
|
|
6
|
+
from xoa_driver.internals.core import interfaces as itf
|
|
7
|
+
from xoa_driver.internals.commands import (
|
|
8
|
+
PP_AUTONEG,
|
|
9
|
+
PP_AUTONEGSTATUS,
|
|
10
|
+
PP_LINKTRAIN,
|
|
11
|
+
PP_LINKTRAINSTATUS,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class AutoNeg:
|
|
16
|
+
"""L23 high-speed port PCS/PMA auto-negotiation"""
|
|
17
|
+
|
|
18
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
19
|
+
self.settings = PP_AUTONEG(conn, module_id, port_id)
|
|
20
|
+
"""Auto-negotiation settings of the PHY.
|
|
21
|
+
Representation of PP_AUTONEG
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
self.status = PP_AUTONEGSTATUS(conn, module_id, port_id)
|
|
25
|
+
"""Status of auto-negotiation settings of the PHY.
|
|
26
|
+
Representation of PP_AUTONEGSTATUS
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class LinkTrain:
|
|
31
|
+
"""L23 high-speed port PCS/PMA link training"""
|
|
32
|
+
|
|
33
|
+
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
34
|
+
self.settings = PP_LINKTRAIN(conn, *port.kind)
|
|
35
|
+
"""Link training settings.
|
|
36
|
+
Representation of PP_LINKTRAIN
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
self.per_lane_status: Tuple[PP_LINKTRAINSTATUS, ...] = tuple(
|
|
40
|
+
PP_LINKTRAINSTATUS(conn, *port.kind, _serdes_xindex=idx)
|
|
41
|
+
for idx in range(port.info.capabilities.lane_count)
|
|
42
|
+
) # TODO: need to fix, currently port.info.capabilities must be none because virtual_lanes are created before awaiting the port
|
|
43
|
+
"""Link training status.
|
|
44
|
+
Representation of PP_LINKTRAINSTATUS
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class PcsPma:
|
|
49
|
+
"""L23 high-speed port PCS/PMA settings"""
|
|
50
|
+
|
|
51
|
+
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
52
|
+
self.auto_neg = AutoNeg(conn, *port.kind)
|
|
53
|
+
"""PCS/PMA auto-negotiation settings"""
|
|
54
|
+
|
|
55
|
+
self.link_training = LinkTrain(conn, port)
|
|
56
|
+
"""PCS/PMA link training settings"""
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
# Temporary ports are not supporting LinkTrain, in future release of xenaserver it will be the same as regular PcsPma
|
|
60
|
+
class PcsPmaL1:
|
|
61
|
+
"""L23 high-speed port PCS/PMA settings"""
|
|
62
|
+
|
|
63
|
+
def __init__(self, conn: "itf.IConnection", port) -> None:
|
|
64
|
+
self.auto_neg = AutoNeg(conn, *port.kind)
|
|
65
|
+
"""PCS/PMA auto-negotiation settings"""
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
2
|
+
from .bases.port_l23 import BasePortL23
|
|
3
|
+
from .bases.port_reception_statistics import PortReceptionStatistics
|
|
4
|
+
from .bases.port_transmission_statistics import PortTransmissionStatistics
|
|
5
|
+
|
|
6
|
+
from xoa_driver.internals.commands import (
|
|
7
|
+
P_MDIXMODE,
|
|
8
|
+
# P_ENGINENAMES, # TODO: need to implement
|
|
9
|
+
# P_ENGINELOAD, # TODO: need to implement
|
|
10
|
+
)
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from xoa_driver.internals.core import interfaces as itf
|
|
13
|
+
from xoa_driver.internals.utils.indices import index_manager as idx_mgr
|
|
14
|
+
from xoa_driver.internals.hli_v2.indices.streams.base_stream import BaseStreamIdx
|
|
15
|
+
from xoa_driver.internals.hli_v2.indices.filter.base_filter import BaseFilterIdx
|
|
16
|
+
from xoa_driver.internals.state_storage import ports_state
|
|
17
|
+
|
|
18
|
+
VEStreamIndices = idx_mgr.IndexManager[BaseStreamIdx]
|
|
19
|
+
VEFilterIndices = idx_mgr.IndexManager[BaseFilterIdx]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class Engine:
|
|
23
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
24
|
+
# self.names = P_ENGINENAMES(conn, module_id, port_id)
|
|
25
|
+
# self.load = P_ENGINELOAD(conn, module_id, port_id)
|
|
26
|
+
...
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class L23VEPortStatistics:
|
|
30
|
+
"""L23 VE port statistics"""
|
|
31
|
+
|
|
32
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
33
|
+
self.rx = PortReceptionStatistics(conn, module_id, port_id)
|
|
34
|
+
"""L23 VE port's RX statistics."""
|
|
35
|
+
|
|
36
|
+
self.tx = PortTransmissionStatistics(conn, module_id, port_id)
|
|
37
|
+
"""L23 VE port's TX statistics."""
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class PortL23VE(BasePortL23):
|
|
41
|
+
"""L23 VE port"""
|
|
42
|
+
|
|
43
|
+
def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
|
|
44
|
+
super().__init__(conn, module_id, port_id)
|
|
45
|
+
|
|
46
|
+
self._local_states = ports_state.PortL23LocalState()
|
|
47
|
+
|
|
48
|
+
self.mdix_mode = P_MDIXMODE(conn, module_id, port_id)
|
|
49
|
+
"""MDI/MDIX mode.
|
|
50
|
+
Representation of P_MDIXMODE
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
self.engine = Engine(conn, module_id, port_id)
|
|
54
|
+
"""Engine is not supported yet."""
|
|
55
|
+
|
|
56
|
+
self.statistics = L23VEPortStatistics(conn, module_id, port_id)
|
|
57
|
+
|
|
58
|
+
self.streams: VEStreamIndices = idx_mgr.IndexManager(
|
|
59
|
+
conn,
|
|
60
|
+
BaseStreamIdx,
|
|
61
|
+
module_id,
|
|
62
|
+
port_id
|
|
63
|
+
)
|
|
64
|
+
"""L23 VE port's stream index manager."""
|
|
65
|
+
|
|
66
|
+
self.filters: VEFilterIndices = idx_mgr.IndexManager(
|
|
67
|
+
conn,
|
|
68
|
+
BaseFilterIdx,
|
|
69
|
+
module_id,
|
|
70
|
+
port_id
|
|
71
|
+
)
|
|
72
|
+
"""L23 VE port's filter index manager."""
|
|
73
|
+
|
|
74
|
+
@property
|
|
75
|
+
def info(self) -> ports_state.PortL23LocalState:
|
|
76
|
+
return self._local_states
|
|
77
|
+
|
|
78
|
+
async def _setup(self):
|
|
79
|
+
await self._local_states.initiate(self)
|
|
80
|
+
self._local_states.register_subscriptions(self)
|
|
81
|
+
return self
|
|
File without changes
|