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