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,25 @@
1
+ import typing
2
+ from xoa_driver import ports
3
+ from xoa_driver.internals.hli_v1 import revisions
4
+ from xoa_driver.internals.utils.managers import ports_manager as pm
5
+
6
+ if typing.TYPE_CHECKING:
7
+ from xoa_driver.internals.core import interfaces as itf
8
+ from .. import __interfaces as m_itf
9
+
10
+ from .module_l23_base import ModuleL23
11
+
12
+
13
+ @typing.final
14
+ @revisions.register_valkyrie_module(rev="Odin-1G-3S-6P-T1-RJ45")
15
+ class MOdin1G3S6PT1RJ45(ModuleL23):
16
+ """Test module Odin-1G-3S-6P-T1-RJ45"""
17
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
18
+ super().__init__(conn, init_data)
19
+ self.ports: pm.PortsManager[ports.POdin1G3S6PT1RJ45] = pm.PortsManager(
20
+ conn=conn,
21
+ ports_type=ports.POdin1G3S6PT1RJ45,
22
+ module_id=self.module_id,
23
+ ports_count=self.ports_count
24
+ )
25
+ """Port Index Manager of Odin-1G-3S-6P-T1-RJ45"""
@@ -0,0 +1,40 @@
1
+ import typing
2
+ from xoa_driver import ports
3
+ from xoa_driver.internals.hli_v1 import revisions
4
+ from xoa_driver.internals.utils.managers import ports_manager as pm
5
+
6
+ if typing.TYPE_CHECKING:
7
+ from xoa_driver.internals.core import interfaces as itf
8
+ from .. import __interfaces as m_itf
9
+
10
+ from .module_l23_base import ModuleL23
11
+
12
+
13
+ @typing.final
14
+ @revisions.register_valkyrie_module(rev="Odin-40G-2S-2P")
15
+ class MOdin40G2S2P(ModuleL23):
16
+ """Test module Odin-40G-2S-2P"""
17
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
18
+ super().__init__(conn, init_data)
19
+ self.ports: pm.PortsManager[ports.POdin40G2S2P] = pm.PortsManager(
20
+ conn=conn,
21
+ ports_type=ports.POdin40G2S2P,
22
+ module_id=self.module_id,
23
+ ports_count=self.ports_count
24
+ )
25
+ """Port Index Manager of Odin-40G-2S-2P"""
26
+
27
+
28
+ @typing.final
29
+ @revisions.register_valkyrie_module(rev="Odin-40G-2S-2P-B")
30
+ class MOdin40G2S2PB(ModuleL23):
31
+ """Test module Odin-40G-2S-2P-B"""
32
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
33
+ super().__init__(conn, init_data)
34
+ self.ports: pm.PortsManager[ports.POdin40G2S2PB] = pm.PortsManager(
35
+ conn=conn,
36
+ ports_type=ports.POdin40G2S2PB,
37
+ module_id=self.module_id,
38
+ ports_count=self.ports_count
39
+ )
40
+ """Port Index Manager of Odin-40G-2S-2P-B"""
@@ -0,0 +1,383 @@
1
+ from __future__ import annotations
2
+ import asyncio
3
+ import functools
4
+ import typing
5
+ from typing_extensions import Self
6
+ from xoa_driver.internals.commands import (
7
+ M_MEDIA,
8
+ M_STATUS,
9
+ M_UPGRADE,
10
+ M_UPGRADEPROGRESS,
11
+ M_TIMESYNC,
12
+ M_CFPTYPE,
13
+ M_CFPCONFIGEXT,
14
+ M_COMMENT,
15
+ # M_TIMEADJUSTMENT,
16
+ M_CAPABILITIES,
17
+ M_MEDIASUPPORT,
18
+ M_FPGAREIMAGE,
19
+ M_MULTIUSER,
20
+ M_CLOCKPPB,
21
+ M_SMAINPUT,
22
+ M_SMAOUTPUT,
23
+ M_SMASTATUS,
24
+ M_NAME,
25
+ M_REVISION,
26
+ M_CLOCKSYNCSTATUS,
27
+ M_TXCLOCKSOURCE_NEW,
28
+ M_TXCLOCKSTATUS_NEW,
29
+ M_TXCLOCKFILTER_NEW,
30
+ M_UPGRADEPAR,
31
+ M_VERSIONSTR,
32
+ )
33
+
34
+ from xoa_driver.internals.utils import attributes as utils
35
+ from xoa_driver.internals.utils.managers import ports_manager as pm
36
+ from xoa_driver.internals.state_storage import modules_state
37
+ from xoa_driver.enums import MediaConfigurationType
38
+ from xoa_driver.internals.core.token import Token
39
+ from .. import base_module as bm
40
+ from .. import __interfaces as m_itf
41
+
42
+ if typing.TYPE_CHECKING:
43
+ from xoa_driver.internals.core import interfaces as itf
44
+ from xoa_driver.internals.hli_v1.modules.module_chimera import ModuleChimera
45
+
46
+
47
+ class TXClock:
48
+ """Advanced timing clock"""
49
+
50
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
51
+ self.source = M_TXCLOCKSOURCE_NEW(conn, module_id)
52
+ """The source that drives the TX clock rate of the ports on the test module.
53
+
54
+ :type: M_TXCLOCKSOURCE_NEW
55
+ """
56
+
57
+ self.status = M_TXCLOCKSTATUS_NEW(conn, module_id)
58
+ """TX clock status of the test module.
59
+
60
+ :type: M_TXCLOCKSTATUS_NEW
61
+ """
62
+
63
+ self.filter = M_TXCLOCKFILTER_NEW(conn, module_id)
64
+ """Loop bandwidth on the TX clock filter of the test module.
65
+
66
+ :type: M_TXCLOCKFILTER_NEW
67
+ """
68
+
69
+
70
+ class SMA:
71
+ """SMA connector"""
72
+
73
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
74
+ self.input = M_SMAINPUT(conn, module_id)
75
+ """SMA input of the test module.
76
+
77
+ :type: M_SMAINPUT
78
+ """
79
+
80
+ self.output = M_SMAOUTPUT(conn, module_id)
81
+ """SMA output of the test module.
82
+
83
+ :type: M_SMAOUTPUT
84
+ """
85
+
86
+ self.status = M_SMASTATUS(conn, module_id)
87
+ """SMA input status of the test module.
88
+
89
+ :type: M_SMASTATUS
90
+ """
91
+
92
+
93
+ class AdvancedTiming:
94
+ """Advanced Timing config and control"""
95
+
96
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
97
+ self.clock_tx = TXClock(conn, module_id)
98
+ """Advanced timing clock config and status
99
+
100
+ :type: TXClock
101
+ """
102
+
103
+ self.sma = SMA(conn, module_id)
104
+ """SMA connector
105
+
106
+ :type: SMA
107
+ """
108
+
109
+
110
+ class ExtendedToken:
111
+ def __init__(
112
+ self, token: Token, module: typing.Union["ModuleL23", "ModuleChimera"]
113
+ ) -> None:
114
+ self.__token = token
115
+ self.__module = module
116
+
117
+ def __await__(self):
118
+ return self.__ask_then().__await__()
119
+
120
+ async def __ask_then(self):
121
+ r = await self.__token
122
+ p_counts = (await self.__module.port_count.get()).port_count
123
+ if self.__module.ports is not None:
124
+ changed = self.__module.ports.reinit(p_counts)
125
+ if changed:
126
+ await self.__module.ports.fill()
127
+ return r
128
+
129
+
130
+ class MediaModule:
131
+ def __init__(self, conn: "itf.IConnection", module: typing.Union["ModuleL23", "ModuleChimera"]) -> None:
132
+ self.__media = M_MEDIA(conn, module.module_id)
133
+ self.__module = module
134
+
135
+ def get(self) -> Token:
136
+ return self.__media.get()
137
+
138
+ def set(self, media_config: MediaConfigurationType) -> ExtendedToken:
139
+ return ExtendedToken(self.__media.set(media_config), self.__module)
140
+
141
+
142
+ class CfpModule:
143
+ def __init__(self, conn: "itf.IConnection", module: typing.Union["ModuleL23", "ModuleChimera"]) -> None:
144
+ self.__cfpconfigext = M_CFPCONFIGEXT(conn, module.module_id)
145
+ self.__module = module
146
+
147
+ def get(self) -> Token:
148
+ return self.__cfpconfigext.get()
149
+
150
+ def set(self, portspeed_list: typing.List[int]) -> ExtendedToken:
151
+ return ExtendedToken(self.__cfpconfigext.set(portspeed_list), self.__module)
152
+
153
+
154
+ class CFP:
155
+ """Test module CFP"""
156
+
157
+ def __init__(self, conn: "itf.IConnection", module: typing.Union["ModuleL23", "ModuleChimera"]) -> None:
158
+ self.type = M_CFPTYPE(conn, module.module_id)
159
+ """The transceiver's CFP type currently inserted.
160
+
161
+ :type: M_CFPTYPE
162
+ """
163
+
164
+ self.config = CfpModule(conn, module)
165
+ """The CFP configuration of the test module.
166
+
167
+ :type: CfpModule
168
+ """
169
+
170
+
171
+ class MTiming:
172
+ """Test module timing and clock configuration"""
173
+
174
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
175
+ self.source = M_TIMESYNC(conn, module_id)
176
+ """Timing source of the test module.
177
+
178
+ :type: M_TIMESYNC
179
+ """
180
+
181
+ self.clock_local_adjust = M_CLOCKPPB(conn, module_id)
182
+ """Time adjustment controlling of the local clock of the test module, which drives the TX rate of the test ports.
183
+
184
+ :type: M_CLOCKPPB
185
+ """
186
+
187
+ self.clock_sync_status = M_CLOCKSYNCSTATUS(conn, module_id)
188
+ """Test module's clock sync status.
189
+
190
+ :type: M_CLOCKSYNCSTATUS
191
+ """
192
+
193
+
194
+ class MUpgrade:
195
+ """Test module upgrade"""
196
+
197
+ def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
198
+ self.start = M_UPGRADE(conn, module_id)
199
+ """Start the upgrade progress of the test module.
200
+
201
+ :type: M_UPGRADE
202
+ """
203
+
204
+ self.progress = M_UPGRADEPROGRESS(conn, module_id)
205
+ """Upgrade progress status of the test module.
206
+
207
+ :type: M_UPGRADEPROGRESS
208
+ """
209
+
210
+ self.reload_image = M_FPGAREIMAGE(conn, module_id)
211
+ """Reload the FPGA image of the test module.
212
+
213
+ :type: M_FPGAREIMAGE
214
+ """
215
+ self.start_parallel = M_UPGRADEPAR(conn, module_id)
216
+ """
217
+ Start the parallel upgrade progress of the test module.
218
+
219
+ :type: M_UPGRADEPAR
220
+ """
221
+
222
+
223
+ class ModuleL23(bm.BaseModule["modules_state.ModuleL23LocalState"]):
224
+ """
225
+ This is a conceptual class of L23 test module on a Valkyrie tester.
226
+
227
+ """
228
+
229
+ def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
230
+ super().__init__(conn, init_data)
231
+
232
+ self._local_states = modules_state.ModuleL23LocalState()
233
+
234
+ self.name = M_NAME(conn, self.module_id)
235
+ """Test module's name.
236
+
237
+ :type: M_NAME
238
+ """
239
+
240
+ self.comment = M_COMMENT(conn, self.module_id)
241
+ """Test module's description.
242
+
243
+ :type: M_COMMENT
244
+ """
245
+
246
+ self.status = M_STATUS(conn, self.module_id)
247
+ """Test module's status.
248
+
249
+ :type: M_STATUS
250
+ """
251
+
252
+ self.media = MediaModule(conn, self)
253
+ """Test module's media type.
254
+
255
+ :type: ModuleMedia
256
+ """
257
+
258
+ self.available_speeds = M_MEDIASUPPORT(conn, self.module_id)
259
+ """Test module's available speeds.
260
+
261
+ :type: M_MEDIASUPPORT
262
+ """
263
+
264
+ self.revision = M_REVISION(conn, self.module_id)
265
+ """Test module's model P/N name.
266
+
267
+ :type: M_REVISION
268
+ """
269
+
270
+ self.version_str = M_VERSIONSTR(conn, self.module_id)
271
+ """Module version number in the new format
272
+
273
+ :type: M_VERSIONSTR
274
+ """
275
+
276
+ self.multiuser = M_MULTIUSER(conn, self.module_id)
277
+ """If multiple users are allowed to control the same test module.
278
+
279
+ :type: M_MULTIUSER
280
+ """
281
+
282
+ self.capabilities = M_CAPABILITIES(conn, self.module_id)
283
+ """Test module's capabilities.
284
+
285
+ :type: M_CAPABILITIES
286
+ """
287
+
288
+ self.timing = MTiming(conn, self.module_id)
289
+ """Test module's timing configuration.
290
+
291
+ :type: MTiming
292
+ """
293
+
294
+ self.advanced_timing = AdvancedTiming(conn, self.module_id)
295
+ """Test module's advanced timing configuration.
296
+
297
+ :type: AdvancedTiming
298
+ """
299
+
300
+ self.cfp = CFP(conn, self)
301
+ """Test module's CFP configuration.
302
+
303
+ :type: CFP
304
+ """
305
+
306
+ self.upgrade = MUpgrade(conn, self.module_id)
307
+ """Test module's upgrade settings.
308
+
309
+ :type: MUpgrade
310
+ """
311
+
312
+ self.ports: typing.Optional[pm.PortsManager] = None
313
+ """L23 Port Index Manager of the test module.
314
+
315
+ :type: PortsManager
316
+ """
317
+
318
+ @property
319
+ def info(self) -> modules_state.ModuleL23LocalState:
320
+ """Return the module's local state
321
+
322
+ :return: the module's local state
323
+ :rtype: ModuleL23LocalState
324
+ """
325
+ return self._local_states
326
+
327
+ async def _setup(self) -> Self:
328
+ if self.ports is None:
329
+ raise NotImplementedError("Ports manager type are not defined.") # Maybe can be better solution then this...
330
+ await asyncio.gather(
331
+ self._local_states.initiate(self),
332
+ self.ports.fill()
333
+ )
334
+ self._local_states.register_subscriptions(self)
335
+ return self
336
+
337
+ on_cfp_type_change = functools.partialmethod(utils.on_event, M_CFPTYPE)
338
+ """Register a callback to the event that the module's CFP type (:class:`M_CFPTYPE`) changes."""
339
+
340
+ on_cfp_config_change = functools.partialmethod(utils.on_event, M_CFPCONFIGEXT)
341
+ """Register a callback to the event that the module's CFP configuration changes."""
342
+
343
+ on_status_change = functools.partialmethod(utils.on_event, M_STATUS)
344
+ """Register a callback to the event that the module's status changes."""
345
+
346
+ on_revision_change = functools.partialmethod(utils.on_event, M_REVISION)
347
+ """Register a callback to the event that the module's model type changes."""
348
+
349
+ on_name_change = functools.partialmethod(utils.on_event, M_NAME)
350
+ """Register a callback to the event that the module's name changes."""
351
+
352
+ on_adv_timing_clock_tx_status_change = functools.partialmethod(utils.on_event, M_TXCLOCKSTATUS_NEW)
353
+ """Register a callback to the event that the module's TX clock status changes."""
354
+
355
+ on_adv_timing_clock_tx_source_change = functools.partialmethod(utils.on_event, M_TXCLOCKSOURCE_NEW)
356
+ """Register a callback to the event that the module's clock that drives the port TX rates changes."""
357
+
358
+ on_adv_timing_clock_tx_filter_change = functools.partialmethod(utils.on_event, M_TXCLOCKFILTER_NEW)
359
+ """Register a callback to the event that the module's loop bandwidth on the TX clock filter changes."""
360
+
361
+ on_adv_timing_sma_status_change = functools.partialmethod(utils.on_event, M_SMASTATUS)
362
+ """Register a callback to the event that the module's SMA status changes."""
363
+
364
+ on_adv_timing_sma_input_change = functools.partialmethod(utils.on_event, M_SMAINPUT)
365
+ """Register a callback to the event that the module's SMA input function changes."""
366
+
367
+ on_adv_timing_sma_output_change = functools.partialmethod(utils.on_event, M_SMAOUTPUT)
368
+ """Register a callback to the event that the module's SMA output function changes."""
369
+
370
+ on_media_support_change = functools.partialmethod(utils.on_event, M_MEDIASUPPORT)
371
+ """Register a callback to the event that the module's supported media changes."""
372
+
373
+ on_media_change = functools.partialmethod(utils.on_event, M_MEDIA)
374
+ """Register a callback to the event that the module's media and available speeds change."""
375
+
376
+ on_comment_change = functools.partialmethod(utils.on_event, M_COMMENT)
377
+ """Register a callback to the event that the module's description changes."""
378
+
379
+ on_timing_source_change = functools.partialmethod(utils.on_event, M_TIMESYNC)
380
+ """Register a callback to the event that the module's timesync mode changes."""
381
+
382
+ on_timing_clock_local_adjust_change = functools.partialmethod(utils.on_event, M_CLOCKPPB)
383
+ """Register a callback to the event that the module's clock adjustment ppb changes."""
File without changes
@@ -0,0 +1,125 @@
1
+ import functools
2
+ from typing_extensions import Self
3
+ from abc import (
4
+ ABC,
5
+ abstractmethod,
6
+ )
7
+ from typing import (
8
+ TYPE_CHECKING,
9
+ TypeVar,
10
+ Generic,
11
+ )
12
+ from xoa_driver.internals.commands import enums
13
+ from xoa_driver.internals.commands import (
14
+ P_RESERVATION,
15
+ P_RESERVEDBY,
16
+ P_RESET,
17
+ P_COMMENT,
18
+ P_INTERFACE,
19
+ P_RECEIVESYNC,
20
+ )
21
+ from xoa_driver.internals.state_storage import ports_state
22
+ from xoa_driver.internals.utils import attributes as utils
23
+ from xoa_driver.internals.utils import kind
24
+
25
+ if TYPE_CHECKING:
26
+ from xoa_driver.internals.core import interfaces as itf
27
+
28
+
29
+ PortStateStorage = TypeVar('PortStateStorage', bound="ports_state.PortLocalState")
30
+
31
+
32
+ class BasePort(ABC, Generic[PortStateStorage]):
33
+ """Layout which is relevant to all ports."""
34
+
35
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
36
+ self._conn = conn
37
+ self.kind = kind.PortKind(module_id, port_id)
38
+ self.sync_status = P_RECEIVESYNC(conn, module_id, port_id)
39
+ """Port sync status.
40
+
41
+ :type: P_RECEIVESYNC
42
+ """
43
+ self.interface = P_INTERFACE(conn, module_id, port_id)
44
+ """Physical interface type of the port.
45
+
46
+ :type: P_INTERFACE
47
+ """
48
+ self.reservation = P_RESERVATION(self._conn, *self.kind)
49
+ """Port reservation action.
50
+
51
+ :type: P_RESERVATION
52
+ """
53
+ self.reserved_by = P_RESERVEDBY(self._conn, *self.kind)
54
+ """Port reservation status.
55
+
56
+ :type: P_RESERVEDBY
57
+ """
58
+ self.reset = P_RESET(self._conn, *self.kind)
59
+ """Port reset action.
60
+
61
+ :type: P_RESET
62
+ """
63
+ self.comment = P_COMMENT(self._conn, *self.kind)
64
+ """Port description.
65
+
66
+ :type: P_COMMENT
67
+ """
68
+
69
+ def __await__(self):
70
+ return self._setup().__await__()
71
+
72
+ @abstractmethod
73
+ async def _setup(self) -> Self:
74
+ return self
75
+
76
+ def _check_identity(self, request) -> bool:
77
+ validators = (
78
+ self.kind.module_id == request.header.module_index,
79
+ self.kind.port_id == request.header.port_index
80
+ )
81
+ return all(validators)
82
+
83
+ def __is_reservation(self, reserved_status: enums.ReservedStatus) -> bool:
84
+ return self.info.reservation == reserved_status
85
+
86
+ is_released = functools.partialmethod(__is_reservation, enums.ReservedStatus.RELEASED)
87
+ """
88
+ Check if port is released
89
+ """
90
+
91
+ is_reserved_by_me = functools.partialmethod(__is_reservation, enums.ReservedStatus.RESERVED_BY_YOU)
92
+ """
93
+ Check if port is released by me
94
+ """
95
+
96
+ is_reserved_by_others = functools.partialmethod(__is_reservation, enums.ReservedStatus.RESERVED_BY_OTHER)
97
+ """
98
+ Check if port is released by others
99
+ """
100
+
101
+ @property
102
+ @abstractmethod
103
+ def info(self) -> PortStateStorage:
104
+ """Module info"""
105
+ raise NotImplementedError()
106
+
107
+ on_reservation_change = functools.partialmethod(utils.on_event, P_RESERVATION)
108
+ """
109
+ Register a callback to the event that the port's reservation status changes.
110
+ """
111
+
112
+ on_receive_sync_change = functools.partialmethod(utils.on_event, P_RECEIVESYNC)
113
+ """
114
+ Register a callback to the event that the port's SYNC status changes.
115
+ """
116
+
117
+ on_reserved_by_change = functools.partialmethod(utils.on_event, P_RESERVEDBY)
118
+ """
119
+ Register a callback to the event that the port's reservation ownership changes.
120
+ """
121
+
122
+ on_interface_change = functools.partialmethod(utils.on_event, P_INTERFACE)
123
+ """
124
+ Register a callback to the event that the port's physical interface type changes.
125
+ """
File without changes
@@ -0,0 +1,70 @@
1
+ from typing import (
2
+ TYPE_CHECKING,
3
+ List,
4
+ )
5
+ if TYPE_CHECKING:
6
+ from xoa_driver.internals.core import interfaces as itf
7
+ from xoa_driver.internals.commands import (
8
+ P_CAPTURE,
9
+ PC_TRIGGER,
10
+ PC_KEEP,
11
+ PC_STATS,
12
+ PC_EXTRA,
13
+ PC_PACKET,
14
+ )
15
+
16
+
17
+ class ObtainCaptured:
18
+ """Obtain info of captured packets.
19
+ """
20
+
21
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int, capture_pkt_idx: int) -> None:
22
+ self.extra = PC_EXTRA(conn, module_id, port_id, capture_pkt_idx)
23
+ """Obtains extra information about a captured packet on a L23 port.
24
+
25
+ :type: PC_EXTRA
26
+ """
27
+
28
+ self.packet = PC_PACKET(conn, module_id, port_id, capture_pkt_idx)
29
+ """Obtains raw bytes of a captured packet on a L23 port.
30
+
31
+ :type: PC_PACKET
32
+ """
33
+
34
+
35
+ class PortCapture:
36
+ def __init__(self, conn: "itf.IConnection", module_id: int, port_id: int) -> None:
37
+ self.__conn = conn
38
+ self.__module_id = module_id
39
+ self.__port_id = port_id
40
+ self.state = P_CAPTURE(conn, module_id, port_id)
41
+ """L23 port traffic capture.
42
+
43
+ :type: P_CAPTURE
44
+ """
45
+
46
+ self.trigger = PC_TRIGGER(conn, module_id, port_id)
47
+ """L23 port packet capture triggering criteria.
48
+
49
+ :type: PC_TRIGGER
50
+ """
51
+
52
+ self.keep = PC_KEEP(conn, module_id, port_id)
53
+ """Keeping captured packets on a L23 port.
54
+
55
+ :type: PC_KEEP
56
+ """
57
+
58
+ self.stats = PC_STATS(conn, module_id, port_id)
59
+ """L23 port's number of packets in the capture buffer.
60
+
61
+ :type: PC_STATS
62
+ """
63
+
64
+ async def obtain_captured(self) -> List[ObtainCaptured]:
65
+ # TODO: check better title for this operation
66
+ stats = await self.stats.get()
67
+ return [
68
+ ObtainCaptured(self.__conn, self.__module_id, self.__port_id, idx)
69
+ for idx in range(stats.packets)
70
+ ]