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.
Files changed (325) hide show
  1. tdl_xoa_driver-1.0.0b1.dist-info/LICENSE +202 -0
  2. tdl_xoa_driver-1.0.0b1.dist-info/METADATA +177 -0
  3. tdl_xoa_driver-1.0.0b1.dist-info/RECORD +325 -0
  4. tdl_xoa_driver-1.0.0b1.dist-info/WHEEL +5 -0
  5. tdl_xoa_driver-1.0.0b1.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,107 @@
1
+ from typing import TYPE_CHECKING
2
+ from xoa_driver.internals.commands import (
3
+ P_AUTONEGSELECTION, # questionable which ports are electrical
4
+ P_LPENABLE,
5
+ P_LPTXMODE,
6
+ P_LPSTATUS,
7
+ P_LPPARTNERAUTONEG,
8
+ P_LPSNRMARGIN,
9
+ P_LPRXPOWER,
10
+ P_LPSUPPORT,
11
+ )
12
+ if TYPE_CHECKING:
13
+ from xoa_driver.internals.core import interfaces as itf
14
+
15
+ from .bases.port_l23_genuine import BasePortL23Genuine
16
+
17
+
18
+ class LowPowerMode:
19
+ """L23 port low power mode."""
20
+
21
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
22
+ self.enable = P_LPENABLE(conn, module_id, port_id)
23
+ """Energy Efficiency Ethernet.
24
+
25
+ :type: P_LPENABLE
26
+ """
27
+
28
+ self.mode = P_LPTXMODE(conn, module_id, port_id)
29
+ """Low power TX mode.
30
+
31
+ :type: P_LPTXMODE
32
+ """
33
+ self.status = P_LPSTATUS(conn, module_id, port_id)
34
+ """Low power status.
35
+
36
+ :type: P_LPSTATUS
37
+ """
38
+
39
+ self.partner_capabilities = P_LPPARTNERAUTONEG(conn, module_id, port_id)
40
+ """EEE capabilities advertised during auto-negotiation by the far side.
41
+
42
+ :type: P_LPPARTNERAUTONEG
43
+ """
44
+
45
+ self.snr_margin = P_LPSNRMARGIN(conn, module_id, port_id)
46
+ """SNR margin on the four link channels by the PHY.
47
+
48
+ :type: P_LPSNRMARGIN
49
+ """
50
+
51
+ self.rx_power = P_LPRXPOWER(conn, module_id, port_id)
52
+ """RX power recorded during training for the four channels.
53
+
54
+ :type: P_LPRXPOWER
55
+ """
56
+
57
+ self.capabilities = P_LPSUPPORT(conn, module_id, port_id)
58
+ """EEE capabilities of the port.
59
+
60
+ :type: P_LPSUPPORT
61
+ """
62
+
63
+
64
+ class FamilyE(BasePortL23Genuine):
65
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
66
+ super().__init__(conn, module_id, port_id)
67
+ self.autoneg_selection = P_AUTONEGSELECTION(conn, module_id, port_id)
68
+ """L23 port's auto-negotiation selection.
69
+
70
+ :type: P_AUTONEGSELECTION
71
+ """
72
+
73
+ self.eee = LowPowerMode(conn, module_id, port_id)
74
+ """L23 port Low Power mode settings.
75
+
76
+ :type: LowPowerMode
77
+ """
78
+
79
+
80
+ class POdin5G4S6PCU(FamilyE):
81
+ """L23 port on Odin-5G-4S-6P-CU module.
82
+ """
83
+ ...
84
+
85
+
86
+ class POdin10G5S6PCU(FamilyE):
87
+ """L23 port on Odin-10G-5S-6P-CU module.
88
+ """
89
+ ...
90
+
91
+
92
+ class POdin10G5S6PCU_b(FamilyE):
93
+ """L23 port on Odin-10G-5S-6P-CU[b] module.
94
+ """
95
+ ...
96
+
97
+
98
+ class POdin10G3S6PCU(FamilyE):
99
+ """L23 port on Odin-10G-3S-6P-CU module.
100
+ """
101
+ ...
102
+
103
+
104
+ class POdin10G3S2PCU(FamilyE):
105
+ """L23 port on Odin-10G-3S-2P-CU module.
106
+ """
107
+ ...
@@ -0,0 +1,151 @@
1
+ import functools
2
+ from typing import TYPE_CHECKING
3
+ from xoa_driver.internals.commands import (
4
+ P_DYNAMIC,
5
+ P_TXRUNTLENGTH,
6
+ P_RXRUNTLENGTH,
7
+ P_RXRUNTLEN_ERRS,
8
+ P_TXPREAMBLE_REMOVE,
9
+ P_RXPREAMBLE_INSERT,
10
+
11
+ )
12
+ from xoa_driver.internals.utils import attributes as utils
13
+ if TYPE_CHECKING:
14
+ from xoa_driver.internals.core import interfaces as itf
15
+
16
+ from .bases.port_l23_genuine import BasePortL23Genuine
17
+
18
+
19
+ class FamilyF(BasePortL23Genuine):
20
+ ...
21
+
22
+
23
+ class POdin10G1S2P(FamilyF):
24
+ """L23 port on Odin-10G-1S-2P module.
25
+ """
26
+ ...
27
+
28
+
29
+ class POdin10G1S2P_b(FamilyF):
30
+ """L23 port on Odin-10G-1S-2P[b] module.
31
+ """
32
+ ...
33
+
34
+
35
+ class POdin10G1S2P_c(FamilyF):
36
+ """L23 port on Odin-10G-1S-2P[c] module.
37
+ """
38
+ ...
39
+
40
+
41
+ class POdin10G1S6P(FamilyF):
42
+ """L23 port on Odin-10G-1S-6P module.
43
+ """
44
+ ...
45
+
46
+
47
+ class Runt:
48
+ """Runt settings."""
49
+
50
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
51
+ self.tx_length = P_TXRUNTLENGTH(conn, module_id, port_id)
52
+ """L23 port's TX runt length.
53
+
54
+ :type: P_TXRUNTLENGTH
55
+ """
56
+
57
+ self.rx_length = P_RXRUNTLENGTH(conn, module_id, port_id)
58
+ """L23 port's RX runt length.
59
+
60
+ :type: P_RXRUNTLENGTH
61
+ """
62
+
63
+ self.has_length_errors = P_RXRUNTLEN_ERRS(conn, module_id, port_id)
64
+ """L23 port's RX runt length errors..
65
+
66
+ :type: P_RXRUNTLEN_ERRS
67
+ """
68
+
69
+
70
+ class Preamble:
71
+ """Preamble settings."""
72
+
73
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
74
+ self.tx_remove = P_TXPREAMBLE_REMOVE(conn, module_id, port_id)
75
+ """L23 port's removal of preamble from outgoing packets.
76
+
77
+ :type: P_TXPREAMBLE_REMOVE
78
+ """
79
+
80
+ self.rx_insert = P_RXPREAMBLE_INSERT(conn, module_id, port_id)
81
+ """L23 port's insertion of preamble into incoming packets.
82
+
83
+ :type: P_RXPREAMBLE_INSERT
84
+ """
85
+
86
+
87
+ class POdin10G1S6P_b(FamilyF):
88
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
89
+ super().__init__(conn, module_id, port_id)
90
+ self.runt = Runt(conn, module_id, port_id)
91
+ """Runt settings."""
92
+
93
+ self.preamble = Preamble(conn, module_id, port_id)
94
+ """Preamble settiNgs."""
95
+
96
+ class POdin10G6S6P_a(FamilyF):
97
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
98
+ super().__init__(conn, module_id, port_id)
99
+ self.runt = Runt(conn, module_id, port_id)
100
+ """Runt settings."""
101
+
102
+ self.preamble = Preamble(conn, module_id, port_id)
103
+ """Preamble settiNgs."""
104
+
105
+
106
+ class POdin10G1S2PT(FamilyF):
107
+ """L23 port on Odin-10G-1S-2P-T module.
108
+ """
109
+ ...
110
+
111
+
112
+ class POdin10G1S2P_d(FamilyF):
113
+ """L23 port on Odin-10G-1S-2P[d] module.
114
+ """
115
+ ...
116
+
117
+
118
+ class POdin10G1S12P(FamilyF):
119
+ """L23 port on Odin-10G-1S-12P module.
120
+ """
121
+ ...
122
+
123
+
124
+ class POdin40G2S2P(FamilyF):
125
+ """L23 port on Odin-40G-2S-2P module.
126
+ """
127
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
128
+ super().__init__(conn, module_id, port_id)
129
+ self.dynamic = P_DYNAMIC(conn, module_id, port_id)
130
+ """L23 port's dynamic traffic change.
131
+
132
+ :type: P_DYNAMIC
133
+ """
134
+
135
+ on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
136
+ """Register a callback to the event that the port's dynamic traffic setting changes."""
137
+
138
+
139
+ class POdin40G2S2PB(FamilyF):
140
+ """L23 port on Odin-40G-2S-2P-B module.
141
+ """
142
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
143
+ super().__init__(conn, module_id, port_id)
144
+ self.dynamic = P_DYNAMIC(conn, module_id, port_id)
145
+ """L23 port's dynamic traffic change.
146
+
147
+ :type: P_DYNAMIC
148
+ """
149
+
150
+ on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
151
+ """Register a callback to the event that the port's dynamic traffic setting changes."""
@@ -0,0 +1,77 @@
1
+ import functools
2
+ from typing import TYPE_CHECKING, Tuple
3
+ from typing_extensions import Self
4
+ from xoa_driver.internals.commands import (
5
+ P_DYNAMIC,
6
+ )
7
+ from xoa_driver.internals.utils import attributes as utils
8
+ if TYPE_CHECKING:
9
+ from xoa_driver.internals.core import interfaces as itf
10
+
11
+ from .bases.port_l23_genuine import BasePortL23Genuine
12
+ from .pcs_pma_ghijkl import (
13
+ PcsPma,
14
+ SerDes,
15
+ )
16
+
17
+
18
+ class FamilyG(BasePortL23Genuine):
19
+ pcs_pma: PcsPma
20
+ """PCS/PMA settings.
21
+
22
+ :type: ~xoa_driver.internals.hli_v1.ports.port_l23.pcs_pma_ghijkl.PcsPma
23
+ """
24
+
25
+ serdes: Tuple[SerDes, ...]
26
+ """SerDes index
27
+
28
+ :type: Tuple[SerDes, ...]
29
+ """
30
+
31
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
32
+ super().__init__(conn, module_id, port_id)
33
+ self.dynamic = P_DYNAMIC(conn, module_id, port_id)
34
+ """L23 port's dynamic traffic change.
35
+
36
+ :type: P_DYNAMIC
37
+ """
38
+
39
+ async def _setup(self) -> Self:
40
+ await super()._setup()
41
+ self.serdes = tuple(
42
+ SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
43
+ for serdes_xindex in range(self.info.capabilities.serdes_count)
44
+ )
45
+ self.pcs_pma = PcsPma(self._conn, self)
46
+ return self
47
+
48
+ on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
49
+ """Register a callback to the event that the port's dynamic traffic setting changes."""
50
+
51
+
52
+ class PLoki100G3S1P(FamilyG):
53
+ """L23 port on Loki-100G-3S-1P module.
54
+ """
55
+ ...
56
+
57
+
58
+ class PLoki100G3S1P_b(FamilyG):
59
+ """L23 port on Loki-100G-3S-1P[b] module.
60
+ """
61
+ ...
62
+
63
+
64
+ class PLoki100G3S1PSE(FamilyG):
65
+ """L23 port on Loki-100G-3S-1P-SE module.
66
+ """
67
+ ...
68
+
69
+ class PLoki100G3S1PB(FamilyG):
70
+ """L23 port on Loki-100G-3S-1P-B module.
71
+ """
72
+ ...
73
+
74
+ class PLoki100G3S1PB_b(FamilyG):
75
+ """L23 port on Loki-100G-3S-1P-B[b] module.
76
+ """
77
+ ...
@@ -0,0 +1,67 @@
1
+ import functools
2
+ from typing import TYPE_CHECKING, Tuple
3
+ from typing_extensions import Self
4
+ from xoa_driver.internals.commands import (
5
+ P_DYNAMIC,
6
+ )
7
+ from xoa_driver.internals.utils import attributes as utils
8
+ if TYPE_CHECKING:
9
+ from xoa_driver.internals.core import interfaces as itf
10
+
11
+ from .bases.port_l23_genuine import BasePortL23Genuine
12
+ from .pcs_pma_ghijkl import (
13
+ PcsPma,
14
+ SerDes,
15
+ )
16
+
17
+
18
+ class FamilyH(BasePortL23Genuine):
19
+ serdes: Tuple[SerDes, ...]
20
+ """SerDes index
21
+
22
+ :type: Tuple[SerDes, ...]
23
+ """
24
+
25
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
26
+ super().__init__(conn, module_id, port_id)
27
+ self.dynamic = P_DYNAMIC(conn, module_id, port_id)
28
+ """L23 port's dynamic traffic change.
29
+
30
+ :type: P_DYNAMIC
31
+ """
32
+
33
+ async def _setup(self) -> Self:
34
+ await super()._setup()
35
+ self.serdes = tuple(
36
+ SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
37
+ for serdes_xindex in range(self.info.capabilities.serdes_count)
38
+ )
39
+ return self
40
+
41
+ on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
42
+ """Register a callback to the event that the port's dynamic traffic setting changes."""
43
+
44
+
45
+ class PLoki100G5S1P(FamilyH):
46
+ """L23 port on Loki-100G-5S-1P module.
47
+ """
48
+
49
+ pcs_pma: PcsPma
50
+ """PCS/PMA settings.
51
+
52
+ :type: ~xoa_driver.internals.hli_v1.ports.port_l23.pcs_pma_ghijkl.PcsPma
53
+ """
54
+
55
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
56
+ super().__init__(conn, module_id, port_id)
57
+
58
+ async def _setup(self) -> Self:
59
+ await super()._setup()
60
+ self.pcs_pma = PcsPma(self._conn, self)
61
+ return self
62
+
63
+
64
+ class POdin100G3S1P(FamilyH):
65
+ """L23 port on Odin-100G-3S-1P module.
66
+ """
67
+ ...
@@ -0,0 +1,84 @@
1
+ import functools
2
+ from typing import TYPE_CHECKING, Tuple
3
+ from typing_extensions import Self
4
+ from xoa_driver.internals.commands import (
5
+ P_FAULTSIGNALING,
6
+ P_FAULTSTATUS,
7
+ P_DYNAMIC,
8
+ )
9
+ from xoa_driver.internals.utils import attributes as utils
10
+ if TYPE_CHECKING:
11
+ from xoa_driver.internals.core import interfaces as itf
12
+
13
+ from .bases.port_l23_genuine import BasePortL23Genuine
14
+ from .pcs_pma_ijkl_chimera import PcsPma as PcsPma1
15
+ from .pcs_pma_ghijkl import (
16
+ PcsPma as PcsPma2,
17
+ SerDes,
18
+ )
19
+
20
+
21
+ class PcsPma(PcsPma1, PcsPma2):
22
+ """PCS/PMA layer for Family I
23
+ """
24
+ def __init__(self, conn: "itf.IConnection", port) -> None:
25
+ PcsPma1.__init__(self, conn, port)
26
+ PcsPma2.__init__(self, conn, port)
27
+
28
+
29
+ class Fault:
30
+ """L23 port fault settings."""
31
+
32
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
33
+ self.signaling = P_FAULTSIGNALING(conn, module_id, port_id)
34
+ """L23 port fault signaling.
35
+
36
+ :type: P_FAULTSIGNALING
37
+ """
38
+
39
+ self.status = P_FAULTSTATUS(conn, module_id, port_id)
40
+ """L23 port fault status.
41
+
42
+ :type: P_FAULTSTATUS
43
+ """
44
+
45
+
46
+ class FamilyI(BasePortL23Genuine):
47
+ pcs_pma: PcsPma
48
+ """PCS/PMA layer
49
+
50
+ :type: PcsPma
51
+ """
52
+
53
+ serdes: Tuple[SerDes, ...]
54
+ """SerDes index
55
+
56
+ :type: Tuple[SerDes, ...]
57
+ """
58
+
59
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
60
+ super().__init__(conn, module_id, port_id)
61
+ self.dynamic = P_DYNAMIC(conn, module_id, port_id)
62
+ """L23 port's dynamic traffic change.
63
+
64
+ :type: P_DYNAMIC
65
+ """
66
+ self.fault = Fault(conn, module_id, port_id)
67
+
68
+ async def _setup(self) -> Self:
69
+ await super()._setup()
70
+ self.pcs_pma = PcsPma(self._conn, self)
71
+ self.serdes = tuple(
72
+ SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
73
+ for serdes_xindex in range(self.info.capabilities.serdes_count)
74
+ )
75
+ return self
76
+
77
+ on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
78
+ """Register a callback to the event that the port's dynamic traffic setting changes."""
79
+
80
+
81
+ class PLoki100G5S2P(FamilyI):
82
+ """L23 port on Loki-100G-5S-2P module.
83
+ """
84
+ ...
@@ -0,0 +1,68 @@
1
+ import functools
2
+ from typing import TYPE_CHECKING, Tuple
3
+ from typing_extensions import Self
4
+ from xoa_driver.internals.commands import (
5
+ # P_FAULTSIGNALING,
6
+ P_DYNAMIC,
7
+ )
8
+ from xoa_driver.internals.utils import attributes as utils
9
+ if TYPE_CHECKING:
10
+ from xoa_driver.internals.core import interfaces as itf
11
+
12
+ from .bases.port_l23_genuine import BasePortL23Genuine
13
+ from .fault_jkl import Fault
14
+ from .pcs_pma_ijkl_chimera import PcsPma as PcsPma1
15
+ from .pcs_pma_ghijkl import (
16
+ PcsPma as PcsPma2,
17
+ SerDes,
18
+ )
19
+
20
+
21
+ class PcsPma(PcsPma1, PcsPma2):
22
+ """PCS/PMA layer for Family J
23
+ """
24
+ def __init__(self, conn: "itf.IConnection", port) -> None:
25
+ PcsPma1.__init__(self, conn, port)
26
+ PcsPma2.__init__(self, conn, port)
27
+
28
+
29
+ class FamilyJ(BasePortL23Genuine):
30
+ pcs_pma: PcsPma
31
+ """PCS/PMA layer
32
+
33
+ :type: PcsPma
34
+ """
35
+
36
+ serdes: Tuple[SerDes, ...]
37
+ """SerDes index
38
+
39
+ :type: Tuple[SerDes, ...]
40
+ """
41
+
42
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
43
+ super().__init__(conn, module_id, port_id)
44
+ self.dynamic = P_DYNAMIC(conn, module_id, port_id)
45
+ """L23 port's dynamic traffic change.
46
+
47
+ :type: P_DYNAMIC
48
+ """
49
+
50
+ self.fault = Fault(conn, module_id, port_id)
51
+
52
+ async def _setup(self) -> Self:
53
+ await super()._setup()
54
+ self.pcs_pma = PcsPma(self._conn, self)
55
+ self.serdes = tuple(
56
+ SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
57
+ for serdes_xindex in range(self.info.capabilities.serdes_count)
58
+ )
59
+ return self
60
+
61
+ on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
62
+ """Register a callback to the event that the port's dynamic traffic setting changes."""
63
+
64
+
65
+ class PThor100G5S4P(FamilyJ):
66
+ """L23 port on Thor-100G-5S-4P module.
67
+ """
68
+ ...
@@ -0,0 +1,73 @@
1
+ import functools
2
+ from typing import TYPE_CHECKING, Tuple
3
+ from typing_extensions import Self
4
+ from xoa_driver.internals.commands import (
5
+ # P_FAULTSIGNALING,
6
+ P_DYNAMIC,
7
+ )
8
+ from xoa_driver.internals.utils import attributes as utils
9
+ if TYPE_CHECKING:
10
+ from xoa_driver.internals.core import interfaces as itf
11
+
12
+ from .bases.port_l23_genuine import BasePortL23Genuine
13
+ from .fault_jkl import Fault
14
+ from .pcs_pma_ijkl_chimera import PcsPma as PcsPma1
15
+ from .pcs_pma_ghijkl import (
16
+ PcsPma as PcsPma2,
17
+ SerDes,
18
+ )
19
+
20
+
21
+ class PcsPma(PcsPma1, PcsPma2):
22
+ """PCS/PMA layer for Family K
23
+ """
24
+ def __init__(self, conn: "itf.IConnection", port) -> None:
25
+ PcsPma1.__init__(self, conn, port)
26
+ PcsPma2.__init__(self, conn, port)
27
+
28
+
29
+ class FamilyK(BasePortL23Genuine):
30
+ pcs_pma: PcsPma
31
+ """PCS/PMA layer
32
+
33
+ :type: PcsPma
34
+ """
35
+
36
+ serdes: Tuple[SerDes, ...]
37
+ """SerDes index
38
+
39
+ :type: Tuple[SerDes, ...]
40
+ """
41
+
42
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
43
+ super().__init__(conn, module_id, port_id)
44
+ self.dynamic = P_DYNAMIC(conn, module_id, port_id)
45
+ """L23 port's dynamic traffic change.
46
+
47
+ :type: P_DYNAMIC
48
+ """
49
+
50
+ self.fault = Fault(conn, module_id, port_id)
51
+
52
+ async def _setup(self) -> Self:
53
+ await super()._setup()
54
+ self.pcs_pma = PcsPma(self._conn, self)
55
+ self.serdes = tuple(
56
+ SerDes(self._conn, *self.kind, serdes_xindex=serdes_xindex)
57
+ for serdes_xindex in range(self.info.capabilities.serdes_count)
58
+ )
59
+ return self
60
+
61
+ on_dynamic_change = functools.partialmethod(utils.on_event, P_DYNAMIC)
62
+ """Register a callback to the event that the port's dynamic traffic setting changes."""
63
+
64
+
65
+ class PThor400G7S1P(FamilyK):
66
+ """L23 port on Thor-400G-7S-1P module.
67
+ """
68
+ ...
69
+
70
+ class PThor400G7S1PLE(FamilyK):
71
+ """L23 port on Thor-400G-7S-1P LE module.
72
+ """
73
+ ...