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.
Files changed (325) hide show
  1. tdl_xoa_driver-1.0.0.dist-info/LICENSE +202 -0
  2. tdl_xoa_driver-1.0.0.dist-info/METADATA +177 -0
  3. tdl_xoa_driver-1.0.0.dist-info/RECORD +325 -0
  4. tdl_xoa_driver-1.0.0.dist-info/WHEEL +5 -0
  5. tdl_xoa_driver-1.0.0.dist-info/top_level.txt +1 -0
  6. xoa_driver/__init__.py +2 -0
  7. xoa_driver/enums.py +399 -0
  8. xoa_driver/exceptions.py +77 -0
  9. xoa_driver/functions/__init__.py +0 -0
  10. xoa_driver/functions/anlt.py +744 -0
  11. xoa_driver/functions/anlt_ll_debug.py +429 -0
  12. xoa_driver/functions/cli.py +581 -0
  13. xoa_driver/functions/exceptions.py +72 -0
  14. xoa_driver/functions/headers.py +608 -0
  15. xoa_driver/functions/mgmt.py +515 -0
  16. xoa_driver/functions/tools.py +256 -0
  17. xoa_driver/hlfuncs.py +18 -0
  18. xoa_driver/internals/__init__.py +0 -0
  19. xoa_driver/internals/commands/__init__.py +31 -0
  20. xoa_driver/internals/commands/c_commands.py +2041 -0
  21. xoa_driver/internals/commands/enums.py +3289 -0
  22. xoa_driver/internals/commands/m4_commands.py +700 -0
  23. xoa_driver/internals/commands/m4e_commands.py +107 -0
  24. xoa_driver/internals/commands/m_commands.py +1875 -0
  25. xoa_driver/internals/commands/p4_commands.py +2221 -0
  26. xoa_driver/internals/commands/p4e_commands.py +160 -0
  27. xoa_driver/internals/commands/p4g_commands.py +7253 -0
  28. xoa_driver/internals/commands/p_commands.py +6000 -0
  29. xoa_driver/internals/commands/pc_commands.py +335 -0
  30. xoa_driver/internals/commands/pd_commands.py +355 -0
  31. xoa_driver/internals/commands/pe_commands.py +1018 -0
  32. xoa_driver/internals/commands/pec_commands.py +265 -0
  33. xoa_driver/internals/commands/ped_commands.py +1034 -0
  34. xoa_driver/internals/commands/pef_commands.py +2216 -0
  35. xoa_driver/internals/commands/pf_commands.py +379 -0
  36. xoa_driver/internals/commands/pl1_commands.py +1588 -0
  37. xoa_driver/internals/commands/pl_commands.py +178 -0
  38. xoa_driver/internals/commands/pm_commands.py +256 -0
  39. xoa_driver/internals/commands/pp_commands.py +2341 -0
  40. xoa_driver/internals/commands/pr_commands.py +812 -0
  41. xoa_driver/internals/commands/ps_commands.py +2311 -0
  42. xoa_driver/internals/commands/pt_commands.py +370 -0
  43. xoa_driver/internals/commands/px_commands.py +303 -0
  44. xoa_driver/internals/commands/subtypes.py +86 -0
  45. xoa_driver/internals/core/__init__.py +0 -0
  46. xoa_driver/internals/core/builders.py +39 -0
  47. xoa_driver/internals/core/exceptions.py +69 -0
  48. xoa_driver/internals/core/funcs.py +81 -0
  49. xoa_driver/internals/core/funcs.pyi +1072 -0
  50. xoa_driver/internals/core/interfaces.py +47 -0
  51. xoa_driver/internals/core/token.py +44 -0
  52. xoa_driver/internals/core/transporter/__init__.py +0 -0
  53. xoa_driver/internals/core/transporter/_processor.py +83 -0
  54. xoa_driver/internals/core/transporter/_publisher.py +101 -0
  55. xoa_driver/internals/core/transporter/_request_id_counter.py +28 -0
  56. xoa_driver/internals/core/transporter/_stream.py +99 -0
  57. xoa_driver/internals/core/transporter/_typings.py +43 -0
  58. xoa_driver/internals/core/transporter/exceptions.py +44 -0
  59. xoa_driver/internals/core/transporter/handler.py +127 -0
  60. xoa_driver/internals/core/transporter/logger/__init__.py +10 -0
  61. xoa_driver/internals/core/transporter/logger/__logger.py +94 -0
  62. xoa_driver/internals/core/transporter/logger/__state_off.py +32 -0
  63. xoa_driver/internals/core/transporter/logger/__state_on_default.py +70 -0
  64. xoa_driver/internals/core/transporter/logger/__state_on_loguru.py +51 -0
  65. xoa_driver/internals/core/transporter/logger/__state_on_user.py +48 -0
  66. xoa_driver/internals/core/transporter/protocol/__init__.py +0 -0
  67. xoa_driver/internals/core/transporter/protocol/_constants.py +77 -0
  68. xoa_driver/internals/core/transporter/protocol/_utils.py +59 -0
  69. xoa_driver/internals/core/transporter/protocol/exceptions.py +271 -0
  70. xoa_driver/internals/core/transporter/protocol/payload/__init__.py +70 -0
  71. xoa_driver/internals/core/transporter/protocol/payload/base_struct.py +283 -0
  72. xoa_driver/internals/core/transporter/protocol/payload/descriptor.py +119 -0
  73. xoa_driver/internals/core/transporter/protocol/payload/exceptions.py +20 -0
  74. xoa_driver/internals/core/transporter/protocol/payload/field.py +296 -0
  75. xoa_driver/internals/core/transporter/protocol/payload/types.py +173 -0
  76. xoa_driver/internals/core/transporter/protocol/payload/utils.py +53 -0
  77. xoa_driver/internals/core/transporter/protocol/struct_header.py +123 -0
  78. xoa_driver/internals/core/transporter/protocol/struct_request.py +65 -0
  79. xoa_driver/internals/core/transporter/protocol/struct_response.py +89 -0
  80. xoa_driver/internals/core/transporter/registry.py +43 -0
  81. xoa_driver/internals/exceptions/__init__.py +9 -0
  82. xoa_driver/internals/exceptions/modules.py +13 -0
  83. xoa_driver/internals/exceptions/testers.py +21 -0
  84. xoa_driver/internals/hli_v1/__init__.py +0 -0
  85. xoa_driver/internals/hli_v1/indices/__init__.py +0 -0
  86. xoa_driver/internals/hli_v1/indices/base_index.py +39 -0
  87. xoa_driver/internals/hli_v1/indices/connection_group/__init__.py +0 -0
  88. xoa_driver/internals/hli_v1/indices/connection_group/cg.py +186 -0
  89. xoa_driver/internals/hli_v1/indices/connection_group/histogram.py +78 -0
  90. xoa_driver/internals/hli_v1/indices/connection_group/l2.py +94 -0
  91. xoa_driver/internals/hli_v1/indices/connection_group/l3.py +130 -0
  92. xoa_driver/internals/hli_v1/indices/connection_group/raw.py +200 -0
  93. xoa_driver/internals/hli_v1/indices/connection_group/replay.py +109 -0
  94. xoa_driver/internals/hli_v1/indices/connection_group/tcp.py +314 -0
  95. xoa_driver/internals/hli_v1/indices/connection_group/tls.py +198 -0
  96. xoa_driver/internals/hli_v1/indices/connection_group/udp.py +133 -0
  97. xoa_driver/internals/hli_v1/indices/connection_group/user_state.py +28 -0
  98. xoa_driver/internals/hli_v1/indices/filter/__init__.py +0 -0
  99. xoa_driver/internals/hli_v1/indices/filter/base_filter.py +65 -0
  100. xoa_driver/internals/hli_v1/indices/filter/genuine_filter.py +20 -0
  101. xoa_driver/internals/hli_v1/indices/length_term.py +49 -0
  102. xoa_driver/internals/hli_v1/indices/macsecscs/__init__.py +0 -0
  103. xoa_driver/internals/hli_v1/indices/macsecscs/base_macsecsc.py +224 -0
  104. xoa_driver/internals/hli_v1/indices/macsecscs/genuine_macsecsc.py +72 -0
  105. xoa_driver/internals/hli_v1/indices/match_term.py +64 -0
  106. xoa_driver/internals/hli_v1/indices/port_dataset.py +72 -0
  107. xoa_driver/internals/hli_v1/indices/streams/__init__.py +0 -0
  108. xoa_driver/internals/hli_v1/indices/streams/base_stream.py +405 -0
  109. xoa_driver/internals/hli_v1/indices/streams/genuine_stream.py +64 -0
  110. xoa_driver/internals/hli_v1/modules/__init__.py +0 -0
  111. xoa_driver/internals/hli_v1/modules/__interfaces.py +21 -0
  112. xoa_driver/internals/hli_v1/modules/base_module.py +138 -0
  113. xoa_driver/internals/hli_v1/modules/module_chimera.py +366 -0
  114. xoa_driver/internals/hli_v1/modules/module_l23ve.py +73 -0
  115. xoa_driver/internals/hli_v1/modules/module_l47.py +397 -0
  116. xoa_driver/internals/hli_v1/modules/module_l47ve.py +9 -0
  117. xoa_driver/internals/hli_v1/modules/modules_l23/__init__.py +0 -0
  118. xoa_driver/internals/hli_v1/modules/modules_l23/family_combi.py +83 -0
  119. xoa_driver/internals/hli_v1/modules/modules_l23/family_d.py +75 -0
  120. xoa_driver/internals/hli_v1/modules/modules_l23/family_e.py +85 -0
  121. xoa_driver/internals/hli_v1/modules/modules_l23/family_f.py +145 -0
  122. xoa_driver/internals/hli_v1/modules/modules_l23/family_g.py +84 -0
  123. xoa_driver/internals/hli_v1/modules/modules_l23/family_h.py +40 -0
  124. xoa_driver/internals/hli_v1/modules/modules_l23/family_i.py +25 -0
  125. xoa_driver/internals/hli_v1/modules/modules_l23/family_j.py +25 -0
  126. xoa_driver/internals/hli_v1/modules/modules_l23/family_k.py +39 -0
  127. xoa_driver/internals/hli_v1/modules/modules_l23/family_l.py +55 -0
  128. xoa_driver/internals/hli_v1/modules/modules_l23/family_l1.py +800 -0
  129. xoa_driver/internals/hli_v1/modules/modules_l23/family_m.py +25 -0
  130. xoa_driver/internals/hli_v1/modules/modules_l23/family_n.py +40 -0
  131. xoa_driver/internals/hli_v1/modules/modules_l23/module_l23_base.py +383 -0
  132. xoa_driver/internals/hli_v1/ports/__init__.py +0 -0
  133. xoa_driver/internals/hli_v1/ports/base_port.py +125 -0
  134. xoa_driver/internals/hli_v1/ports/port_l23/__init__.py +0 -0
  135. xoa_driver/internals/hli_v1/ports/port_l23/bases/__init__.py +0 -0
  136. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_capture.py +70 -0
  137. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23.py +527 -0
  138. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23_genuine.py +229 -0
  139. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py +231 -0
  140. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transceiver.py +117 -0
  141. xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transmission_statistics.py +131 -0
  142. xoa_driver/internals/hli_v1/ports/port_l23/chimera/__init__.py +0 -0
  143. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
  144. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
  145. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/general.py +396 -0
  146. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/shadow.py +104 -0
  147. xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/working.py +36 -0
  148. xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_custom_distribution.py +125 -0
  149. xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_distribution.py +174 -0
  150. xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_chimera.py +119 -0
  151. xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_emulation.py +244 -0
  152. xoa_driver/internals/hli_v1/ports/port_l23/chimera/reception_statistics.py +24 -0
  153. xoa_driver/internals/hli_v1/ports/port_l23/chimera/transmission_statistics.py +24 -0
  154. xoa_driver/internals/hli_v1/ports/port_l23/family_combi.py +37 -0
  155. xoa_driver/internals/hli_v1/ports/port_l23/family_d.py +51 -0
  156. xoa_driver/internals/hli_v1/ports/port_l23/family_e.py +107 -0
  157. xoa_driver/internals/hli_v1/ports/port_l23/family_f.py +151 -0
  158. xoa_driver/internals/hli_v1/ports/port_l23/family_g.py +77 -0
  159. xoa_driver/internals/hli_v1/ports/port_l23/family_h.py +67 -0
  160. xoa_driver/internals/hli_v1/ports/port_l23/family_i.py +84 -0
  161. xoa_driver/internals/hli_v1/ports/port_l23/family_j.py +68 -0
  162. xoa_driver/internals/hli_v1/ports/port_l23/family_k.py +73 -0
  163. xoa_driver/internals/hli_v1/ports/port_l23/family_l.py +82 -0
  164. xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py +166 -0
  165. xoa_driver/internals/hli_v1/ports/port_l23/family_m.py +29 -0
  166. xoa_driver/internals/hli_v1/ports/port_l23/fault_jkl.py +24 -0
  167. xoa_driver/internals/hli_v1/ports/port_l23/freya_l1.py +722 -0
  168. xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ghijkl.py +369 -0
  169. xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ijkl_chimera.py +60 -0
  170. xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_l.py +78 -0
  171. xoa_driver/internals/hli_v1/ports/port_l23/port_l23ve.py +101 -0
  172. xoa_driver/internals/hli_v1/ports/port_l47/__init__.py +0 -0
  173. xoa_driver/internals/hli_v1/ports/port_l47/counters.py +174 -0
  174. xoa_driver/internals/hli_v1/ports/port_l47/main.py +228 -0
  175. xoa_driver/internals/hli_v1/ports/port_l47/packet_engine.py +31 -0
  176. xoa_driver/internals/hli_v1/revisions.py +11 -0
  177. xoa_driver/internals/hli_v1/testers/__init__.py +0 -0
  178. xoa_driver/internals/hli_v1/testers/_base_tester.py +259 -0
  179. xoa_driver/internals/hli_v1/testers/genuine/__init__.py +0 -0
  180. xoa_driver/internals/hli_v1/testers/genuine/l_23/__init__.py +0 -0
  181. xoa_driver/internals/hli_v1/testers/genuine/l_23/health.py +16 -0
  182. xoa_driver/internals/hli_v1/testers/genuine/l_23/rest_api.py +38 -0
  183. xoa_driver/internals/hli_v1/testers/genuine/l_23/time_keeper.py +57 -0
  184. xoa_driver/internals/hli_v1/testers/genuine/l_23/upload_file.py +29 -0
  185. xoa_driver/internals/hli_v1/testers/genuine/management_interface.py +42 -0
  186. xoa_driver/internals/hli_v1/testers/l23_tester.py +196 -0
  187. xoa_driver/internals/hli_v1/testers/l23ve_tester.py +114 -0
  188. xoa_driver/internals/hli_v1/testers/l47_tester.py +106 -0
  189. xoa_driver/internals/hli_v1/testers/l47ve_tester.py +54 -0
  190. xoa_driver/internals/hli_v2/__init__.py +0 -0
  191. xoa_driver/internals/hli_v2/indices/__init__.py +0 -0
  192. xoa_driver/internals/hli_v2/indices/base_index.py +39 -0
  193. xoa_driver/internals/hli_v2/indices/connection_group/__init__.py +0 -0
  194. xoa_driver/internals/hli_v2/indices/connection_group/cg.py +115 -0
  195. xoa_driver/internals/hli_v2/indices/connection_group/histogram.py +59 -0
  196. xoa_driver/internals/hli_v2/indices/connection_group/l2.py +71 -0
  197. xoa_driver/internals/hli_v2/indices/connection_group/l3.py +96 -0
  198. xoa_driver/internals/hli_v2/indices/connection_group/raw.py +148 -0
  199. xoa_driver/internals/hli_v2/indices/connection_group/replay.py +89 -0
  200. xoa_driver/internals/hli_v2/indices/connection_group/tcp.py +261 -0
  201. xoa_driver/internals/hli_v2/indices/connection_group/tls.py +166 -0
  202. xoa_driver/internals/hli_v2/indices/connection_group/udp.py +112 -0
  203. xoa_driver/internals/hli_v2/indices/connection_group/user_state.py +25 -0
  204. xoa_driver/internals/hli_v2/indices/filter/__init__.py +0 -0
  205. xoa_driver/internals/hli_v2/indices/filter/base_filter.py +50 -0
  206. xoa_driver/internals/hli_v2/indices/filter/genuine_filter.py +17 -0
  207. xoa_driver/internals/hli_v2/indices/length_term.py +44 -0
  208. xoa_driver/internals/hli_v2/indices/match_term.py +49 -0
  209. xoa_driver/internals/hli_v2/indices/port_dataset.py +53 -0
  210. xoa_driver/internals/hli_v2/indices/streams/__init__.py +0 -0
  211. xoa_driver/internals/hli_v2/indices/streams/base_stream.py +234 -0
  212. xoa_driver/internals/hli_v2/indices/streams/genuine_stream.py +32 -0
  213. xoa_driver/internals/hli_v2/modules/__init__.py +0 -0
  214. xoa_driver/internals/hli_v2/modules/__interfaces.py +21 -0
  215. xoa_driver/internals/hli_v2/modules/base_module.py +125 -0
  216. xoa_driver/internals/hli_v2/modules/module_chimera.py +358 -0
  217. xoa_driver/internals/hli_v2/modules/module_l23ve.py +58 -0
  218. xoa_driver/internals/hli_v2/modules/module_l47.py +230 -0
  219. xoa_driver/internals/hli_v2/modules/module_l47ve.py +8 -0
  220. xoa_driver/internals/hli_v2/modules/modules_l23/__init__.py +0 -0
  221. xoa_driver/internals/hli_v2/modules/modules_l23/family_combi.py +73 -0
  222. xoa_driver/internals/hli_v2/modules/modules_l23/family_d.py +75 -0
  223. xoa_driver/internals/hli_v2/modules/modules_l23/family_e.py +85 -0
  224. xoa_driver/internals/hli_v2/modules/modules_l23/family_f.py +144 -0
  225. xoa_driver/internals/hli_v2/modules/modules_l23/family_g.py +84 -0
  226. xoa_driver/internals/hli_v2/modules/modules_l23/family_h.py +40 -0
  227. xoa_driver/internals/hli_v2/modules/modules_l23/family_i.py +25 -0
  228. xoa_driver/internals/hli_v2/modules/modules_l23/family_j.py +25 -0
  229. xoa_driver/internals/hli_v2/modules/modules_l23/family_k.py +39 -0
  230. xoa_driver/internals/hli_v2/modules/modules_l23/family_l.py +55 -0
  231. xoa_driver/internals/hli_v2/modules/modules_l23/family_l1.py +797 -0
  232. xoa_driver/internals/hli_v2/modules/modules_l23/family_m.py +25 -0
  233. xoa_driver/internals/hli_v2/modules/modules_l23/family_n.py +40 -0
  234. xoa_driver/internals/hli_v2/modules/modules_l23/module_l23_base.py +339 -0
  235. xoa_driver/internals/hli_v2/ports/__init__.py +0 -0
  236. xoa_driver/internals/hli_v2/ports/base_port.py +105 -0
  237. xoa_driver/internals/hli_v2/ports/port_l23/__init__.py +0 -0
  238. xoa_driver/internals/hli_v2/ports/port_l23/bases/__init__.py +0 -0
  239. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_capture.py +64 -0
  240. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23.py +441 -0
  241. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23_genuine.py +172 -0
  242. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +156 -0
  243. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transceiver.py +117 -0
  244. xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transmission_statistics.py +59 -0
  245. xoa_driver/internals/hli_v2/ports/port_l23/chimera/__init__.py +0 -0
  246. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
  247. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
  248. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/general.py +340 -0
  249. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/shadow.py +99 -0
  250. xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/working.py +36 -0
  251. xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +116 -0
  252. xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_distribution.py +102 -0
  253. xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_chimera.py +113 -0
  254. xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_emulation.py +420 -0
  255. xoa_driver/internals/hli_v2/ports/port_l23/chimera/reception_statistics.py +22 -0
  256. xoa_driver/internals/hli_v2/ports/port_l23/chimera/transmission_statistics.py +22 -0
  257. xoa_driver/internals/hli_v2/ports/port_l23/family_combi.py +36 -0
  258. xoa_driver/internals/hli_v2/ports/port_l23/family_d.py +49 -0
  259. xoa_driver/internals/hli_v2/ports/port_l23/family_e.py +96 -0
  260. xoa_driver/internals/hli_v2/ports/port_l23/family_f.py +144 -0
  261. xoa_driver/internals/hli_v2/ports/port_l23/family_g.py +77 -0
  262. xoa_driver/internals/hli_v2/ports/port_l23/family_h.py +60 -0
  263. xoa_driver/internals/hli_v2/ports/port_l23/family_i.py +66 -0
  264. xoa_driver/internals/hli_v2/ports/port_l23/family_j.py +53 -0
  265. xoa_driver/internals/hli_v2/ports/port_l23/family_k.py +58 -0
  266. xoa_driver/internals/hli_v2/ports/port_l23/family_l.py +67 -0
  267. xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +149 -0
  268. xoa_driver/internals/hli_v2/ports/port_l23/family_m.py +28 -0
  269. xoa_driver/internals/hli_v2/ports/port_l23/fault_jkl.py +22 -0
  270. xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ghijkl.py +342 -0
  271. xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ijkl_chimera.py +50 -0
  272. xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_l.py +65 -0
  273. xoa_driver/internals/hli_v2/ports/port_l23/port_l23ve.py +81 -0
  274. xoa_driver/internals/hli_v2/ports/port_l47/__init__.py +0 -0
  275. xoa_driver/internals/hli_v2/ports/port_l47/counters.py +146 -0
  276. xoa_driver/internals/hli_v2/ports/port_l47/main.py +137 -0
  277. xoa_driver/internals/hli_v2/ports/port_l47/packet_engine.py +20 -0
  278. xoa_driver/internals/hli_v2/revisions.py +11 -0
  279. xoa_driver/internals/hli_v2/testers/__init__.py +0 -0
  280. xoa_driver/internals/hli_v2/testers/_base_tester.py +207 -0
  281. xoa_driver/internals/hli_v2/testers/genuine/__init__.py +0 -0
  282. xoa_driver/internals/hli_v2/testers/genuine/l_23/__init__.py +0 -0
  283. xoa_driver/internals/hli_v2/testers/genuine/l_23/health.py +16 -0
  284. xoa_driver/internals/hli_v2/testers/genuine/l_23/rest_api.py +34 -0
  285. xoa_driver/internals/hli_v2/testers/genuine/l_23/time_keeper.py +50 -0
  286. xoa_driver/internals/hli_v2/testers/genuine/l_23/upload_file.py +26 -0
  287. xoa_driver/internals/hli_v2/testers/genuine/management_interface.py +38 -0
  288. xoa_driver/internals/hli_v2/testers/l23_tester.py +159 -0
  289. xoa_driver/internals/hli_v2/testers/l23ve_tester.py +98 -0
  290. xoa_driver/internals/hli_v2/testers/l47_tester.py +95 -0
  291. xoa_driver/internals/hli_v2/testers/l47ve_tester.py +50 -0
  292. xoa_driver/internals/state_storage/__init__.py +0 -0
  293. xoa_driver/internals/state_storage/_speed_detector.py +121 -0
  294. xoa_driver/internals/state_storage/modules_state.py +128 -0
  295. xoa_driver/internals/state_storage/ports_state.py +154 -0
  296. xoa_driver/internals/state_storage/testers_state.py +104 -0
  297. xoa_driver/internals/utils/__init__.py +0 -0
  298. xoa_driver/internals/utils/attributes.py +33 -0
  299. xoa_driver/internals/utils/cap_id.py +63 -0
  300. xoa_driver/internals/utils/con_traffic_light.py +88 -0
  301. xoa_driver/internals/utils/indices/__init__.py +0 -0
  302. xoa_driver/internals/utils/indices/_interfaces.py +26 -0
  303. xoa_driver/internals/utils/indices/header_modifier_manager.py +56 -0
  304. xoa_driver/internals/utils/indices/index_manager.py +95 -0
  305. xoa_driver/internals/utils/indices/observer.py +17 -0
  306. xoa_driver/internals/utils/kind.py +19 -0
  307. xoa_driver/internals/utils/managers/__init__.py +0 -0
  308. xoa_driver/internals/utils/managers/abc.py +44 -0
  309. xoa_driver/internals/utils/managers/exceptions.py +22 -0
  310. xoa_driver/internals/utils/managers/modules_manager.py +118 -0
  311. xoa_driver/internals/utils/managers/ports_manager.py +116 -0
  312. xoa_driver/internals/utils/rev_tool.py +21 -0
  313. xoa_driver/internals/utils/session.py +117 -0
  314. xoa_driver/internals/warn.py +32 -0
  315. xoa_driver/lli.py +15 -0
  316. xoa_driver/misc.py +57 -0
  317. xoa_driver/modules.py +448 -0
  318. xoa_driver/ports.py +332 -0
  319. xoa_driver/testers.py +37 -0
  320. xoa_driver/utils.py +12 -0
  321. xoa_driver/v2/__init__.py +11 -0
  322. xoa_driver/v2/misc.py +77 -0
  323. xoa_driver/v2/modules.py +308 -0
  324. xoa_driver/v2/ports.py +232 -0
  325. 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
+ )