tdl-xoa-driver 1.0.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.0.0.dist-info/LICENSE +202 -0
- tdl_xoa_driver-1.0.0.dist-info/METADATA +177 -0
- tdl_xoa_driver-1.0.0.dist-info/RECORD +325 -0
- tdl_xoa_driver-1.0.0.dist-info/WHEEL +5 -0
- tdl_xoa_driver-1.0.0.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,370 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from xoa_driver.internals.core.builders import (
|
|
6
|
+
build_get_request,
|
|
7
|
+
build_set_request
|
|
8
|
+
)
|
|
9
|
+
from xoa_driver.internals.core import interfaces
|
|
10
|
+
from xoa_driver.internals.core.token import Token
|
|
11
|
+
from xoa_driver.internals.core.transporter.registry import register_command
|
|
12
|
+
from xoa_driver.internals.core.transporter.protocol.payload import (
|
|
13
|
+
field,
|
|
14
|
+
RequestBodyStruct,
|
|
15
|
+
ResponseBodyStruct,
|
|
16
|
+
XmpLong,
|
|
17
|
+
XmpSequence,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@register_command
|
|
22
|
+
@dataclass
|
|
23
|
+
class PT_TOTAL:
|
|
24
|
+
"""
|
|
25
|
+
Obtains statistics concerning all the packets transmitted on a port.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
code: typing.ClassVar[int] = 230
|
|
29
|
+
pushed: typing.ClassVar[bool] = False
|
|
30
|
+
|
|
31
|
+
_connection: 'interfaces.IConnection'
|
|
32
|
+
_module: int
|
|
33
|
+
_port: int
|
|
34
|
+
|
|
35
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
36
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
37
|
+
"""long integer, number of bits transmitted in the last second."""
|
|
38
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
39
|
+
"""long integer, number of packets transmitted in the last second."""
|
|
40
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
41
|
+
"""long integer, number of bytes transmitted since statistics were cleared."""
|
|
42
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
43
|
+
"""long integer, number of packets transmitted since statistics were cleared."""
|
|
44
|
+
|
|
45
|
+
def get(self) -> Token[GetDataAttr]:
|
|
46
|
+
"""Get statistics concerning all the packets transmitted on a port.
|
|
47
|
+
|
|
48
|
+
:return: number of bits transmitted in the last second, number of packets transmitted in the last second,
|
|
49
|
+
number of bytes transmitted since statistics were cleared, and number of packets transmitted since statistics were cleared.
|
|
50
|
+
:rtype: PT_TOTAL.GetDataAttr
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@register_command
|
|
57
|
+
@dataclass
|
|
58
|
+
class PT_NOTPLD:
|
|
59
|
+
"""
|
|
60
|
+
Obtains statistics concerning the packets without a test payload transmitted on
|
|
61
|
+
a port.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
code: typing.ClassVar[int] = 231
|
|
65
|
+
pushed: typing.ClassVar[bool] = False
|
|
66
|
+
|
|
67
|
+
_connection: 'interfaces.IConnection'
|
|
68
|
+
_module: int
|
|
69
|
+
_port: int
|
|
70
|
+
|
|
71
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
72
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
73
|
+
"""long integer, number of bits transmitted in the last second."""
|
|
74
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
75
|
+
"""long integer, number of packets transmitted in the last second."""
|
|
76
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
77
|
+
"""long integer, number of bytes transmitted since statistics were cleared."""
|
|
78
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
79
|
+
"""long integer, number of packets transmitted since statistics were cleared."""
|
|
80
|
+
|
|
81
|
+
def get(self) -> Token[GetDataAttr]:
|
|
82
|
+
"""Get statistics concerning the packets without a test payload transmitted on a port.
|
|
83
|
+
|
|
84
|
+
:return: number of bits transmitted in the last second, number of packets transmitted in the last second,
|
|
85
|
+
number of bytes transmitted since statistics were cleared, and number of packets transmitted since statistics were cleared
|
|
86
|
+
:rtype: PT_NOTPLD.GetDataAttr
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@register_command
|
|
93
|
+
@dataclass
|
|
94
|
+
class PT_STREAM:
|
|
95
|
+
"""
|
|
96
|
+
Obtains statistics concerning the packets of a specific stream transmitted on a
|
|
97
|
+
port.
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
code: typing.ClassVar[int] = 232
|
|
101
|
+
pushed: typing.ClassVar[bool] = False
|
|
102
|
+
|
|
103
|
+
_connection: 'interfaces.IConnection'
|
|
104
|
+
_module: int
|
|
105
|
+
_port: int
|
|
106
|
+
_stream_xindex: int
|
|
107
|
+
|
|
108
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
109
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
110
|
+
"""long integer, number of bits transmitted in the last second."""
|
|
111
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
112
|
+
"""long integer, number of packets transmitted in the last second."""
|
|
113
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
114
|
+
"""long integer, number of bytes transmitted since statistics were cleared."""
|
|
115
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
116
|
+
"""long integer, number of packets transmitted since statistics were cleared."""
|
|
117
|
+
|
|
118
|
+
def get(self) -> Token[GetDataAttr]:
|
|
119
|
+
"""Get statistics concerning the packets of a specific stream transmitted on a port.
|
|
120
|
+
|
|
121
|
+
:return: number of bits transmitted in the last second, number of packets transmitted in the last second,
|
|
122
|
+
number of bytes transmitted since statistics were cleared, and number of packets transmitted since statistics were cleared.
|
|
123
|
+
:rtype: PT_STREAM.GetDataAttr
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._stream_xindex]))
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
@register_command
|
|
130
|
+
@dataclass
|
|
131
|
+
class PT_CLEAR:
|
|
132
|
+
"""
|
|
133
|
+
Clear all the transmit statistics for a port. The byte and packet counts will
|
|
134
|
+
restart at zero.
|
|
135
|
+
"""
|
|
136
|
+
|
|
137
|
+
code: typing.ClassVar[int] = 233
|
|
138
|
+
pushed: typing.ClassVar[bool] = False
|
|
139
|
+
|
|
140
|
+
_connection: 'interfaces.IConnection'
|
|
141
|
+
_module: int
|
|
142
|
+
_port: int
|
|
143
|
+
|
|
144
|
+
class SetDataAttr(RequestBodyStruct):
|
|
145
|
+
pass
|
|
146
|
+
|
|
147
|
+
def set(self) -> Token[None]:
|
|
148
|
+
"""Clear all the transmit statistics for a port. The byte and packet counts will restart at zero.
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port))
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
@register_command
|
|
155
|
+
@dataclass
|
|
156
|
+
class PT_EXTRA:
|
|
157
|
+
"""
|
|
158
|
+
Obtains additional statistics for packets transmitted on a port.
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
code: typing.ClassVar[int] = 235
|
|
162
|
+
pushed: typing.ClassVar[bool] = False
|
|
163
|
+
|
|
164
|
+
_connection: 'interfaces.IConnection'
|
|
165
|
+
_module: int
|
|
166
|
+
_port: int
|
|
167
|
+
|
|
168
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
169
|
+
tx_arp_req_count: typing.List[int] = field(XmpSequence(types_chunk=[XmpLong()]))
|
|
170
|
+
"""long integer, number of ARP requests transmitted"""
|
|
171
|
+
|
|
172
|
+
def get(self) -> Token[GetDataAttr]:
|
|
173
|
+
"""Get additional statistics for packets transmitted on a port.
|
|
174
|
+
|
|
175
|
+
:return: number of ARP requests transmitted
|
|
176
|
+
:rtype: PT_EXTRA.GetDataAttr
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
@register_command
|
|
183
|
+
@dataclass
|
|
184
|
+
class PT_TOTALEXT:
|
|
185
|
+
"""
|
|
186
|
+
.. versionadded: v1.1
|
|
187
|
+
|
|
188
|
+
An extension to :class:`PT_TOTAL` that also includes a calculation of bytes transmitted in the last second.
|
|
189
|
+
It returns list of long integers; this list may be expanded in future software releases.
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
code: typing.ClassVar[int] = 236
|
|
193
|
+
pushed: typing.ClassVar[bool] = False
|
|
194
|
+
|
|
195
|
+
_connection: 'interfaces.IConnection'
|
|
196
|
+
_module: int
|
|
197
|
+
_port: int
|
|
198
|
+
|
|
199
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
200
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
201
|
+
"""long integer, number of bits transmitted in the last second."""
|
|
202
|
+
byte_count_last_sec: int = field(XmpLong())
|
|
203
|
+
"""long integer, number of bytes transmitted in the last second."""
|
|
204
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
205
|
+
"""long integer, number of packets transmitted in the last second."""
|
|
206
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
207
|
+
"""long integer, number of bytes transmitted since statistics were cleared."""
|
|
208
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
209
|
+
"""long integer, number of packets transmitted since statistics were cleared."""
|
|
210
|
+
|
|
211
|
+
def get(self) -> Token[GetDataAttr]:
|
|
212
|
+
"""Get statistics concerning all the packets transmitted on a port.
|
|
213
|
+
|
|
214
|
+
:return: number of bits transmitted in the last second, number of bytes transmitted in the last second,
|
|
215
|
+
number of packets transmitted in the last second, number of bytes transmitted since statistics were cleared,
|
|
216
|
+
and number of packets transmitted since statistics were cleared.
|
|
217
|
+
:rtype: PT_TOTALEXT.GetDataAttr
|
|
218
|
+
"""
|
|
219
|
+
|
|
220
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
@register_command
|
|
224
|
+
@dataclass
|
|
225
|
+
class PT_NOTPLDEXT:
|
|
226
|
+
"""
|
|
227
|
+
.. versionadded: v1.1
|
|
228
|
+
|
|
229
|
+
An extension to :class:`PT_NOTPLD` that also includes a calculation of bytes transmitted in the last second.
|
|
230
|
+
It returns list of long integers; this list may be expanded in future software releases.
|
|
231
|
+
"""
|
|
232
|
+
|
|
233
|
+
code: typing.ClassVar[int] = 237
|
|
234
|
+
pushed: typing.ClassVar[bool] = False
|
|
235
|
+
|
|
236
|
+
_connection: 'interfaces.IConnection'
|
|
237
|
+
_module: int
|
|
238
|
+
_port: int
|
|
239
|
+
|
|
240
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
241
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
242
|
+
"""long integer, number of bits transmitted in the last second."""
|
|
243
|
+
byte_count_last_sec: int = field(XmpLong())
|
|
244
|
+
"""long integer, number of bytes transmitted in the last second."""
|
|
245
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
246
|
+
"""long integer, number of packets transmitted in the last second."""
|
|
247
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
248
|
+
"""long integer, number of bytes transmitted since statistics were cleared."""
|
|
249
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
250
|
+
"""long integer, number of packets transmitted since statistics were cleared."""
|
|
251
|
+
|
|
252
|
+
def get(self) -> Token[GetDataAttr]:
|
|
253
|
+
"""Get statistics concerning the packets without a test payload transmitted on a port.
|
|
254
|
+
|
|
255
|
+
:return: number of bits transmitted in the last second, number of bytes transmitted in the last second,
|
|
256
|
+
number of packets transmitted in the last second, number of bytes transmitted since statistics were cleared,
|
|
257
|
+
and number of packets transmitted since statistics were cleared
|
|
258
|
+
:rtype: PT_NOTPLDEXT.GetDataAttr
|
|
259
|
+
"""
|
|
260
|
+
|
|
261
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
@register_command
|
|
265
|
+
@dataclass
|
|
266
|
+
class PT_STREAMEXT:
|
|
267
|
+
"""
|
|
268
|
+
.. versionadded: v1.1
|
|
269
|
+
|
|
270
|
+
An extension to :class:`PT_STREAM` that also includes a calculation of bytes transmitted in the last second.
|
|
271
|
+
It returns list of long integers; this list may be expanded in future software releases.
|
|
272
|
+
"""
|
|
273
|
+
|
|
274
|
+
code: typing.ClassVar[int] = 238
|
|
275
|
+
pushed: typing.ClassVar[bool] = False
|
|
276
|
+
|
|
277
|
+
_connection: 'interfaces.IConnection'
|
|
278
|
+
_module: int
|
|
279
|
+
_port: int
|
|
280
|
+
_stream_xindex: int
|
|
281
|
+
|
|
282
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
283
|
+
bit_count_last_sec: int = field(XmpLong())
|
|
284
|
+
"""long integer, number of bits transmitted in the last second."""
|
|
285
|
+
byte_count_last_sec: int = field(XmpLong())
|
|
286
|
+
"""long integer, number of bytes transmitted in the last second."""
|
|
287
|
+
packet_count_last_sec: int = field(XmpLong())
|
|
288
|
+
"""long integer, number of packets transmitted in the last second."""
|
|
289
|
+
byte_count_since_cleared: int = field(XmpLong())
|
|
290
|
+
"""long integer, number of bytes transmitted since statistics were cleared."""
|
|
291
|
+
packet_count_since_cleared: int = field(XmpLong())
|
|
292
|
+
"""long integer, number of packets transmitted since statistics were cleared."""
|
|
293
|
+
|
|
294
|
+
def get(self) -> Token[GetDataAttr]:
|
|
295
|
+
"""Get statistics concerning the packets of a specific stream transmitted on a port.
|
|
296
|
+
|
|
297
|
+
:return: number of bits transmitted in the last second, number of bytes transmitted in the last second,
|
|
298
|
+
number of packets transmitted in the last second, number of bytes transmitted since statistics were cleared,
|
|
299
|
+
and number of packets transmitted since statistics were cleared.
|
|
300
|
+
:rtype: PT_STREAMEXT.GetDataAttr
|
|
301
|
+
"""
|
|
302
|
+
|
|
303
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._stream_xindex]))
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
@register_command
|
|
307
|
+
@dataclass
|
|
308
|
+
class PT_FLOWTOTAL:
|
|
309
|
+
"""
|
|
310
|
+
Obtains statistics concerning all the packets transmitted from a between this
|
|
311
|
+
receive port and its partner TX port.
|
|
312
|
+
"""
|
|
313
|
+
|
|
314
|
+
code: typing.ClassVar[int] = 1740
|
|
315
|
+
pushed: typing.ClassVar[bool] = False
|
|
316
|
+
|
|
317
|
+
_connection: 'interfaces.IConnection'
|
|
318
|
+
_module: int
|
|
319
|
+
_port: int
|
|
320
|
+
_flow_xindex: int
|
|
321
|
+
|
|
322
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
323
|
+
l2_bps: int = field(XmpLong())
|
|
324
|
+
"""long integer, number of bits transmitted at layer 2 in the last second for the flow."""
|
|
325
|
+
pps: int = field(XmpLong())
|
|
326
|
+
"""long integer, number of packets transmitted in the last second for the flow."""
|
|
327
|
+
byte_count: int = field(XmpLong())
|
|
328
|
+
"""long integer, number of bytes transmitted since statistics were cleared for the flow."""
|
|
329
|
+
packet_count: int = field(XmpLong())
|
|
330
|
+
"""long integer, number of packets transmitted since statistics were cleared for the flow."""
|
|
331
|
+
|
|
332
|
+
def get(self) -> Token[GetDataAttr]:
|
|
333
|
+
"""(Chimera only) Get statistics concerning all the packets transmitted from a between this receive port and its partner TX port.
|
|
334
|
+
|
|
335
|
+
:return:
|
|
336
|
+
number of bits transmitted at layer 2 in the last second for the flow,
|
|
337
|
+
number of packets transmitted in the last second for the flow,
|
|
338
|
+
number of bytes transmitted since statistics were cleared for the flow,
|
|
339
|
+
number of packets transmitted since statistics were cleared for the flow
|
|
340
|
+
|
|
341
|
+
:rtype: PT_FLOWTOTAL.GetDataAttr
|
|
342
|
+
"""
|
|
343
|
+
|
|
344
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
@register_command
|
|
348
|
+
@dataclass
|
|
349
|
+
class PT_FLOWCLEAR:
|
|
350
|
+
"""
|
|
351
|
+
Clear all the transmit statistics on a particular flow for a Chimera port. The
|
|
352
|
+
byte and packet counts will restart at zero.
|
|
353
|
+
"""
|
|
354
|
+
|
|
355
|
+
code: typing.ClassVar[int] = 1742
|
|
356
|
+
pushed: typing.ClassVar[bool] = False
|
|
357
|
+
|
|
358
|
+
_connection: 'interfaces.IConnection'
|
|
359
|
+
_module: int
|
|
360
|
+
_port: int
|
|
361
|
+
_flow_xindex: int
|
|
362
|
+
|
|
363
|
+
class SetDataAttr(RequestBodyStruct):
|
|
364
|
+
pass
|
|
365
|
+
|
|
366
|
+
def set(self) -> Token[None]:
|
|
367
|
+
"""(Chimera only) Clear all the transmit statistics on a particular flow for a Chimera port. The byte and packet counts will restart at zero.
|
|
368
|
+
"""
|
|
369
|
+
|
|
370
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from xoa_driver.internals.core.builders import (
|
|
6
|
+
build_get_request,
|
|
7
|
+
build_set_request
|
|
8
|
+
)
|
|
9
|
+
from xoa_driver.internals.core import interfaces
|
|
10
|
+
from xoa_driver.internals.core.token import Token
|
|
11
|
+
from xoa_driver.internals.core.transporter.registry import register_command
|
|
12
|
+
from xoa_driver.internals.core.transporter.protocol.payload import (
|
|
13
|
+
field,
|
|
14
|
+
RequestBodyStruct,
|
|
15
|
+
ResponseBodyStruct,
|
|
16
|
+
XmpByte,
|
|
17
|
+
XmpHex,
|
|
18
|
+
XmpSequence,
|
|
19
|
+
XmpInt,
|
|
20
|
+
Hex,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@register_command
|
|
25
|
+
@dataclass
|
|
26
|
+
class PX_RW:
|
|
27
|
+
"""
|
|
28
|
+
Provides read and write access to the register interface supported by the port transceiver. It is possible to both read and write register values.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
code: typing.ClassVar[int] = 501
|
|
32
|
+
pushed: typing.ClassVar[bool] = False
|
|
33
|
+
|
|
34
|
+
_connection: 'interfaces.IConnection'
|
|
35
|
+
_module: int
|
|
36
|
+
_port: int
|
|
37
|
+
_page_xindex: int
|
|
38
|
+
_register_xaddress: int
|
|
39
|
+
|
|
40
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
41
|
+
value: Hex = field(XmpHex(size=4))
|
|
42
|
+
"""4 hex bytes, register value of the port transceiver"""
|
|
43
|
+
|
|
44
|
+
class SetDataAttr(RequestBodyStruct):
|
|
45
|
+
value: Hex = field(XmpHex(size=4))
|
|
46
|
+
"""4 hex bytes, register value of the port transceiver"""
|
|
47
|
+
|
|
48
|
+
def get(self) -> Token[GetDataAttr]:
|
|
49
|
+
"""Get the register value of a transceiver.
|
|
50
|
+
|
|
51
|
+
:return: the register value of a transceiver
|
|
52
|
+
:rtype: PX_RW.GetDataAttr
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._page_xindex, self._register_xaddress]))
|
|
56
|
+
|
|
57
|
+
def set(self, value: Hex) -> Token[None]:
|
|
58
|
+
"""Set the register value of a transceiver.
|
|
59
|
+
|
|
60
|
+
:param value: register value of a transceiver
|
|
61
|
+
:type value: Hex
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._page_xindex, self._register_xaddress], value=value))
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@register_command
|
|
68
|
+
@dataclass
|
|
69
|
+
class PX_RW_SEQ:
|
|
70
|
+
"""
|
|
71
|
+
I2C sequential access to a transceiver's register. When invoked, the <byte_count> number of bytes will be read or written in one I2C transaction, in which the <value> is read or written with only a single register address setup. A subsequent invocation will perform a second I2C transaction in the same manner.
|
|
72
|
+
|
|
73
|
+
* <_byte_xcount> number of bytes will be read or written in one I2C transaction
|
|
74
|
+
|
|
75
|
+
* <_page_xindex>: the transceiver page address, integer, 0x00 - 0xFF (0-255).
|
|
76
|
+
|
|
77
|
+
* <_register_xaddress>: the address within the page, integer, 0x00 - 0xFF (0-255).
|
|
78
|
+
|
|
79
|
+
If <_register_xaddress> < 128, the page index <_page_xindex> is ignored by the server. The server will read from page 0 without writing 0 into byte 127.
|
|
80
|
+
|
|
81
|
+
If <_register_xaddress> >=128, the page index <_page_xindex> will be written into byte 127.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
code: typing.ClassVar[int] = 503
|
|
85
|
+
pushed: typing.ClassVar[bool] = False
|
|
86
|
+
|
|
87
|
+
_connection: 'interfaces.IConnection'
|
|
88
|
+
_module: int
|
|
89
|
+
_port: int
|
|
90
|
+
_page_xindex: int
|
|
91
|
+
_register_xaddress: int
|
|
92
|
+
_byte_xcount: int
|
|
93
|
+
|
|
94
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
95
|
+
value: Hex = field(XmpHex())
|
|
96
|
+
"""the bytes to be read or written in one I2C transaction. The number of bytes in the ``<value>`` equals ``<byte_count>``."""
|
|
97
|
+
|
|
98
|
+
class SetDataAttr(RequestBodyStruct):
|
|
99
|
+
value: Hex = field(XmpHex())
|
|
100
|
+
"""the bytes to be read or written in one I2C transaction. The number of bytes in the ``<value>`` equals ``<byte_count>``."""
|
|
101
|
+
|
|
102
|
+
def get(self) -> Token[GetDataAttr]:
|
|
103
|
+
"""Get the register value of a transceiver in one I2C transaction.
|
|
104
|
+
|
|
105
|
+
:return: the register value of a transceiver
|
|
106
|
+
:rtype: PX_RW_SEQ.GetDataAttr
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._page_xindex, self._register_xaddress, self._byte_xcount]))
|
|
110
|
+
|
|
111
|
+
def set(self, value: Hex) -> Token[None]:
|
|
112
|
+
"""Set the register value of a transceiver in one I2C transaction.
|
|
113
|
+
|
|
114
|
+
:param value: register value of a transceiver
|
|
115
|
+
:type value: Hex
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
return Token(
|
|
119
|
+
self._connection,
|
|
120
|
+
build_set_request(
|
|
121
|
+
self,
|
|
122
|
+
module=self._module,
|
|
123
|
+
port=self._port,
|
|
124
|
+
indices=[self._page_xindex, self._register_xaddress, self._byte_xcount],
|
|
125
|
+
value=value
|
|
126
|
+
)
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
@register_command
|
|
131
|
+
@dataclass
|
|
132
|
+
class PX_RW_SEQ_BANK:
|
|
133
|
+
"""
|
|
134
|
+
I2C sequential access to a transceiver's register. When invoked, the <byte_count> number of bytes will be read or written in one I2C transaction, in which the <value> is read or written with only a single register address setup. A subsequent invocation will perform a second I2C transaction in the same manner.
|
|
135
|
+
|
|
136
|
+
* <_bank_xindex>: the bank address, integer, 0x00 - 0xFF (0-255).
|
|
137
|
+
|
|
138
|
+
* <_page_xindex>: the transceiver page address, integer, 0x00 - 0xFF (0-255).
|
|
139
|
+
|
|
140
|
+
* <_register_xaddress>: the address within the page, integer, 0x00 - 0xFF (0-255).
|
|
141
|
+
|
|
142
|
+
* <_byte_xcount> number of bytes will be read or written in one I2C transaction
|
|
143
|
+
|
|
144
|
+
If <_register_xaddress> < 128, the page index <page> and the bank index <_bank_xindex> is ignored by the server. The server will read from page 0 without writing 0 into byte 127.
|
|
145
|
+
|
|
146
|
+
If <_register_xaddress> >=128, the page index <page> will be written into byte 127, and the bank index <_bank_xindex> will be written into byte 126.
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
code: typing.ClassVar[int] = 504
|
|
150
|
+
pushed: typing.ClassVar[bool] = False
|
|
151
|
+
|
|
152
|
+
_connection: 'interfaces.IConnection'
|
|
153
|
+
_module: int
|
|
154
|
+
_port: int
|
|
155
|
+
_bank_xindex: int
|
|
156
|
+
_page_xindex: int
|
|
157
|
+
_register_xaddress: int
|
|
158
|
+
_byte_xcount: int
|
|
159
|
+
|
|
160
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
161
|
+
value: Hex = field(XmpHex())
|
|
162
|
+
"""the bytes to be read or written in one I2C transaction. The number of bytes in the ``<value>`` equals ``<byte_count>``."""
|
|
163
|
+
|
|
164
|
+
class SetDataAttr(RequestBodyStruct):
|
|
165
|
+
value: Hex = field(XmpHex())
|
|
166
|
+
"""the bytes to be read or written in one I2C transaction. The number of bytes in the ``<value>`` equals ``<byte_count>``."""
|
|
167
|
+
|
|
168
|
+
def get(self) -> Token[GetDataAttr]:
|
|
169
|
+
"""Get the register value of a transceiver in one I2C transaction.
|
|
170
|
+
|
|
171
|
+
:return: the register value of a transceiver
|
|
172
|
+
:rtype: PX_RW_SEQ.GetDataAttr
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._bank_xindex, self._page_xindex, self._register_xaddress, self._byte_xcount]))
|
|
176
|
+
|
|
177
|
+
def set(self, value: Hex) -> Token[None]:
|
|
178
|
+
"""Set the register value of a transceiver in one I2C transaction.
|
|
179
|
+
|
|
180
|
+
:param value: register value of a transceiver
|
|
181
|
+
:type value: Hex
|
|
182
|
+
"""
|
|
183
|
+
|
|
184
|
+
return Token(
|
|
185
|
+
self._connection,
|
|
186
|
+
build_set_request(
|
|
187
|
+
self,
|
|
188
|
+
module=self._module,
|
|
189
|
+
port=self._port,
|
|
190
|
+
indices=[self._bank_xindex, self._page_xindex, self._register_xaddress, self._byte_xcount],
|
|
191
|
+
value=value
|
|
192
|
+
)
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
@register_command
|
|
196
|
+
@dataclass
|
|
197
|
+
class PX_MII:
|
|
198
|
+
"""Provides access to the register interface supported by the media-independent interface (MII) transceiver. It
|
|
199
|
+
is possible to both read and write register values."""
|
|
200
|
+
|
|
201
|
+
code: typing.ClassVar[int] = 537
|
|
202
|
+
pushed: typing.ClassVar[bool] = False
|
|
203
|
+
|
|
204
|
+
_connection: 'interfaces.IConnection'
|
|
205
|
+
_module: int
|
|
206
|
+
_port: int
|
|
207
|
+
_register_xaddress: int
|
|
208
|
+
|
|
209
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
210
|
+
value: Hex = field(XmpHex(size=2))
|
|
211
|
+
"""2 hex bytes, register value of the transceiver"""
|
|
212
|
+
|
|
213
|
+
class SetDataAttr(RequestBodyStruct):
|
|
214
|
+
value: Hex = field(XmpHex(size=2))
|
|
215
|
+
"""2 hex bytes, register value of the transceiver"""
|
|
216
|
+
|
|
217
|
+
def get(self) -> Token[GetDataAttr]:
|
|
218
|
+
"""Get the register value of a transceiver.
|
|
219
|
+
|
|
220
|
+
:return: the register value of a transceiver
|
|
221
|
+
:rtype: PX_MII.GetDataAttr
|
|
222
|
+
"""
|
|
223
|
+
|
|
224
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._register_xaddress]))
|
|
225
|
+
|
|
226
|
+
def set(self, value: Hex) -> Token[None]:
|
|
227
|
+
"""Set the register value of a transceiver.
|
|
228
|
+
|
|
229
|
+
:param value: register value of a transceiver
|
|
230
|
+
:type value: Hex
|
|
231
|
+
"""
|
|
232
|
+
|
|
233
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._register_xaddress], value=value))
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
@register_command
|
|
237
|
+
@dataclass
|
|
238
|
+
class PX_TEMPERATURE:
|
|
239
|
+
"""
|
|
240
|
+
Transceiver temperature in degrees Celsius.
|
|
241
|
+
"""
|
|
242
|
+
|
|
243
|
+
code: typing.ClassVar[int] = 538
|
|
244
|
+
pushed: typing.ClassVar[bool] = False
|
|
245
|
+
|
|
246
|
+
_connection: 'interfaces.IConnection'
|
|
247
|
+
_module: int
|
|
248
|
+
_port: int
|
|
249
|
+
|
|
250
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
251
|
+
integral_part: int = field(XmpByte())
|
|
252
|
+
"""byte, temperature value before the decimal digit."""
|
|
253
|
+
fractional_part: int = field(XmpByte())
|
|
254
|
+
"""byte, 1/256th of a degree Celsius after the decimal digit."""
|
|
255
|
+
|
|
256
|
+
def get(self) -> Token[GetDataAttr]:
|
|
257
|
+
"""Get transceiver temperature in degrees Celsius.
|
|
258
|
+
|
|
259
|
+
:return: temperature value before the decimal digit, and 1/256th of a degree Celsius after the decimal digit.
|
|
260
|
+
:rtype: PX_TEMPERATURE.GetDataAttr
|
|
261
|
+
"""
|
|
262
|
+
|
|
263
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
264
|
+
|
|
265
|
+
@register_command
|
|
266
|
+
@dataclass
|
|
267
|
+
class PX_I2C_CONFIG:
|
|
268
|
+
"""
|
|
269
|
+
Set the get the access speed on a transceiver I2C access in the unit of KHz. Default to 100. When the transceiver is plugged out and in again, the speed will be reset to the default value 100. The speed has a minimum and a maximum, which can be obtained from P_CAPABILITIES. The I2C speed configuration will not be included in the port configuration file (.xpc). When you load a port configuration to a port, the transceiver I2C access speed will be reset to default 100.
|
|
270
|
+
"""
|
|
271
|
+
|
|
272
|
+
code: typing.ClassVar[int] = 539
|
|
273
|
+
pushed: typing.ClassVar[bool] = False
|
|
274
|
+
|
|
275
|
+
_connection: 'interfaces.IConnection'
|
|
276
|
+
_module: int
|
|
277
|
+
_port: int
|
|
278
|
+
|
|
279
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
280
|
+
frequency: int = field(XmpInt())
|
|
281
|
+
"""integer, frequency in kHz, default is 100."""
|
|
282
|
+
|
|
283
|
+
class SetDataAttr(RequestBodyStruct):
|
|
284
|
+
frequency: int = field(XmpInt())
|
|
285
|
+
"""integer, frequency in kHz, default is 100."""
|
|
286
|
+
|
|
287
|
+
def get(self) -> Token[GetDataAttr]:
|
|
288
|
+
"""Get the speed on a transceiver I2C access in the unit of KHz.
|
|
289
|
+
|
|
290
|
+
:return: frequency in kHz.
|
|
291
|
+
:rtype: PX_I2C_CONFIG.GetDataAttr
|
|
292
|
+
"""
|
|
293
|
+
|
|
294
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
295
|
+
|
|
296
|
+
def set(self, frequency: int) -> Token[None]:
|
|
297
|
+
"""Set the speed on a transceiver I2C access in the unit of KHz.
|
|
298
|
+
|
|
299
|
+
:param frequency: frequency in kHz
|
|
300
|
+
:type frequency: int
|
|
301
|
+
"""
|
|
302
|
+
|
|
303
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, frequency=frequency))
|