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,429 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import asyncio
|
|
3
|
+
import typing as t
|
|
4
|
+
from functools import partial
|
|
5
|
+
from xoa_driver import enums
|
|
6
|
+
from xoa_driver.ports import GenericL23Port
|
|
7
|
+
from xoa_driver.lli import commands
|
|
8
|
+
from xoa_driver.misc import Hex
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
from enum import IntEnum
|
|
11
|
+
from .tools import get_ctx
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AnLtD(IntEnum):
|
|
15
|
+
PMD_CONFIG_REGISTER = 0x02
|
|
16
|
+
AN_TX_CONFIG_REGISTER = 0x10
|
|
17
|
+
AN_RX_CONFIG_REGISTER = 0x18
|
|
18
|
+
AN_RX_STATUS_REGISTER = 0x19
|
|
19
|
+
AN_TX_PAGE_0_REGISTER = 0x14
|
|
20
|
+
AN_TX_PAGE_1_REGISTER = 0x15
|
|
21
|
+
AN_RX_DME_MV_RANGE = 0x1A
|
|
22
|
+
AN_RX_DME_BIT_RANGE = 0x1B
|
|
23
|
+
AN_RX_PAGE_0_REGISTER = 0x1C
|
|
24
|
+
AN_RX_PAGE_1_REGISTER = 0x1D
|
|
25
|
+
|
|
26
|
+
LT_TX_CONFIG_REGISTER = 0x20
|
|
27
|
+
LT_TX_FRAME_REGISTER = 0x24
|
|
28
|
+
LT_RX_STATUS_REGISTER = 0x29
|
|
29
|
+
LT_RX_CONFIG_REGISTER = 0x28
|
|
30
|
+
LT_RX_FRAME_REGISTER = 0x2C
|
|
31
|
+
LT_RX_ERROR_STAT_0 = 0x2A
|
|
32
|
+
LT_RX_ERROR_STAT_1 = 0x2B
|
|
33
|
+
XLA_CONFIG = 0x38
|
|
34
|
+
XLA_TRIG_MASK = 0x39
|
|
35
|
+
XLA_STATUS = 0x3A
|
|
36
|
+
XLA_RD_ADDR = 0x3B
|
|
37
|
+
XLA_RD_PAGE = 0x3C
|
|
38
|
+
XLA_RD_DATA = 0x3D
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@dataclass
|
|
42
|
+
class AnLtLowLevelInfo:
|
|
43
|
+
base: int
|
|
44
|
+
rx_gtm_base: int
|
|
45
|
+
rx_serdes: int
|
|
46
|
+
tx_gtm_base: int
|
|
47
|
+
tx_serdes: int
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
async def init(port: GenericL23Port, serdes: int) -> AnLtLowLevelInfo:
|
|
51
|
+
"""
|
|
52
|
+
The init function initializes the communication parameters required to read the configuration of a Serializer/Deserializer.
|
|
53
|
+
It takes in a port object used for communication, and the index of the Serializer/Deserializer to read (serdes).
|
|
54
|
+
The function returns an object of type AnLtLowLevelInfo, which contains low-level communication information.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
port (GenericL23Port): The port object for communication.
|
|
58
|
+
serdes (int): The index of the Serializer/Deserializer to read.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
AnLtLowLevelInfo: An object containing low-level communication information.
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
Raises:
|
|
66
|
+
Exception: If there is any error encountered during communication.
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
Example:
|
|
70
|
+
>>> port = GenericL23Port()
|
|
71
|
+
>>> inf = await init(port, serdes=0) # Initialize communication parameters for the first Serializer/Deserializer.
|
|
72
|
+
"""
|
|
73
|
+
conn, mid, pid = get_ctx(port)
|
|
74
|
+
inf = await commands.PL1_CFG_TMP(
|
|
75
|
+
conn, mid, pid, serdes, enums.Layer1ConfigType.LL_DEBUG_INFO
|
|
76
|
+
).get()
|
|
77
|
+
values = inf.values[:5]
|
|
78
|
+
inf = AnLtLowLevelInfo(*values)
|
|
79
|
+
return inf
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
async def serdes_reset(port: GenericL23Port, serdes: int, inf: t.Optional[AnLtLowLevelInfo] = None) -> None:
|
|
83
|
+
"""
|
|
84
|
+
Resets the Serializer/Deserializer specified by serdes.
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
The method sets and clears the bit 2 of configuration register GTM_QUAD_GT_CONFIG in order to reset the
|
|
88
|
+
Serializer/Deserializer in question. The port and connection parameters are set through the input `port`. The
|
|
89
|
+
Serializer/Deserializer is specified by the input `serdes`. If the input `inf` is not specified, the `init` method is
|
|
90
|
+
called on the `port` object to initialize the configuration.
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
port (GenericL23Port): The port object for communication.
|
|
94
|
+
serdes (int): The number of the Serializer/Deserializer to reset.
|
|
95
|
+
inf (AnLtLowLevelInfo, optional): Object with low-level information, which defaults to `None` if not provided.
|
|
96
|
+
This object is used to generate the address of the GTM_QUAD_GT_CONFIG configuration register.
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
None.
|
|
100
|
+
|
|
101
|
+
Raises:
|
|
102
|
+
Exception: if any async I/O operation encounters an error.
|
|
103
|
+
|
|
104
|
+
Examples:
|
|
105
|
+
>>> port = GenericL23Port()
|
|
106
|
+
>>> await serdes_reset(port, serdes=0) # Reset the first Serializer/Deserializer.
|
|
107
|
+
"""
|
|
108
|
+
GTM_QUAD_GT_CONFIG = 0x102
|
|
109
|
+
if inf is None:
|
|
110
|
+
inf = await init(port, serdes)
|
|
111
|
+
conn, mid, pid = get_ctx(port)
|
|
112
|
+
addr = inf.rx_gtm_base + GTM_QUAD_GT_CONFIG + (inf.rx_serdes * 0x40)
|
|
113
|
+
r = commands.PX_RW(conn, mid, pid, 2000, addr)
|
|
114
|
+
v = int((await r.get()).value, 16)
|
|
115
|
+
# Set bit 2
|
|
116
|
+
v |= 1 << 2
|
|
117
|
+
await r.set(value=Hex(f"{v:08X}"))
|
|
118
|
+
# in XOA-Driver V2 `0x` prefix will be drop from the hex strings
|
|
119
|
+
# Clear bit 2
|
|
120
|
+
v &= ~(1 << 2)
|
|
121
|
+
await r.set(value=Hex(f"{v:08X}"))
|
|
122
|
+
return None
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
async def __get(port: GenericL23Port, serdes: int, reg: AnLtD, inf: t.Optional[AnLtLowLevelInfo] = None) -> int:
|
|
126
|
+
if inf is None:
|
|
127
|
+
inf = await init(port, serdes)
|
|
128
|
+
conn, mid, pid = get_ctx(port)
|
|
129
|
+
addr = inf.base + reg.value
|
|
130
|
+
r = commands.PX_RW(conn, mid, pid, 2000, addr)
|
|
131
|
+
return int((await r.get()).value, 16)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
async def __set(port: GenericL23Port, serdes: int, reg: AnLtD, value: int, inf: t.Optional[AnLtLowLevelInfo] = None) -> None:
|
|
135
|
+
if inf is None:
|
|
136
|
+
inf = await init(port, serdes)
|
|
137
|
+
conn, mid, pid = get_ctx(port)
|
|
138
|
+
addr = inf.base + reg.value
|
|
139
|
+
r = commands.PX_RW(conn, mid, pid, 2000, addr)
|
|
140
|
+
await r.set(value=Hex(f"{value:08X}"))
|
|
141
|
+
return None
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
mode_get = partial(__get, reg=AnLtD.PMD_CONFIG_REGISTER)
|
|
145
|
+
mode_set = partial(__set, reg=AnLtD.PMD_CONFIG_REGISTER)
|
|
146
|
+
|
|
147
|
+
an_status = partial(__get, reg=AnLtD.AN_RX_STATUS_REGISTER)
|
|
148
|
+
|
|
149
|
+
an_tx_config_get = partial(__get, reg=AnLtD.AN_TX_CONFIG_REGISTER)
|
|
150
|
+
an_tx_config_set = partial(__set, reg=AnLtD.AN_TX_CONFIG_REGISTER)
|
|
151
|
+
|
|
152
|
+
an_rx_config_get = partial(__get, reg=AnLtD.AN_RX_CONFIG_REGISTER)
|
|
153
|
+
an_rx_config_set = partial(__set, reg=AnLtD.AN_RX_CONFIG_REGISTER)
|
|
154
|
+
|
|
155
|
+
an_rx_dme_mv_range_get = partial(__get, reg=AnLtD.AN_RX_DME_MV_RANGE)
|
|
156
|
+
an_rx_dme_mv_range_set = partial(__set, reg=AnLtD.AN_RX_DME_MV_RANGE)
|
|
157
|
+
|
|
158
|
+
an_rx_dme_bit_range_get = partial(__get, reg=AnLtD.AN_RX_DME_BIT_RANGE)
|
|
159
|
+
an_rx_dme_bit_range_set = partial(__set, reg=AnLtD.AN_RX_DME_BIT_RANGE)
|
|
160
|
+
|
|
161
|
+
an_rx_page0_get = partial(__get, reg=AnLtD.AN_RX_PAGE_0_REGISTER)
|
|
162
|
+
an_rx_page1_get = partial(__get, reg=AnLtD.AN_RX_PAGE_1_REGISTER)
|
|
163
|
+
|
|
164
|
+
an_tx_page0_get = partial(__get, reg=AnLtD.AN_TX_PAGE_0_REGISTER)
|
|
165
|
+
an_tx_page0_set = partial(__set, reg=AnLtD.AN_TX_PAGE_0_REGISTER)
|
|
166
|
+
an_tx_page1_get = partial(__get, reg=AnLtD.AN_TX_PAGE_1_REGISTER)
|
|
167
|
+
an_tx_page1_set = partial(__set, reg=AnLtD.AN_TX_PAGE_1_REGISTER)
|
|
168
|
+
|
|
169
|
+
lt_tx_config_get = partial(__get, reg=AnLtD.LT_TX_CONFIG_REGISTER)
|
|
170
|
+
lt_tx_config_set = partial(__set, reg=AnLtD.LT_TX_CONFIG_REGISTER)
|
|
171
|
+
|
|
172
|
+
lt_rx_config_get = partial(__get, reg=AnLtD.LT_RX_CONFIG_REGISTER)
|
|
173
|
+
lt_rx_config_set = partial(__set, reg=AnLtD.LT_RX_CONFIG_REGISTER)
|
|
174
|
+
|
|
175
|
+
lt_tx_tf_get = partial(__get, reg=AnLtD.LT_TX_FRAME_REGISTER)
|
|
176
|
+
lt_tx_tf_set = partial(__set, reg=AnLtD.LT_TX_FRAME_REGISTER)
|
|
177
|
+
|
|
178
|
+
lt_rx_tf_get = partial(__get, reg=AnLtD.LT_RX_FRAME_REGISTER)
|
|
179
|
+
|
|
180
|
+
lt_status = partial(__get, reg=AnLtD.LT_RX_STATUS_REGISTER)
|
|
181
|
+
|
|
182
|
+
lt_rx_error_stat0_get = partial(__get, reg=AnLtD.LT_RX_ERROR_STAT_0)
|
|
183
|
+
lt_rx_error_stat1_get = partial(__get, reg=AnLtD.LT_RX_ERROR_STAT_1)
|
|
184
|
+
|
|
185
|
+
xla_config_get = partial(__get, reg=AnLtD.XLA_CONFIG)
|
|
186
|
+
xla_config_set = partial(__set, reg=AnLtD.XLA_CONFIG)
|
|
187
|
+
|
|
188
|
+
xla_trig_mask_get = partial(__get, reg=AnLtD.XLA_TRIG_MASK)
|
|
189
|
+
xla_trig_mask_set = partial(__set, reg=AnLtD.XLA_TRIG_MASK)
|
|
190
|
+
|
|
191
|
+
xla_status_get = partial(__get, reg=AnLtD.XLA_STATUS)
|
|
192
|
+
|
|
193
|
+
xla_rd_addr_get = partial(__get, reg=AnLtD.XLA_RD_ADDR)
|
|
194
|
+
xla_rd_addr_set = partial(__set, reg=AnLtD.XLA_RD_ADDR)
|
|
195
|
+
|
|
196
|
+
xla_rd_page_get = partial(__get, reg=AnLtD.XLA_RD_PAGE)
|
|
197
|
+
xla_rd_page_set = partial(__set, reg=AnLtD.XLA_RD_PAGE)
|
|
198
|
+
|
|
199
|
+
xla_rd_data_get = partial(__get, reg=AnLtD.XLA_RD_DATA)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
async def lt_prbs(port: GenericL23Port, serdes: int, inf: t.Optional[AnLtLowLevelInfo] = None) -> dict[str, float]:
|
|
203
|
+
"""Reads error statistics of an LT PRBS test.
|
|
204
|
+
|
|
205
|
+
Args:
|
|
206
|
+
port: A GenericL23Port object.
|
|
207
|
+
serdes: An integer representing the SERDES.
|
|
208
|
+
inf: Optional AnLtLowLevelInfo object.
|
|
209
|
+
|
|
210
|
+
Returns:
|
|
211
|
+
A dictionary with total_bits, error_bits, and ber (bit error rate) values.
|
|
212
|
+
|
|
213
|
+
Raises:
|
|
214
|
+
Possible exceptions if any async I/O operation encounters an error.
|
|
215
|
+
"""
|
|
216
|
+
if inf is None:
|
|
217
|
+
inf = await init(port, serdes)
|
|
218
|
+
|
|
219
|
+
cfg = await lt_rx_config_get(port, serdes, inf=inf)
|
|
220
|
+
cfg &= ~(3 << 21) # Clear bit 22-21
|
|
221
|
+
cfg |= 1 << 20 # Set bit 20
|
|
222
|
+
await lt_rx_config_set(port, serdes, inf=inf, value=cfg) # Trigger PRBS read
|
|
223
|
+
cfg &= ~(1 << 20) # Clear bit 20
|
|
224
|
+
await lt_rx_config_set(port, serdes, inf=inf, value=cfg)
|
|
225
|
+
|
|
226
|
+
# Read the total # bits
|
|
227
|
+
cfg &= ~(3 << 21) # Clear bit 22-21
|
|
228
|
+
cfg |= 1 << 21
|
|
229
|
+
await lt_rx_config_set(port, serdes, inf=inf, value=cfg)
|
|
230
|
+
v = await lt_rx_error_stat0_get(port, serdes, inf=inf)
|
|
231
|
+
total_bits = v
|
|
232
|
+
v = await lt_rx_error_stat1_get(port, serdes, inf=inf)
|
|
233
|
+
total_bits |= v << 32
|
|
234
|
+
|
|
235
|
+
# Read the total # error bits
|
|
236
|
+
cfg &= ~(3 << 21) # Clear bit 22-21
|
|
237
|
+
cfg |= 2 << 21
|
|
238
|
+
await lt_rx_config_set(port, serdes, inf=inf, value=cfg)
|
|
239
|
+
v = await lt_rx_error_stat0_get(port, serdes, inf=inf)
|
|
240
|
+
error_bits = v
|
|
241
|
+
v = await lt_rx_error_stat1_get(port, serdes, inf=inf)
|
|
242
|
+
error_bits |= v << 32
|
|
243
|
+
error_bits &= 0x0000FFFFFFFFFFFF
|
|
244
|
+
ber = (error_bits) / (total_bits) if total_bits > 0 else float("nan")
|
|
245
|
+
return {"total_bits": total_bits, "error_bits": error_bits, "ber": float(ber)}
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
async def xla_dump(port: GenericL23Port, serdes: int, inf: t.Optional[AnLtLowLevelInfo] = None) -> t.Dict[str, str]:
|
|
249
|
+
"""
|
|
250
|
+
This method takes a GenericL23Port object representing the port for communication, an int serdes representing
|
|
251
|
+
the data serializer for the connection, and an optional AnLtLowLevelInfo object named inf.
|
|
252
|
+
It dumps the 320-bit words in the capture buffer.
|
|
253
|
+
|
|
254
|
+
Args:
|
|
255
|
+
port (GenericL23Port): The port for communication.
|
|
256
|
+
serdes (int): The data serializer for the connection.
|
|
257
|
+
inf (AnLtLowLevelInfo, optional): The information object. Defaults to None.
|
|
258
|
+
|
|
259
|
+
Returns:
|
|
260
|
+
dict[str,str]: A dictionary of results. The "Trigger Position" key contains the trigger position value
|
|
261
|
+
as a string, and the "Analyzer Status" key contains the status of the analyzer as a string.
|
|
262
|
+
|
|
263
|
+
Raises:
|
|
264
|
+
Exception: If any async I/O operation encounters an error.
|
|
265
|
+
|
|
266
|
+
Examples:
|
|
267
|
+
>>> port= GenericL23Port()
|
|
268
|
+
>>> serdes=1
|
|
269
|
+
>>> inf=None
|
|
270
|
+
>>> result= await xla_dump(port, serdes,inf)
|
|
271
|
+
"""
|
|
272
|
+
if inf is None:
|
|
273
|
+
inf = await init(port, serdes)
|
|
274
|
+
result = {}
|
|
275
|
+
trigger_pos, capture_done = await asyncio.gather(
|
|
276
|
+
xla_config_get(port, serdes, inf=inf),
|
|
277
|
+
xla_status_get(port, serdes, inf=inf),
|
|
278
|
+
)
|
|
279
|
+
result["Trigger Position"] = str(trigger_pos)
|
|
280
|
+
result["Analyzer Status"] = str(capture_done)
|
|
281
|
+
if not capture_done:
|
|
282
|
+
result["Data"] = ""
|
|
283
|
+
return result
|
|
284
|
+
data_list = []
|
|
285
|
+
for r in range(256):
|
|
286
|
+
# Set the read address
|
|
287
|
+
await xla_rd_addr_set(port, serdes, inf=inf, value=r)
|
|
288
|
+
for p in range(10):
|
|
289
|
+
# Read the data
|
|
290
|
+
await xla_rd_page_set(port, serdes, inf=inf, value=9 - p)
|
|
291
|
+
d = await xla_rd_data_get(port, serdes, inf=inf)
|
|
292
|
+
data_list.append(f"{d:08X}")
|
|
293
|
+
data_list.append("\n")
|
|
294
|
+
result["Data"] = "".join(data_list)
|
|
295
|
+
return result
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
async def px_get(port: GenericL23Port, page_address: int, register_address: int) -> t.Tuple[bool, str]:
|
|
299
|
+
"""Reads the value of a register located at a specified page address using the PX API.
|
|
300
|
+
|
|
301
|
+
Args:
|
|
302
|
+
port (GenericL23Port): A GenericL23Port object representing the port for communication.
|
|
303
|
+
page_address (int): An integer representing the page address of the register to be read.
|
|
304
|
+
register_address (int): An integer representing the address of the register to be read.
|
|
305
|
+
|
|
306
|
+
Returns:
|
|
307
|
+
A tuple (bool, str) representing the results of the read operation. The first element of the tuple is a flag
|
|
308
|
+
indicating whether the read operation was successful or not. The second element represents the value read from
|
|
309
|
+
the specified register.
|
|
310
|
+
|
|
311
|
+
Raises:
|
|
312
|
+
Possible exceptions if any async I/O operation encounters an error.
|
|
313
|
+
"""
|
|
314
|
+
resp = await port.transceiver.access_rw(page_address, register_address).get()
|
|
315
|
+
|
|
316
|
+
if resp.value.lower().find("dead") != -1:
|
|
317
|
+
return (False, resp.value)
|
|
318
|
+
else:
|
|
319
|
+
return (True, resp.value)
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
async def px_set(port: GenericL23Port, page_address: int, register_address: int, value: int) -> None:
|
|
323
|
+
"""
|
|
324
|
+
Sets a register value in the given page address using the GenericL23Port object for communication.
|
|
325
|
+
|
|
326
|
+
Args:
|
|
327
|
+
port (GenericL23Port): The port object for communication.
|
|
328
|
+
page_address (int): The page address of the register.
|
|
329
|
+
register_address (int): The register address.
|
|
330
|
+
value (int): The value to write to the register.
|
|
331
|
+
|
|
332
|
+
Returns:
|
|
333
|
+
None.
|
|
334
|
+
|
|
335
|
+
Raises:
|
|
336
|
+
Exception: if any async I/O operation encounters an error.
|
|
337
|
+
|
|
338
|
+
Examples:
|
|
339
|
+
>>> port= GenericL23Port()
|
|
340
|
+
>>> page_addr=0x1
|
|
341
|
+
>>> reg_addr=0x4
|
|
342
|
+
>>> value= 0x00FF
|
|
343
|
+
>>> await px_set(port,page_addr, reg_addr, value)
|
|
344
|
+
"""
|
|
345
|
+
value_hexstr = Hex(f"{value:X}")
|
|
346
|
+
await port.transceiver.access_rw(page_address, register_address).set(value_hexstr)
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
async def xla_dump_ctrl(port: GenericL23Port, on: bool) -> None:
|
|
350
|
+
"""
|
|
351
|
+
Enables or disables XLA mode on the given port by sending a command to set the AN_LT_XLA_MODE configuration
|
|
352
|
+
option.
|
|
353
|
+
|
|
354
|
+
Args:
|
|
355
|
+
port (GenericL23Port): The port object for communication.
|
|
356
|
+
on (bool): Whether to enable XLA mode (True) or disable it (False).
|
|
357
|
+
|
|
358
|
+
Returns:
|
|
359
|
+
None.
|
|
360
|
+
|
|
361
|
+
Raises:
|
|
362
|
+
Exception: if any async I/O operation encounters an error.
|
|
363
|
+
|
|
364
|
+
Examples:
|
|
365
|
+
>>> port = GenericL23Port()
|
|
366
|
+
>>> await xla_dump_ctrl(port, on=False) # Disable XLA mode on the port.
|
|
367
|
+
>>> await xla_dump_ctrl(port, on=True) # Enable XLA mode on the port.
|
|
368
|
+
"""
|
|
369
|
+
conn, mid, pid = get_ctx(port)
|
|
370
|
+
# await commands.PL1_CFG_TMP(conn, mid, pid, 0, enums.Layer1ConfigType.AN_LT_XLA_MODE).set(values=[int(on)])
|
|
371
|
+
await commands.PL1_CFG_TMP(
|
|
372
|
+
conn,
|
|
373
|
+
mid,
|
|
374
|
+
pid,
|
|
375
|
+
0,
|
|
376
|
+
enums.Layer1ConfigType.AN_LT_XLA_MODE
|
|
377
|
+
).set(
|
|
378
|
+
values=[
|
|
379
|
+
enums.OnOff.ON if on else enums.OnOff.OFF
|
|
380
|
+
]
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
__all__ = (
|
|
385
|
+
"init",
|
|
386
|
+
"serdes_reset",
|
|
387
|
+
"mode_get",
|
|
388
|
+
"mode_set",
|
|
389
|
+
"lt_prbs",
|
|
390
|
+
"xla_config_get",
|
|
391
|
+
"xla_config_set",
|
|
392
|
+
"xla_dump",
|
|
393
|
+
"xla_rd_addr_get",
|
|
394
|
+
"xla_rd_addr_set",
|
|
395
|
+
"xla_rd_data_get",
|
|
396
|
+
"xla_rd_page_get",
|
|
397
|
+
"xla_rd_page_set",
|
|
398
|
+
"lt_tx_config_get",
|
|
399
|
+
"lt_tx_config_set",
|
|
400
|
+
"xla_status_get",
|
|
401
|
+
"xla_trig_mask_get",
|
|
402
|
+
"xla_trig_mask_set",
|
|
403
|
+
"lt_rx_config_get",
|
|
404
|
+
"lt_rx_config_set",
|
|
405
|
+
"lt_rx_error_stat0_get",
|
|
406
|
+
"lt_tx_tf_get",
|
|
407
|
+
"lt_rx_error_stat1_get",
|
|
408
|
+
"lt_rx_tf_get",
|
|
409
|
+
"lt_status",
|
|
410
|
+
"lt_tx_tf_set",
|
|
411
|
+
"px_get",
|
|
412
|
+
"px_set",
|
|
413
|
+
"xla_dump_ctrl",
|
|
414
|
+
"an_tx_config_get",
|
|
415
|
+
"an_tx_config_set",
|
|
416
|
+
"an_rx_dme_bit_range_get",
|
|
417
|
+
"an_rx_dme_bit_range_set",
|
|
418
|
+
"an_rx_dme_mv_range_get",
|
|
419
|
+
"an_rx_dme_mv_range_set",
|
|
420
|
+
"an_rx_page0_get",
|
|
421
|
+
"an_rx_page1_get",
|
|
422
|
+
"an_status",
|
|
423
|
+
"an_tx_config_get",
|
|
424
|
+
"an_tx_config_set",
|
|
425
|
+
"an_tx_page0_get",
|
|
426
|
+
"an_tx_page0_set",
|
|
427
|
+
"an_tx_page1_get",
|
|
428
|
+
"an_tx_page1_set",
|
|
429
|
+
)
|