wiliot-certificate 4.4.3__py3-none-any.whl → 4.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. {brg_certificate → certificate}/ag/wlt_cmd_if.html +10 -4
  2. {brg_certificate → certificate}/ag/wlt_types_ag.py +1878 -519
  3. certificate/cert_common.py +1488 -0
  4. certificate/cert_config.py +480 -0
  5. {brg_certificate → certificate}/cert_data_sim.py +134 -46
  6. {brg_certificate → certificate}/cert_defines.py +129 -128
  7. {brg_certificate → certificate}/cert_gw_sim.py +183 -53
  8. {brg_certificate → certificate}/cert_mqtt.py +179 -64
  9. {brg_certificate → certificate}/cert_prints.py +35 -33
  10. {brg_certificate → certificate}/cert_protobuf.py +15 -6
  11. {brg_certificate → certificate}/cert_results.py +240 -64
  12. certificate/cert_utils.py +634 -0
  13. certificate/certificate.py +205 -0
  14. certificate/certificate_cli.py +76 -0
  15. certificate/certificate_eth_test_list.txt +76 -0
  16. certificate/certificate_sanity_test_list.txt +66 -0
  17. certificate/certificate_test_list.txt +76 -0
  18. {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.json +3 -2
  19. {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.py +7 -6
  20. certificate/tests/calibration/output_power_test/output_power_test.json +23 -0
  21. certificate/tests/calibration/output_power_test/output_power_test.py +39 -0
  22. {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.json +2 -1
  23. {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.py +20 -15
  24. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +15 -0
  25. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.py +140 -0
  26. certificate/tests/cloud_connectivity/acl_test/acl_test.json +15 -0
  27. certificate/tests/cloud_connectivity/acl_test/acl_test.py +96 -0
  28. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +19 -0
  29. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +41 -0
  30. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +19 -0
  31. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +215 -0
  32. certificate/tests/cloud_connectivity/connection_test/connection_test.json +18 -0
  33. certificate/tests/cloud_connectivity/connection_test/connection_test.py +67 -0
  34. certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.json +15 -0
  35. certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.py +80 -0
  36. certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +21 -0
  37. certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +201 -0
  38. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +17 -0
  39. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +104 -0
  40. certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +18 -0
  41. certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +59 -0
  42. certificate/tests/cloud_connectivity/registration_test/registration_test.json +20 -0
  43. certificate/tests/cloud_connectivity/registration_test/registration_test.py +384 -0
  44. certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +90 -0
  45. certificate/tests/cloud_connectivity/stress_test/stress_test.json +17 -0
  46. certificate/tests/cloud_connectivity/stress_test/stress_test.py +101 -0
  47. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +25 -0
  48. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +92 -0
  49. certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +20 -0
  50. certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +169 -0
  51. {brg_certificate → certificate}/tests/datapath/aging_test/aging_test.json +2 -1
  52. certificate/tests/datapath/aging_test/aging_test.py +142 -0
  53. certificate/tests/datapath/event_ble5_test/event_ble5_test.json +17 -0
  54. certificate/tests/datapath/event_ble5_test/event_ble5_test.py +89 -0
  55. certificate/tests/datapath/event_test/event_test.json +17 -0
  56. certificate/tests/datapath/event_test/event_test.py +80 -0
  57. {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.json +4 -3
  58. {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.py +19 -13
  59. certificate/tests/datapath/output_power_test/output_power_test.json +23 -0
  60. {brg_certificate → certificate}/tests/datapath/output_power_test/output_power_test.py +17 -6
  61. {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +2 -1
  62. {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +13 -11
  63. {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.json +2 -1
  64. {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.py +9 -7
  65. {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.json +3 -2
  66. {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.py +18 -6
  67. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +20 -0
  68. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +61 -0
  69. {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +2 -1
  70. {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +15 -14
  71. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +19 -0
  72. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +85 -0
  73. {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +2 -1
  74. {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +10 -9
  75. {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.json +2 -1
  76. {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.py +10 -9
  77. {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +3 -2
  78. {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +9 -8
  79. brg_certificate/tests/datapath/output_power_test/output_power_test.json → certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.json +6 -4
  80. certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.py +77 -0
  81. {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.json +3 -2
  82. {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.py +7 -6
  83. {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +8 -7
  84. {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +113 -73
  85. {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +8 -7
  86. {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +112 -72
  87. {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.json +4 -3
  88. {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.py +15 -11
  89. {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.json +4 -3
  90. {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.py +15 -11
  91. {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.json +3 -1
  92. {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.py +14 -13
  93. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +15 -0
  94. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.py +24 -0
  95. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +15 -0
  96. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.py +43 -0
  97. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +15 -0
  98. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.py +42 -0
  99. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +15 -0
  100. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.py +44 -0
  101. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +16 -0
  102. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.py +42 -0
  103. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +15 -0
  104. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.py +49 -0
  105. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +15 -0
  106. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.py +102 -0
  107. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +15 -0
  108. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +45 -0
  109. {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +3 -2
  110. {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.py +22 -11
  111. {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.json +2 -1
  112. {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.py +7 -6
  113. certificate/tests/energy2400/output_power_test/output_power_test.json +23 -0
  114. {brg_certificate → certificate}/tests/energy2400/output_power_test/output_power_test.py +17 -6
  115. {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.json +2 -1
  116. {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.py +7 -6
  117. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +26 -0
  118. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +379 -0
  119. certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +20 -0
  120. certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +173 -0
  121. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +24 -0
  122. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +350 -0
  123. {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +2 -1
  124. {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +7 -6
  125. {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.json +2 -1
  126. {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.py +7 -6
  127. {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +2 -1
  128. {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +10 -10
  129. {brg_certificate → certificate}/tests/sensors/ext_sensor_test/ext_sensor_test.json +5 -4
  130. certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +450 -0
  131. certificate/wlt_types.py +122 -0
  132. {gw_certificate → common}/api_if/202/status.json +6 -0
  133. {gw_certificate → common}/api_if/203/status.json +6 -0
  134. {gw_certificate → common}/api_if/204/status.json +6 -0
  135. common/api_if/206/data.json +85 -0
  136. common/api_if/206/status.json +69 -0
  137. common/api_if/api_validation.py +91 -0
  138. common/web/templates/generator.html +210 -0
  139. common/web/templates/index.html +20 -0
  140. common/web/templates/menu.html +54 -0
  141. common/web/templates/parser.html +53 -0
  142. {brg_certificate/ag → common/web/templates}/wlt_types.html +1216 -191
  143. common/web/web_utils.py +399 -0
  144. {brg_certificate → common}/wltPb_pb2.py +14 -12
  145. {gw_certificate/common → common}/wltPb_pb2.pyi +16 -2
  146. gui_certificate/gui_certificate_cli.py +14 -0
  147. gui_certificate/server.py +1267 -0
  148. gui_certificate/templates/cert_run.html +1273 -0
  149. wiliot_certificate-4.5.0.dist-info/METADATA +99 -0
  150. wiliot_certificate-4.5.0.dist-info/RECORD +168 -0
  151. {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0.dist-info}/WHEEL +1 -1
  152. wiliot_certificate-4.5.0.dist-info/entry_points.txt +5 -0
  153. wiliot_certificate-4.5.0.dist-info/top_level.txt +3 -0
  154. brg_certificate/ag/energous_v0_defines.py +0 -925
  155. brg_certificate/ag/energous_v1_defines.py +0 -931
  156. brg_certificate/ag/energous_v2_defines.py +0 -925
  157. brg_certificate/ag/energous_v3_defines.py +0 -925
  158. brg_certificate/ag/energous_v4_defines.py +0 -925
  159. brg_certificate/ag/fanstel_lan_v0_defines.py +0 -925
  160. brg_certificate/ag/fanstel_lte_v0_defines.py +0 -925
  161. brg_certificate/ag/fanstel_wifi_v0_defines.py +0 -925
  162. brg_certificate/ag/minew_lte_v0_defines.py +0 -925
  163. brg_certificate/ag/wlt_types_ag_jsons/brg2brg_ota.json +0 -142
  164. brg_certificate/ag/wlt_types_ag_jsons/brg2gw_hb.json +0 -785
  165. brg_certificate/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +0 -139
  166. brg_certificate/ag/wlt_types_ag_jsons/calibration.json +0 -394
  167. brg_certificate/ag/wlt_types_ag_jsons/custom.json +0 -515
  168. brg_certificate/ag/wlt_types_ag_jsons/datapath.json +0 -672
  169. brg_certificate/ag/wlt_types_ag_jsons/energy2400.json +0 -550
  170. brg_certificate/ag/wlt_types_ag_jsons/energySub1g.json +0 -595
  171. brg_certificate/ag/wlt_types_ag_jsons/externalSensor.json +0 -598
  172. brg_certificate/ag/wlt_types_ag_jsons/interface.json +0 -938
  173. brg_certificate/ag/wlt_types_ag_jsons/powerManagement.json +0 -1234
  174. brg_certificate/ag/wlt_types_ag_jsons/side_info_sensor.json +0 -105
  175. brg_certificate/ag/wlt_types_ag_jsons/signal_indicator_data.json +0 -77
  176. brg_certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +0 -61
  177. brg_certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +0 -110
  178. brg_certificate/brg_certificate.py +0 -225
  179. brg_certificate/brg_certificate_cli.py +0 -63
  180. brg_certificate/cert_common.py +0 -923
  181. brg_certificate/cert_config.py +0 -402
  182. brg_certificate/cert_utils.py +0 -362
  183. brg_certificate/certificate_bcc_sanity_test_list.txt +0 -40
  184. brg_certificate/certificate_bcc_test_list.txt +0 -48
  185. brg_certificate/certificate_sanity_test_list.txt +0 -43
  186. brg_certificate/certificate_test_list.txt +0 -53
  187. brg_certificate/config/eclipse.json +0 -10
  188. brg_certificate/config/hivemq.json +0 -10
  189. brg_certificate/config/mosquitto.json +0 -10
  190. brg_certificate/config/mosquitto.md +0 -95
  191. brg_certificate/config/wiliot-dev.json +0 -10
  192. brg_certificate/restore_brg.py +0 -61
  193. brg_certificate/tests/calibration/output_power_test/output_power_test.json +0 -16
  194. brg_certificate/tests/calibration/output_power_test/output_power_test.py +0 -28
  195. brg_certificate/tests/datapath/aging_test/aging_test.py +0 -143
  196. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +0 -16
  197. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +0 -73
  198. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +0 -17
  199. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +0 -118
  200. brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +0 -14
  201. brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +0 -396
  202. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +0 -20
  203. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.py +0 -94
  204. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +0 -19
  205. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.py +0 -87
  206. brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +0 -17
  207. brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +0 -223
  208. brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +0 -17
  209. brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +0 -128
  210. brg_certificate/tests/energy2400/output_power_test/output_power_test.json +0 -16
  211. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +0 -20
  212. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +0 -321
  213. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json +0 -20
  214. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py +0 -321
  215. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +0 -20
  216. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +0 -141
  217. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -20
  218. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +0 -276
  219. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +0 -20
  220. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +0 -390
  221. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +0 -16
  222. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +0 -28
  223. brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +0 -305
  224. brg_certificate/wltPb_pb2.pyi +0 -234
  225. brg_certificate/wlt_types.py +0 -113
  226. gw_certificate/ag/ut_defines.py +0 -364
  227. gw_certificate/ag/wlt_types.py +0 -85
  228. gw_certificate/ag/wlt_types_ag.py +0 -5310
  229. gw_certificate/ag/wlt_types_data.py +0 -64
  230. gw_certificate/api/extended_api.py +0 -23
  231. gw_certificate/api_if/200/data.json +0 -106
  232. gw_certificate/api_if/200/status.json +0 -47
  233. gw_certificate/api_if/201/data.json +0 -98
  234. gw_certificate/api_if/201/status.json +0 -53
  235. gw_certificate/api_if/205/logs.json +0 -12
  236. gw_certificate/api_if/api_validation.py +0 -38
  237. gw_certificate/api_if/gw_capabilities.py +0 -54
  238. gw_certificate/cert_results.py +0 -145
  239. gw_certificate/common/analysis_data_bricks.py +0 -60
  240. gw_certificate/common/debug.py +0 -42
  241. gw_certificate/common/serialization_formatter.py +0 -93
  242. gw_certificate/common/utils.py +0 -8
  243. gw_certificate/common/utils_defines.py +0 -15
  244. gw_certificate/common/wltPb_pb2.py +0 -84
  245. gw_certificate/gw_certificate.py +0 -154
  246. gw_certificate/gw_certificate_cli.py +0 -87
  247. gw_certificate/interface/4.4.93_app.zip +0 -0
  248. gw_certificate/interface/4.4.93_sd_bl_app.zip +0 -0
  249. gw_certificate/interface/ble_simulator.py +0 -61
  250. gw_certificate/interface/ble_sniffer.py +0 -189
  251. gw_certificate/interface/flash_fw.py +0 -90
  252. gw_certificate/interface/if_defines.py +0 -36
  253. gw_certificate/interface/mqtt.py +0 -563
  254. gw_certificate/interface/nrfutil-linux +0 -0
  255. gw_certificate/interface/nrfutil-mac +0 -0
  256. gw_certificate/interface/nrfutil.exe +0 -0
  257. gw_certificate/interface/pkt_generator.py +0 -594
  258. gw_certificate/interface/uart_if.py +0 -236
  259. gw_certificate/interface/uart_ports.py +0 -20
  260. gw_certificate/templates/results.html +0 -241
  261. gw_certificate/templates/stage.html +0 -22
  262. gw_certificate/templates/table.html +0 -6
  263. gw_certificate/templates/test.html +0 -38
  264. gw_certificate/tests/__init__.py +0 -10
  265. gw_certificate/tests/actions.py +0 -289
  266. gw_certificate/tests/bad_crc_to_PER_quantization.csv +0 -51
  267. gw_certificate/tests/connection.py +0 -188
  268. gw_certificate/tests/downlink.py +0 -172
  269. gw_certificate/tests/generic.py +0 -238
  270. gw_certificate/tests/registration.py +0 -340
  271. gw_certificate/tests/static/__init__.py +0 -0
  272. gw_certificate/tests/static/connection_defines.py +0 -9
  273. gw_certificate/tests/static/downlink_defines.py +0 -9
  274. gw_certificate/tests/static/generated_packet_table.py +0 -195
  275. gw_certificate/tests/static/packet_table.csv +0 -10067
  276. gw_certificate/tests/static/references.py +0 -5
  277. gw_certificate/tests/static/uplink_defines.py +0 -14
  278. gw_certificate/tests/throughput.py +0 -240
  279. gw_certificate/tests/uplink.py +0 -853
  280. wiliot_certificate-4.4.3.dist-info/METADATA +0 -211
  281. wiliot_certificate-4.4.3.dist-info/RECORD +0 -210
  282. wiliot_certificate-4.4.3.dist-info/entry_points.txt +0 -3
  283. wiliot_certificate-4.4.3.dist-info/top_level.txt +0 -3
  284. {brg_certificate → certificate}/__init__.py +0 -0
  285. {gw_certificate → common}/api_if/202/data.json +0 -0
  286. {gw_certificate/api_if/200 → common/api_if/202}/logs.json +0 -0
  287. {gw_certificate → common}/api_if/203/data.json +0 -0
  288. {gw_certificate/api_if/201 → common/api_if/203}/logs.json +0 -0
  289. {gw_certificate → common}/api_if/204/data.json +0 -0
  290. {gw_certificate/api_if/202 → common/api_if/204}/logs.json +0 -0
  291. {gw_certificate → common}/api_if/205/data.json +0 -0
  292. {gw_certificate/api_if/203 → common/api_if/205}/logs.json +0 -0
  293. {gw_certificate → common}/api_if/205/status.json +0 -0
  294. {gw_certificate/api_if/204 → common/api_if/206}/logs.json +0 -0
  295. {gw_certificate → common/api_if}/__init__.py +0 -0
  296. {gw_certificate/api_if → gui_certificate}/__init__.py +0 -0
  297. {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -10,10 +10,13 @@ GROUP_ID_GW2BRG = 0xED
10
10
  GROUP_ID_BRG2GW = 0xEE
11
11
  GROUP_ID_UNIFIED_PKT_V0 = 0x3F
12
12
  GROUP_ID_SIGNAL_INDICATOR = 0x3E
13
- GROUP_ID_BLE5_PKT0 = 0x3D
13
+ GROUP_ID_BLE5_PKT0_V0 = 0x3D
14
14
  GROUP_ID_UNIFIED_PKT_V1 = 0x3C
15
- GROUP_ID_BLE5_EXTENDED = 0x3B
16
- UNIFIED_GROUP_ID_LIST = [GROUP_ID_UNIFIED_PKT_V0, GROUP_ID_BLE5_PKT0, GROUP_ID_UNIFIED_PKT_V1, GROUP_ID_BLE5_EXTENDED]
15
+ GROUP_ID_BLE5_EXTENDED_V0 = 0x3B
16
+ GROUP_ID_BLE5_PKT0_V1 = 0x3A
17
+ GROUP_ID_UNIFIED_PKT_V2 = 0x39
18
+ GROUP_ID_BLE5_EXTENDED_V1 = 0x38
19
+ UNIFIED_GROUP_ID_LIST = [GROUP_ID_UNIFIED_PKT_V0, GROUP_ID_BLE5_PKT0_V0, GROUP_ID_UNIFIED_PKT_V1, GROUP_ID_BLE5_EXTENDED_V0, GROUP_ID_BLE5_PKT0_V1, GROUP_ID_UNIFIED_PKT_V2, GROUP_ID_BLE5_EXTENDED_V1]
17
20
 
18
21
  ACTION_EMPTY = 0
19
22
  ACTION_REBOOT = 1
@@ -27,18 +30,19 @@ ACTION_GW_HB = 8
27
30
  ACTION_GET_BATTERY_SENSOR = 9
28
31
  ACTION_GET_POF_DATA = 10
29
32
  ACTION_PL_STATUS = 11
33
+ ACTION_GET_ACCELEROMETER = 12
30
34
 
31
35
  BRG2BRG_ACTION_EMPTY = 0
32
36
  BRG2BRG_ACTION_CFG = 1
33
37
  BRG2BRG_ACTION_OTA = 2
34
38
 
35
- RSSI_VAL_MIN = 40
36
- RSSI_VAL_MAX = 103 # min val + 63 (6 bits)
39
+ RSSI_VAL_MIN = 30
40
+ RSSI_VAL_MAX = 93 # min val + 63 (6 bits)
37
41
 
38
42
  API_VERSION_V0 = 0
39
43
  API_VERSION_V1 = 1
40
44
  API_VERSION_V2 = 2
41
- API_VERSION_V5 = 5 # Because of backward compatabilty issue we jumped from V2 to V5
45
+ API_VERSION_V5 = 5 # Because of backward compatibility issue we jumped from V2 to V5
42
46
  API_VERSION_V6 = 6
43
47
  API_VERSION_V7 = 7
44
48
  API_VERSION_V8 = 8
@@ -46,11 +50,15 @@ API_VERSION_V9 = 9
46
50
  API_VERSION_V10 = 10
47
51
  API_VERSION_V11 = 11
48
52
  API_VERSION_V12 = 12
49
- API_VERSION_LATEST = 12
53
+ API_VERSION_V13 = 13
54
+ API_VERSION_LATEST = 13
50
55
 
51
56
  API_VERSION_SENSOR_V0 = 0
52
57
  API_VERSION_SENSOR_LATEST = 0
53
58
 
59
+ API_VERSION_UNIFIED_SENSOR_V0 = 1
60
+ API_VERSION_UNIFIED_SENSOR_LATEST = 1
61
+
54
62
  MODULE_EMPTY = 0
55
63
  MODULE_GLOBAL = 0
56
64
  MODULE_IF = 1
@@ -82,21 +90,31 @@ CHANNEL_FREQ_39 = 2480
82
90
  CHANNEL_37 = 37
83
91
  CHANNEL_38 = 38
84
92
  CHANNEL_39 = 39
93
+ CHANNEL_HOPPING_37_10 = 47
85
94
 
86
95
  FREQUENCY_BAND_EDGE_2480 = 2480
87
96
  FREQUENCY_BAND_EDGE_2475 = 2475
88
97
 
89
- OUTPUT_POWER_2_4_NEG_12 = -12
90
- OUTPUT_POWER_2_4_NEG_8 = -8
91
- OUTPUT_POWER_2_4_NEG_4 = -4
92
- OUTPUT_POWER_2_4_POS_0 = 0
93
- OUTPUT_POWER_2_4_POS_2 = 2
94
- OUTPUT_POWER_2_4_POS_3 = 3
95
- OUTPUT_POWER_2_4_POS_4 = 4
96
- OUTPUT_POWER_2_4_POS_5 = 5
97
- OUTPUT_POWER_2_4_POS_6 = 6
98
- OUTPUT_POWER_2_4_POS_7 = 7
99
- OUTPUT_POWER_2_4_POS_8 = 8
98
+ OUTPUT_POWER_2_4_MAX = 0x00
99
+ OUTPUT_POWER_2_4_MAX_MINUS_2 = 0x02
100
+ OUTPUT_POWER_2_4_MAX_MINUS_3 = 0x03
101
+ OUTPUT_POWER_2_4_MAX_MINUS_4 = 0x04
102
+ OUTPUT_POWER_2_4_MAX_MINUS_6 = 0x06
103
+ OUTPUT_POWER_2_4_MAX_MINUS_7 = 0x07
104
+ OUTPUT_POWER_2_4_MAX_MINUS_8 = 0x08
105
+ OUTPUT_POWER_2_4_MAX_MINUS_10 = 0x0A
106
+ OUTPUT_POWER_2_4_MAX_MINUS_11 = 0x0B
107
+ OUTPUT_POWER_2_4_MAX_MINUS_12 = 0x0C
108
+ OUTPUT_POWER_2_4_MAX_MINUS_14 = 0x0E
109
+ OUTPUT_POWER_2_4_MAX_MINUS_15 = 0x0F
110
+ OUTPUT_POWER_2_4_MAX_MINUS_16 = 0x10
111
+ OUTPUT_POWER_2_4_MAX_MINUS_18 = 0x12
112
+ OUTPUT_POWER_2_4_MAX_MINUS_19 = 0x13
113
+ OUTPUT_POWER_2_4_MAX_MINUS_20 = 0x14
114
+ OUTPUT_POWER_2_4_MAX_MINUS_22 = 0x16
115
+ OUTPUT_POWER_2_4_MAX_MINUS_23 = 0x17
116
+ OUTPUT_POWER_2_4_MAX_MINUS_26 = 0x1A
117
+ OUTPUT_POWER_2_4_SUPPORTED_VALUES = [OUTPUT_POWER_2_4_MAX, OUTPUT_POWER_2_4_MAX_MINUS_2, OUTPUT_POWER_2_4_MAX_MINUS_6, OUTPUT_POWER_2_4_MAX_MINUS_10, OUTPUT_POWER_2_4_MAX_MINUS_14, OUTPUT_POWER_2_4_MAX_MINUS_18, OUTPUT_POWER_2_4_MAX_MINUS_22]
100
118
 
101
119
  ENERGY_PATTERN_2_4_NO_ENERGIZING = 0x00
102
120
  ENERGY_PATTERN_2_4_CHANNEL_37 = 0x01
@@ -111,6 +129,29 @@ RX_CHANNEL_38 = 0x01
111
129
  RX_CHANNEL_39 = 0x02
112
130
  RX_CHANNEL_10_250K = 0x03
113
131
  RX_CHANNEL_10_500K = 0x04
132
+ RX_CHANNEL_HOPPING_37_10 = 0x05
133
+ RX_CHANNEL_21 = 0x06
134
+
135
+ EVENT_TIME_UNIT_SECONDS = 0x00
136
+ EVENT_TIME_UNIT_MINUTES = 0x01
137
+ EVENT_TIME_UNIT_HOURS = 0x02
138
+
139
+ EVENT_TRIGGER_NONE = 0x00
140
+ EVENT_TRIGGER_NEW_TAG = 0x01
141
+ EVENT_TRIGGER_TEMP_CHANGE = 0x02
142
+ EVENT_TRIGGER_NEW_TAG_AND_TEMP = 0x03
143
+ EVENT_TRIGGER_TX_RATE_CHANGE = 0x04
144
+ EVENT_TRIGGER_NEW_TAG_AND_TX_RATE = 0x05
145
+ EVENT_TRIGGER_TEMP_AND_TX_RATE = 0x06
146
+ EVENT_TRIGGER_NEW_TAG_TEMP_AND_TX_RATE = 0x07
147
+ EVENT_TRIGGER_RSSI_CHANGE = 0x08
148
+ EVENT_TRIGGER_NEW_TAG_AND_RSSI = 0x09
149
+ EVENT_TRIGGER_TEMP_AND_RSSI = 0x0A
150
+ EVENT_TRIGGER_NEW_TAG_TEMP_AND_RSSI = 0x0B
151
+ EVENT_TRIGGER_TX_RATE_AND_RSSI = 0x0C
152
+ EVENT_TRIGGER_NEW_TAG_TX_RATE_AND_RSSI = 0x0D
153
+ EVENT_TRIGGER_TEMP_TX_RATE_AND_RSSI = 0x0E
154
+ EVENT_TRIGGER_ALL_TRIGGERS = 0x0F
114
155
 
115
156
  RX_CHANNEL_V11_37 = 0x00
116
157
  RX_CHANNEL_V11_38 = 0x01
@@ -121,6 +162,7 @@ RX_CHANNEL_V11_4_2MBPS = 0x05
121
162
  RX_CHANNEL_V11_10_2MBPS = 0x06
122
163
 
123
164
  SECONDARY_RX_CHANNEL_10 = 10
165
+ SECONDARY_RX_CHANNEL_21 = 21
124
166
 
125
167
  BLE5_PARAM_PRIMARY_CHANNEL_SCAN_CYCLE = 15000 # In MS
126
168
  BLE5_PARAM_PRIMARY_CHANNEL_SCAN_DURATION = 300 # In MS
@@ -184,6 +226,9 @@ CALIBRATION_PATTERN_DISABLE_BEACON = 0x03
184
226
  DATAPATH_PATTERN_STANDARD = 0x00
185
227
  DATAPATH_PATTERN_38_38_39 = 0x01
186
228
  DATAPATH_PATTERN_EU_PATTERN = 0x02
229
+ DATAPATH_PATTERN_EXTENDED_ADV = 0x03
230
+ DATAPATH_PATTERN_EXTENDED_ADV_38_39 = 0x04
231
+ DATAPATH_PATTERN_EXTENDED_ADV_CH_10 = 0x05
187
232
 
188
233
  SIGNAL_INDICATOR_REP_1 = 1
189
234
  SIGNAL_INDICATOR_REP_2 = 2
@@ -208,7 +253,7 @@ SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4 = 3
208
253
  EXTERNAL_SENSORS_NO_SENSOR = 0x00000000
209
254
  EXTERNAL_SENSORS_MINEWS1 = 0x16E1FF01
210
255
  EXTERNAL_SENSORS_VOLTAIC_BATT_LEVEL_DONGLE = 0xFF050500
211
- EXTERNAL_SENSORS_SIGNAL_INDICATOR = 0xFF000500
256
+ EXTERNAL_SENSORS_SIGNAL_INDICATOR = 0xFF000502
212
257
  EXTERNAL_SENSORS_ZEBRA_PRINTER = 0x0279FE01
213
258
  EXTERNAL_SENSORS_ERM_SMART_MS = 0xFFAE0400
214
259
 
@@ -224,19 +269,24 @@ HDR_DEFAULT_TAG_UUID_MSB = 0xAF
224
269
  HDR_DEFAULT_TAG_UUID_LSB = 0xFD
225
270
 
226
271
  BRG_DEFAULT_CALIBRATION_INTERVAL = 10
227
- BRG_DEFAULT_CALIBRATION_OUTPUT_POWER = OUTPUT_POWER_2_4_POS_2
272
+ BRG_DEFAULT_CALIBRATION_OUTPUT_POWER = OUTPUT_POWER_2_4_MAX
228
273
  BRG_DEFAULT_CALIBRATION_PATTERN = CALIBRATION_PATTERN_38_38_39
229
274
  BRG_DEFAULT_DATAPATH_PATTERN = DATAPATH_PATTERN_STANDARD
230
275
  BRG_DEFAULT_PKT_FILTER = PKT_FILTER_TEMP_AND_ADVANCED_PKTS
231
276
  BRG_DEFAULT_RX_CHANNEL_OR_FREQ = CHANNEL_37
232
- BRG_DEFAULT_DATAPATH_OUTPUT_POWER = OUTPUT_POWER_2_4_POS_2
277
+ BRG_DEFAULT_DATAPATH_OUTPUT_POWER = OUTPUT_POWER_2_4_MAX
233
278
  BRG_DEFAULT_TX_REPETITION = 0
234
279
  BRG_DEFAULT_PACER_INTERVAL = 15
235
280
  BRG_DEFAULT_RSSI_THRESHOLD = 0
236
281
  BRG_DEFAULT_RX_CHANNEL = RX_CHANNEL_37
282
+ BRG_DEFAULT_EVENT_WINDOW = 0
283
+ BRG_DEFAULT_EVENT_TIME_UNIT = EVENT_TIME_UNIT_SECONDS
284
+ BRG_DEFAULT_EVENT_TRIGGER = EVENT_TRIGGER_NONE
285
+ BRG_DEFAULT_EVENT_PACER_INTERVAL = 0
286
+ BRG_DEFAULT_RSSI_MOVEMENT_THRESHOLD = 6
237
287
  BRG_DEFAULT_ENERGY_PATTERN_2_4 = ENERGY_PATTERN_2_4_NO_ENERGIZING
238
288
  BRG_DEFAULT_ENERGY_DUTY_CYCLE_2_4 = 30
239
- BRG_DEFAULT_OUTPUT_POWER_2_4 = OUTPUT_POWER_2_4_POS_2
289
+ BRG_DEFAULT_OUTPUT_POWER_2_4 = OUTPUT_POWER_2_4_MAX
240
290
  BRG_DEFAULT_SIGNAL_INDICATOR_REP = 2
241
291
  BRG_DEFAULT_SIGNAL_INDICATOR_REP_PROFILE = 1
242
292
  BRG_DEFAULT_SIGNAL_INDICATOR_CYCLE = 0
@@ -252,6 +302,7 @@ BRG_DEFAULT_TX_PERIOD = 0
252
302
  BRG_DEFAULT_TRANSMIT_TIME_SUB1G = 0
253
303
  BRG_DEFAULT_SUB1G_FREQ = SUB1G_FREQ_915000
254
304
  BRG_DEFAULT_SUB1G_FREQ_PROFILE = SUB1G_FREQ_PROFILE_915000
305
+ BRG_DEFAULT_TX_POWER_MAX_2_4_DBM = 2
255
306
  BRG_DEFAULT_ENERGY_PATTERN_IDX_OLD = 50
256
307
  BRG_DEFAULT_RXTX_PERIOD = 15
257
308
  BRG_DEFAULT_PKT_TYPES_MASK = 0
@@ -303,6 +354,7 @@ SENSOR_SERVICE_ID_LIS2DW12 = 0x000001
303
354
  SENSOR_SERVICE_ID_BATTERY_SENSOR = 0x000002
304
355
  SENSOR_SERVICE_ID_POF_DATA = 0x800303
305
356
  SENSOR_SERVICE_ID_SIGNAL_INDICATOR = 0xFF0005
357
+ UNIFIED_SENSOR_ID_LIST = [SENSOR_SERVICE_ID_LIS2DW12, SENSOR_SERVICE_ID_BATTERY_SENSOR, SENSOR_SERVICE_ID_POF_DATA, SENSOR_SERVICE_ID_SIGNAL_INDICATOR]
306
358
 
307
359
  LIS2DW12_PACKET_VERSION_V1 = 1
308
360
  LIS2DW12_PACKET_VERSION_V2 = 2
@@ -333,7 +385,58 @@ SIGNAL_INDICATOR_CYCLE_MAX = 16383
333
385
  SIGNAL_INDICATOR_REP_MIN = 1
334
386
  SIGNAL_INDICATOR_REP_MAX = 4
335
387
 
336
- class UnifiedEchoExtPkt():
388
+ class UnifiedEchoExtPktV1():
389
+ def __init__(self, raw='', nonce_n_unique_id=0, mic0=0, mic1=0, data0=0, data1=0, tbc=0, rssi=0, brg_latency=0, event_ctr=0, event_flag=0):
390
+ self.nonce_n_unique_id = nonce_n_unique_id
391
+ self.mic0 = mic0
392
+ self.mic1 = mic1
393
+ self.data0 = data0
394
+ self.data1 = data1
395
+ self.tbc = tbc
396
+ self.rssi = rssi
397
+ self.brg_latency = brg_latency
398
+ self.event_ctr = event_ctr
399
+ self.event_flag = event_flag
400
+ if raw:
401
+ self.set(raw)
402
+
403
+ def __repr__(self) -> str:
404
+ return "\n==> Packet unified_echo_ext_pkt_v1 <==\n" + tabulate.tabulate([['nonce_n_unique_id', f"0x{self.nonce_n_unique_id:X}", self.nonce_n_unique_id, ""],['mic0', f"0x{self.mic0:X}", self.mic0, ""],['mic1', f"0x{self.mic1:X}", self.mic1, ""],['data0', f"0x{self.data0:X}", self.data0, ""],['data1', f"0x{self.data1:X}", self.data1, ""],['tbc', f"0x{self.tbc:X}", self.tbc, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""],['brg_latency', f"0x{self.brg_latency:X}", self.brg_latency, ""],['event_ctr', f"0x{self.event_ctr:X}", self.event_ctr, ""],['event_flag', f"0x{self.event_flag:X}", self.event_flag, ""]], tablefmt="texttable")
405
+
406
+ def __eq__(self, other):
407
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
408
+ return (
409
+ self.nonce_n_unique_id == other.nonce_n_unique_id and
410
+ self.mic0 == other.mic0 and
411
+ self.mic1 == other.mic1 and
412
+ self.data0 == other.data0 and
413
+ self.data1 == other.data1 and
414
+ self.tbc == other.tbc and
415
+ self.rssi == other.rssi and
416
+ self.brg_latency == other.brg_latency and
417
+ self.event_ctr == other.event_ctr and
418
+ self.event_flag == other.event_flag
419
+ )
420
+ return False
421
+
422
+ def dump(self):
423
+ string = bitstruct.pack("u80u24u24u64u64u8u6u6u3u1", self.nonce_n_unique_id, self.mic0, self.mic1, self.data0, self.data1, self.tbc, ((self.rssi-30)//1), ((self.brg_latency-0)//200), self.event_ctr, self.event_flag)
424
+ return string.hex().upper()
425
+
426
+ def set(self, string):
427
+ d = bitstruct.unpack("u80u24u24u64u64u8u6u6u3u1", binascii.unhexlify(string))
428
+ self.nonce_n_unique_id = d[0]
429
+ self.mic0 = d[1]
430
+ self.mic1 = d[2]
431
+ self.data0 = d[3]
432
+ self.data1 = d[4]
433
+ self.tbc = d[5]
434
+ self.rssi = ((d[6]*1)+30)
435
+ self.brg_latency = ((d[7]*200)+0)
436
+ self.event_ctr = d[8]
437
+ self.event_flag = d[9]
438
+
439
+ class UnifiedEchoExtPktV0():
337
440
  def __init__(self, raw='', nonce_n_unique_id=0, mic0=0, mic1=0, data0=0, data1=0, tbc=0, rssi=0, brg_latency=0, nfpkt=0):
338
441
  self.nonce_n_unique_id = nonce_n_unique_id
339
442
  self.mic0 = mic0
@@ -348,7 +451,7 @@ class UnifiedEchoExtPkt():
348
451
  self.set(raw)
349
452
 
350
453
  def __repr__(self) -> str:
351
- return "\n==> Packet unified_echo_ext_pkt <==\n" + tabulate.tabulate([['nonce_n_unique_id', f"0x{self.nonce_n_unique_id:X}", self.nonce_n_unique_id],['mic0', f"0x{self.mic0:X}", self.mic0],['mic1', f"0x{self.mic1:X}", self.mic1],['data0', f"0x{self.data0:X}", self.data0],['data1', f"0x{self.data1:X}", self.data1],['tbc', f"0x{self.tbc:X}", self.tbc],['rssi', f"0x{self.rssi:X}", self.rssi],['brg_latency', f"0x{self.brg_latency:X}", self.brg_latency],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt]], tablefmt="texttable")
454
+ return "\n==> Packet unified_echo_ext_pkt_v0 <==\n" + tabulate.tabulate([['nonce_n_unique_id', f"0x{self.nonce_n_unique_id:X}", self.nonce_n_unique_id, ""],['mic0', f"0x{self.mic0:X}", self.mic0, ""],['mic1', f"0x{self.mic1:X}", self.mic1, ""],['data0', f"0x{self.data0:X}", self.data0, ""],['data1', f"0x{self.data1:X}", self.data1, ""],['tbc', f"0x{self.tbc:X}", self.tbc, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""],['brg_latency', f"0x{self.brg_latency:X}", self.brg_latency, ""],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt, ""]], tablefmt="texttable")
352
455
 
353
456
  def __eq__(self, other):
354
457
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -381,6 +484,51 @@ class UnifiedEchoExtPkt():
381
484
  self.brg_latency = ((d[7]*200)+0)
382
485
  self.nfpkt = d[8]
383
486
 
487
+ class UnifiedEchoPktV2():
488
+ def __init__(self, raw='', nonce_n_unique_id=0, tbc=0, rssi=0, brg_latency=0, event_ctr=0, event_flag=0, mic=0, data=0):
489
+ self.nonce_n_unique_id = nonce_n_unique_id
490
+ self.tbc = tbc
491
+ self.rssi = rssi
492
+ self.brg_latency = brg_latency
493
+ self.event_ctr = event_ctr
494
+ self.event_flag = event_flag
495
+ self.mic = mic
496
+ self.data = data
497
+ if raw:
498
+ self.set(raw)
499
+
500
+ def __repr__(self) -> str:
501
+ return "\n==> Packet unified_echo_pkt_v2 <==\n" + tabulate.tabulate([['nonce_n_unique_id', f"0x{self.nonce_n_unique_id:X}", self.nonce_n_unique_id, ""],['tbc', f"0x{self.tbc:X}", self.tbc, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""],['brg_latency', f"0x{self.brg_latency:X}", self.brg_latency, ""],['event_ctr', f"0x{self.event_ctr:X}", self.event_ctr, ""],['event_flag', f"0x{self.event_flag:X}", self.event_flag, ""],['mic', f"0x{self.mic:X}", self.mic, ""],['data', f"0x{self.data:X}", self.data, ""]], tablefmt="texttable")
502
+
503
+ def __eq__(self, other):
504
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
505
+ return (
506
+ self.nonce_n_unique_id == other.nonce_n_unique_id and
507
+ self.tbc == other.tbc and
508
+ self.rssi == other.rssi and
509
+ self.brg_latency == other.brg_latency and
510
+ self.event_ctr == other.event_ctr and
511
+ self.event_flag == other.event_flag and
512
+ self.mic == other.mic and
513
+ self.data == other.data
514
+ )
515
+ return False
516
+
517
+ def dump(self):
518
+ string = bitstruct.pack("u80u8u6u6u3u1u24u64", self.nonce_n_unique_id, self.tbc, ((self.rssi-30)//1), ((self.brg_latency-0)//200), self.event_ctr, self.event_flag, self.mic, self.data)
519
+ return string.hex().upper()
520
+
521
+ def set(self, string):
522
+ d = bitstruct.unpack("u80u8u6u6u3u1u24u64", binascii.unhexlify(string))
523
+ self.nonce_n_unique_id = d[0]
524
+ self.tbc = d[1]
525
+ self.rssi = ((d[2]*1)+30)
526
+ self.brg_latency = ((d[3]*200)+0)
527
+ self.event_ctr = d[4]
528
+ self.event_flag = d[5]
529
+ self.mic = d[6]
530
+ self.data = d[7]
531
+
384
532
  class UnifiedEchoPktV1():
385
533
  def __init__(self, raw='', nonce_n_unique_id=0, tbc=0, rssi=0, brg_latency=0, nfpkt=0, mic=0, data=0):
386
534
  self.nonce_n_unique_id = nonce_n_unique_id
@@ -394,7 +542,7 @@ class UnifiedEchoPktV1():
394
542
  self.set(raw)
395
543
 
396
544
  def __repr__(self) -> str:
397
- return "\n==> Packet unified_echo_pkt_v1 <==\n" + tabulate.tabulate([['nonce_n_unique_id', f"0x{self.nonce_n_unique_id:X}", self.nonce_n_unique_id],['tbc', f"0x{self.tbc:X}", self.tbc],['rssi', f"0x{self.rssi:X}", self.rssi],['brg_latency', f"0x{self.brg_latency:X}", self.brg_latency],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt],['mic', f"0x{self.mic:X}", self.mic],['data', f"0x{self.data:X}", self.data]], tablefmt="texttable")
545
+ return "\n==> Packet unified_echo_pkt_v1 <==\n" + tabulate.tabulate([['nonce_n_unique_id', f"0x{self.nonce_n_unique_id:X}", self.nonce_n_unique_id, ""],['tbc', f"0x{self.tbc:X}", self.tbc, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""],['brg_latency', f"0x{self.brg_latency:X}", self.brg_latency, ""],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt, ""],['mic', f"0x{self.mic:X}", self.mic, ""],['data', f"0x{self.data:X}", self.data, ""]], tablefmt="texttable")
398
546
 
399
547
  def __eq__(self, other):
400
548
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -436,7 +584,7 @@ class UnifiedEchoPktV0():
436
584
  self.set(raw)
437
585
 
438
586
  def __repr__(self) -> str:
439
- return "\n==> Packet unified_echo_pkt_v0 <==\n" + tabulate.tabulate([['nonce_n_unique_id', f"0x{self.nonce_n_unique_id:X}", self.nonce_n_unique_id],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt],['rssi', f"0x{self.rssi:X}", self.rssi],['brg_latency', f"0x{self.brg_latency:X}", self.brg_latency],['mic', f"0x{self.mic:X}", self.mic],['data', f"0x{self.data:X}", self.data]], tablefmt="texttable")
587
+ return "\n==> Packet unified_echo_pkt_v0 <==\n" + tabulate.tabulate([['nonce_n_unique_id', f"0x{self.nonce_n_unique_id:X}", self.nonce_n_unique_id, ""],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""],['brg_latency', f"0x{self.brg_latency:X}", self.brg_latency, ""],['mic', f"0x{self.mic:X}", self.mic, ""],['data', f"0x{self.data:X}", self.data, ""]], tablefmt="texttable")
440
588
 
441
589
  def __eq__(self, other):
442
590
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -475,7 +623,7 @@ class Hdr():
475
623
  self.set(raw)
476
624
 
477
625
  def __repr__(self) -> str:
478
- return "\n==> Packet Wiliot hdr <==\n" + tabulate.tabulate([['pkt_size', f"0x{self.pkt_size:X}", self.pkt_size],['ad_type', f"0x{self.ad_type:X}", self.ad_type],['uuid_msb', f"0x{self.uuid_msb:X}", self.uuid_msb],['uuid_lsb', f"0x{self.uuid_lsb:X}", self.uuid_lsb],['group_id', f"0x{self.group_id:X}", self.group_id]], tablefmt="texttable")
626
+ return "\n==> Packet Wiliot hdr <==\n" + tabulate.tabulate([['pkt_size', f"0x{self.pkt_size:X}", self.pkt_size, ""],['ad_type', f"0x{self.ad_type:X}", self.ad_type, ""],['uuid_msb', f"0x{self.uuid_msb:X}", self.uuid_msb, ""],['uuid_lsb', f"0x{self.uuid_lsb:X}", self.uuid_lsb, ""],['group_id', f"0x{self.group_id:X}", self.group_id, ""]], tablefmt="texttable")
479
627
 
480
628
  def __eq__(self, other):
481
629
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -513,7 +661,7 @@ class DataHdr():
513
661
  self.set(raw)
514
662
 
515
663
  def __repr__(self) -> str:
516
- return "\n==> Packet Wiliot data_hdr <==\n" + tabulate.tabulate([['pkt_size', f"0x{self.pkt_size:X}", self.pkt_size],['ad_type', f"0x{self.ad_type:X}", self.ad_type],['uuid_msb', f"0x{self.uuid_msb:X}", self.uuid_msb],['uuid_lsb', f"0x{self.uuid_lsb:X}", self.uuid_lsb],['group_id_minor', f"0x{self.group_id_minor:X}", self.group_id_minor],['pkt_type', f"0x{self.pkt_type:X}", self.pkt_type],['group_id_major', f"0x{self.group_id_major:X}", self.group_id_major]], tablefmt="texttable")
664
+ return "\n==> Packet Wiliot data_hdr <==\n" + tabulate.tabulate([['pkt_size', f"0x{self.pkt_size:X}", self.pkt_size, ""],['ad_type', f"0x{self.ad_type:X}", self.ad_type, ""],['uuid_msb', f"0x{self.uuid_msb:X}", self.uuid_msb, ""],['uuid_lsb', f"0x{self.uuid_lsb:X}", self.uuid_lsb, ""],['group_id_minor', f"0x{self.group_id_minor:X}", self.group_id_minor, ""],['pkt_type', f"0x{self.pkt_type:X}", self.pkt_type, ""],['group_id_major', f"0x{self.group_id_major:X}", self.group_id_major, ""]], tablefmt="texttable")
517
665
 
518
666
  def __eq__(self, other):
519
667
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -542,6 +690,325 @@ class DataHdr():
542
690
  self.pkt_type = d[5]
543
691
  self.group_id_major = d[6]
544
692
 
693
+ class SideInfo():
694
+ def __init__(self, raw='', brg_mac=0, nfpkt=0, rssi=0, unused2=0, unused0=0, unused1=0, pkt_id=0):
695
+ self.brg_mac = brg_mac
696
+ self.nfpkt = nfpkt
697
+ self.rssi = rssi
698
+ self.unused2 = unused2
699
+ self.unused0 = unused0
700
+ self.unused1 = unused1
701
+ self.pkt_id = pkt_id
702
+ if raw:
703
+ self.set(raw)
704
+
705
+ def __repr__(self) -> str:
706
+ return "\n==> Packet side_info <==\n" + tabulate.tabulate([['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id, ""]], tablefmt="texttable")
707
+
708
+ def __eq__(self, other):
709
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
710
+ return (
711
+ self.brg_mac == other.brg_mac and
712
+ self.nfpkt == other.nfpkt and
713
+ self.rssi == other.rssi and
714
+ self.pkt_id == other.pkt_id
715
+ )
716
+ return False
717
+
718
+ def dump(self):
719
+ string = bitstruct.pack("u48u16u8u4u4u80u32", self.brg_mac, self.nfpkt, self.rssi, self.unused2, self.unused0, self.unused1, self.pkt_id)
720
+ return string.hex().upper()
721
+
722
+ def set(self, string):
723
+ d = bitstruct.unpack("u48u16u8u4u4u80u32", binascii.unhexlify(string))
724
+ self.brg_mac = d[0]
725
+ self.nfpkt = d[1]
726
+ self.rssi = d[2]
727
+ self.unused2 = d[3]
728
+ self.unused0 = d[4]
729
+ self.unused1 = d[5]
730
+ self.pkt_id = d[6]
731
+
732
+ class UnifiedSensorPkt():
733
+ def __init__(self, raw='', sensor_payload=0, sensor_mac=0, sensor_ad_type=0, sensor_uuid_msb=0, sensor_uuid_lsb=0, rssi=0, api_ver=0):
734
+ self.sensor_payload = sensor_payload
735
+ self.sensor_mac = sensor_mac
736
+ self.sensor_ad_type = sensor_ad_type
737
+ self.sensor_uuid_msb = sensor_uuid_msb
738
+ self.sensor_uuid_lsb = sensor_uuid_lsb
739
+ self.rssi = rssi
740
+ self.api_ver = api_ver
741
+ if raw:
742
+ self.set(raw)
743
+
744
+ def __repr__(self) -> str:
745
+ return "\n==> Packet unified_sensor_pkt <==\n" + tabulate.tabulate([['sensor_payload', f"0x{self.sensor_payload:X}", self.sensor_payload, ""],['sensor_mac', f"0x{self.sensor_mac:X}", self.sensor_mac, ""],['sensor_ad_type', f"0x{self.sensor_ad_type:X}", self.sensor_ad_type, ""],['sensor_uuid_msb', f"0x{self.sensor_uuid_msb:X}", self.sensor_uuid_msb, ""],['sensor_uuid_lsb', f"0x{self.sensor_uuid_lsb:X}", self.sensor_uuid_lsb, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""],['api_ver', f"0x{self.api_ver:X}", self.api_ver, ""]], tablefmt="texttable")
746
+
747
+ def __eq__(self, other):
748
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
749
+ return (
750
+ self.sensor_payload == other.sensor_payload and
751
+ self.sensor_mac == other.sensor_mac and
752
+ self.sensor_ad_type == other.sensor_ad_type and
753
+ self.sensor_uuid_msb == other.sensor_uuid_msb and
754
+ self.sensor_uuid_lsb == other.sensor_uuid_lsb and
755
+ self.rssi == other.rssi and
756
+ self.api_ver == other.api_ver
757
+ )
758
+ return False
759
+
760
+ def dump(self):
761
+ string = bitstruct.pack("u128u48u8u8u8u8u8", self.sensor_payload, self.sensor_mac, self.sensor_ad_type, self.sensor_uuid_msb, self.sensor_uuid_lsb, self.rssi, self.api_ver)
762
+ return string.hex().upper()
763
+
764
+ def set(self, string):
765
+ d = bitstruct.unpack("u128u48u8u8u8u8u8", binascii.unhexlify(string))
766
+ self.sensor_payload = d[0]
767
+ self.sensor_mac = d[1]
768
+ self.sensor_ad_type = d[2]
769
+ self.sensor_uuid_msb = d[3]
770
+ self.sensor_uuid_lsb = d[4]
771
+ self.rssi = d[5]
772
+ self.api_ver = d[6]
773
+
774
+ class SensorData():
775
+ def __init__(self, raw='', data=0, pkt_id=0):
776
+ self.data = data
777
+ self.pkt_id = pkt_id
778
+ if raw:
779
+ self.set(raw)
780
+
781
+ def __repr__(self) -> str:
782
+ return "\n==> Packet sensor_data <==\n" + tabulate.tabulate([['data', f"0x{self.data:X}", self.data, ""],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id, ""]], tablefmt="texttable")
783
+
784
+ def __eq__(self, other):
785
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
786
+ return (
787
+ self.data == other.data and
788
+ self.pkt_id == other.pkt_id
789
+ )
790
+ return False
791
+
792
+ def dump(self):
793
+ string = bitstruct.pack("u216u32", self.data, self.pkt_id)
794
+ return string.hex().upper()
795
+
796
+ def set(self, string):
797
+ d = bitstruct.unpack("u216u32", binascii.unhexlify(string))
798
+ self.data = d[0]
799
+ self.pkt_id = d[1]
800
+
801
+ class SideInfoSensor():
802
+ def __init__(self, raw='', brg_mac=0, nfpkt=0, rssi=0, unused2=0, unused0=0, sensor_mac=0, sensor_ad_type=0, sensor_uuid_msb=0, sensor_uuid_lsb=0, api_version=0, unused1=0, is_scrambled=0, is_sensor_embedded=0, is_sensor=0, pkt_id=0):
803
+ self.brg_mac = brg_mac
804
+ self.nfpkt = nfpkt
805
+ self.rssi = rssi
806
+ self.unused2 = unused2
807
+ self.unused0 = unused0
808
+ self.sensor_mac = sensor_mac
809
+ self.sensor_ad_type = sensor_ad_type
810
+ self.sensor_uuid_msb = sensor_uuid_msb
811
+ self.sensor_uuid_lsb = sensor_uuid_lsb
812
+ self.api_version = api_version
813
+ self.unused1 = unused1
814
+ self.is_scrambled = is_scrambled
815
+ self.is_sensor_embedded = is_sensor_embedded
816
+ self.is_sensor = is_sensor
817
+ self.pkt_id = pkt_id
818
+ if raw:
819
+ self.set(raw)
820
+
821
+ def __repr__(self) -> str:
822
+ return "\n==> Packet side_info_sensor <==\n" + tabulate.tabulate([['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""],['sensor_mac', f"0x{self.sensor_mac:X}", self.sensor_mac, ""],['sensor_ad_type', f"0x{self.sensor_ad_type:X}", self.sensor_ad_type, ""],['sensor_uuid_msb', f"0x{self.sensor_uuid_msb:X}", self.sensor_uuid_msb, ""],['sensor_uuid_lsb', f"0x{self.sensor_uuid_lsb:X}", self.sensor_uuid_lsb, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['is_scrambled', f"0x{self.is_scrambled:X}", self.is_scrambled, ""],['is_sensor_embedded', f"0x{self.is_sensor_embedded:X}", self.is_sensor_embedded, ""],['is_sensor', f"0x{self.is_sensor:X}", self.is_sensor, ""],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id, ""]], tablefmt="texttable")
823
+
824
+ def __eq__(self, other):
825
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
826
+ return (
827
+ self.brg_mac == other.brg_mac and
828
+ self.nfpkt == other.nfpkt and
829
+ self.rssi == other.rssi and
830
+ self.sensor_mac == other.sensor_mac and
831
+ self.sensor_ad_type == other.sensor_ad_type and
832
+ self.sensor_uuid_msb == other.sensor_uuid_msb and
833
+ self.sensor_uuid_lsb == other.sensor_uuid_lsb and
834
+ self.api_version == other.api_version and
835
+ self.is_scrambled == other.is_scrambled and
836
+ self.is_sensor_embedded == other.is_sensor_embedded and
837
+ self.is_sensor == other.is_sensor and
838
+ self.pkt_id == other.pkt_id
839
+ )
840
+ return False
841
+
842
+ def dump(self):
843
+ string = bitstruct.pack("u48u16u8u4u4u48u8u8u8u4u1u1u1u1u32", self.brg_mac, self.nfpkt, self.rssi, self.unused2, self.unused0, self.sensor_mac, self.sensor_ad_type, self.sensor_uuid_msb, self.sensor_uuid_lsb, self.api_version, self.unused1, self.is_scrambled, self.is_sensor_embedded, self.is_sensor, self.pkt_id)
844
+ return string.hex().upper()
845
+
846
+ def set(self, string):
847
+ d = bitstruct.unpack("u48u16u8u4u4u48u8u8u8u4u1u1u1u1u32", binascii.unhexlify(string))
848
+ self.brg_mac = d[0]
849
+ self.nfpkt = d[1]
850
+ self.rssi = d[2]
851
+ self.unused2 = d[3]
852
+ self.unused0 = d[4]
853
+ self.sensor_mac = d[5]
854
+ self.sensor_ad_type = d[6]
855
+ self.sensor_uuid_msb = d[7]
856
+ self.sensor_uuid_lsb = d[8]
857
+ self.api_version = d[9]
858
+ self.unused1 = d[10]
859
+ self.is_scrambled = d[11]
860
+ self.is_sensor_embedded = d[12]
861
+ self.is_sensor = d[13]
862
+ self.pkt_id = d[14]
863
+
864
+ class PktFilterStruct():
865
+ def __init__(self, raw='', unused=0, mask_enable=0, p3_pacing=0, p2_pacing=0, p1_pacing=0, p0_pacing=0):
866
+ self.unused = unused
867
+ self.mask_enable = mask_enable
868
+ self.p3_pacing = p3_pacing
869
+ self.p2_pacing = p2_pacing
870
+ self.p1_pacing = p1_pacing
871
+ self.p0_pacing = p0_pacing
872
+ if raw:
873
+ self.set(raw)
874
+
875
+ def __repr__(self) -> str:
876
+ return "\n==> Packet pkt_filter_struct <==\n" + tabulate.tabulate([['mask_enable', f"0x{self.mask_enable:X}", self.mask_enable, ""],['p3_pacing', f"0x{self.p3_pacing:X}", self.p3_pacing, ""],['p2_pacing', f"0x{self.p2_pacing:X}", self.p2_pacing, ""],['p1_pacing', f"0x{self.p1_pacing:X}", self.p1_pacing, ""],['p0_pacing', f"0x{self.p0_pacing:X}", self.p0_pacing, ""]], tablefmt="texttable")
877
+
878
+ def __eq__(self, other):
879
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
880
+ return (
881
+ self.mask_enable == other.mask_enable and
882
+ self.p3_pacing == other.p3_pacing and
883
+ self.p2_pacing == other.p2_pacing and
884
+ self.p1_pacing == other.p1_pacing and
885
+ self.p0_pacing == other.p0_pacing
886
+ )
887
+ return False
888
+
889
+ def dump(self):
890
+ string = bitstruct.pack("u3u1u1u1u1u1", self.unused, self.mask_enable, self.p3_pacing, self.p2_pacing, self.p1_pacing, self.p0_pacing)
891
+ return string.hex().upper()
892
+
893
+ def set(self, string):
894
+ d = bitstruct.unpack("u3u1u1u1u1u1", binascii.unhexlify(string))
895
+ self.unused = d[0]
896
+ self.mask_enable = d[1]
897
+ self.p3_pacing = d[2]
898
+ self.p2_pacing = d[3]
899
+ self.p1_pacing = d[4]
900
+ self.p0_pacing = d[5]
901
+
902
+ class EventTriggerFlags():
903
+ def __init__(self, raw='', unused=0, rssi_change=0, tx_rate_change=0, temp_change=0, new_tag=0):
904
+ self.unused = unused
905
+ self.rssi_change = rssi_change
906
+ self.tx_rate_change = tx_rate_change
907
+ self.temp_change = temp_change
908
+ self.new_tag = new_tag
909
+ if raw:
910
+ self.set(raw)
911
+
912
+ def __repr__(self) -> str:
913
+ return "\n==> Packet event_trigger_flags <==\n" + tabulate.tabulate([['rssi_change', f"0x{self.rssi_change:X}", self.rssi_change, ""],['tx_rate_change', f"0x{self.tx_rate_change:X}", self.tx_rate_change, ""],['temp_change', f"0x{self.temp_change:X}", self.temp_change, ""],['new_tag', f"0x{self.new_tag:X}", self.new_tag, ""]], tablefmt="texttable")
914
+
915
+ def __eq__(self, other):
916
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
917
+ return (
918
+ self.rssi_change == other.rssi_change and
919
+ self.tx_rate_change == other.tx_rate_change and
920
+ self.temp_change == other.temp_change and
921
+ self.new_tag == other.new_tag
922
+ )
923
+ return False
924
+
925
+ def dump(self):
926
+ string = bitstruct.pack("u4u1u1u1u1", self.unused, self.rssi_change, self.tx_rate_change, self.temp_change, self.new_tag)
927
+ return string.hex().upper()
928
+
929
+ def set(self, string):
930
+ d = bitstruct.unpack("u4u1u1u1u1", binascii.unhexlify(string))
931
+ self.unused = d[0]
932
+ self.rssi_change = d[1]
933
+ self.tx_rate_change = d[2]
934
+ self.temp_change = d[3]
935
+ self.new_tag = d[4]
936
+
937
+ class PwrMgmt():
938
+ def __init__(self, raw='', leds_on=PWR_MGMT_DEFAULTS_LEDS_ON, keep_alive_scan=PWR_MGMT_DEFAULTS_KEEP_ALIVE_SCAN, keep_alive_period=PWR_MGMT_DEFAULTS_KEEP_ALIVE_PERIOD, on_duration=PWR_MGMT_DEFAULTS_ON_DURATION, sleep_duration=PWR_MGMT_DEFAULTS_SLEEP_DURATION, unused=0):
939
+ self.leds_on = leds_on
940
+ self.keep_alive_scan = keep_alive_scan # 10 [msec] resolution
941
+ self.keep_alive_period = keep_alive_period # 5 [sec] resolution
942
+ self.on_duration = on_duration # 30 [sec] resolution
943
+ self.sleep_duration = sleep_duration # 60 [sec] resolution
944
+ self.unused = unused
945
+ if raw:
946
+ self.set(raw)
947
+
948
+ def __repr__(self) -> str:
949
+ return "\n==> Packet pwr_mgmt <==\n" + tabulate.tabulate([['leds_on', f"0x{self.leds_on:X}", self.leds_on, ""],['keep_alive_scan', f"0x{self.keep_alive_scan:X}", self.keep_alive_scan, ""],['keep_alive_period', f"0x{self.keep_alive_period:X}", self.keep_alive_period, ""],['on_duration', f"0x{self.on_duration:X}", self.on_duration, ""],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration, ""]], tablefmt="texttable")
950
+
951
+ def __eq__(self, other):
952
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
953
+ return (
954
+ self.leds_on == other.leds_on and
955
+ self.keep_alive_scan == other.keep_alive_scan and
956
+ self.keep_alive_period == other.keep_alive_period and
957
+ self.on_duration == other.on_duration and
958
+ self.sleep_duration == other.sleep_duration
959
+ )
960
+ return False
961
+
962
+ def dump(self):
963
+ string = bitstruct.pack("u1u6u5u7u11u2", self.leds_on, self.keep_alive_scan, self.keep_alive_period, self.on_duration, self.sleep_duration, self.unused)
964
+ return string.hex().upper()
965
+
966
+ def set(self, string):
967
+ d = bitstruct.unpack("u1u6u5u7u11u2", binascii.unhexlify(string))
968
+ self.leds_on = d[0]
969
+ self.keep_alive_scan = d[1]
970
+ self.keep_alive_period = d[2]
971
+ self.on_duration = d[3]
972
+ self.sleep_duration = d[4]
973
+ self.unused = d[5]
974
+
975
+ class GenericV13():
976
+ def __init__(self, raw='', module_type=0, msg_type=0, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, unused=0):
977
+ self.module_type = module_type
978
+ self.msg_type = msg_type
979
+ self.api_version = api_version
980
+ self.seq_id = seq_id
981
+ self.brg_mac = brg_mac
982
+ self.unused = unused
983
+ if raw:
984
+ self.set(raw)
985
+
986
+ def __repr__(self) -> str:
987
+ return "\n==> Packet generic_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
988
+
989
+ def __eq__(self, other):
990
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
991
+ return (
992
+ self.module_type == other.module_type and
993
+ self.msg_type == other.msg_type and
994
+ self.api_version == other.api_version and
995
+ self.brg_mac == other.brg_mac
996
+ )
997
+ return False
998
+
999
+ def dump(self):
1000
+ string = bitstruct.pack("u4u4u8u8u48u120", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.unused)
1001
+ return string.hex().upper()
1002
+
1003
+ def set(self, string):
1004
+ d = bitstruct.unpack("u4u4u8u8u48u120", binascii.unhexlify(string))
1005
+ self.module_type = d[0]
1006
+ self.msg_type = d[1]
1007
+ self.api_version = d[2]
1008
+ self.seq_id = d[3]
1009
+ self.brg_mac = d[4]
1010
+ self.unused = d[5]
1011
+
545
1012
  class GenericV12():
546
1013
  def __init__(self, raw='', module_type=0, msg_type=0, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, unused=0):
547
1014
  self.module_type = module_type
@@ -554,7 +1021,7 @@ class GenericV12():
554
1021
  self.set(raw)
555
1022
 
556
1023
  def __repr__(self) -> str:
557
- return "\n==> Packet generic_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
1024
+ return "\n==> Packet generic_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
558
1025
 
559
1026
  def __eq__(self, other):
560
1027
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -591,7 +1058,7 @@ class GenericV11():
591
1058
  self.set(raw)
592
1059
 
593
1060
  def __repr__(self) -> str:
594
- return "\n==> Packet generic_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
1061
+ return "\n==> Packet generic_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
595
1062
 
596
1063
  def __eq__(self, other):
597
1064
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -628,7 +1095,7 @@ class GenericV10():
628
1095
  self.set(raw)
629
1096
 
630
1097
  def __repr__(self) -> str:
631
- return "\n==> Packet generic_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
1098
+ return "\n==> Packet generic_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
632
1099
 
633
1100
  def __eq__(self, other):
634
1101
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -665,7 +1132,7 @@ class GenericV9():
665
1132
  self.set(raw)
666
1133
 
667
1134
  def __repr__(self) -> str:
668
- return "\n==> Packet generic_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
1135
+ return "\n==> Packet generic_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
669
1136
 
670
1137
  def __eq__(self, other):
671
1138
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -702,7 +1169,7 @@ class GenericV8():
702
1169
  self.set(raw)
703
1170
 
704
1171
  def __repr__(self) -> str:
705
- return "\n==> Packet generic_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
1172
+ return "\n==> Packet generic_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
706
1173
 
707
1174
  def __eq__(self, other):
708
1175
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -739,7 +1206,7 @@ class GenericV7():
739
1206
  self.set(raw)
740
1207
 
741
1208
  def __repr__(self) -> str:
742
- return "\n==> Packet generic_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
1209
+ return "\n==> Packet generic_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
743
1210
 
744
1211
  def __eq__(self, other):
745
1212
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -776,7 +1243,7 @@ class GenericV1():
776
1243
  self.set(raw)
777
1244
 
778
1245
  def __repr__(self) -> str:
779
- return "\n==> Packet generic_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
1246
+ return "\n==> Packet generic_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
780
1247
 
781
1248
  def __eq__(self, other):
782
1249
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -799,6 +1266,44 @@ class GenericV1():
799
1266
  self.brg_mac = d[4]
800
1267
  self.unused2 = d[5]
801
1268
 
1269
+ class ActionGenericV13():
1270
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=0, action_params=0):
1271
+ self.msg_type = msg_type
1272
+ self.api_version = api_version
1273
+ self.seq_id = seq_id
1274
+ self.brg_mac = brg_mac
1275
+ self.action_id = action_id
1276
+ self.action_params = action_params
1277
+ if raw:
1278
+ self.set(raw)
1279
+
1280
+ def __repr__(self) -> str:
1281
+ return "\n==> Packet action_generic_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['action_params', f"0x{self.action_params:X}", self.action_params, ""]], tablefmt="texttable")
1282
+
1283
+ def __eq__(self, other):
1284
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
1285
+ return (
1286
+ self.msg_type == other.msg_type and
1287
+ self.api_version == other.api_version and
1288
+ self.brg_mac == other.brg_mac and
1289
+ self.action_id == other.action_id and
1290
+ self.action_params == other.action_params
1291
+ )
1292
+ return False
1293
+
1294
+ def dump(self):
1295
+ string = bitstruct.pack("u8u8u8u48u8u112", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.action_params)
1296
+ return string.hex().upper()
1297
+
1298
+ def set(self, string):
1299
+ d = bitstruct.unpack("u8u8u8u48u8u112", binascii.unhexlify(string))
1300
+ self.msg_type = d[0]
1301
+ self.api_version = d[1]
1302
+ self.seq_id = d[2]
1303
+ self.brg_mac = d[3]
1304
+ self.action_id = d[4]
1305
+ self.action_params = d[5]
1306
+
802
1307
  class ActionGenericV12():
803
1308
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=0, action_params=0):
804
1309
  self.msg_type = msg_type
@@ -811,7 +1316,7 @@ class ActionGenericV12():
811
1316
  self.set(raw)
812
1317
 
813
1318
  def __repr__(self) -> str:
814
- return "\n==> Packet action_generic_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['action_params', f"0x{self.action_params:X}", self.action_params]], tablefmt="texttable")
1319
+ return "\n==> Packet action_generic_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['action_params', f"0x{self.action_params:X}", self.action_params, ""]], tablefmt="texttable")
815
1320
 
816
1321
  def __eq__(self, other):
817
1322
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -849,7 +1354,7 @@ class ActionGenericV11():
849
1354
  self.set(raw)
850
1355
 
851
1356
  def __repr__(self) -> str:
852
- return "\n==> Packet action_generic_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['action_params', f"0x{self.action_params:X}", self.action_params]], tablefmt="texttable")
1357
+ return "\n==> Packet action_generic_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['action_params', f"0x{self.action_params:X}", self.action_params, ""]], tablefmt="texttable")
853
1358
 
854
1359
  def __eq__(self, other):
855
1360
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -887,7 +1392,7 @@ class ActionGenericV10():
887
1392
  self.set(raw)
888
1393
 
889
1394
  def __repr__(self) -> str:
890
- return "\n==> Packet action_generic_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['action_params', f"0x{self.action_params:X}", self.action_params]], tablefmt="texttable")
1395
+ return "\n==> Packet action_generic_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['action_params', f"0x{self.action_params:X}", self.action_params, ""]], tablefmt="texttable")
891
1396
 
892
1397
  def __eq__(self, other):
893
1398
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -925,7 +1430,7 @@ class ActionGenericV9():
925
1430
  self.set(raw)
926
1431
 
927
1432
  def __repr__(self) -> str:
928
- return "\n==> Packet action_generic_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['action_params', f"0x{self.action_params:X}", self.action_params]], tablefmt="texttable")
1433
+ return "\n==> Packet action_generic_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['action_params', f"0x{self.action_params:X}", self.action_params, ""]], tablefmt="texttable")
929
1434
 
930
1435
  def __eq__(self, other):
931
1436
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -963,7 +1468,7 @@ class ActionGenericV8():
963
1468
  self.set(raw)
964
1469
 
965
1470
  def __repr__(self) -> str:
966
- return "\n==> Packet action_generic_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['action_params', f"0x{self.action_params:X}", self.action_params]], tablefmt="texttable")
1471
+ return "\n==> Packet action_generic_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['action_params', f"0x{self.action_params:X}", self.action_params, ""]], tablefmt="texttable")
967
1472
 
968
1473
  def __eq__(self, other):
969
1474
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1001,7 +1506,7 @@ class ActionGenericV7():
1001
1506
  self.set(raw)
1002
1507
 
1003
1508
  def __repr__(self) -> str:
1004
- return "\n==> Packet action_generic_v7 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['action_params', f"0x{self.action_params:X}", self.action_params]], tablefmt="texttable")
1509
+ return "\n==> Packet action_generic_v7 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['action_params', f"0x{self.action_params:X}", self.action_params, ""]], tablefmt="texttable")
1005
1510
 
1006
1511
  def __eq__(self, other):
1007
1512
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1027,6 +1532,47 @@ class ActionGenericV7():
1027
1532
  self.action_id = d[4]
1028
1533
  self.action_params = d[5]
1029
1534
 
1535
+ class ActionGwHbV13():
1536
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1537
+ self.msg_type = msg_type
1538
+ self.api_version = api_version
1539
+ self.seq_id = seq_id
1540
+ self.brg_mac = brg_mac
1541
+ self.action_id = action_id
1542
+ self.gw_id = gw_id
1543
+ self.rssi = rssi
1544
+ if raw:
1545
+ self.set(raw)
1546
+
1547
+ def __repr__(self) -> str:
1548
+ return "\n==> Packet action_gw_hb_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""]], tablefmt="texttable")
1549
+
1550
+ def __eq__(self, other):
1551
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
1552
+ return (
1553
+ self.msg_type == other.msg_type and
1554
+ self.api_version == other.api_version and
1555
+ self.brg_mac == other.brg_mac and
1556
+ self.action_id == other.action_id and
1557
+ self.gw_id == other.gw_id and
1558
+ self.rssi == other.rssi
1559
+ )
1560
+ return False
1561
+
1562
+ def dump(self):
1563
+ string = bitstruct.pack("u8u8u8u48u8u104u8", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.gw_id, self.rssi)
1564
+ return string.hex().upper()
1565
+
1566
+ def set(self, string):
1567
+ d = bitstruct.unpack("u8u8u8u48u8u104u8", binascii.unhexlify(string))
1568
+ self.msg_type = d[0]
1569
+ self.api_version = d[1]
1570
+ self.seq_id = d[2]
1571
+ self.brg_mac = d[3]
1572
+ self.action_id = d[4]
1573
+ self.gw_id = d[5]
1574
+ self.rssi = d[6]
1575
+
1030
1576
  class ActionGwHbV12():
1031
1577
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1032
1578
  self.msg_type = msg_type
@@ -1040,7 +1586,48 @@ class ActionGwHbV12():
1040
1586
  self.set(raw)
1041
1587
 
1042
1588
  def __repr__(self) -> str:
1043
- return "\n==> Packet action_gw_hb_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id],['rssi', f"0x{self.rssi:X}", self.rssi]], tablefmt="texttable")
1589
+ return "\n==> Packet action_gw_hb_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""]], tablefmt="texttable")
1590
+
1591
+ def __eq__(self, other):
1592
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
1593
+ return (
1594
+ self.msg_type == other.msg_type and
1595
+ self.api_version == other.api_version and
1596
+ self.brg_mac == other.brg_mac and
1597
+ self.action_id == other.action_id and
1598
+ self.gw_id == other.gw_id and
1599
+ self.rssi == other.rssi
1600
+ )
1601
+ return False
1602
+
1603
+ def dump(self):
1604
+ string = bitstruct.pack("u8u8u8u48u8u104u8", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.gw_id, self.rssi)
1605
+ return string.hex().upper()
1606
+
1607
+ def set(self, string):
1608
+ d = bitstruct.unpack("u8u8u8u48u8u104u8", binascii.unhexlify(string))
1609
+ self.msg_type = d[0]
1610
+ self.api_version = d[1]
1611
+ self.seq_id = d[2]
1612
+ self.brg_mac = d[3]
1613
+ self.action_id = d[4]
1614
+ self.gw_id = d[5]
1615
+ self.rssi = d[6]
1616
+
1617
+ class ActionGwHbV11():
1618
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V11, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1619
+ self.msg_type = msg_type
1620
+ self.api_version = api_version
1621
+ self.seq_id = seq_id
1622
+ self.brg_mac = brg_mac
1623
+ self.action_id = action_id
1624
+ self.gw_id = gw_id
1625
+ self.rssi = rssi
1626
+ if raw:
1627
+ self.set(raw)
1628
+
1629
+ def __repr__(self) -> str:
1630
+ return "\n==> Packet action_gw_hb_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""]], tablefmt="texttable")
1044
1631
 
1045
1632
  def __eq__(self, other):
1046
1633
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1068,8 +1655,8 @@ class ActionGwHbV12():
1068
1655
  self.gw_id = d[5]
1069
1656
  self.rssi = d[6]
1070
1657
 
1071
- class ActionGwHbV11():
1072
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V11, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1658
+ class ActionGwHbV10():
1659
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V10, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1073
1660
  self.msg_type = msg_type
1074
1661
  self.api_version = api_version
1075
1662
  self.seq_id = seq_id
@@ -1081,7 +1668,7 @@ class ActionGwHbV11():
1081
1668
  self.set(raw)
1082
1669
 
1083
1670
  def __repr__(self) -> str:
1084
- return "\n==> Packet action_gw_hb_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id],['rssi', f"0x{self.rssi:X}", self.rssi]], tablefmt="texttable")
1671
+ return "\n==> Packet action_gw_hb_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""]], tablefmt="texttable")
1085
1672
 
1086
1673
  def __eq__(self, other):
1087
1674
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1109,8 +1696,8 @@ class ActionGwHbV11():
1109
1696
  self.gw_id = d[5]
1110
1697
  self.rssi = d[6]
1111
1698
 
1112
- class ActionGwHbV10():
1113
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V10, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1699
+ class ActionGwHbV9():
1700
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V9, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1114
1701
  self.msg_type = msg_type
1115
1702
  self.api_version = api_version
1116
1703
  self.seq_id = seq_id
@@ -1122,7 +1709,7 @@ class ActionGwHbV10():
1122
1709
  self.set(raw)
1123
1710
 
1124
1711
  def __repr__(self) -> str:
1125
- return "\n==> Packet action_gw_hb_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id],['rssi', f"0x{self.rssi:X}", self.rssi]], tablefmt="texttable")
1712
+ return "\n==> Packet action_gw_hb_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""]], tablefmt="texttable")
1126
1713
 
1127
1714
  def __eq__(self, other):
1128
1715
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1150,8 +1737,8 @@ class ActionGwHbV10():
1150
1737
  self.gw_id = d[5]
1151
1738
  self.rssi = d[6]
1152
1739
 
1153
- class ActionGwHbV9():
1154
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V9, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1740
+ class ActionGwHbV8():
1741
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V8, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1155
1742
  self.msg_type = msg_type
1156
1743
  self.api_version = api_version
1157
1744
  self.seq_id = seq_id
@@ -1163,7 +1750,7 @@ class ActionGwHbV9():
1163
1750
  self.set(raw)
1164
1751
 
1165
1752
  def __repr__(self) -> str:
1166
- return "\n==> Packet action_gw_hb_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id],['rssi', f"0x{self.rssi:X}", self.rssi]], tablefmt="texttable")
1753
+ return "\n==> Packet action_gw_hb_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""],['rssi', f"0x{self.rssi:X}", self.rssi, ""]], tablefmt="texttable")
1167
1754
 
1168
1755
  def __eq__(self, other):
1169
1756
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1191,20 +1778,19 @@ class ActionGwHbV9():
1191
1778
  self.gw_id = d[5]
1192
1779
  self.rssi = d[6]
1193
1780
 
1194
- class ActionGwHbV8():
1195
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V8, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GW_HB, gw_id=0, rssi=0):
1781
+ class ActionRebootV13():
1782
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_REBOOT, gw_id=0):
1196
1783
  self.msg_type = msg_type
1197
1784
  self.api_version = api_version
1198
1785
  self.seq_id = seq_id
1199
1786
  self.brg_mac = brg_mac
1200
1787
  self.action_id = action_id
1201
1788
  self.gw_id = gw_id
1202
- self.rssi = rssi
1203
1789
  if raw:
1204
1790
  self.set(raw)
1205
1791
 
1206
1792
  def __repr__(self) -> str:
1207
- return "\n==> Packet action_gw_hb_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id],['rssi', f"0x{self.rssi:X}", self.rssi]], tablefmt="texttable")
1793
+ return "\n==> Packet action_reboot_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""]], tablefmt="texttable")
1208
1794
 
1209
1795
  def __eq__(self, other):
1210
1796
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1213,24 +1799,22 @@ class ActionGwHbV8():
1213
1799
  self.api_version == other.api_version and
1214
1800
  self.brg_mac == other.brg_mac and
1215
1801
  self.action_id == other.action_id and
1216
- self.gw_id == other.gw_id and
1217
- self.rssi == other.rssi
1802
+ self.gw_id == other.gw_id
1218
1803
  )
1219
1804
  return False
1220
1805
 
1221
1806
  def dump(self):
1222
- string = bitstruct.pack("u8u8u8u48u8u104u8", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.gw_id, self.rssi)
1807
+ string = bitstruct.pack("u8u8u8u48u8u112", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.gw_id)
1223
1808
  return string.hex().upper()
1224
1809
 
1225
1810
  def set(self, string):
1226
- d = bitstruct.unpack("u8u8u8u48u8u104u8", binascii.unhexlify(string))
1811
+ d = bitstruct.unpack("u8u8u8u48u8u112", binascii.unhexlify(string))
1227
1812
  self.msg_type = d[0]
1228
1813
  self.api_version = d[1]
1229
1814
  self.seq_id = d[2]
1230
1815
  self.brg_mac = d[3]
1231
1816
  self.action_id = d[4]
1232
1817
  self.gw_id = d[5]
1233
- self.rssi = d[6]
1234
1818
 
1235
1819
  class ActionRebootV12():
1236
1820
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_REBOOT, gw_id=0):
@@ -1244,7 +1828,7 @@ class ActionRebootV12():
1244
1828
  self.set(raw)
1245
1829
 
1246
1830
  def __repr__(self) -> str:
1247
- return "\n==> Packet action_reboot_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id]], tablefmt="texttable")
1831
+ return "\n==> Packet action_reboot_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""]], tablefmt="texttable")
1248
1832
 
1249
1833
  def __eq__(self, other):
1250
1834
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1282,7 +1866,7 @@ class ActionRebootV11():
1282
1866
  self.set(raw)
1283
1867
 
1284
1868
  def __repr__(self) -> str:
1285
- return "\n==> Packet action_reboot_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id]], tablefmt="texttable")
1869
+ return "\n==> Packet action_reboot_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""]], tablefmt="texttable")
1286
1870
 
1287
1871
  def __eq__(self, other):
1288
1872
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1320,7 +1904,7 @@ class ActionRebootV10():
1320
1904
  self.set(raw)
1321
1905
 
1322
1906
  def __repr__(self) -> str:
1323
- return "\n==> Packet action_reboot_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id]], tablefmt="texttable")
1907
+ return "\n==> Packet action_reboot_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""]], tablefmt="texttable")
1324
1908
 
1325
1909
  def __eq__(self, other):
1326
1910
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1358,7 +1942,7 @@ class ActionRebootV9():
1358
1942
  self.set(raw)
1359
1943
 
1360
1944
  def __repr__(self) -> str:
1361
- return "\n==> Packet action_reboot_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id]], tablefmt="texttable")
1945
+ return "\n==> Packet action_reboot_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""]], tablefmt="texttable")
1362
1946
 
1363
1947
  def __eq__(self, other):
1364
1948
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1396,7 +1980,7 @@ class ActionRebootV8():
1396
1980
  self.set(raw)
1397
1981
 
1398
1982
  def __repr__(self) -> str:
1399
- return "\n==> Packet action_reboot_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['gw_id', f"0x{self.gw_id:X}", self.gw_id]], tablefmt="texttable")
1983
+ return "\n==> Packet action_reboot_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['gw_id', f"0x{self.gw_id:X}", self.gw_id, ""]], tablefmt="texttable")
1400
1984
 
1401
1985
  def __eq__(self, other):
1402
1986
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1422,6 +2006,43 @@ class ActionRebootV8():
1422
2006
  self.action_id = d[4]
1423
2007
  self.gw_id = d[5]
1424
2008
 
2009
+ class ActionBlinkV13():
2010
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_BLINK, unused0=0):
2011
+ self.msg_type = msg_type
2012
+ self.api_version = api_version
2013
+ self.seq_id = seq_id
2014
+ self.brg_mac = brg_mac
2015
+ self.action_id = action_id
2016
+ self.unused0 = unused0
2017
+ if raw:
2018
+ self.set(raw)
2019
+
2020
+ def __repr__(self) -> str:
2021
+ return "\n==> Packet action_blink_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2022
+
2023
+ def __eq__(self, other):
2024
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
2025
+ return (
2026
+ self.msg_type == other.msg_type and
2027
+ self.api_version == other.api_version and
2028
+ self.brg_mac == other.brg_mac and
2029
+ self.action_id == other.action_id
2030
+ )
2031
+ return False
2032
+
2033
+ def dump(self):
2034
+ string = bitstruct.pack("u8u8u8u48u8u112", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.unused0)
2035
+ return string.hex().upper()
2036
+
2037
+ def set(self, string):
2038
+ d = bitstruct.unpack("u8u8u8u48u8u112", binascii.unhexlify(string))
2039
+ self.msg_type = d[0]
2040
+ self.api_version = d[1]
2041
+ self.seq_id = d[2]
2042
+ self.brg_mac = d[3]
2043
+ self.action_id = d[4]
2044
+ self.unused0 = d[5]
2045
+
1425
2046
  class ActionBlinkV12():
1426
2047
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_BLINK, unused0=0):
1427
2048
  self.msg_type = msg_type
@@ -1434,7 +2055,7 @@ class ActionBlinkV12():
1434
2055
  self.set(raw)
1435
2056
 
1436
2057
  def __repr__(self) -> str:
1437
- return "\n==> Packet action_blink_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2058
+ return "\n==> Packet action_blink_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1438
2059
 
1439
2060
  def __eq__(self, other):
1440
2061
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1471,7 +2092,7 @@ class ActionBlinkV11():
1471
2092
  self.set(raw)
1472
2093
 
1473
2094
  def __repr__(self) -> str:
1474
- return "\n==> Packet action_blink_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2095
+ return "\n==> Packet action_blink_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1475
2096
 
1476
2097
  def __eq__(self, other):
1477
2098
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1508,7 +2129,7 @@ class ActionBlinkV10():
1508
2129
  self.set(raw)
1509
2130
 
1510
2131
  def __repr__(self) -> str:
1511
- return "\n==> Packet action_blink_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2132
+ return "\n==> Packet action_blink_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1512
2133
 
1513
2134
  def __eq__(self, other):
1514
2135
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1545,7 +2166,7 @@ class ActionBlinkV9():
1545
2166
  self.set(raw)
1546
2167
 
1547
2168
  def __repr__(self) -> str:
1548
- return "\n==> Packet action_blink_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2169
+ return "\n==> Packet action_blink_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1549
2170
 
1550
2171
  def __eq__(self, other):
1551
2172
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1582,7 +2203,7 @@ class ActionBlinkV8():
1582
2203
  self.set(raw)
1583
2204
 
1584
2205
  def __repr__(self) -> str:
1585
- return "\n==> Packet action_blink_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2206
+ return "\n==> Packet action_blink_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1586
2207
 
1587
2208
  def __eq__(self, other):
1588
2209
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1607,6 +2228,67 @@ class ActionBlinkV8():
1607
2228
  self.action_id = d[4]
1608
2229
  self.unused0 = d[5]
1609
2230
 
2231
+ class ActionGetModuleV13():
2232
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GET_MODULE, interface=0, datapath=0, energy2400=0, energy_sub1g=0, calibration=0, pwr_mgmt=0, ext_sensors=0, custom=0, unused0=0):
2233
+ self.msg_type = msg_type
2234
+ self.api_version = api_version
2235
+ self.seq_id = seq_id
2236
+ self.brg_mac = brg_mac
2237
+ self.action_id = action_id
2238
+ self.interface = interface
2239
+ self.datapath = datapath
2240
+ self.energy2400 = energy2400
2241
+ self.energy_sub1g = energy_sub1g
2242
+ self.calibration = calibration
2243
+ self.pwr_mgmt = pwr_mgmt
2244
+ self.ext_sensors = ext_sensors
2245
+ self.custom = custom
2246
+ self.unused0 = unused0
2247
+ if raw:
2248
+ self.set(raw)
2249
+
2250
+ def __repr__(self) -> str:
2251
+ return "\n==> Packet action_get_module_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['interface', f"0x{self.interface:X}", self.interface, ""],['datapath', f"0x{self.datapath:X}", self.datapath, ""],['energy2400', f"0x{self.energy2400:X}", self.energy2400, ""],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g, ""],['calibration', f"0x{self.calibration:X}", self.calibration, ""],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt, ""],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors, ""],['custom', f"0x{self.custom:X}", self.custom, ""]], tablefmt="texttable")
2252
+
2253
+ def __eq__(self, other):
2254
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
2255
+ return (
2256
+ self.msg_type == other.msg_type and
2257
+ self.api_version == other.api_version and
2258
+ self.brg_mac == other.brg_mac and
2259
+ self.action_id == other.action_id and
2260
+ self.interface == other.interface and
2261
+ self.datapath == other.datapath and
2262
+ self.energy2400 == other.energy2400 and
2263
+ self.energy_sub1g == other.energy_sub1g and
2264
+ self.calibration == other.calibration and
2265
+ self.pwr_mgmt == other.pwr_mgmt and
2266
+ self.ext_sensors == other.ext_sensors and
2267
+ self.custom == other.custom
2268
+ )
2269
+ return False
2270
+
2271
+ def dump(self):
2272
+ string = bitstruct.pack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.interface, self.datapath, self.energy2400, self.energy_sub1g, self.calibration, self.pwr_mgmt, self.ext_sensors, self.custom, self.unused0)
2273
+ return string.hex().upper()
2274
+
2275
+ def set(self, string):
2276
+ d = bitstruct.unpack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", binascii.unhexlify(string))
2277
+ self.msg_type = d[0]
2278
+ self.api_version = d[1]
2279
+ self.seq_id = d[2]
2280
+ self.brg_mac = d[3]
2281
+ self.action_id = d[4]
2282
+ self.interface = d[5]
2283
+ self.datapath = d[6]
2284
+ self.energy2400 = d[7]
2285
+ self.energy_sub1g = d[8]
2286
+ self.calibration = d[9]
2287
+ self.pwr_mgmt = d[10]
2288
+ self.ext_sensors = d[11]
2289
+ self.custom = d[12]
2290
+ self.unused0 = d[13]
2291
+
1610
2292
  class ActionGetModuleV12():
1611
2293
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GET_MODULE, interface=0, datapath=0, energy2400=0, energy_sub1g=0, calibration=0, pwr_mgmt=0, ext_sensors=0, custom=0, unused0=0):
1612
2294
  self.msg_type = msg_type
@@ -1627,7 +2309,7 @@ class ActionGetModuleV12():
1627
2309
  self.set(raw)
1628
2310
 
1629
2311
  def __repr__(self) -> str:
1630
- return "\n==> Packet action_get_module_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['interface', f"0x{self.interface:X}", self.interface],['datapath', f"0x{self.datapath:X}", self.datapath],['energy2400', f"0x{self.energy2400:X}", self.energy2400],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g],['calibration', f"0x{self.calibration:X}", self.calibration],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors],['custom', f"0x{self.custom:X}", self.custom]], tablefmt="texttable")
2312
+ return "\n==> Packet action_get_module_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['interface', f"0x{self.interface:X}", self.interface, ""],['datapath', f"0x{self.datapath:X}", self.datapath, ""],['energy2400', f"0x{self.energy2400:X}", self.energy2400, ""],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g, ""],['calibration', f"0x{self.calibration:X}", self.calibration, ""],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt, ""],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors, ""],['custom', f"0x{self.custom:X}", self.custom, ""]], tablefmt="texttable")
1631
2313
 
1632
2314
  def __eq__(self, other):
1633
2315
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1688,7 +2370,7 @@ class ActionGetModuleV11():
1688
2370
  self.set(raw)
1689
2371
 
1690
2372
  def __repr__(self) -> str:
1691
- return "\n==> Packet action_get_module_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['interface', f"0x{self.interface:X}", self.interface],['datapath', f"0x{self.datapath:X}", self.datapath],['energy2400', f"0x{self.energy2400:X}", self.energy2400],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g],['calibration', f"0x{self.calibration:X}", self.calibration],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors],['custom', f"0x{self.custom:X}", self.custom]], tablefmt="texttable")
2373
+ return "\n==> Packet action_get_module_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['interface', f"0x{self.interface:X}", self.interface, ""],['datapath', f"0x{self.datapath:X}", self.datapath, ""],['energy2400', f"0x{self.energy2400:X}", self.energy2400, ""],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g, ""],['calibration', f"0x{self.calibration:X}", self.calibration, ""],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt, ""],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors, ""],['custom', f"0x{self.custom:X}", self.custom, ""]], tablefmt="texttable")
1692
2374
 
1693
2375
  def __eq__(self, other):
1694
2376
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1749,7 +2431,7 @@ class ActionGetModuleV10():
1749
2431
  self.set(raw)
1750
2432
 
1751
2433
  def __repr__(self) -> str:
1752
- return "\n==> Packet action_get_module_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['interface', f"0x{self.interface:X}", self.interface],['datapath', f"0x{self.datapath:X}", self.datapath],['energy2400', f"0x{self.energy2400:X}", self.energy2400],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g],['calibration', f"0x{self.calibration:X}", self.calibration],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors],['custom', f"0x{self.custom:X}", self.custom]], tablefmt="texttable")
2434
+ return "\n==> Packet action_get_module_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['interface', f"0x{self.interface:X}", self.interface, ""],['datapath', f"0x{self.datapath:X}", self.datapath, ""],['energy2400', f"0x{self.energy2400:X}", self.energy2400, ""],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g, ""],['calibration', f"0x{self.calibration:X}", self.calibration, ""],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt, ""],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors, ""],['custom', f"0x{self.custom:X}", self.custom, ""]], tablefmt="texttable")
1753
2435
 
1754
2436
  def __eq__(self, other):
1755
2437
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1810,7 +2492,158 @@ class ActionGetModuleV9():
1810
2492
  self.set(raw)
1811
2493
 
1812
2494
  def __repr__(self) -> str:
1813
- return "\n==> Packet action_get_module_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['interface', f"0x{self.interface:X}", self.interface],['datapath', f"0x{self.datapath:X}", self.datapath],['energy2400', f"0x{self.energy2400:X}", self.energy2400],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g],['calibration', f"0x{self.calibration:X}", self.calibration],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors],['custom', f"0x{self.custom:X}", self.custom]], tablefmt="texttable")
2495
+ return "\n==> Packet action_get_module_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['interface', f"0x{self.interface:X}", self.interface, ""],['datapath', f"0x{self.datapath:X}", self.datapath, ""],['energy2400', f"0x{self.energy2400:X}", self.energy2400, ""],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g, ""],['calibration', f"0x{self.calibration:X}", self.calibration, ""],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt, ""],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors, ""],['custom', f"0x{self.custom:X}", self.custom, ""]], tablefmt="texttable")
2496
+
2497
+ def __eq__(self, other):
2498
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
2499
+ return (
2500
+ self.msg_type == other.msg_type and
2501
+ self.api_version == other.api_version and
2502
+ self.brg_mac == other.brg_mac and
2503
+ self.action_id == other.action_id and
2504
+ self.interface == other.interface and
2505
+ self.datapath == other.datapath and
2506
+ self.energy2400 == other.energy2400 and
2507
+ self.energy_sub1g == other.energy_sub1g and
2508
+ self.calibration == other.calibration and
2509
+ self.pwr_mgmt == other.pwr_mgmt and
2510
+ self.ext_sensors == other.ext_sensors and
2511
+ self.custom == other.custom
2512
+ )
2513
+ return False
2514
+
2515
+ def dump(self):
2516
+ string = bitstruct.pack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.interface, self.datapath, self.energy2400, self.energy_sub1g, self.calibration, self.pwr_mgmt, self.ext_sensors, self.custom, self.unused0)
2517
+ return string.hex().upper()
2518
+
2519
+ def set(self, string):
2520
+ d = bitstruct.unpack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", binascii.unhexlify(string))
2521
+ self.msg_type = d[0]
2522
+ self.api_version = d[1]
2523
+ self.seq_id = d[2]
2524
+ self.brg_mac = d[3]
2525
+ self.action_id = d[4]
2526
+ self.interface = d[5]
2527
+ self.datapath = d[6]
2528
+ self.energy2400 = d[7]
2529
+ self.energy_sub1g = d[8]
2530
+ self.calibration = d[9]
2531
+ self.pwr_mgmt = d[10]
2532
+ self.ext_sensors = d[11]
2533
+ self.custom = d[12]
2534
+ self.unused0 = d[13]
2535
+
2536
+ class ActionGetModuleV8():
2537
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V8, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GET_MODULE, interface=0, datapath=0, energy2400=0, energy_sub1g=0, calibration=0, pwr_mgmt=0, ext_sensors=0, custom=0, unused0=0):
2538
+ self.msg_type = msg_type
2539
+ self.api_version = api_version
2540
+ self.seq_id = seq_id
2541
+ self.brg_mac = brg_mac
2542
+ self.action_id = action_id
2543
+ self.interface = interface
2544
+ self.datapath = datapath
2545
+ self.energy2400 = energy2400
2546
+ self.energy_sub1g = energy_sub1g
2547
+ self.calibration = calibration
2548
+ self.pwr_mgmt = pwr_mgmt
2549
+ self.ext_sensors = ext_sensors
2550
+ self.custom = custom
2551
+ self.unused0 = unused0
2552
+ if raw:
2553
+ self.set(raw)
2554
+
2555
+ def __repr__(self) -> str:
2556
+ return "\n==> Packet action_get_module_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['interface', f"0x{self.interface:X}", self.interface, ""],['datapath', f"0x{self.datapath:X}", self.datapath, ""],['energy2400', f"0x{self.energy2400:X}", self.energy2400, ""],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g, ""],['calibration', f"0x{self.calibration:X}", self.calibration, ""],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt, ""],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors, ""],['custom', f"0x{self.custom:X}", self.custom, ""]], tablefmt="texttable")
2557
+
2558
+ def __eq__(self, other):
2559
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
2560
+ return (
2561
+ self.msg_type == other.msg_type and
2562
+ self.api_version == other.api_version and
2563
+ self.brg_mac == other.brg_mac and
2564
+ self.action_id == other.action_id and
2565
+ self.interface == other.interface and
2566
+ self.datapath == other.datapath and
2567
+ self.energy2400 == other.energy2400 and
2568
+ self.energy_sub1g == other.energy_sub1g and
2569
+ self.calibration == other.calibration and
2570
+ self.pwr_mgmt == other.pwr_mgmt and
2571
+ self.ext_sensors == other.ext_sensors and
2572
+ self.custom == other.custom
2573
+ )
2574
+ return False
2575
+
2576
+ def dump(self):
2577
+ string = bitstruct.pack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.interface, self.datapath, self.energy2400, self.energy_sub1g, self.calibration, self.pwr_mgmt, self.ext_sensors, self.custom, self.unused0)
2578
+ return string.hex().upper()
2579
+
2580
+ def set(self, string):
2581
+ d = bitstruct.unpack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", binascii.unhexlify(string))
2582
+ self.msg_type = d[0]
2583
+ self.api_version = d[1]
2584
+ self.seq_id = d[2]
2585
+ self.brg_mac = d[3]
2586
+ self.action_id = d[4]
2587
+ self.interface = d[5]
2588
+ self.datapath = d[6]
2589
+ self.energy2400 = d[7]
2590
+ self.energy_sub1g = d[8]
2591
+ self.calibration = d[9]
2592
+ self.pwr_mgmt = d[10]
2593
+ self.ext_sensors = d[11]
2594
+ self.custom = d[12]
2595
+ self.unused0 = d[13]
2596
+
2597
+ class ActionRestoreDefaultsV13():
2598
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
2599
+ self.msg_type = msg_type
2600
+ self.api_version = api_version
2601
+ self.seq_id = seq_id
2602
+ self.brg_mac = brg_mac
2603
+ self.action_id = action_id
2604
+ self.unused0 = unused0
2605
+ if raw:
2606
+ self.set(raw)
2607
+
2608
+ def __repr__(self) -> str:
2609
+ return "\n==> Packet action_restore_defaults_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2610
+
2611
+ def __eq__(self, other):
2612
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
2613
+ return (
2614
+ self.msg_type == other.msg_type and
2615
+ self.api_version == other.api_version and
2616
+ self.brg_mac == other.brg_mac and
2617
+ self.action_id == other.action_id
2618
+ )
2619
+ return False
2620
+
2621
+ def dump(self):
2622
+ string = bitstruct.pack("u8u8u8u48u8u112", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.unused0)
2623
+ return string.hex().upper()
2624
+
2625
+ def set(self, string):
2626
+ d = bitstruct.unpack("u8u8u8u48u8u112", binascii.unhexlify(string))
2627
+ self.msg_type = d[0]
2628
+ self.api_version = d[1]
2629
+ self.seq_id = d[2]
2630
+ self.brg_mac = d[3]
2631
+ self.action_id = d[4]
2632
+ self.unused0 = d[5]
2633
+
2634
+ class ActionRestoreDefaultsV12():
2635
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
2636
+ self.msg_type = msg_type
2637
+ self.api_version = api_version
2638
+ self.seq_id = seq_id
2639
+ self.brg_mac = brg_mac
2640
+ self.action_id = action_id
2641
+ self.unused0 = unused0
2642
+ if raw:
2643
+ self.set(raw)
2644
+
2645
+ def __repr__(self) -> str:
2646
+ return "\n==> Packet action_restore_defaults_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1814
2647
 
1815
2648
  def __eq__(self, other):
1816
2649
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1818,60 +2651,36 @@ class ActionGetModuleV9():
1818
2651
  self.msg_type == other.msg_type and
1819
2652
  self.api_version == other.api_version and
1820
2653
  self.brg_mac == other.brg_mac and
1821
- self.action_id == other.action_id and
1822
- self.interface == other.interface and
1823
- self.datapath == other.datapath and
1824
- self.energy2400 == other.energy2400 and
1825
- self.energy_sub1g == other.energy_sub1g and
1826
- self.calibration == other.calibration and
1827
- self.pwr_mgmt == other.pwr_mgmt and
1828
- self.ext_sensors == other.ext_sensors and
1829
- self.custom == other.custom
2654
+ self.action_id == other.action_id
1830
2655
  )
1831
2656
  return False
1832
2657
 
1833
2658
  def dump(self):
1834
- string = bitstruct.pack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.interface, self.datapath, self.energy2400, self.energy_sub1g, self.calibration, self.pwr_mgmt, self.ext_sensors, self.custom, self.unused0)
2659
+ string = bitstruct.pack("u8u8u8u48u8u112", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.unused0)
1835
2660
  return string.hex().upper()
1836
2661
 
1837
2662
  def set(self, string):
1838
- d = bitstruct.unpack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", binascii.unhexlify(string))
2663
+ d = bitstruct.unpack("u8u8u8u48u8u112", binascii.unhexlify(string))
1839
2664
  self.msg_type = d[0]
1840
2665
  self.api_version = d[1]
1841
2666
  self.seq_id = d[2]
1842
2667
  self.brg_mac = d[3]
1843
2668
  self.action_id = d[4]
1844
- self.interface = d[5]
1845
- self.datapath = d[6]
1846
- self.energy2400 = d[7]
1847
- self.energy_sub1g = d[8]
1848
- self.calibration = d[9]
1849
- self.pwr_mgmt = d[10]
1850
- self.ext_sensors = d[11]
1851
- self.custom = d[12]
1852
- self.unused0 = d[13]
2669
+ self.unused0 = d[5]
1853
2670
 
1854
- class ActionGetModuleV8():
1855
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V8, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GET_MODULE, interface=0, datapath=0, energy2400=0, energy_sub1g=0, calibration=0, pwr_mgmt=0, ext_sensors=0, custom=0, unused0=0):
2671
+ class ActionRestoreDefaultsV11():
2672
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V11, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
1856
2673
  self.msg_type = msg_type
1857
2674
  self.api_version = api_version
1858
2675
  self.seq_id = seq_id
1859
2676
  self.brg_mac = brg_mac
1860
2677
  self.action_id = action_id
1861
- self.interface = interface
1862
- self.datapath = datapath
1863
- self.energy2400 = energy2400
1864
- self.energy_sub1g = energy_sub1g
1865
- self.calibration = calibration
1866
- self.pwr_mgmt = pwr_mgmt
1867
- self.ext_sensors = ext_sensors
1868
- self.custom = custom
1869
2678
  self.unused0 = unused0
1870
2679
  if raw:
1871
2680
  self.set(raw)
1872
2681
 
1873
2682
  def __repr__(self) -> str:
1874
- return "\n==> Packet action_get_module_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['interface', f"0x{self.interface:X}", self.interface],['datapath', f"0x{self.datapath:X}", self.datapath],['energy2400', f"0x{self.energy2400:X}", self.energy2400],['energy_sub1g', f"0x{self.energy_sub1g:X}", self.energy_sub1g],['calibration', f"0x{self.calibration:X}", self.calibration],['pwr_mgmt', f"0x{self.pwr_mgmt:X}", self.pwr_mgmt],['ext_sensors', f"0x{self.ext_sensors:X}", self.ext_sensors],['custom', f"0x{self.custom:X}", self.custom]], tablefmt="texttable")
2683
+ return "\n==> Packet action_restore_defaults_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1875
2684
 
1876
2685
  def __eq__(self, other):
1877
2686
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1879,41 +2688,25 @@ class ActionGetModuleV8():
1879
2688
  self.msg_type == other.msg_type and
1880
2689
  self.api_version == other.api_version and
1881
2690
  self.brg_mac == other.brg_mac and
1882
- self.action_id == other.action_id and
1883
- self.interface == other.interface and
1884
- self.datapath == other.datapath and
1885
- self.energy2400 == other.energy2400 and
1886
- self.energy_sub1g == other.energy_sub1g and
1887
- self.calibration == other.calibration and
1888
- self.pwr_mgmt == other.pwr_mgmt and
1889
- self.ext_sensors == other.ext_sensors and
1890
- self.custom == other.custom
2691
+ self.action_id == other.action_id
1891
2692
  )
1892
2693
  return False
1893
2694
 
1894
2695
  def dump(self):
1895
- string = bitstruct.pack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.interface, self.datapath, self.energy2400, self.energy_sub1g, self.calibration, self.pwr_mgmt, self.ext_sensors, self.custom, self.unused0)
2696
+ string = bitstruct.pack("u8u8u8u48u8u112", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.unused0)
1896
2697
  return string.hex().upper()
1897
2698
 
1898
2699
  def set(self, string):
1899
- d = bitstruct.unpack("u8u8u8u48u8u1u1u1u1u1u1u1u1u104", binascii.unhexlify(string))
2700
+ d = bitstruct.unpack("u8u8u8u48u8u112", binascii.unhexlify(string))
1900
2701
  self.msg_type = d[0]
1901
2702
  self.api_version = d[1]
1902
2703
  self.seq_id = d[2]
1903
2704
  self.brg_mac = d[3]
1904
2705
  self.action_id = d[4]
1905
- self.interface = d[5]
1906
- self.datapath = d[6]
1907
- self.energy2400 = d[7]
1908
- self.energy_sub1g = d[8]
1909
- self.calibration = d[9]
1910
- self.pwr_mgmt = d[10]
1911
- self.ext_sensors = d[11]
1912
- self.custom = d[12]
1913
- self.unused0 = d[13]
2706
+ self.unused0 = d[5]
1914
2707
 
1915
- class ActionRestoreDefaultsV12():
1916
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
2708
+ class ActionRestoreDefaultsV10():
2709
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V10, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
1917
2710
  self.msg_type = msg_type
1918
2711
  self.api_version = api_version
1919
2712
  self.seq_id = seq_id
@@ -1924,7 +2717,7 @@ class ActionRestoreDefaultsV12():
1924
2717
  self.set(raw)
1925
2718
 
1926
2719
  def __repr__(self) -> str:
1927
- return "\n==> Packet action_restore_defaults_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2720
+ return "\n==> Packet action_restore_defaults_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1928
2721
 
1929
2722
  def __eq__(self, other):
1930
2723
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1949,8 +2742,8 @@ class ActionRestoreDefaultsV12():
1949
2742
  self.action_id = d[4]
1950
2743
  self.unused0 = d[5]
1951
2744
 
1952
- class ActionRestoreDefaultsV11():
1953
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V11, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
2745
+ class ActionRestoreDefaultsV9():
2746
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V9, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
1954
2747
  self.msg_type = msg_type
1955
2748
  self.api_version = api_version
1956
2749
  self.seq_id = seq_id
@@ -1961,7 +2754,7 @@ class ActionRestoreDefaultsV11():
1961
2754
  self.set(raw)
1962
2755
 
1963
2756
  def __repr__(self) -> str:
1964
- return "\n==> Packet action_restore_defaults_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2757
+ return "\n==> Packet action_restore_defaults_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
1965
2758
 
1966
2759
  def __eq__(self, other):
1967
2760
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -1986,8 +2779,8 @@ class ActionRestoreDefaultsV11():
1986
2779
  self.action_id = d[4]
1987
2780
  self.unused0 = d[5]
1988
2781
 
1989
- class ActionRestoreDefaultsV10():
1990
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V10, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
2782
+ class ActionRestoreDefaultsV8():
2783
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V8, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
1991
2784
  self.msg_type = msg_type
1992
2785
  self.api_version = api_version
1993
2786
  self.seq_id = seq_id
@@ -1998,7 +2791,7 @@ class ActionRestoreDefaultsV10():
1998
2791
  self.set(raw)
1999
2792
 
2000
2793
  def __repr__(self) -> str:
2001
- return "\n==> Packet action_restore_defaults_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2794
+ return "\n==> Packet action_restore_defaults_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2002
2795
 
2003
2796
  def __eq__(self, other):
2004
2797
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2023,8 +2816,8 @@ class ActionRestoreDefaultsV10():
2023
2816
  self.action_id = d[4]
2024
2817
  self.unused0 = d[5]
2025
2818
 
2026
- class ActionRestoreDefaultsV9():
2027
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V9, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
2819
+ class ActionSendHbV13():
2820
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2028
2821
  self.msg_type = msg_type
2029
2822
  self.api_version = api_version
2030
2823
  self.seq_id = seq_id
@@ -2035,7 +2828,7 @@ class ActionRestoreDefaultsV9():
2035
2828
  self.set(raw)
2036
2829
 
2037
2830
  def __repr__(self) -> str:
2038
- return "\n==> Packet action_restore_defaults_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2831
+ return "\n==> Packet action_send_hb_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2039
2832
 
2040
2833
  def __eq__(self, other):
2041
2834
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2060,8 +2853,8 @@ class ActionRestoreDefaultsV9():
2060
2853
  self.action_id = d[4]
2061
2854
  self.unused0 = d[5]
2062
2855
 
2063
- class ActionRestoreDefaultsV8():
2064
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V8, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_RESTORE_DEFAULTS, unused0=0):
2856
+ class ActionSendHbV12():
2857
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2065
2858
  self.msg_type = msg_type
2066
2859
  self.api_version = api_version
2067
2860
  self.seq_id = seq_id
@@ -2072,7 +2865,7 @@ class ActionRestoreDefaultsV8():
2072
2865
  self.set(raw)
2073
2866
 
2074
2867
  def __repr__(self) -> str:
2075
- return "\n==> Packet action_restore_defaults_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2868
+ return "\n==> Packet action_send_hb_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2076
2869
 
2077
2870
  def __eq__(self, other):
2078
2871
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2097,8 +2890,8 @@ class ActionRestoreDefaultsV8():
2097
2890
  self.action_id = d[4]
2098
2891
  self.unused0 = d[5]
2099
2892
 
2100
- class ActionSendHbV12():
2101
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2893
+ class ActionSendHbV11():
2894
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V11, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2102
2895
  self.msg_type = msg_type
2103
2896
  self.api_version = api_version
2104
2897
  self.seq_id = seq_id
@@ -2109,7 +2902,7 @@ class ActionSendHbV12():
2109
2902
  self.set(raw)
2110
2903
 
2111
2904
  def __repr__(self) -> str:
2112
- return "\n==> Packet action_send_hb_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2905
+ return "\n==> Packet action_send_hb_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2113
2906
 
2114
2907
  def __eq__(self, other):
2115
2908
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2134,8 +2927,8 @@ class ActionSendHbV12():
2134
2927
  self.action_id = d[4]
2135
2928
  self.unused0 = d[5]
2136
2929
 
2137
- class ActionSendHbV11():
2138
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V11, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2930
+ class ActionSendHbV10():
2931
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V10, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2139
2932
  self.msg_type = msg_type
2140
2933
  self.api_version = api_version
2141
2934
  self.seq_id = seq_id
@@ -2146,7 +2939,7 @@ class ActionSendHbV11():
2146
2939
  self.set(raw)
2147
2940
 
2148
2941
  def __repr__(self) -> str:
2149
- return "\n==> Packet action_send_hb_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2942
+ return "\n==> Packet action_send_hb_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2150
2943
 
2151
2944
  def __eq__(self, other):
2152
2945
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2171,8 +2964,8 @@ class ActionSendHbV11():
2171
2964
  self.action_id = d[4]
2172
2965
  self.unused0 = d[5]
2173
2966
 
2174
- class ActionSendHbV10():
2175
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V10, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2967
+ class ActionSendHbV9():
2968
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V9, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2176
2969
  self.msg_type = msg_type
2177
2970
  self.api_version = api_version
2178
2971
  self.seq_id = seq_id
@@ -2183,7 +2976,7 @@ class ActionSendHbV10():
2183
2976
  self.set(raw)
2184
2977
 
2185
2978
  def __repr__(self) -> str:
2186
- return "\n==> Packet action_send_hb_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
2979
+ return "\n==> Packet action_send_hb_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2187
2980
 
2188
2981
  def __eq__(self, other):
2189
2982
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2208,8 +3001,8 @@ class ActionSendHbV10():
2208
3001
  self.action_id = d[4]
2209
3002
  self.unused0 = d[5]
2210
3003
 
2211
- class ActionSendHbV9():
2212
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V9, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
3004
+ class ActionSendHbV8():
3005
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V8, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
2213
3006
  self.msg_type = msg_type
2214
3007
  self.api_version = api_version
2215
3008
  self.seq_id = seq_id
@@ -2220,7 +3013,7 @@ class ActionSendHbV9():
2220
3013
  self.set(raw)
2221
3014
 
2222
3015
  def __repr__(self) -> str:
2223
- return "\n==> Packet action_send_hb_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3016
+ return "\n==> Packet action_send_hb_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2224
3017
 
2225
3018
  def __eq__(self, other):
2226
3019
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2245,8 +3038,8 @@ class ActionSendHbV9():
2245
3038
  self.action_id = d[4]
2246
3039
  self.unused0 = d[5]
2247
3040
 
2248
- class ActionSendHbV8():
2249
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V8, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_SEND_HB, unused0=0):
3041
+ class ActionGetBatterySensorV13():
3042
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GET_BATTERY_SENSOR, unused0=0):
2250
3043
  self.msg_type = msg_type
2251
3044
  self.api_version = api_version
2252
3045
  self.seq_id = seq_id
@@ -2257,7 +3050,7 @@ class ActionSendHbV8():
2257
3050
  self.set(raw)
2258
3051
 
2259
3052
  def __repr__(self) -> str:
2260
- return "\n==> Packet action_send_hb_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3053
+ return "\n==> Packet action_get_battery_sensor_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2261
3054
 
2262
3055
  def __eq__(self, other):
2263
3056
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2294,7 +3087,7 @@ class ActionGetBatterySensorV12():
2294
3087
  self.set(raw)
2295
3088
 
2296
3089
  def __repr__(self) -> str:
2297
- return "\n==> Packet action_get_battery_sensor_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3090
+ return "\n==> Packet action_get_battery_sensor_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2298
3091
 
2299
3092
  def __eq__(self, other):
2300
3093
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2331,7 +3124,7 @@ class ActionGetBatterySensorV11():
2331
3124
  self.set(raw)
2332
3125
 
2333
3126
  def __repr__(self) -> str:
2334
- return "\n==> Packet action_get_battery_sensor_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3127
+ return "\n==> Packet action_get_battery_sensor_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2335
3128
 
2336
3129
  def __eq__(self, other):
2337
3130
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2368,7 +3161,7 @@ class ActionGetBatterySensorV10():
2368
3161
  self.set(raw)
2369
3162
 
2370
3163
  def __repr__(self) -> str:
2371
- return "\n==> Packet action_get_battery_sensor_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3164
+ return "\n==> Packet action_get_battery_sensor_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2372
3165
 
2373
3166
  def __eq__(self, other):
2374
3167
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2405,7 +3198,7 @@ class ActionGetBatterySensorV9():
2405
3198
  self.set(raw)
2406
3199
 
2407
3200
  def __repr__(self) -> str:
2408
- return "\n==> Packet action_get_battery_sensor_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3201
+ return "\n==> Packet action_get_battery_sensor_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2409
3202
 
2410
3203
  def __eq__(self, other):
2411
3204
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2442,7 +3235,44 @@ class ActionGetBatterySensorV8():
2442
3235
  self.set(raw)
2443
3236
 
2444
3237
  def __repr__(self) -> str:
2445
- return "\n==> Packet action_get_battery_sensor_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3238
+ return "\n==> Packet action_get_battery_sensor_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
3239
+
3240
+ def __eq__(self, other):
3241
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
3242
+ return (
3243
+ self.msg_type == other.msg_type and
3244
+ self.api_version == other.api_version and
3245
+ self.brg_mac == other.brg_mac and
3246
+ self.action_id == other.action_id
3247
+ )
3248
+ return False
3249
+
3250
+ def dump(self):
3251
+ string = bitstruct.pack("u8u8u8u48u8u112", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.unused0)
3252
+ return string.hex().upper()
3253
+
3254
+ def set(self, string):
3255
+ d = bitstruct.unpack("u8u8u8u48u8u112", binascii.unhexlify(string))
3256
+ self.msg_type = d[0]
3257
+ self.api_version = d[1]
3258
+ self.seq_id = d[2]
3259
+ self.brg_mac = d[3]
3260
+ self.action_id = d[4]
3261
+ self.unused0 = d[5]
3262
+
3263
+ class ActionGetPofDataV13():
3264
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_GET_POF_DATA, unused0=0):
3265
+ self.msg_type = msg_type
3266
+ self.api_version = api_version
3267
+ self.seq_id = seq_id
3268
+ self.brg_mac = brg_mac
3269
+ self.action_id = action_id
3270
+ self.unused0 = unused0
3271
+ if raw:
3272
+ self.set(raw)
3273
+
3274
+ def __repr__(self) -> str:
3275
+ return "\n==> Packet action_get_pof_data_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2446
3276
 
2447
3277
  def __eq__(self, other):
2448
3278
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2479,7 +3309,7 @@ class ActionGetPofDataV12():
2479
3309
  self.set(raw)
2480
3310
 
2481
3311
  def __repr__(self) -> str:
2482
- return "\n==> Packet action_get_pof_data_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3312
+ return "\n==> Packet action_get_pof_data_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2483
3313
 
2484
3314
  def __eq__(self, other):
2485
3315
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2516,7 +3346,7 @@ class ActionGetPofDataV11():
2516
3346
  self.set(raw)
2517
3347
 
2518
3348
  def __repr__(self) -> str:
2519
- return "\n==> Packet action_get_pof_data_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3349
+ return "\n==> Packet action_get_pof_data_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2520
3350
 
2521
3351
  def __eq__(self, other):
2522
3352
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2553,7 +3383,7 @@ class ActionGetPofDataV10():
2553
3383
  self.set(raw)
2554
3384
 
2555
3385
  def __repr__(self) -> str:
2556
- return "\n==> Packet action_get_pof_data_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3386
+ return "\n==> Packet action_get_pof_data_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2557
3387
 
2558
3388
  def __eq__(self, other):
2559
3389
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2590,7 +3420,7 @@ class ActionGetPofDataV9():
2590
3420
  self.set(raw)
2591
3421
 
2592
3422
  def __repr__(self) -> str:
2593
- return "\n==> Packet action_get_pof_data_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3423
+ return "\n==> Packet action_get_pof_data_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2594
3424
 
2595
3425
  def __eq__(self, other):
2596
3426
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2627,7 +3457,7 @@ class ActionGetPofDataV8():
2627
3457
  self.set(raw)
2628
3458
 
2629
3459
  def __repr__(self) -> str:
2630
- return "\n==> Packet action_get_pof_data_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id]], tablefmt="texttable")
3460
+ return "\n==> Packet action_get_pof_data_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""]], tablefmt="texttable")
2631
3461
 
2632
3462
  def __eq__(self, other):
2633
3463
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2652,6 +3482,46 @@ class ActionGetPofDataV8():
2652
3482
  self.action_id = d[4]
2653
3483
  self.unused0 = d[5]
2654
3484
 
3485
+ class ActionPlStatusV13():
3486
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V13, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_PL_STATUS, status=0, unused0=0):
3487
+ self.msg_type = msg_type
3488
+ self.api_version = api_version
3489
+ self.seq_id = seq_id
3490
+ self.brg_mac = brg_mac
3491
+ self.action_id = action_id
3492
+ self.status = status
3493
+ self.unused0 = unused0
3494
+ if raw:
3495
+ self.set(raw)
3496
+
3497
+ def __repr__(self) -> str:
3498
+ return "\n==> Packet action_pl_status_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['status', f"0x{self.status:X}", self.status, ""]], tablefmt="texttable")
3499
+
3500
+ def __eq__(self, other):
3501
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
3502
+ return (
3503
+ self.msg_type == other.msg_type and
3504
+ self.api_version == other.api_version and
3505
+ self.brg_mac == other.brg_mac and
3506
+ self.action_id == other.action_id and
3507
+ self.status == other.status
3508
+ )
3509
+ return False
3510
+
3511
+ def dump(self):
3512
+ string = bitstruct.pack("u8u8u8u48u8u8u104", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.action_id, self.status, self.unused0)
3513
+ return string.hex().upper()
3514
+
3515
+ def set(self, string):
3516
+ d = bitstruct.unpack("u8u8u8u48u8u8u104", binascii.unhexlify(string))
3517
+ self.msg_type = d[0]
3518
+ self.api_version = d[1]
3519
+ self.seq_id = d[2]
3520
+ self.brg_mac = d[3]
3521
+ self.action_id = d[4]
3522
+ self.status = d[5]
3523
+ self.unused0 = d[6]
3524
+
2655
3525
  class ActionPlStatusV12():
2656
3526
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_ACTION, api_version=API_VERSION_V12, seq_id=0, brg_mac=ACTION_EMPTY, action_id=ACTION_PL_STATUS, status=0, unused0=0):
2657
3527
  self.msg_type = msg_type
@@ -2665,7 +3535,7 @@ class ActionPlStatusV12():
2665
3535
  self.set(raw)
2666
3536
 
2667
3537
  def __repr__(self) -> str:
2668
- return "\n==> Packet action_pl_status_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['status', f"0x{self.status:X}", self.status]], tablefmt="texttable")
3538
+ return "\n==> Packet action_pl_status_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['status', f"0x{self.status:X}", self.status, ""]], tablefmt="texttable")
2669
3539
 
2670
3540
  def __eq__(self, other):
2671
3541
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2705,7 +3575,7 @@ class ActionPlStatusV11():
2705
3575
  self.set(raw)
2706
3576
 
2707
3577
  def __repr__(self) -> str:
2708
- return "\n==> Packet action_pl_status_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['status', f"0x{self.status:X}", self.status]], tablefmt="texttable")
3578
+ return "\n==> Packet action_pl_status_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['status', f"0x{self.status:X}", self.status, ""]], tablefmt="texttable")
2709
3579
 
2710
3580
  def __eq__(self, other):
2711
3581
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2745,7 +3615,7 @@ class ActionPlStatusV10():
2745
3615
  self.set(raw)
2746
3616
 
2747
3617
  def __repr__(self) -> str:
2748
- return "\n==> Packet action_pl_status_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['status', f"0x{self.status:X}", self.status]], tablefmt="texttable")
3618
+ return "\n==> Packet action_pl_status_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['status', f"0x{self.status:X}", self.status, ""]], tablefmt="texttable")
2749
3619
 
2750
3620
  def __eq__(self, other):
2751
3621
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2772,6 +3642,52 @@ class ActionPlStatusV10():
2772
3642
  self.status = d[5]
2773
3643
  self.unused0 = d[6]
2774
3644
 
3645
+ class Brg2BrgOtaV13():
3646
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_BRG2BRG, api_version=API_VERSION_V13, seq_id=0, src_brg_mac=ACTION_EMPTY, action_id=BRG2BRG_ACTION_OTA, dest_brg_mac=ACTION_EMPTY, app=0, bootloader=0, unused0=0):
3647
+ self.msg_type = msg_type
3648
+ self.api_version = api_version
3649
+ self.seq_id = seq_id
3650
+ self.src_brg_mac = src_brg_mac
3651
+ self.action_id = action_id
3652
+ self.dest_brg_mac = dest_brg_mac
3653
+ self.app = app
3654
+ self.bootloader = bootloader
3655
+ self.unused0 = unused0
3656
+ if raw:
3657
+ self.set(raw)
3658
+
3659
+ def __repr__(self) -> str:
3660
+ return "\n==> Packet brg2brg_ota_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['app', f"0x{self.app:X}", self.app, ""],['bootloader', f"0x{self.bootloader:X}", self.bootloader, ""]], tablefmt="texttable")
3661
+
3662
+ def __eq__(self, other):
3663
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
3664
+ return (
3665
+ self.msg_type == other.msg_type and
3666
+ self.api_version == other.api_version and
3667
+ self.src_brg_mac == other.src_brg_mac and
3668
+ self.action_id == other.action_id and
3669
+ self.dest_brg_mac == other.dest_brg_mac and
3670
+ self.app == other.app and
3671
+ self.bootloader == other.bootloader
3672
+ )
3673
+ return False
3674
+
3675
+ def dump(self):
3676
+ string = bitstruct.pack("u8u8u8u48u8u48u8u8u48", self.msg_type, self.api_version, self.seq_id, self.src_brg_mac, self.action_id, self.dest_brg_mac, self.app, self.bootloader, self.unused0)
3677
+ return string.hex().upper()
3678
+
3679
+ def set(self, string):
3680
+ d = bitstruct.unpack("u8u8u8u48u8u48u8u8u48", binascii.unhexlify(string))
3681
+ self.msg_type = d[0]
3682
+ self.api_version = d[1]
3683
+ self.seq_id = d[2]
3684
+ self.src_brg_mac = d[3]
3685
+ self.action_id = d[4]
3686
+ self.dest_brg_mac = d[5]
3687
+ self.app = d[6]
3688
+ self.bootloader = d[7]
3689
+ self.unused0 = d[8]
3690
+
2775
3691
  class Brg2BrgOtaV12():
2776
3692
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_BRG2BRG, api_version=API_VERSION_V12, seq_id=0, src_brg_mac=ACTION_EMPTY, action_id=BRG2BRG_ACTION_OTA, dest_brg_mac=ACTION_EMPTY, app=0, bootloader=0, unused0=0):
2777
3693
  self.msg_type = msg_type
@@ -2787,7 +3703,7 @@ class Brg2BrgOtaV12():
2787
3703
  self.set(raw)
2788
3704
 
2789
3705
  def __repr__(self) -> str:
2790
- return "\n==> Packet brg2brg_ota_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac],['app', f"0x{self.app:X}", self.app],['bootloader', f"0x{self.bootloader:X}", self.bootloader]], tablefmt="texttable")
3706
+ return "\n==> Packet brg2brg_ota_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['app', f"0x{self.app:X}", self.app, ""],['bootloader', f"0x{self.bootloader:X}", self.bootloader, ""]], tablefmt="texttable")
2791
3707
 
2792
3708
  def __eq__(self, other):
2793
3709
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2833,7 +3749,7 @@ class Brg2BrgOtaV11():
2833
3749
  self.set(raw)
2834
3750
 
2835
3751
  def __repr__(self) -> str:
2836
- return "\n==> Packet brg2brg_ota_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac],['app', f"0x{self.app:X}", self.app],['bootloader', f"0x{self.bootloader:X}", self.bootloader]], tablefmt="texttable")
3752
+ return "\n==> Packet brg2brg_ota_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['app', f"0x{self.app:X}", self.app, ""],['bootloader', f"0x{self.bootloader:X}", self.bootloader, ""]], tablefmt="texttable")
2837
3753
 
2838
3754
  def __eq__(self, other):
2839
3755
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2879,7 +3795,7 @@ class Brg2BrgOtaV10():
2879
3795
  self.set(raw)
2880
3796
 
2881
3797
  def __repr__(self) -> str:
2882
- return "\n==> Packet brg2brg_ota_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac],['app', f"0x{self.app:X}", self.app],['bootloader', f"0x{self.bootloader:X}", self.bootloader]], tablefmt="texttable")
3798
+ return "\n==> Packet brg2brg_ota_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['app', f"0x{self.app:X}", self.app, ""],['bootloader', f"0x{self.bootloader:X}", self.bootloader, ""]], tablefmt="texttable")
2883
3799
 
2884
3800
  def __eq__(self, other):
2885
3801
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2895,35 +3811,77 @@ class Brg2BrgOtaV10():
2895
3811
  return False
2896
3812
 
2897
3813
  def dump(self):
2898
- string = bitstruct.pack("u8u8u8u48u8u48u8u8u48", self.msg_type, self.api_version, self.seq_id, self.src_brg_mac, self.action_id, self.dest_brg_mac, self.app, self.bootloader, self.unused0)
3814
+ string = bitstruct.pack("u8u8u8u48u8u48u8u8u48", self.msg_type, self.api_version, self.seq_id, self.src_brg_mac, self.action_id, self.dest_brg_mac, self.app, self.bootloader, self.unused0)
3815
+ return string.hex().upper()
3816
+
3817
+ def set(self, string):
3818
+ d = bitstruct.unpack("u8u8u8u48u8u48u8u8u48", binascii.unhexlify(string))
3819
+ self.msg_type = d[0]
3820
+ self.api_version = d[1]
3821
+ self.seq_id = d[2]
3822
+ self.src_brg_mac = d[3]
3823
+ self.action_id = d[4]
3824
+ self.dest_brg_mac = d[5]
3825
+ self.app = d[6]
3826
+ self.bootloader = d[7]
3827
+ self.unused0 = d[8]
3828
+
3829
+ class Brg2BrgOtaV9():
3830
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_BRG2BRG, api_version=API_VERSION_V9, seq_id=0, src_brg_mac=ACTION_EMPTY, action_id=BRG2BRG_ACTION_OTA, dest_brg_mac=ACTION_EMPTY, unused0=0):
3831
+ self.msg_type = msg_type
3832
+ self.api_version = api_version
3833
+ self.seq_id = seq_id
3834
+ self.src_brg_mac = src_brg_mac
3835
+ self.action_id = action_id
3836
+ self.dest_brg_mac = dest_brg_mac
3837
+ self.unused0 = unused0
3838
+ if raw:
3839
+ self.set(raw)
3840
+
3841
+ def __repr__(self) -> str:
3842
+ return "\n==> Packet brg2brg_ota_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""]], tablefmt="texttable")
3843
+
3844
+ def __eq__(self, other):
3845
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
3846
+ return (
3847
+ self.msg_type == other.msg_type and
3848
+ self.api_version == other.api_version and
3849
+ self.src_brg_mac == other.src_brg_mac and
3850
+ self.action_id == other.action_id and
3851
+ self.dest_brg_mac == other.dest_brg_mac
3852
+ )
3853
+ return False
3854
+
3855
+ def dump(self):
3856
+ string = bitstruct.pack("u8u8u8u48u8u48u64", self.msg_type, self.api_version, self.seq_id, self.src_brg_mac, self.action_id, self.dest_brg_mac, self.unused0)
2899
3857
  return string.hex().upper()
2900
3858
 
2901
3859
  def set(self, string):
2902
- d = bitstruct.unpack("u8u8u8u48u8u48u8u8u48", binascii.unhexlify(string))
3860
+ d = bitstruct.unpack("u8u8u8u48u8u48u64", binascii.unhexlify(string))
2903
3861
  self.msg_type = d[0]
2904
3862
  self.api_version = d[1]
2905
3863
  self.seq_id = d[2]
2906
3864
  self.src_brg_mac = d[3]
2907
3865
  self.action_id = d[4]
2908
3866
  self.dest_brg_mac = d[5]
2909
- self.app = d[6]
2910
- self.bootloader = d[7]
2911
- self.unused0 = d[8]
3867
+ self.unused0 = d[6]
2912
3868
 
2913
- class Brg2BrgOtaV9():
2914
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_BRG2BRG, api_version=API_VERSION_V9, seq_id=0, src_brg_mac=ACTION_EMPTY, action_id=BRG2BRG_ACTION_OTA, dest_brg_mac=ACTION_EMPTY, unused0=0):
3869
+ class Brg2BrgCfgV13():
3870
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_BRG2BRG, api_version=API_VERSION_V13, seq_id=0, src_brg_mac=ACTION_EMPTY, action_id=BRG2BRG_ACTION_CFG, dest_brg_mac=ACTION_EMPTY, module_type=MODULE_EMPTY, unused0=0, unused1=0):
2915
3871
  self.msg_type = msg_type
2916
3872
  self.api_version = api_version
2917
3873
  self.seq_id = seq_id
2918
3874
  self.src_brg_mac = src_brg_mac
2919
3875
  self.action_id = action_id
2920
3876
  self.dest_brg_mac = dest_brg_mac
3877
+ self.module_type = module_type
2921
3878
  self.unused0 = unused0
3879
+ self.unused1 = unused1
2922
3880
  if raw:
2923
3881
  self.set(raw)
2924
3882
 
2925
3883
  def __repr__(self) -> str:
2926
- return "\n==> Packet brg2brg_ota_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac]], tablefmt="texttable")
3884
+ return "\n==> Packet brg2brg_cfg_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['module_type', f"0x{self.module_type:X}", self.module_type, ""]], tablefmt="texttable")
2927
3885
 
2928
3886
  def __eq__(self, other):
2929
3887
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -2932,23 +3890,26 @@ class Brg2BrgOtaV9():
2932
3890
  self.api_version == other.api_version and
2933
3891
  self.src_brg_mac == other.src_brg_mac and
2934
3892
  self.action_id == other.action_id and
2935
- self.dest_brg_mac == other.dest_brg_mac
3893
+ self.dest_brg_mac == other.dest_brg_mac and
3894
+ self.module_type == other.module_type
2936
3895
  )
2937
3896
  return False
2938
3897
 
2939
3898
  def dump(self):
2940
- string = bitstruct.pack("u8u8u8u48u8u48u64", self.msg_type, self.api_version, self.seq_id, self.src_brg_mac, self.action_id, self.dest_brg_mac, self.unused0)
3899
+ string = bitstruct.pack("u8u8u8u48u8u48u4u4u56", self.msg_type, self.api_version, self.seq_id, self.src_brg_mac, self.action_id, self.dest_brg_mac, self.module_type, self.unused0, self.unused1)
2941
3900
  return string.hex().upper()
2942
3901
 
2943
3902
  def set(self, string):
2944
- d = bitstruct.unpack("u8u8u8u48u8u48u64", binascii.unhexlify(string))
3903
+ d = bitstruct.unpack("u8u8u8u48u8u48u4u4u56", binascii.unhexlify(string))
2945
3904
  self.msg_type = d[0]
2946
3905
  self.api_version = d[1]
2947
3906
  self.seq_id = d[2]
2948
3907
  self.src_brg_mac = d[3]
2949
3908
  self.action_id = d[4]
2950
3909
  self.dest_brg_mac = d[5]
2951
- self.unused0 = d[6]
3910
+ self.module_type = d[6]
3911
+ self.unused0 = d[7]
3912
+ self.unused1 = d[8]
2952
3913
 
2953
3914
  class Brg2BrgCfgV12():
2954
3915
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_BRG2BRG, api_version=API_VERSION_V12, seq_id=0, src_brg_mac=ACTION_EMPTY, action_id=BRG2BRG_ACTION_CFG, dest_brg_mac=ACTION_EMPTY, module_type=MODULE_EMPTY, unused0=0, unused1=0):
@@ -2965,7 +3926,7 @@ class Brg2BrgCfgV12():
2965
3926
  self.set(raw)
2966
3927
 
2967
3928
  def __repr__(self) -> str:
2968
- return "\n==> Packet brg2brg_cfg_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac],['module_type', f"0x{self.module_type:X}", self.module_type]], tablefmt="texttable")
3929
+ return "\n==> Packet brg2brg_cfg_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['module_type', f"0x{self.module_type:X}", self.module_type, ""]], tablefmt="texttable")
2969
3930
 
2970
3931
  def __eq__(self, other):
2971
3932
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -3010,7 +3971,7 @@ class Brg2BrgCfgV11():
3010
3971
  self.set(raw)
3011
3972
 
3012
3973
  def __repr__(self) -> str:
3013
- return "\n==> Packet brg2brg_cfg_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac],['module_type', f"0x{self.module_type:X}", self.module_type]], tablefmt="texttable")
3974
+ return "\n==> Packet brg2brg_cfg_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['module_type', f"0x{self.module_type:X}", self.module_type, ""]], tablefmt="texttable")
3014
3975
 
3015
3976
  def __eq__(self, other):
3016
3977
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -3055,7 +4016,7 @@ class Brg2BrgCfgV10():
3055
4016
  self.set(raw)
3056
4017
 
3057
4018
  def __repr__(self) -> str:
3058
- return "\n==> Packet brg2brg_cfg_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac],['module_type', f"0x{self.module_type:X}", self.module_type]], tablefmt="texttable")
4019
+ return "\n==> Packet brg2brg_cfg_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['module_type', f"0x{self.module_type:X}", self.module_type, ""]], tablefmt="texttable")
3059
4020
 
3060
4021
  def __eq__(self, other):
3061
4022
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -3100,7 +4061,7 @@ class Brg2BrgCfgV9():
3100
4061
  self.set(raw)
3101
4062
 
3102
4063
  def __repr__(self) -> str:
3103
- return "\n==> Packet brg2brg_cfg_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac],['action_id', f"0x{self.action_id:X}", self.action_id],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac],['module_type', f"0x{self.module_type:X}", self.module_type]], tablefmt="texttable")
4064
+ return "\n==> Packet brg2brg_cfg_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['src_brg_mac', f"0x{self.src_brg_mac:X}", self.src_brg_mac, ""],['action_id', f"0x{self.action_id:X}", self.action_id, ""],['dest_brg_mac', f"0x{self.dest_brg_mac:X}", self.dest_brg_mac, ""],['module_type', f"0x{self.module_type:X}", self.module_type, ""]], tablefmt="texttable")
3104
4065
 
3105
4066
  def __eq__(self, other):
3106
4067
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -3157,7 +4118,7 @@ class Gw2BrgCfgV8():
3157
4118
  self.set(raw)
3158
4119
 
3159
4120
  def __repr__(self) -> str:
3160
- return "\n==> Packet gw2brg_cfg_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['pkt_types_mask', f"0x{self.pkt_types_mask:X}", self.pkt_types_mask],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile]], tablefmt="texttable")
4121
+ return "\n==> Packet gw2brg_cfg_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['pkt_types_mask', f"0x{self.pkt_types_mask:X}", self.pkt_types_mask, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""]], tablefmt="texttable")
3161
4122
 
3162
4123
  def __eq__(self, other):
3163
4124
  if isinstance(other, (Gw2BrgCfgV8, Brg2GwCfgV8)):
@@ -3227,7 +4188,7 @@ class Gw2BrgCfgV7():
3227
4188
  self.set(raw)
3228
4189
 
3229
4190
  def __repr__(self) -> str:
3230
- return "\n==> Packet gw2brg_cfg_v7 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile]], tablefmt="texttable")
4191
+ return "\n==> Packet gw2brg_cfg_v7 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""]], tablefmt="texttable")
3231
4192
 
3232
4193
  def __eq__(self, other):
3233
4194
  if isinstance(other, (Gw2BrgCfgV7, Brg2GwCfgV7)):
@@ -3293,7 +4254,7 @@ class Gw2BrgCfgV6():
3293
4254
  self.set(raw)
3294
4255
 
3295
4256
  def __repr__(self) -> str:
3296
- return "\n==> Packet gw2brg_cfg_v6 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile]], tablefmt="texttable")
4257
+ return "\n==> Packet gw2brg_cfg_v6 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""]], tablefmt="texttable")
3297
4258
 
3298
4259
  def __eq__(self, other):
3299
4260
  if isinstance(other, (Gw2BrgCfgV6, Brg2GwCfgV6)):
@@ -3359,7 +4320,7 @@ class Gw2BrgCfgV5():
3359
4320
  self.set(raw)
3360
4321
 
3361
4322
  def __repr__(self) -> str:
3362
- return "\n==> Packet gw2brg_cfg_v5 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['global_pacing', f"0x{self.global_pacing:X}", self.global_pacing],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['stat_freq', f"0x{self.stat_freq:X}", self.stat_freq],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile]], tablefmt="texttable")
4323
+ return "\n==> Packet gw2brg_cfg_v5 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['global_pacing', f"0x{self.global_pacing:X}", self.global_pacing, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['stat_freq', f"0x{self.stat_freq:X}", self.stat_freq, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""]], tablefmt="texttable")
3363
4324
 
3364
4325
  def __eq__(self, other):
3365
4326
  if isinstance(other, (Gw2BrgCfgV5, Brg2GwCfgV5)):
@@ -3425,7 +4386,7 @@ class Gw2BrgCfgV2():
3425
4386
  self.set(raw)
3426
4387
 
3427
4388
  def __repr__(self) -> str:
3428
- return "\n==> Packet gw2brg_cfg_v2 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac],['rx_rssi', f"0x{self.rx_rssi:X}", self.rx_rssi],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['global_pacing', f"0x{self.global_pacing:X}", self.global_pacing],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['stat_freq', f"0x{self.stat_freq:X}", self.stat_freq],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile]], tablefmt="texttable")
4389
+ return "\n==> Packet gw2brg_cfg_v2 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac, ""],['rx_rssi', f"0x{self.rx_rssi:X}", self.rx_rssi, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['global_pacing', f"0x{self.global_pacing:X}", self.global_pacing, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['stat_freq', f"0x{self.stat_freq:X}", self.stat_freq, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""]], tablefmt="texttable")
3429
4390
 
3430
4391
  def __eq__(self, other):
3431
4392
  if isinstance(other, (Gw2BrgCfgV2, Brg2GwCfgV2)):
@@ -3490,7 +4451,7 @@ class Gw2BrgCfgV1():
3490
4451
  self.set(raw)
3491
4452
 
3492
4453
  def __repr__(self) -> str:
3493
- return "\n==> Packet gw2brg_cfg_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac],['rx_rssi', f"0x{self.rx_rssi:X}", self.rx_rssi],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power', f"0x{self.output_power:X}", self.output_power],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability]], tablefmt="texttable")
4454
+ return "\n==> Packet gw2brg_cfg_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac, ""],['rx_rssi', f"0x{self.rx_rssi:X}", self.rx_rssi, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""]], tablefmt="texttable")
3494
4455
 
3495
4456
  def __eq__(self, other):
3496
4457
  if isinstance(other, (Gw2BrgCfgV1, Brg2GwCfgV1)):
@@ -3560,7 +4521,7 @@ class Brg2GwCfgV8():
3560
4521
  self.set(raw)
3561
4522
 
3562
4523
  def __repr__(self) -> str:
3563
- return "\n==> Packet brg2gw_cfg_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['board_type', f"0x{self.board_type:X}", self.board_type],['pkt_types_mask', f"0x{self.pkt_types_mask:X}", self.pkt_types_mask],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['build_ver', f"0x{self.build_ver:X}", self.build_ver],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval]], tablefmt="texttable")
4524
+ return "\n==> Packet brg2gw_cfg_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['pkt_types_mask', f"0x{self.pkt_types_mask:X}", self.pkt_types_mask, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['build_ver', f"0x{self.build_ver:X}", self.build_ver, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""]], tablefmt="texttable")
3564
4525
 
3565
4526
  def __eq__(self, other):
3566
4527
  if isinstance(other, Brg2GwCfgV8):
@@ -3662,7 +4623,7 @@ class Brg2GwCfgV7():
3662
4623
  self.set(raw)
3663
4624
 
3664
4625
  def __repr__(self) -> str:
3665
- return "\n==> Packet brg2gw_cfg_v7 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['board_type', f"0x{self.board_type:X}", self.board_type],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['build_ver', f"0x{self.build_ver:X}", self.build_ver],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval]], tablefmt="texttable")
4626
+ return "\n==> Packet brg2gw_cfg_v7 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['build_ver', f"0x{self.build_ver:X}", self.build_ver, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""]], tablefmt="texttable")
3666
4627
 
3667
4628
  def __eq__(self, other):
3668
4629
  if isinstance(other, Brg2GwCfgV7):
@@ -3760,7 +4721,7 @@ class Brg2GwCfgV6():
3760
4721
  self.set(raw)
3761
4722
 
3762
4723
  def __repr__(self) -> str:
3763
- return "\n==> Packet brg2gw_cfg_v6 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['board_type', f"0x{self.board_type:X}", self.board_type],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['build_ver', f"0x{self.build_ver:X}", self.build_ver],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval]], tablefmt="texttable")
4724
+ return "\n==> Packet brg2gw_cfg_v6 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['build_ver', f"0x{self.build_ver:X}", self.build_ver, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""]], tablefmt="texttable")
3764
4725
 
3765
4726
  def __eq__(self, other):
3766
4727
  if isinstance(other, Brg2GwCfgV6):
@@ -3858,7 +4819,7 @@ class Brg2GwCfgV5():
3858
4819
  self.set(raw)
3859
4820
 
3860
4821
  def __repr__(self) -> str:
3861
- return "\n==> Packet brg2gw_cfg_v5 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['global_pacing_enabled', f"0x{self.global_pacing_enabled:X}", self.global_pacing_enabled],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['stat_freq', f"0x{self.stat_freq:X}", self.stat_freq],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['board_type', f"0x{self.board_type:X}", self.board_type],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['build_ver', f"0x{self.build_ver:X}", self.build_ver],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval]], tablefmt="texttable")
4822
+ return "\n==> Packet brg2gw_cfg_v5 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['global_pacing_enabled', f"0x{self.global_pacing_enabled:X}", self.global_pacing_enabled, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['stat_freq', f"0x{self.stat_freq:X}", self.stat_freq, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['build_ver', f"0x{self.build_ver:X}", self.build_ver, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""]], tablefmt="texttable")
3862
4823
 
3863
4824
  def __eq__(self, other):
3864
4825
  if isinstance(other, Brg2GwCfgV5):
@@ -3955,7 +4916,7 @@ class Brg2GwCfgV2():
3955
4916
  self.set(raw)
3956
4917
 
3957
4918
  def __repr__(self) -> str:
3958
- return "\n==> Packet brg2gw_cfg_v2 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['board_type', f"0x{self.board_type:X}", self.board_type],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['global_pacing_enabled', f"0x{self.global_pacing_enabled:X}", self.global_pacing_enabled],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['stat_freq', f"0x{self.stat_freq:X}", self.stat_freq],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['build_ver', f"0x{self.build_ver:X}", self.build_ver],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval]], tablefmt="texttable")
4919
+ return "\n==> Packet brg2gw_cfg_v2 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['global_pacing_enabled', f"0x{self.global_pacing_enabled:X}", self.global_pacing_enabled, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['stat_freq', f"0x{self.stat_freq:X}", self.stat_freq, ""],['output_power_sub1g', f"0x{self.output_power_sub1g:X}", self.output_power_sub1g, ""],['transmit_time_sub1g', f"0x{self.transmit_time_sub1g:X}", self.transmit_time_sub1g, ""],['sub1g_freq_profile', f"0x{self.sub1g_freq_profile:X}", self.sub1g_freq_profile, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['build_ver', f"0x{self.build_ver:X}", self.build_ver, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power_2_4', f"0x{self.output_power_2_4:X}", self.output_power_2_4, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""]], tablefmt="texttable")
3959
4920
 
3960
4921
  def __eq__(self, other):
3961
4922
  if isinstance(other, Brg2GwCfgV2):
@@ -4045,7 +5006,7 @@ class Brg2GwCfgV1():
4045
5006
  self.set(raw)
4046
5007
 
4047
5008
  def __repr__(self) -> str:
4048
- return "\n==> Packet brg2gw_cfg_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['build_ver', f"0x{self.build_ver:X}", self.build_ver],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability],['is_dual_band', f"0x{self.is_dual_band:X}", self.is_dual_band],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power', f"0x{self.output_power:X}", self.output_power],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval]], tablefmt="texttable")
5009
+ return "\n==> Packet brg2gw_cfg_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['build_ver', f"0x{self.build_ver:X}", self.build_ver, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""],['is_dual_band', f"0x{self.is_dual_band:X}", self.is_dual_band, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""]], tablefmt="texttable")
4049
5010
 
4050
5011
  def __eq__(self, other):
4051
5012
  if isinstance(other, Brg2GwCfgV1):
@@ -4121,7 +5082,7 @@ class Brg2GwCfgV0():
4121
5082
  self.set(raw)
4122
5083
 
4123
5084
  def __repr__(self) -> str:
4124
- return "\n==> Packet brg2gw_cfg_v0 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['bridge_id', f"0x{self.bridge_id:X}", self.bridge_id],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['build_ver', f"0x{self.build_ver:X}", self.build_ver],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx],['output_power', f"0x{self.output_power:X}", self.output_power],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval]], tablefmt="texttable")
5085
+ return "\n==> Packet brg2gw_cfg_v0 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['bridge_id', f"0x{self.bridge_id:X}", self.bridge_id, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['build_ver', f"0x{self.build_ver:X}", self.build_ver, ""],['rx_tx_period_ms', f"0x{self.rx_tx_period_ms:X}", self.rx_tx_period_ms, ""],['tx_period_ms', f"0x{self.tx_period_ms:X}", self.tx_period_ms, ""],['energy_pattern_idx', f"0x{self.energy_pattern_idx:X}", self.energy_pattern_idx, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""]], tablefmt="texttable")
4125
5086
 
4126
5087
  def __eq__(self, other):
4127
5088
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4174,7 +5135,7 @@ class Gw2BrgHbV1():
4174
5135
  self.set(raw)
4175
5136
 
4176
5137
  def __repr__(self) -> str:
4177
- return "\n==> Packet gw2brg_hb_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac],['rx_rssi', f"0x{self.rx_rssi:X}", self.rx_rssi]], tablefmt="texttable")
5138
+ return "\n==> Packet gw2brg_hb_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac, ""],['rx_rssi', f"0x{self.rx_rssi:X}", self.rx_rssi, ""]], tablefmt="texttable")
4178
5139
 
4179
5140
  def __eq__(self, other):
4180
5141
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4200,6 +5161,45 @@ class Gw2BrgHbV1():
4200
5161
  self.rx_rssi = d[5]
4201
5162
  self.unused1 = d[6]
4202
5163
 
5164
+ class Brg2GwHbSleepV13():
5165
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB_SLEEP, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, unused0=0, dynamic=0, unused1=0):
5166
+ self.msg_type = msg_type
5167
+ self.api_version = api_version
5168
+ self.seq_id = seq_id
5169
+ self.brg_mac = brg_mac
5170
+ self.unused0 = unused0
5171
+ self.dynamic = dynamic
5172
+ self.unused1 = unused1
5173
+ if raw:
5174
+ self.set(raw)
5175
+
5176
+ def __repr__(self) -> str:
5177
+ return "\n==> Packet brg2gw_hb_sleep_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['dynamic', f"0x{self.dynamic:X}", self.dynamic, ""]], tablefmt="texttable")
5178
+
5179
+ def __eq__(self, other):
5180
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
5181
+ return (
5182
+ self.msg_type == other.msg_type and
5183
+ self.api_version == other.api_version and
5184
+ self.brg_mac == other.brg_mac and
5185
+ self.dynamic == other.dynamic
5186
+ )
5187
+ return False
5188
+
5189
+ def dump(self):
5190
+ string = bitstruct.pack("u8u8u8u48u7u1u112", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.unused0, self.dynamic, self.unused1)
5191
+ return string.hex().upper()
5192
+
5193
+ def set(self, string):
5194
+ d = bitstruct.unpack("u8u8u8u48u7u1u112", binascii.unhexlify(string))
5195
+ self.msg_type = d[0]
5196
+ self.api_version = d[1]
5197
+ self.seq_id = d[2]
5198
+ self.brg_mac = d[3]
5199
+ self.unused0 = d[4]
5200
+ self.dynamic = d[5]
5201
+ self.unused1 = d[6]
5202
+
4203
5203
  class Brg2GwHbSleepV12():
4204
5204
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB_SLEEP, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, unused0=0, dynamic=0, unused1=0):
4205
5205
  self.msg_type = msg_type
@@ -4213,7 +5213,7 @@ class Brg2GwHbSleepV12():
4213
5213
  self.set(raw)
4214
5214
 
4215
5215
  def __repr__(self) -> str:
4216
- return "\n==> Packet brg2gw_hb_sleep_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['dynamic', f"0x{self.dynamic:X}", self.dynamic]], tablefmt="texttable")
5216
+ return "\n==> Packet brg2gw_hb_sleep_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['dynamic', f"0x{self.dynamic:X}", self.dynamic, ""]], tablefmt="texttable")
4217
5217
 
4218
5218
  def __eq__(self, other):
4219
5219
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4252,7 +5252,7 @@ class Brg2GwHbSleepV11():
4252
5252
  self.set(raw)
4253
5253
 
4254
5254
  def __repr__(self) -> str:
4255
- return "\n==> Packet brg2gw_hb_sleep_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['dynamic', f"0x{self.dynamic:X}", self.dynamic]], tablefmt="texttable")
5255
+ return "\n==> Packet brg2gw_hb_sleep_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['dynamic', f"0x{self.dynamic:X}", self.dynamic, ""]], tablefmt="texttable")
4256
5256
 
4257
5257
  def __eq__(self, other):
4258
5258
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4291,7 +5291,7 @@ class Brg2GwHbSleepV10():
4291
5291
  self.set(raw)
4292
5292
 
4293
5293
  def __repr__(self) -> str:
4294
- return "\n==> Packet brg2gw_hb_sleep_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['dynamic', f"0x{self.dynamic:X}", self.dynamic]], tablefmt="texttable")
5294
+ return "\n==> Packet brg2gw_hb_sleep_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['dynamic', f"0x{self.dynamic:X}", self.dynamic, ""]], tablefmt="texttable")
4295
5295
 
4296
5296
  def __eq__(self, other):
4297
5297
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4317,8 +5317,8 @@ class Brg2GwHbSleepV10():
4317
5317
  self.dynamic = d[5]
4318
5318
  self.unused1 = d[6]
4319
5319
 
4320
- class Brg2GwHbV12():
4321
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, dynamic=0, effective_pacer_increment=0):
5320
+ class Brg2GwHbV13():
5321
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, algo_tx_rep=0, tags_ctr=0, tx_queue_watermark=0, dynamic=0, effective_pacer_increment=0):
4322
5322
  self.msg_type = msg_type
4323
5323
  self.api_version = api_version
4324
5324
  self.seq_id = seq_id
@@ -4327,6 +5327,7 @@ class Brg2GwHbV12():
4327
5327
  self.bad_crc_pkts_ctr = bad_crc_pkts_ctr
4328
5328
  self.wlt_rx_pkts_ctr = wlt_rx_pkts_ctr
4329
5329
  self.wlt_tx_pkts_ctr = wlt_tx_pkts_ctr
5330
+ self.algo_tx_rep = algo_tx_rep
4330
5331
  self.tags_ctr = tags_ctr
4331
5332
  self.tx_queue_watermark = tx_queue_watermark
4332
5333
  self.dynamic = dynamic
@@ -4335,7 +5336,7 @@ class Brg2GwHbV12():
4335
5336
  self.set(raw)
4336
5337
 
4337
5338
  def __repr__(self) -> str:
4338
- return "\n==> Packet brg2gw_hb_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark],['dynamic', f"0x{self.dynamic:X}", self.dynamic],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment]], tablefmt="texttable")
5339
+ return "\n==> Packet brg2gw_hb_v13 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['algo_tx_rep', f"0x{self.algo_tx_rep:X}", self.algo_tx_rep, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark, ""],['dynamic', f"0x{self.dynamic:X}", self.dynamic, ""],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment, ""]], tablefmt="texttable")
4339
5340
 
4340
5341
  def __eq__(self, other):
4341
5342
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4347,6 +5348,7 @@ class Brg2GwHbV12():
4347
5348
  self.bad_crc_pkts_ctr == other.bad_crc_pkts_ctr and
4348
5349
  self.wlt_rx_pkts_ctr == other.wlt_rx_pkts_ctr and
4349
5350
  self.wlt_tx_pkts_ctr == other.wlt_tx_pkts_ctr and
5351
+ self.algo_tx_rep == other.algo_tx_rep and
4350
5352
  self.tags_ctr == other.tags_ctr and
4351
5353
  self.tx_queue_watermark == other.tx_queue_watermark and
4352
5354
  self.dynamic == other.dynamic and
@@ -4355,11 +5357,11 @@ class Brg2GwHbV12():
4355
5357
  return False
4356
5358
 
4357
5359
  def dump(self):
4358
- string = bitstruct.pack("u8u8u8u48u24u24u24u16u16u8u1u7", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.tags_ctr, self.tx_queue_watermark, self.dynamic, self.effective_pacer_increment)
5360
+ string = bitstruct.pack("u8u8u8u48u24u24u24u16u2u14u8u1u7", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.algo_tx_rep, self.tags_ctr, self.tx_queue_watermark, self.dynamic, self.effective_pacer_increment)
4359
5361
  return string.hex().upper()
4360
5362
 
4361
5363
  def set(self, string):
4362
- d = bitstruct.unpack("u8u8u8u48u24u24u24u16u16u8u1u7", binascii.unhexlify(string))
5364
+ d = bitstruct.unpack("u8u8u8u48u24u24u24u16u2u14u8u1u7", binascii.unhexlify(string))
4363
5365
  self.msg_type = d[0]
4364
5366
  self.api_version = d[1]
4365
5367
  self.seq_id = d[2]
@@ -4368,13 +5370,14 @@ class Brg2GwHbV12():
4368
5370
  self.bad_crc_pkts_ctr = d[5]
4369
5371
  self.wlt_rx_pkts_ctr = d[6]
4370
5372
  self.wlt_tx_pkts_ctr = d[7]
4371
- self.tags_ctr = d[8]
4372
- self.tx_queue_watermark = d[9]
4373
- self.dynamic = d[10]
4374
- self.effective_pacer_increment = d[11]
5373
+ self.algo_tx_rep = d[8]
5374
+ self.tags_ctr = d[9]
5375
+ self.tx_queue_watermark = d[10]
5376
+ self.dynamic = d[11]
5377
+ self.effective_pacer_increment = d[12]
4375
5378
 
4376
- class Brg2GwHbV11():
4377
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V11, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, dynamic=0, effective_pacer_increment=0):
5379
+ class Brg2GwHbV12():
5380
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, dynamic=0, effective_pacer_increment=0):
4378
5381
  self.msg_type = msg_type
4379
5382
  self.api_version = api_version
4380
5383
  self.seq_id = seq_id
@@ -4391,7 +5394,7 @@ class Brg2GwHbV11():
4391
5394
  self.set(raw)
4392
5395
 
4393
5396
  def __repr__(self) -> str:
4394
- return "\n==> Packet brg2gw_hb_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark],['dynamic', f"0x{self.dynamic:X}", self.dynamic],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment]], tablefmt="texttable")
5397
+ return "\n==> Packet brg2gw_hb_v12 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark, ""],['dynamic', f"0x{self.dynamic:X}", self.dynamic, ""],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment, ""]], tablefmt="texttable")
4395
5398
 
4396
5399
  def __eq__(self, other):
4397
5400
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4429,8 +5432,8 @@ class Brg2GwHbV11():
4429
5432
  self.dynamic = d[10]
4430
5433
  self.effective_pacer_increment = d[11]
4431
5434
 
4432
- class Brg2GwHbV10():
4433
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V10, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, dynamic=0, effective_pacer_increment=0):
5435
+ class Brg2GwHbV11():
5436
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V11, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, dynamic=0, effective_pacer_increment=0):
4434
5437
  self.msg_type = msg_type
4435
5438
  self.api_version = api_version
4436
5439
  self.seq_id = seq_id
@@ -4447,7 +5450,7 @@ class Brg2GwHbV10():
4447
5450
  self.set(raw)
4448
5451
 
4449
5452
  def __repr__(self) -> str:
4450
- return "\n==> Packet brg2gw_hb_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark],['dynamic', f"0x{self.dynamic:X}", self.dynamic],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment]], tablefmt="texttable")
5453
+ return "\n==> Packet brg2gw_hb_v11 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark, ""],['dynamic', f"0x{self.dynamic:X}", self.dynamic, ""],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment, ""]], tablefmt="texttable")
4451
5454
 
4452
5455
  def __eq__(self, other):
4453
5456
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4485,8 +5488,8 @@ class Brg2GwHbV10():
4485
5488
  self.dynamic = d[10]
4486
5489
  self.effective_pacer_increment = d[11]
4487
5490
 
4488
- class Brg2GwHbV9():
4489
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V9, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, effective_pacer_increment=0):
5491
+ class Brg2GwHbV10():
5492
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V10, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, dynamic=0, effective_pacer_increment=0):
4490
5493
  self.msg_type = msg_type
4491
5494
  self.api_version = api_version
4492
5495
  self.seq_id = seq_id
@@ -4497,12 +5500,13 @@ class Brg2GwHbV9():
4497
5500
  self.wlt_tx_pkts_ctr = wlt_tx_pkts_ctr
4498
5501
  self.tags_ctr = tags_ctr
4499
5502
  self.tx_queue_watermark = tx_queue_watermark
5503
+ self.dynamic = dynamic
4500
5504
  self.effective_pacer_increment = effective_pacer_increment
4501
5505
  if raw:
4502
5506
  self.set(raw)
4503
5507
 
4504
5508
  def __repr__(self) -> str:
4505
- return "\n==> Packet brg2gw_hb_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment]], tablefmt="texttable")
5509
+ return "\n==> Packet brg2gw_hb_v10 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark, ""],['dynamic', f"0x{self.dynamic:X}", self.dynamic, ""],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment, ""]], tablefmt="texttable")
4506
5510
 
4507
5511
  def __eq__(self, other):
4508
5512
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4516,16 +5520,17 @@ class Brg2GwHbV9():
4516
5520
  self.wlt_tx_pkts_ctr == other.wlt_tx_pkts_ctr and
4517
5521
  self.tags_ctr == other.tags_ctr and
4518
5522
  self.tx_queue_watermark == other.tx_queue_watermark and
5523
+ self.dynamic == other.dynamic and
4519
5524
  self.effective_pacer_increment == other.effective_pacer_increment
4520
5525
  )
4521
5526
  return False
4522
5527
 
4523
5528
  def dump(self):
4524
- string = bitstruct.pack("u8u8u8u48u24u24u24u16u16u8u8", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.tags_ctr, self.tx_queue_watermark, self.effective_pacer_increment)
5529
+ string = bitstruct.pack("u8u8u8u48u24u24u24u16u16u8u1u7", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.tags_ctr, self.tx_queue_watermark, self.dynamic, self.effective_pacer_increment)
4525
5530
  return string.hex().upper()
4526
5531
 
4527
5532
  def set(self, string):
4528
- d = bitstruct.unpack("u8u8u8u48u24u24u24u16u16u8u8", binascii.unhexlify(string))
5533
+ d = bitstruct.unpack("u8u8u8u48u24u24u24u16u16u8u1u7", binascii.unhexlify(string))
4529
5534
  self.msg_type = d[0]
4530
5535
  self.api_version = d[1]
4531
5536
  self.seq_id = d[2]
@@ -4536,10 +5541,11 @@ class Brg2GwHbV9():
4536
5541
  self.wlt_tx_pkts_ctr = d[7]
4537
5542
  self.tags_ctr = d[8]
4538
5543
  self.tx_queue_watermark = d[9]
4539
- self.effective_pacer_increment = d[10]
5544
+ self.dynamic = d[10]
5545
+ self.effective_pacer_increment = d[11]
4540
5546
 
4541
- class Brg2GwHbV8():
4542
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V8, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, unused=0):
5547
+ class Brg2GwHbV9():
5548
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V9, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, effective_pacer_increment=0):
4543
5549
  self.msg_type = msg_type
4544
5550
  self.api_version = api_version
4545
5551
  self.seq_id = seq_id
@@ -4550,12 +5556,12 @@ class Brg2GwHbV8():
4550
5556
  self.wlt_tx_pkts_ctr = wlt_tx_pkts_ctr
4551
5557
  self.tags_ctr = tags_ctr
4552
5558
  self.tx_queue_watermark = tx_queue_watermark
4553
- self.unused = unused
5559
+ self.effective_pacer_increment = effective_pacer_increment
4554
5560
  if raw:
4555
5561
  self.set(raw)
4556
5562
 
4557
5563
  def __repr__(self) -> str:
4558
- return "\n==> Packet brg2gw_hb_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark]], tablefmt="texttable")
5564
+ return "\n==> Packet brg2gw_hb_v9 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark, ""],['effective_pacer_increment', f"0x{self.effective_pacer_increment:X}", self.effective_pacer_increment, ""]], tablefmt="texttable")
4559
5565
 
4560
5566
  def __eq__(self, other):
4561
5567
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4568,12 +5574,13 @@ class Brg2GwHbV8():
4568
5574
  self.wlt_rx_pkts_ctr == other.wlt_rx_pkts_ctr and
4569
5575
  self.wlt_tx_pkts_ctr == other.wlt_tx_pkts_ctr and
4570
5576
  self.tags_ctr == other.tags_ctr and
4571
- self.tx_queue_watermark == other.tx_queue_watermark
5577
+ self.tx_queue_watermark == other.tx_queue_watermark and
5578
+ self.effective_pacer_increment == other.effective_pacer_increment
4572
5579
  )
4573
5580
  return False
4574
5581
 
4575
5582
  def dump(self):
4576
- string = bitstruct.pack("u8u8u8u48u24u24u24u16u16u8u8", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.tags_ctr, self.tx_queue_watermark, self.unused)
5583
+ string = bitstruct.pack("u8u8u8u48u24u24u24u16u16u8u8", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.tags_ctr, self.tx_queue_watermark, self.effective_pacer_increment)
4577
5584
  return string.hex().upper()
4578
5585
 
4579
5586
  def set(self, string):
@@ -4588,10 +5595,10 @@ class Brg2GwHbV8():
4588
5595
  self.wlt_tx_pkts_ctr = d[7]
4589
5596
  self.tags_ctr = d[8]
4590
5597
  self.tx_queue_watermark = d[9]
4591
- self.unused = d[10]
5598
+ self.effective_pacer_increment = d[10]
4592
5599
 
4593
- class Brg2GwHbV7():
4594
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V7, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, unused=0):
5600
+ class Brg2GwHbV8():
5601
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V8, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, tx_queue_watermark=0, unused=0):
4595
5602
  self.msg_type = msg_type
4596
5603
  self.api_version = api_version
4597
5604
  self.seq_id = seq_id
@@ -4601,12 +5608,13 @@ class Brg2GwHbV7():
4601
5608
  self.wlt_rx_pkts_ctr = wlt_rx_pkts_ctr
4602
5609
  self.wlt_tx_pkts_ctr = wlt_tx_pkts_ctr
4603
5610
  self.tags_ctr = tags_ctr
5611
+ self.tx_queue_watermark = tx_queue_watermark
4604
5612
  self.unused = unused
4605
5613
  if raw:
4606
5614
  self.set(raw)
4607
5615
 
4608
5616
  def __repr__(self) -> str:
4609
- return "\n==> Packet brg2gw_hb_v7 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr]], tablefmt="texttable")
5617
+ return "\n==> Packet brg2gw_hb_v8 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""],['tx_queue_watermark', f"0x{self.tx_queue_watermark:X}", self.tx_queue_watermark, ""]], tablefmt="texttable")
4610
5618
 
4611
5619
  def __eq__(self, other):
4612
5620
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4618,16 +5626,17 @@ class Brg2GwHbV7():
4618
5626
  self.bad_crc_pkts_ctr == other.bad_crc_pkts_ctr and
4619
5627
  self.wlt_rx_pkts_ctr == other.wlt_rx_pkts_ctr and
4620
5628
  self.wlt_tx_pkts_ctr == other.wlt_tx_pkts_ctr and
4621
- self.tags_ctr == other.tags_ctr
5629
+ self.tags_ctr == other.tags_ctr and
5630
+ self.tx_queue_watermark == other.tx_queue_watermark
4622
5631
  )
4623
5632
  return False
4624
5633
 
4625
5634
  def dump(self):
4626
- string = bitstruct.pack("u8u8u8u48u24u24u24u16u16u16", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.tags_ctr, self.unused)
5635
+ string = bitstruct.pack("u8u8u8u48u24u24u24u16u16u8u8", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.tags_ctr, self.tx_queue_watermark, self.unused)
4627
5636
  return string.hex().upper()
4628
5637
 
4629
5638
  def set(self, string):
4630
- d = bitstruct.unpack("u8u8u8u48u24u24u24u16u16u16", binascii.unhexlify(string))
5639
+ d = bitstruct.unpack("u8u8u8u48u24u24u24u16u16u8u8", binascii.unhexlify(string))
4631
5640
  self.msg_type = d[0]
4632
5641
  self.api_version = d[1]
4633
5642
  self.seq_id = d[2]
@@ -4637,10 +5646,11 @@ class Brg2GwHbV7():
4637
5646
  self.wlt_rx_pkts_ctr = d[6]
4638
5647
  self.wlt_tx_pkts_ctr = d[7]
4639
5648
  self.tags_ctr = d[8]
4640
- self.unused = d[9]
5649
+ self.tx_queue_watermark = d[9]
5650
+ self.unused = d[10]
4641
5651
 
4642
- class Brg2GwHbV6():
4643
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V6, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, unused=0):
5652
+ class Brg2GwHbV7():
5653
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V7, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, unused=0):
4644
5654
  self.msg_type = msg_type
4645
5655
  self.api_version = api_version
4646
5656
  self.seq_id = seq_id
@@ -4655,7 +5665,7 @@ class Brg2GwHbV6():
4655
5665
  self.set(raw)
4656
5666
 
4657
5667
  def __repr__(self) -> str:
4658
- return "\n==> Packet brg2gw_hb_v6 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr]], tablefmt="texttable")
5668
+ return "\n==> Packet brg2gw_hb_v7 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""]], tablefmt="texttable")
4659
5669
 
4660
5670
  def __eq__(self, other):
4661
5671
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4688,7 +5698,7 @@ class Brg2GwHbV6():
4688
5698
  self.tags_ctr = d[8]
4689
5699
  self.unused = d[9]
4690
5700
 
4691
- class Brg2GwHbV5():
5701
+ class Brg2GwHbV6():
4692
5702
  def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V6, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, unused=0):
4693
5703
  self.msg_type = msg_type
4694
5704
  self.api_version = api_version
@@ -4704,7 +5714,7 @@ class Brg2GwHbV5():
4704
5714
  self.set(raw)
4705
5715
 
4706
5716
  def __repr__(self) -> str:
4707
- return "\n==> Packet brg2gw_hb_v5 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr]], tablefmt="texttable")
5717
+ return "\n==> Packet brg2gw_hb_v6 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""]], tablefmt="texttable")
4708
5718
 
4709
5719
  def __eq__(self, other):
4710
5720
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -4737,256 +5747,179 @@ class Brg2GwHbV5():
4737
5747
  self.tags_ctr = d[8]
4738
5748
  self.unused = d[9]
4739
5749
 
4740
- class Brg2GwHbV1():
4741
- def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V1, seq_id=0, gw_mac=0, brg_mac=0, sent_pkts_ctr=0, non_wlt_pkts_ctr=0, tags_ctr=0, unused1=0):
5750
+ class Brg2GwHbV5():
5751
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V6, seq_id=0, brg_mac=0, non_wlt_rx_pkts_ctr=0, bad_crc_pkts_ctr=0, wlt_rx_pkts_ctr=0, wlt_tx_pkts_ctr=0, tags_ctr=0, unused=0):
4742
5752
  self.msg_type = msg_type
4743
5753
  self.api_version = api_version
4744
5754
  self.seq_id = seq_id
4745
- self.gw_mac = gw_mac
4746
5755
  self.brg_mac = brg_mac
4747
- self.sent_pkts_ctr = sent_pkts_ctr
4748
- self.non_wlt_pkts_ctr = non_wlt_pkts_ctr
5756
+ self.non_wlt_rx_pkts_ctr = non_wlt_rx_pkts_ctr
5757
+ self.bad_crc_pkts_ctr = bad_crc_pkts_ctr
5758
+ self.wlt_rx_pkts_ctr = wlt_rx_pkts_ctr
5759
+ self.wlt_tx_pkts_ctr = wlt_tx_pkts_ctr
4749
5760
  self.tags_ctr = tags_ctr
4750
- self.unused1 = unused1
5761
+ self.unused = unused
4751
5762
  if raw:
4752
5763
  self.set(raw)
4753
5764
 
4754
5765
  def __repr__(self) -> str:
4755
- return "\n==> Packet brg2gw_hb_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['sent_pkts_ctr', f"0x{self.sent_pkts_ctr:X}", self.sent_pkts_ctr],['non_wlt_pkts_ctr', f"0x{self.non_wlt_pkts_ctr:X}", self.non_wlt_pkts_ctr],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr]], tablefmt="texttable")
5766
+ return "\n==> Packet brg2gw_hb_v5 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['non_wlt_rx_pkts_ctr', f"0x{self.non_wlt_rx_pkts_ctr:X}", self.non_wlt_rx_pkts_ctr, ""],['bad_crc_pkts_ctr', f"0x{self.bad_crc_pkts_ctr:X}", self.bad_crc_pkts_ctr, ""],['wlt_rx_pkts_ctr', f"0x{self.wlt_rx_pkts_ctr:X}", self.wlt_rx_pkts_ctr, ""],['wlt_tx_pkts_ctr', f"0x{self.wlt_tx_pkts_ctr:X}", self.wlt_tx_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""]], tablefmt="texttable")
4756
5767
 
4757
5768
  def __eq__(self, other):
4758
5769
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
4759
5770
  return (
4760
5771
  self.msg_type == other.msg_type and
4761
5772
  self.api_version == other.api_version and
4762
- self.gw_mac == other.gw_mac and
4763
- self.brg_mac == other.brg_mac and
4764
- self.sent_pkts_ctr == other.sent_pkts_ctr and
4765
- self.non_wlt_pkts_ctr == other.non_wlt_pkts_ctr and
4766
- self.tags_ctr == other.tags_ctr
4767
- )
4768
- return False
4769
-
4770
- def dump(self):
4771
- string = bitstruct.pack("u8u8u8u48u48u16u16u16u24", self.msg_type, self.api_version, self.seq_id, self.gw_mac, self.brg_mac, self.sent_pkts_ctr, self.non_wlt_pkts_ctr, self.tags_ctr, self.unused1)
4772
- return string.hex().upper()
4773
-
4774
- def set(self, string):
4775
- d = bitstruct.unpack("u8u8u8u48u48u16u16u16u24", binascii.unhexlify(string))
4776
- self.msg_type = d[0]
4777
- self.api_version = d[1]
4778
- self.seq_id = d[2]
4779
- self.gw_mac = d[3]
4780
- self.brg_mac = d[4]
4781
- self.sent_pkts_ctr = d[5]
4782
- self.non_wlt_pkts_ctr = d[6]
4783
- self.tags_ctr = d[7]
4784
- self.unused1 = d[8]
4785
-
4786
- class SideInfo():
4787
- def __init__(self, raw='', brg_mac=0, nfpkt=0, rssi=0, unused2=0, unused0=0, unused1=0, pkt_id=0):
4788
- self.brg_mac = brg_mac
4789
- self.nfpkt = nfpkt
4790
- self.rssi = rssi
4791
- self.unused2 = unused2
4792
- self.unused0 = unused0
4793
- self.unused1 = unused1
4794
- self.pkt_id = pkt_id
4795
- if raw:
4796
- self.set(raw)
4797
-
4798
- def __repr__(self) -> str:
4799
- return "\n==> Packet side_info <==\n" + tabulate.tabulate([['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt],['rssi', f"0x{self.rssi:X}", self.rssi],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id]], tablefmt="texttable")
4800
-
4801
- def __eq__(self, other):
4802
- if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
4803
- return (
4804
- self.brg_mac == other.brg_mac and
4805
- self.nfpkt == other.nfpkt and
4806
- self.rssi == other.rssi and
4807
- self.pkt_id == other.pkt_id
4808
- )
4809
- return False
4810
-
4811
- def dump(self):
4812
- string = bitstruct.pack("u48u16u8u4u4u80u32", self.brg_mac, self.nfpkt, self.rssi, self.unused2, self.unused0, self.unused1, self.pkt_id)
4813
- return string.hex().upper()
4814
-
4815
- def set(self, string):
4816
- d = bitstruct.unpack("u48u16u8u4u4u80u32", binascii.unhexlify(string))
4817
- self.brg_mac = d[0]
4818
- self.nfpkt = d[1]
4819
- self.rssi = d[2]
4820
- self.unused2 = d[3]
4821
- self.unused0 = d[4]
4822
- self.unused1 = d[5]
4823
- self.pkt_id = d[6]
4824
-
4825
- class SensorData():
4826
- def __init__(self, raw='', data=0, pkt_id=0):
4827
- self.data = data
4828
- self.pkt_id = pkt_id
4829
- if raw:
4830
- self.set(raw)
4831
-
4832
- def __repr__(self) -> str:
4833
- return "\n==> Packet sensor_data <==\n" + tabulate.tabulate([['data', f"0x{self.data:X}", self.data],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id]], tablefmt="texttable")
4834
-
4835
- def __eq__(self, other):
4836
- if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
4837
- return (
4838
- self.data == other.data and
4839
- self.pkt_id == other.pkt_id
4840
- )
4841
- return False
4842
-
4843
- def dump(self):
4844
- string = bitstruct.pack("u216u32", self.data, self.pkt_id)
4845
- return string.hex().upper()
4846
-
4847
- def set(self, string):
4848
- d = bitstruct.unpack("u216u32", binascii.unhexlify(string))
4849
- self.data = d[0]
4850
- self.pkt_id = d[1]
4851
-
4852
- class SideInfoSensor():
4853
- def __init__(self, raw='', brg_mac=0, nfpkt=0, rssi=0, unused2=0, unused0=0, sensor_mac=0, sensor_ad_type=0, sensor_uuid_msb=0, sensor_uuid_lsb=0, api_version=0, unused1=0, is_scrambled=0, is_sensor_embedded=0, is_sensor=0, pkt_id=0):
4854
- self.brg_mac = brg_mac
4855
- self.nfpkt = nfpkt
4856
- self.rssi = rssi
4857
- self.unused2 = unused2
4858
- self.unused0 = unused0
4859
- self.sensor_mac = sensor_mac
4860
- self.sensor_ad_type = sensor_ad_type
4861
- self.sensor_uuid_msb = sensor_uuid_msb
4862
- self.sensor_uuid_lsb = sensor_uuid_lsb
4863
- self.api_version = api_version
4864
- self.unused1 = unused1
4865
- self.is_scrambled = is_scrambled
4866
- self.is_sensor_embedded = is_sensor_embedded
4867
- self.is_sensor = is_sensor
4868
- self.pkt_id = pkt_id
4869
- if raw:
4870
- self.set(raw)
4871
-
4872
- def __repr__(self) -> str:
4873
- return "\n==> Packet side_info_sensor <==\n" + tabulate.tabulate([['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['nfpkt', f"0x{self.nfpkt:X}", self.nfpkt],['rssi', f"0x{self.rssi:X}", self.rssi],['sensor_mac', f"0x{self.sensor_mac:X}", self.sensor_mac],['sensor_ad_type', f"0x{self.sensor_ad_type:X}", self.sensor_ad_type],['sensor_uuid_msb', f"0x{self.sensor_uuid_msb:X}", self.sensor_uuid_msb],['sensor_uuid_lsb', f"0x{self.sensor_uuid_lsb:X}", self.sensor_uuid_lsb],['api_version', f"0x{self.api_version:X}", self.api_version],['is_scrambled', f"0x{self.is_scrambled:X}", self.is_scrambled],['is_sensor_embedded', f"0x{self.is_sensor_embedded:X}", self.is_sensor_embedded],['is_sensor', f"0x{self.is_sensor:X}", self.is_sensor],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id]], tablefmt="texttable")
4874
-
4875
- def __eq__(self, other):
4876
- if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
4877
- return (
4878
- self.brg_mac == other.brg_mac and
4879
- self.nfpkt == other.nfpkt and
4880
- self.rssi == other.rssi and
4881
- self.sensor_mac == other.sensor_mac and
4882
- self.sensor_ad_type == other.sensor_ad_type and
4883
- self.sensor_uuid_msb == other.sensor_uuid_msb and
4884
- self.sensor_uuid_lsb == other.sensor_uuid_lsb and
4885
- self.api_version == other.api_version and
4886
- self.is_scrambled == other.is_scrambled and
4887
- self.is_sensor_embedded == other.is_sensor_embedded and
4888
- self.is_sensor == other.is_sensor and
4889
- self.pkt_id == other.pkt_id
5773
+ self.brg_mac == other.brg_mac and
5774
+ self.non_wlt_rx_pkts_ctr == other.non_wlt_rx_pkts_ctr and
5775
+ self.bad_crc_pkts_ctr == other.bad_crc_pkts_ctr and
5776
+ self.wlt_rx_pkts_ctr == other.wlt_rx_pkts_ctr and
5777
+ self.wlt_tx_pkts_ctr == other.wlt_tx_pkts_ctr and
5778
+ self.tags_ctr == other.tags_ctr
4890
5779
  )
4891
5780
  return False
4892
5781
 
4893
5782
  def dump(self):
4894
- string = bitstruct.pack("u48u16u8u4u4u48u8u8u8u4u1u1u1u1u32", self.brg_mac, self.nfpkt, self.rssi, self.unused2, self.unused0, self.sensor_mac, self.sensor_ad_type, self.sensor_uuid_msb, self.sensor_uuid_lsb, self.api_version, self.unused1, self.is_scrambled, self.is_sensor_embedded, self.is_sensor, self.pkt_id)
5783
+ string = bitstruct.pack("u8u8u8u48u24u24u24u16u16u16", self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.non_wlt_rx_pkts_ctr, self.bad_crc_pkts_ctr, self.wlt_rx_pkts_ctr, self.wlt_tx_pkts_ctr, self.tags_ctr, self.unused)
4895
5784
  return string.hex().upper()
4896
5785
 
4897
5786
  def set(self, string):
4898
- d = bitstruct.unpack("u48u16u8u4u4u48u8u8u8u4u1u1u1u1u32", binascii.unhexlify(string))
4899
- self.brg_mac = d[0]
4900
- self.nfpkt = d[1]
4901
- self.rssi = d[2]
4902
- self.unused2 = d[3]
4903
- self.unused0 = d[4]
4904
- self.sensor_mac = d[5]
4905
- self.sensor_ad_type = d[6]
4906
- self.sensor_uuid_msb = d[7]
4907
- self.sensor_uuid_lsb = d[8]
4908
- self.api_version = d[9]
4909
- self.unused1 = d[10]
4910
- self.is_scrambled = d[11]
4911
- self.is_sensor_embedded = d[12]
4912
- self.is_sensor = d[13]
4913
- self.pkt_id = d[14]
5787
+ d = bitstruct.unpack("u8u8u8u48u24u24u24u16u16u16", binascii.unhexlify(string))
5788
+ self.msg_type = d[0]
5789
+ self.api_version = d[1]
5790
+ self.seq_id = d[2]
5791
+ self.brg_mac = d[3]
5792
+ self.non_wlt_rx_pkts_ctr = d[4]
5793
+ self.bad_crc_pkts_ctr = d[5]
5794
+ self.wlt_rx_pkts_ctr = d[6]
5795
+ self.wlt_tx_pkts_ctr = d[7]
5796
+ self.tags_ctr = d[8]
5797
+ self.unused = d[9]
4914
5798
 
4915
- class PktFilterStruct():
4916
- def __init__(self, raw='', unused=0, mask_enable=0, p3_pacing=0, p2_pacing=0, p1_pacing=0, p0_pacing=0):
4917
- self.unused = unused
4918
- self.mask_enable = mask_enable
4919
- self.p3_pacing = p3_pacing
4920
- self.p2_pacing = p2_pacing
4921
- self.p1_pacing = p1_pacing
4922
- self.p0_pacing = p0_pacing
5799
+ class Brg2GwHbV1():
5800
+ def __init__(self, raw='', msg_type=BRG_MGMT_MSG_TYPE_HB, api_version=API_VERSION_V1, seq_id=0, gw_mac=0, brg_mac=0, sent_pkts_ctr=0, non_wlt_pkts_ctr=0, tags_ctr=0, unused1=0):
5801
+ self.msg_type = msg_type
5802
+ self.api_version = api_version
5803
+ self.seq_id = seq_id
5804
+ self.gw_mac = gw_mac
5805
+ self.brg_mac = brg_mac
5806
+ self.sent_pkts_ctr = sent_pkts_ctr
5807
+ self.non_wlt_pkts_ctr = non_wlt_pkts_ctr
5808
+ self.tags_ctr = tags_ctr
5809
+ self.unused1 = unused1
4923
5810
  if raw:
4924
5811
  self.set(raw)
4925
5812
 
4926
5813
  def __repr__(self) -> str:
4927
- return "\n==> Packet pkt_filter_struct <==\n" + tabulate.tabulate([['mask_enable', f"0x{self.mask_enable:X}", self.mask_enable],['p3_pacing', f"0x{self.p3_pacing:X}", self.p3_pacing],['p2_pacing', f"0x{self.p2_pacing:X}", self.p2_pacing],['p1_pacing', f"0x{self.p1_pacing:X}", self.p1_pacing],['p0_pacing', f"0x{self.p0_pacing:X}", self.p0_pacing]], tablefmt="texttable")
5814
+ return "\n==> Packet brg2gw_hb_v1 <==\n" + tabulate.tabulate([['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['gw_mac', f"0x{self.gw_mac:X}", self.gw_mac, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['sent_pkts_ctr', f"0x{self.sent_pkts_ctr:X}", self.sent_pkts_ctr, ""],['non_wlt_pkts_ctr', f"0x{self.non_wlt_pkts_ctr:X}", self.non_wlt_pkts_ctr, ""],['tags_ctr', f"0x{self.tags_ctr:X}", self.tags_ctr, ""]], tablefmt="texttable")
4928
5815
 
4929
5816
  def __eq__(self, other):
4930
5817
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
4931
5818
  return (
4932
- self.mask_enable == other.mask_enable and
4933
- self.p3_pacing == other.p3_pacing and
4934
- self.p2_pacing == other.p2_pacing and
4935
- self.p1_pacing == other.p1_pacing and
4936
- self.p0_pacing == other.p0_pacing
5819
+ self.msg_type == other.msg_type and
5820
+ self.api_version == other.api_version and
5821
+ self.gw_mac == other.gw_mac and
5822
+ self.brg_mac == other.brg_mac and
5823
+ self.sent_pkts_ctr == other.sent_pkts_ctr and
5824
+ self.non_wlt_pkts_ctr == other.non_wlt_pkts_ctr and
5825
+ self.tags_ctr == other.tags_ctr
4937
5826
  )
4938
5827
  return False
4939
5828
 
4940
5829
  def dump(self):
4941
- string = bitstruct.pack("u3u1u1u1u1u1", self.unused, self.mask_enable, self.p3_pacing, self.p2_pacing, self.p1_pacing, self.p0_pacing)
5830
+ string = bitstruct.pack("u8u8u8u48u48u16u16u16u24", self.msg_type, self.api_version, self.seq_id, self.gw_mac, self.brg_mac, self.sent_pkts_ctr, self.non_wlt_pkts_ctr, self.tags_ctr, self.unused1)
4942
5831
  return string.hex().upper()
4943
5832
 
4944
5833
  def set(self, string):
4945
- d = bitstruct.unpack("u3u1u1u1u1u1", binascii.unhexlify(string))
4946
- self.unused = d[0]
4947
- self.mask_enable = d[1]
4948
- self.p3_pacing = d[2]
4949
- self.p2_pacing = d[3]
4950
- self.p1_pacing = d[4]
4951
- self.p0_pacing = d[5]
5834
+ d = bitstruct.unpack("u8u8u8u48u48u16u16u16u24", binascii.unhexlify(string))
5835
+ self.msg_type = d[0]
5836
+ self.api_version = d[1]
5837
+ self.seq_id = d[2]
5838
+ self.gw_mac = d[3]
5839
+ self.brg_mac = d[4]
5840
+ self.sent_pkts_ctr = d[5]
5841
+ self.non_wlt_pkts_ctr = d[6]
5842
+ self.tags_ctr = d[7]
5843
+ self.unused1 = d[8]
4952
5844
 
4953
- class PwrMgmt():
4954
- def __init__(self, raw='', leds_on=PWR_MGMT_DEFAULTS_LEDS_ON, keep_alive_scan=PWR_MGMT_DEFAULTS_KEEP_ALIVE_SCAN, keep_alive_period=PWR_MGMT_DEFAULTS_KEEP_ALIVE_PERIOD, on_duration=PWR_MGMT_DEFAULTS_ON_DURATION, sleep_duration=PWR_MGMT_DEFAULTS_SLEEP_DURATION, unused=0):
4955
- self.leds_on = leds_on
4956
- self.keep_alive_scan = keep_alive_scan # 10 [msec] resolution
4957
- self.keep_alive_period = keep_alive_period # 5 [sec] resolution
4958
- self.on_duration = on_duration # 30 [sec] resolution
4959
- self.sleep_duration = sleep_duration # 60 [sec] resolution
4960
- self.unused = unused
5845
+ class ModuleIfV13():
5846
+ def __init__(self, raw='', module_type=MODULE_IF, msg_type=BRG_MGMT_MSG_TYPE_CFG_INFO, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, board_type=0, bl_version=0, major_ver=0, minor_ver=0, patch_ver=0, sup_cap_glob=0, sup_cap_datapath=0, sup_cap_energy2400=0, sup_cap_energy_sub1g=0, sup_cap_calibration=0, sup_cap_pwr_mgmt=0, sup_cap_sensors=0, sup_cap_custom=0, cfg_hash=0, unused0=0):
5847
+ self.module_type = module_type
5848
+ self.msg_type = msg_type
5849
+ self.api_version = api_version
5850
+ self.seq_id = seq_id
5851
+ self.brg_mac = brg_mac
5852
+ self.board_type = board_type
5853
+ self.bl_version = bl_version
5854
+ self.major_ver = major_ver
5855
+ self.minor_ver = minor_ver
5856
+ self.patch_ver = patch_ver
5857
+ self.sup_cap_glob = sup_cap_glob
5858
+ self.sup_cap_datapath = sup_cap_datapath
5859
+ self.sup_cap_energy2400 = sup_cap_energy2400
5860
+ self.sup_cap_energy_sub1g = sup_cap_energy_sub1g
5861
+ self.sup_cap_calibration = sup_cap_calibration
5862
+ self.sup_cap_pwr_mgmt = sup_cap_pwr_mgmt
5863
+ self.sup_cap_sensors = sup_cap_sensors
5864
+ self.sup_cap_custom = sup_cap_custom
5865
+ self.cfg_hash = cfg_hash
5866
+ self.unused0 = unused0
4961
5867
  if raw:
4962
5868
  self.set(raw)
4963
5869
 
4964
5870
  def __repr__(self) -> str:
4965
- return "\n==> Packet pwr_mgmt <==\n" + tabulate.tabulate([['leds_on', f"0x{self.leds_on:X}", self.leds_on],['keep_alive_scan', f"0x{self.keep_alive_scan:X}", self.keep_alive_scan],['keep_alive_period', f"0x{self.keep_alive_period:X}", self.keep_alive_period],['on_duration', f"0x{self.on_duration:X}", self.on_duration],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration]], tablefmt="texttable")
5871
+ return "\n==> Packet module_if_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver, ""],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob, ""],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath, ""],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400, ""],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g, ""],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration, ""],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt, ""],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors, ""],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom, ""],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash, ""]], tablefmt="texttable")
4966
5872
 
4967
5873
  def __eq__(self, other):
4968
5874
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
4969
5875
  return (
4970
- self.leds_on == other.leds_on and
4971
- self.keep_alive_scan == other.keep_alive_scan and
4972
- self.keep_alive_period == other.keep_alive_period and
4973
- self.on_duration == other.on_duration and
4974
- self.sleep_duration == other.sleep_duration
5876
+ self.module_type == other.module_type and
5877
+ self.msg_type == other.msg_type and
5878
+ self.api_version == other.api_version and
5879
+ self.brg_mac == other.brg_mac and
5880
+ self.board_type == other.board_type and
5881
+ self.bl_version == other.bl_version and
5882
+ self.major_ver == other.major_ver and
5883
+ self.minor_ver == other.minor_ver and
5884
+ self.patch_ver == other.patch_ver and
5885
+ self.sup_cap_glob == other.sup_cap_glob and
5886
+ self.sup_cap_datapath == other.sup_cap_datapath and
5887
+ self.sup_cap_energy2400 == other.sup_cap_energy2400 and
5888
+ self.sup_cap_energy_sub1g == other.sup_cap_energy_sub1g and
5889
+ self.sup_cap_calibration == other.sup_cap_calibration and
5890
+ self.sup_cap_pwr_mgmt == other.sup_cap_pwr_mgmt and
5891
+ self.sup_cap_sensors == other.sup_cap_sensors and
5892
+ self.sup_cap_custom == other.sup_cap_custom and
5893
+ self.cfg_hash == other.cfg_hash
4975
5894
  )
4976
5895
  return False
4977
5896
 
4978
5897
  def dump(self):
4979
- string = bitstruct.pack("u1u6u5u7u11u2", self.leds_on, self.keep_alive_scan, self.keep_alive_period, self.on_duration, self.sleep_duration, self.unused)
5898
+ string = bitstruct.pack("u4u4u8u8u48u8u8u8u8u8u1u1u1u1u1u1u1u1u32u40", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.board_type, self.bl_version, self.major_ver, self.minor_ver, self.patch_ver, self.sup_cap_glob, self.sup_cap_datapath, self.sup_cap_energy2400, self.sup_cap_energy_sub1g, self.sup_cap_calibration, self.sup_cap_pwr_mgmt, self.sup_cap_sensors, self.sup_cap_custom, self.cfg_hash, self.unused0)
4980
5899
  return string.hex().upper()
4981
5900
 
4982
5901
  def set(self, string):
4983
- d = bitstruct.unpack("u1u6u5u7u11u2", binascii.unhexlify(string))
4984
- self.leds_on = d[0]
4985
- self.keep_alive_scan = d[1]
4986
- self.keep_alive_period = d[2]
4987
- self.on_duration = d[3]
4988
- self.sleep_duration = d[4]
4989
- self.unused = d[5]
5902
+ d = bitstruct.unpack("u4u4u8u8u48u8u8u8u8u8u1u1u1u1u1u1u1u1u32u40", binascii.unhexlify(string))
5903
+ self.module_type = d[0]
5904
+ self.msg_type = d[1]
5905
+ self.api_version = d[2]
5906
+ self.seq_id = d[3]
5907
+ self.brg_mac = d[4]
5908
+ self.board_type = d[5]
5909
+ self.bl_version = d[6]
5910
+ self.major_ver = d[7]
5911
+ self.minor_ver = d[8]
5912
+ self.patch_ver = d[9]
5913
+ self.sup_cap_glob = d[10]
5914
+ self.sup_cap_datapath = d[11]
5915
+ self.sup_cap_energy2400 = d[12]
5916
+ self.sup_cap_energy_sub1g = d[13]
5917
+ self.sup_cap_calibration = d[14]
5918
+ self.sup_cap_pwr_mgmt = d[15]
5919
+ self.sup_cap_sensors = d[16]
5920
+ self.sup_cap_custom = d[17]
5921
+ self.cfg_hash = d[18]
5922
+ self.unused0 = d[19]
4990
5923
 
4991
5924
  class ModuleIfV12():
4992
5925
  def __init__(self, raw='', module_type=MODULE_IF, msg_type=BRG_MGMT_MSG_TYPE_CFG_INFO, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, board_type=0, bl_version=0, major_ver=0, minor_ver=0, patch_ver=0, sup_cap_glob=0, sup_cap_datapath=0, sup_cap_energy2400=0, sup_cap_energy_sub1g=0, sup_cap_calibration=0, sup_cap_pwr_mgmt=0, sup_cap_sensors=0, sup_cap_custom=0, cfg_hash=0, unused0=0):
@@ -5014,7 +5947,7 @@ class ModuleIfV12():
5014
5947
  self.set(raw)
5015
5948
 
5016
5949
  def __repr__(self) -> str:
5017
- return "\n==> Packet module_if_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['board_type', f"0x{self.board_type:X}", self.board_type],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash]], tablefmt="texttable")
5950
+ return "\n==> Packet module_if_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver, ""],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob, ""],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath, ""],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400, ""],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g, ""],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration, ""],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt, ""],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors, ""],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom, ""],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash, ""]], tablefmt="texttable")
5018
5951
 
5019
5952
  def __eq__(self, other):
5020
5953
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5093,7 +6026,7 @@ class ModuleIfV11():
5093
6026
  self.set(raw)
5094
6027
 
5095
6028
  def __repr__(self) -> str:
5096
- return "\n==> Packet module_if_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['board_type', f"0x{self.board_type:X}", self.board_type],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash]], tablefmt="texttable")
6029
+ return "\n==> Packet module_if_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver, ""],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob, ""],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath, ""],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400, ""],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g, ""],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration, ""],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt, ""],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors, ""],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom, ""],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash, ""]], tablefmt="texttable")
5097
6030
 
5098
6031
  def __eq__(self, other):
5099
6032
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5172,7 +6105,7 @@ class ModuleIfV10():
5172
6105
  self.set(raw)
5173
6106
 
5174
6107
  def __repr__(self) -> str:
5175
- return "\n==> Packet module_if_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['board_type', f"0x{self.board_type:X}", self.board_type],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash]], tablefmt="texttable")
6108
+ return "\n==> Packet module_if_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver, ""],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob, ""],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath, ""],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400, ""],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g, ""],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration, ""],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt, ""],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors, ""],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom, ""],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash, ""]], tablefmt="texttable")
5176
6109
 
5177
6110
  def __eq__(self, other):
5178
6111
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5251,7 +6184,7 @@ class ModuleIfV9():
5251
6184
  self.set(raw)
5252
6185
 
5253
6186
  def __repr__(self) -> str:
5254
- return "\n==> Packet module_if_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['board_type', f"0x{self.board_type:X}", self.board_type],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash]], tablefmt="texttable")
6187
+ return "\n==> Packet module_if_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver, ""],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob, ""],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath, ""],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400, ""],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g, ""],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration, ""],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt, ""],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors, ""],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom, ""],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash, ""]], tablefmt="texttable")
5255
6188
 
5256
6189
  def __eq__(self, other):
5257
6190
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5330,7 +6263,7 @@ class ModuleIfV8():
5330
6263
  self.set(raw)
5331
6264
 
5332
6265
  def __repr__(self) -> str:
5333
- return "\n==> Packet module_if_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['board_type', f"0x{self.board_type:X}", self.board_type],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash]], tablefmt="texttable")
6266
+ return "\n==> Packet module_if_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver, ""],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob, ""],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath, ""],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400, ""],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g, ""],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration, ""],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt, ""],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors, ""],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom, ""],['cfg_hash', f"0x{self.cfg_hash:X}", self.cfg_hash, ""]], tablefmt="texttable")
5334
6267
 
5335
6268
  def __eq__(self, other):
5336
6269
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5408,7 +6341,7 @@ class ModuleIfV7():
5408
6341
  self.set(raw)
5409
6342
 
5410
6343
  def __repr__(self) -> str:
5411
- return "\n==> Packet module_if_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['board_type', f"0x{self.board_type:X}", self.board_type],['bl_version', f"0x{self.bl_version:X}", self.bl_version],['major_ver', f"0x{self.major_ver:X}", self.major_ver],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom]], tablefmt="texttable")
6344
+ return "\n==> Packet module_if_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['board_type', f"0x{self.board_type:X}", self.board_type, ""],['bl_version', f"0x{self.bl_version:X}", self.bl_version, ""],['major_ver', f"0x{self.major_ver:X}", self.major_ver, ""],['minor_ver', f"0x{self.minor_ver:X}", self.minor_ver, ""],['patch_ver', f"0x{self.patch_ver:X}", self.patch_ver, ""],['sup_cap_glob', f"0x{self.sup_cap_glob:X}", self.sup_cap_glob, ""],['sup_cap_datapath', f"0x{self.sup_cap_datapath:X}", self.sup_cap_datapath, ""],['sup_cap_energy2400', f"0x{self.sup_cap_energy2400:X}", self.sup_cap_energy2400, ""],['sup_cap_energy_sub1g', f"0x{self.sup_cap_energy_sub1g:X}", self.sup_cap_energy_sub1g, ""],['sup_cap_calibration', f"0x{self.sup_cap_calibration:X}", self.sup_cap_calibration, ""],['sup_cap_pwr_mgmt', f"0x{self.sup_cap_pwr_mgmt:X}", self.sup_cap_pwr_mgmt, ""],['sup_cap_sensors', f"0x{self.sup_cap_sensors:X}", self.sup_cap_sensors, ""],['sup_cap_custom', f"0x{self.sup_cap_custom:X}", self.sup_cap_custom, ""]], tablefmt="texttable")
5412
6345
 
5413
6346
  def __eq__(self, other):
5414
6347
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5459,6 +6392,57 @@ class ModuleIfV7():
5459
6392
  self.sup_cap_custom = d[17]
5460
6393
  self.unused0 = d[18]
5461
6394
 
6395
+ MODULE_CALIBRATION_V13_OUTPUT_POWER_MAP = {0x00:"Maximum", 0x02:"Maximum - 2 dBm", 0x03:"Maximum - 3 dBm", 0x04:"Maximum - 4 dBm", 0x06:"Maximum - 6 dBm", 0x07:"Maximum - 7 dBm", 0x08:"Maximum - 8 dBm", 0x0A:"Maximum - 10 dBm", 0x0B:"Maximum - 11 dBm", 0x0C:"Maximum - 12 dBm", 0x0E:"Maximum - 14 dBm", 0x0F:"Maximum - 15 dBm", 0x10:"Maximum - 16 dBm", 0x12:"Maximum - 18 dBm", 0x13:"Maximum - 19 dBm", 0x14:"Maximum - 20 dBm", 0x16:"Maximum - 22 dBm", 0x17:"Maximum - 23 dBm", 0x1A:"Maximum - 26 dBm"}
6396
+ MODULE_CALIBRATION_V13_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Disable calibration beaconing"}
6397
+ class ModuleCalibrationV13():
6398
+ def __init__(self, raw='', module_type=MODULE_CALIBRATION, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, interval=BRG_DEFAULT_CALIBRATION_INTERVAL, output_power=BRG_DEFAULT_CALIBRATION_OUTPUT_POWER, pattern=BRG_DEFAULT_CALIBRATION_PATTERN, unused0=0, unused1=0):
6399
+ self.module_type = module_type
6400
+ self.msg_type = msg_type
6401
+ self.api_version = api_version
6402
+ self.seq_id = seq_id
6403
+ self.brg_mac = brg_mac
6404
+ self.interval = interval
6405
+ self.output_power = output_power
6406
+ self.pattern = pattern
6407
+ self.unused0 = unused0
6408
+ self.unused1 = unused1
6409
+ if raw:
6410
+ self.set(raw)
6411
+
6412
+ def __repr__(self) -> str:
6413
+ return "\n==> Packet module_calibration_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['interval', f"0x{self.interval:X}", self.interval, ""],['output_power', f"0x{self.output_power:X}", self.output_power, MODULE_CALIBRATION_V13_OUTPUT_POWER_MAP[self.output_power]],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_CALIBRATION_V13_PATTERN_MAP[self.pattern]]], tablefmt="texttable")
6414
+
6415
+ def __eq__(self, other):
6416
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
6417
+ return (
6418
+ self.module_type == other.module_type and
6419
+ self.msg_type == other.msg_type and
6420
+ self.api_version == other.api_version and
6421
+ self.brg_mac == other.brg_mac and
6422
+ self.interval == other.interval and
6423
+ self.output_power == other.output_power and
6424
+ self.pattern == other.pattern
6425
+ )
6426
+ return False
6427
+
6428
+ def dump(self):
6429
+ string = bitstruct.pack("u4u4u8u8u48u8u8u4u4u96", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.interval, self.output_power, self.pattern, self.unused0, self.unused1)
6430
+ return string.hex().upper()
6431
+
6432
+ def set(self, string):
6433
+ d = bitstruct.unpack("u4u4u8u8u48u8u8u4u4u96", binascii.unhexlify(string))
6434
+ self.module_type = d[0]
6435
+ self.msg_type = d[1]
6436
+ self.api_version = d[2]
6437
+ self.seq_id = d[3]
6438
+ self.brg_mac = d[4]
6439
+ self.interval = d[5]
6440
+ self.output_power = d[6]
6441
+ self.pattern = d[7]
6442
+ self.unused0 = d[8]
6443
+ self.unused1 = d[9]
6444
+
6445
+ MODULE_CALIBRATION_V12_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Disable calibration beaconing"}
5462
6446
  class ModuleCalibrationV12():
5463
6447
  def __init__(self, raw='', module_type=MODULE_CALIBRATION, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, interval=BRG_DEFAULT_CALIBRATION_INTERVAL, output_power=BRG_DEFAULT_OUTPUT_POWER_2_4, pattern=BRG_DEFAULT_CALIBRATION_PATTERN, unused0=0, unused1=0):
5464
6448
  self.module_type = module_type
@@ -5475,7 +6459,7 @@ class ModuleCalibrationV12():
5475
6459
  self.set(raw)
5476
6460
 
5477
6461
  def __repr__(self) -> str:
5478
- return "\n==> Packet module_calibration_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['interval', f"0x{self.interval:X}", self.interval],['output_power', f"0x{self.output_power:X}", self.output_power],['pattern', f"0x{self.pattern:X}", self.pattern]], tablefmt="texttable")
6462
+ return "\n==> Packet module_calibration_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['interval', f"0x{self.interval:X}", self.interval, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_CALIBRATION_V12_PATTERN_MAP[self.pattern]]], tablefmt="texttable")
5479
6463
 
5480
6464
  def __eq__(self, other):
5481
6465
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5507,6 +6491,7 @@ class ModuleCalibrationV12():
5507
6491
  self.unused0 = d[8]
5508
6492
  self.unused1 = d[9]
5509
6493
 
6494
+ MODULE_CALIBRATION_V11_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Disable calibration beaconing"}
5510
6495
  class ModuleCalibrationV11():
5511
6496
  def __init__(self, raw='', module_type=MODULE_CALIBRATION, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V11, seq_id=0, brg_mac=0, interval=BRG_DEFAULT_CALIBRATION_INTERVAL, output_power=BRG_DEFAULT_OUTPUT_POWER_2_4, pattern=BRG_DEFAULT_CALIBRATION_PATTERN, unused0=0, unused1=0):
5512
6497
  self.module_type = module_type
@@ -5523,7 +6508,7 @@ class ModuleCalibrationV11():
5523
6508
  self.set(raw)
5524
6509
 
5525
6510
  def __repr__(self) -> str:
5526
- return "\n==> Packet module_calibration_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['interval', f"0x{self.interval:X}", self.interval],['output_power', f"0x{self.output_power:X}", self.output_power],['pattern', f"0x{self.pattern:X}", self.pattern]], tablefmt="texttable")
6511
+ return "\n==> Packet module_calibration_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['interval', f"0x{self.interval:X}", self.interval, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_CALIBRATION_V11_PATTERN_MAP[self.pattern]]], tablefmt="texttable")
5527
6512
 
5528
6513
  def __eq__(self, other):
5529
6514
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5555,6 +6540,7 @@ class ModuleCalibrationV11():
5555
6540
  self.unused0 = d[8]
5556
6541
  self.unused1 = d[9]
5557
6542
 
6543
+ MODULE_CALIBRATION_V10_CALIB_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Disable calibration beaconing"}
5558
6544
  class ModuleCalibrationV10():
5559
6545
  def __init__(self, raw='', module_type=MODULE_CALIBRATION, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V10, seq_id=0, brg_mac=0, calib_interval=BRG_DEFAULT_CALIBRATION_INTERVAL, calib_output_power=BRG_DEFAULT_OUTPUT_POWER_2_4, calib_pattern=BRG_DEFAULT_CALIBRATION_PATTERN, unused0=0, unused1=0):
5560
6546
  self.module_type = module_type
@@ -5571,7 +6557,7 @@ class ModuleCalibrationV10():
5571
6557
  self.set(raw)
5572
6558
 
5573
6559
  def __repr__(self) -> str:
5574
- return "\n==> Packet module_calibration_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['calib_interval', f"0x{self.calib_interval:X}", self.calib_interval],['calib_output_power', f"0x{self.calib_output_power:X}", self.calib_output_power],['calib_pattern', f"0x{self.calib_pattern:X}", self.calib_pattern]], tablefmt="texttable")
6560
+ return "\n==> Packet module_calibration_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['calib_interval', f"0x{self.calib_interval:X}", self.calib_interval, ""],['calib_output_power', f"0x{self.calib_output_power:X}", self.calib_output_power, ""],['calib_pattern', f"0x{self.calib_pattern:X}", self.calib_pattern, MODULE_CALIBRATION_V10_CALIB_PATTERN_MAP[self.calib_pattern]]], tablefmt="texttable")
5575
6561
 
5576
6562
  def __eq__(self, other):
5577
6563
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5603,6 +6589,7 @@ class ModuleCalibrationV10():
5603
6589
  self.unused0 = d[8]
5604
6590
  self.unused1 = d[9]
5605
6591
 
6592
+ MODULE_CALIBRATION_V9_CALIB_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Disable calibration beaconing"}
5606
6593
  class ModuleCalibrationV9():
5607
6594
  def __init__(self, raw='', module_type=MODULE_CALIBRATION, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V9, seq_id=0, brg_mac=0, calib_interval=BRG_DEFAULT_CALIBRATION_INTERVAL, calib_output_power=BRG_DEFAULT_OUTPUT_POWER_2_4, calib_pattern=BRG_DEFAULT_CALIBRATION_PATTERN, unused0=0, unused1=0):
5608
6595
  self.module_type = module_type
@@ -5619,7 +6606,7 @@ class ModuleCalibrationV9():
5619
6606
  self.set(raw)
5620
6607
 
5621
6608
  def __repr__(self) -> str:
5622
- return "\n==> Packet module_calibration_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['calib_interval', f"0x{self.calib_interval:X}", self.calib_interval],['calib_output_power', f"0x{self.calib_output_power:X}", self.calib_output_power],['calib_pattern', f"0x{self.calib_pattern:X}", self.calib_pattern]], tablefmt="texttable")
6609
+ return "\n==> Packet module_calibration_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['calib_interval', f"0x{self.calib_interval:X}", self.calib_interval, ""],['calib_output_power', f"0x{self.calib_output_power:X}", self.calib_output_power, ""],['calib_pattern', f"0x{self.calib_pattern:X}", self.calib_pattern, MODULE_CALIBRATION_V9_CALIB_PATTERN_MAP[self.calib_pattern]]], tablefmt="texttable")
5623
6610
 
5624
6611
  def __eq__(self, other):
5625
6612
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5663,7 +6650,7 @@ class ModuleCalibrationV8():
5663
6650
  self.set(raw)
5664
6651
 
5665
6652
  def __repr__(self) -> str:
5666
- return "\n==> Packet module_calibration_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
6653
+ return "\n==> Packet module_calibration_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
5667
6654
 
5668
6655
  def __eq__(self, other):
5669
6656
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5700,7 +6687,7 @@ class ModuleCalibrationV7():
5700
6687
  self.set(raw)
5701
6688
 
5702
6689
  def __repr__(self) -> str:
5703
- return "\n==> Packet module_calibration_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac]], tablefmt="texttable")
6690
+ return "\n==> Packet module_calibration_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""]], tablefmt="texttable")
5704
6691
 
5705
6692
  def __eq__(self, other):
5706
6693
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5725,6 +6712,90 @@ class ModuleCalibrationV7():
5725
6712
  self.brg_mac = d[4]
5726
6713
  self.unused0 = d[5]
5727
6714
 
6715
+ MODULE_DATAPATH_V13_PKT_FILTER_MAP = {0x00:"Random first Arriving packet", 0x10:"Disable forwarding", 0x11:"Temperature packet", 0x12:"Advanced packet", 0x13:"Temperature and Advanced packets", 0x14:"Debug packet", 0x15:"Temperature and Debug packets", 0x17:"Temperature Advanced and Debug packets"}
6716
+ MODULE_DATAPATH_V13_OUTPUT_POWER_MAP = {0x00:"Maximum", 0x02:"Maximum - 2 dBm", 0x03:"Maximum - 3 dBm", 0x04:"Maximum - 4 dBm", 0x06:"Maximum - 6 dBm", 0x07:"Maximum - 7 dBm", 0x08:"Maximum - 8 dBm", 0x0A:"Maximum - 10 dBm", 0x0B:"Maximum - 11 dBm", 0x0C:"Maximum - 12 dBm", 0x0E:"Maximum - 14 dBm", 0x0F:"Maximum - 15 dBm", 0x10:"Maximum - 16 dBm", 0x12:"Maximum - 18 dBm", 0x13:"Maximum - 19 dBm", 0x14:"Maximum - 20 dBm", 0x16:"Maximum - 22 dBm", 0x17:"Maximum - 23 dBm", 0x1A:"Maximum - 26 dBm"}
6717
+ MODULE_DATAPATH_V13_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Extended Advertising", 0x04:"Extended Advertising - No Pointers on Channel 37", 0x05:"Extended Advertising - Channel 10"}
6718
+ MODULE_DATAPATH_V13_RX_CHANNEL_MAP = {0x00:"Channel 37 - primary advertisement channel", 0x01:"Channel 38 - primary advertisement channel", 0x02:"Channel 39 - primary advertisement channel", 0x03:"Channel 10 - 2Mbps - E2/E3 Pixels", 0x04:"Channel 10 - 2Mbps - E4 Pixels", 0x05:"Channel Hopping - 37 and 10", 0x06:"Channel 21 - 2Mbps - E4 Pixels"}
6719
+ MODULE_DATAPATH_V13_EVENT_TIME_UNIT_MAP = {0x00:"Seconds", 0x01:"Minutes", 0x02:"Hours"}
6720
+ MODULE_DATAPATH_V13_EVENT_TRIGGER_MAP = {0x00:"No Trigger", 0x01:"New Pixel", 0x02:"Temperature Change", 0x03:"New Pixel or Temperature Change", 0x04:"Tx Rate Change", 0x05:"New Pixel or Tx Rate Change", 0x06:"Temperature Change or Tx Rate Change", 0x07:"New Pixel, Temperature Change or Tx Rate Change", 0x08:"RSSI Change", 0x09:"New Pixel or RSSI Change", 0x0A:"Temperature Change or RSSI Change", 0x0B:"New Pixel, Temperature Change or RSSI Change", 0x0C:"Tx Rate or RSSI Change", 0x0D:"New Pixel, Tx Rate or RSSI Change", 0x0E:"Temperature Change, Tx Rate Change or RSSI Change", 0x0F:"All Triggers"}
6721
+ class ModuleDatapathV13():
6722
+ def __init__(self, raw='', module_type=MODULE_DATAPATH, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, rssi_threshold=BRG_DEFAULT_RSSI_THRESHOLD, pacer_interval=BRG_DEFAULT_PACER_INTERVAL, pkt_filter=BRG_DEFAULT_PKT_FILTER, tx_repetition=BRG_DEFAULT_TX_REPETITION, output_power=BRG_DEFAULT_DATAPATH_OUTPUT_POWER, pattern=BRG_DEFAULT_DATAPATH_PATTERN, rx_channel=BRG_DEFAULT_RX_CHANNEL, event_window=BRG_DEFAULT_EVENT_WINDOW, unused0=0, event_time_unit=BRG_DEFAULT_EVENT_TIME_UNIT, event_trigger=BRG_DEFAULT_EVENT_TRIGGER, rssi_movement_threshold=BRG_DEFAULT_RSSI_MOVEMENT_THRESHOLD, event_pacer_interval=0, unused1=0):
6723
+ self.module_type = module_type
6724
+ self.msg_type = msg_type
6725
+ self.api_version = api_version
6726
+ self.seq_id = seq_id
6727
+ self.brg_mac = brg_mac
6728
+ self.rssi_threshold = rssi_threshold
6729
+ self.pacer_interval = pacer_interval
6730
+ self.pkt_filter = pkt_filter
6731
+ self.tx_repetition = tx_repetition
6732
+ self.output_power = output_power
6733
+ self.pattern = pattern
6734
+ self.rx_channel = rx_channel
6735
+ self.event_window = event_window
6736
+ self.unused0 = unused0
6737
+ self.event_time_unit = event_time_unit
6738
+ self.event_trigger = event_trigger
6739
+ self.rssi_movement_threshold = rssi_movement_threshold
6740
+ self.event_pacer_interval = event_pacer_interval
6741
+ self.unused1 = unused1
6742
+ if raw:
6743
+ self.set(raw)
6744
+
6745
+ def __repr__(self) -> str:
6746
+ return "\n==> Packet module_datapath_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['rssi_threshold', f"0x{self.rssi_threshold:X}", self.rssi_threshold, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter, MODULE_DATAPATH_V13_PKT_FILTER_MAP[self.pkt_filter]],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['output_power', f"0x{self.output_power:X}", self.output_power, MODULE_DATAPATH_V13_OUTPUT_POWER_MAP[self.output_power]],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_DATAPATH_V13_PATTERN_MAP[self.pattern]],['rx_channel', f"0x{self.rx_channel:X}", self.rx_channel, MODULE_DATAPATH_V13_RX_CHANNEL_MAP[self.rx_channel]],['event_window', f"0x{self.event_window:X}", self.event_window, ""],['event_time_unit', f"0x{self.event_time_unit:X}", self.event_time_unit, MODULE_DATAPATH_V13_EVENT_TIME_UNIT_MAP[self.event_time_unit]],['event_trigger', f"0x{self.event_trigger:X}", self.event_trigger, MODULE_DATAPATH_V13_EVENT_TRIGGER_MAP[self.event_trigger]],['rssi_movement_threshold', f"0x{self.rssi_movement_threshold:X}", self.rssi_movement_threshold, ""],['event_pacer_interval', f"0x{self.event_pacer_interval:X}", self.event_pacer_interval, ""]], tablefmt="texttable")
6747
+
6748
+ def __eq__(self, other):
6749
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
6750
+ return (
6751
+ self.module_type == other.module_type and
6752
+ self.msg_type == other.msg_type and
6753
+ self.api_version == other.api_version and
6754
+ self.brg_mac == other.brg_mac and
6755
+ self.rssi_threshold == other.rssi_threshold and
6756
+ self.pacer_interval == other.pacer_interval and
6757
+ self.pkt_filter == other.pkt_filter and
6758
+ self.tx_repetition == other.tx_repetition and
6759
+ self.output_power == other.output_power and
6760
+ self.pattern == other.pattern and
6761
+ self.rx_channel == other.rx_channel and
6762
+ self.event_window == other.event_window and
6763
+ self.event_time_unit == other.event_time_unit and
6764
+ self.event_trigger == other.event_trigger and
6765
+ self.rssi_movement_threshold == other.rssi_movement_threshold and
6766
+ self.event_pacer_interval == other.event_pacer_interval
6767
+ )
6768
+ return False
6769
+
6770
+ def dump(self):
6771
+ string = bitstruct.pack("u4u4u8u8u48s8u16u5u3u8u4u4u8u2u2u4u8u16u32", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, ((self.rssi_threshold-0)//-1), self.pacer_interval, self.pkt_filter, self.tx_repetition, self.output_power, self.pattern, self.rx_channel, self.event_window, self.unused0, self.event_time_unit, self.event_trigger, self.rssi_movement_threshold, self.event_pacer_interval, self.unused1)
6772
+ return string.hex().upper()
6773
+
6774
+ def set(self, string):
6775
+ d = bitstruct.unpack("u4u4u8u8u48s8u16u5u3u8u4u4u8u2u2u4u8u16u32", binascii.unhexlify(string))
6776
+ self.module_type = d[0]
6777
+ self.msg_type = d[1]
6778
+ self.api_version = d[2]
6779
+ self.seq_id = d[3]
6780
+ self.brg_mac = d[4]
6781
+ self.rssi_threshold = ((d[5]*-1)+0)
6782
+ self.pacer_interval = d[6]
6783
+ self.pkt_filter = d[7]
6784
+ self.tx_repetition = d[8]
6785
+ self.output_power = d[9]
6786
+ self.pattern = d[10]
6787
+ self.rx_channel = d[11]
6788
+ self.event_window = d[12]
6789
+ self.unused0 = d[13]
6790
+ self.event_time_unit = d[14]
6791
+ self.event_trigger = d[15]
6792
+ self.rssi_movement_threshold = d[16]
6793
+ self.event_pacer_interval = d[17]
6794
+ self.unused1 = d[18]
6795
+
6796
+ MODULE_DATAPATH_V12_PKT_FILTER_MAP = {0x00:"Random first Arriving packet", 0x10:"Disable forwarding", 0x11:"Temperature packet", 0x12:"Advanced packet", 0x13:"Temperature and Advanced packets", 0x14:"Debug packet", 0x15:"Temperature and Debug packets", 0x17:"Temperature Advanced and Debug packets"}
6797
+ MODULE_DATAPATH_V12_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Extended Advertising", 0x04:"Extended Advertising - No Pointers on Channel 37", 0x05:"Extended Advertising - Channel 10"}
6798
+ MODULE_DATAPATH_V12_RX_CHANNEL_MAP = {0x00:"Channel 37 - primary advertisement channel", 0x01:"Channel 38 - primary advertisement channel", 0x02:"Channel 39 - primary advertisement channel", 0x03:"Channel 10 - 2Mbps - E2/E3 Pixels", 0x04:"Channel 10 - 2Mbps - E4 Pixels", 0x05:"Channel Hopping - 37 and 10", 0x06:"Channel 21 - 2Mbps - E4 Pixels"}
5728
6799
  class ModuleDatapathV12():
5729
6800
  def __init__(self, raw='', module_type=MODULE_DATAPATH, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, rssi_threshold=BRG_DEFAULT_RSSI_THRESHOLD, pacer_interval=BRG_DEFAULT_PACER_INTERVAL, pkt_filter=BRG_DEFAULT_PKT_FILTER, tx_repetition=BRG_DEFAULT_TX_REPETITION, output_power=BRG_DEFAULT_DATAPATH_OUTPUT_POWER, pattern=BRG_DEFAULT_DATAPATH_PATTERN, rx_channel=BRG_DEFAULT_RX_CHANNEL, unused0=0):
5730
6801
  self.module_type = module_type
@@ -5744,7 +6815,7 @@ class ModuleDatapathV12():
5744
6815
  self.set(raw)
5745
6816
 
5746
6817
  def __repr__(self) -> str:
5747
- return "\n==> Packet module_datapath_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['rssi_threshold', f"0x{self.rssi_threshold:X}", self.rssi_threshold],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['output_power', f"0x{self.output_power:X}", self.output_power],['pattern', f"0x{self.pattern:X}", self.pattern],['rx_channel', f"0x{self.rx_channel:X}", self.rx_channel]], tablefmt="texttable")
6818
+ return "\n==> Packet module_datapath_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['rssi_threshold', f"0x{self.rssi_threshold:X}", self.rssi_threshold, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter, MODULE_DATAPATH_V12_PKT_FILTER_MAP[self.pkt_filter]],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_DATAPATH_V12_PATTERN_MAP[self.pattern]],['rx_channel', f"0x{self.rx_channel:X}", self.rx_channel, MODULE_DATAPATH_V12_RX_CHANNEL_MAP[self.rx_channel]]], tablefmt="texttable")
5748
6819
 
5749
6820
  def __eq__(self, other):
5750
6821
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5783,6 +6854,9 @@ class ModuleDatapathV12():
5783
6854
  self.rx_channel = d[11]
5784
6855
  self.unused0 = d[12]
5785
6856
 
6857
+ MODULE_DATAPATH_V11_PKT_FILTER_MAP = {0x00:"Random first Arriving packet", 0x10:"Disable forwarding", 0x11:"Temperature packet", 0x12:"Advanced packet", 0x13:"Temperature and Advanced packets", 0x14:"Debug packet", 0x15:"Temperature and Debug packets", 0x17:"Temperature Advanced and Debug packets"}
6858
+ MODULE_DATAPATH_V11_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Extended Advertising", 0x04:"Extended Advertising - No Pointers on Channel 37", 0x05:"Extended Advertising - Channel 10"}
6859
+ MODULE_DATAPATH_V11_RX_CHANNEL_MAP = {0x00:"Channel 37 - primary advertisement channel", 0x01:"Channel 38 - primary advertisement channel", 0x02:"Channel 39 - primary advertisement channel", 0x03:"Channel 4 - 1Mbps - secondary advertisement channel", 0x04:"Channel 10 - 1Mbps - secondary advertisement channel", 0x05:"Channel 4 - 2Mbps - secondary advertisement channel", 0x06:"Channel 10 - 2Mbps - secondary advertisement channel"}
5786
6860
  class ModuleDatapathV11():
5787
6861
  def __init__(self, raw='', module_type=MODULE_DATAPATH, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V11, seq_id=0, brg_mac=0, unused1=0, unused0=0, adaptive_pacer=0, unified_echo_pkt=1, pacer_interval=BRG_DEFAULT_PACER_INTERVAL, pkt_filter=BRG_DEFAULT_PKT_FILTER, tx_repetition=BRG_DEFAULT_TX_REPETITION, output_power=BRG_DEFAULT_DATAPATH_OUTPUT_POWER, pattern=BRG_DEFAULT_DATAPATH_PATTERN, rx_channel=BRG_DEFAULT_RX_CHANNEL, unused2=0):
5788
6862
  self.module_type = module_type
@@ -5805,7 +6879,7 @@ class ModuleDatapathV11():
5805
6879
  self.set(raw)
5806
6880
 
5807
6881
  def __repr__(self) -> str:
5808
- return "\n==> Packet module_datapath_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['adaptive_pacer', f"0x{self.adaptive_pacer:X}", self.adaptive_pacer],['unified_echo_pkt', f"0x{self.unified_echo_pkt:X}", self.unified_echo_pkt],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['output_power', f"0x{self.output_power:X}", self.output_power],['pattern', f"0x{self.pattern:X}", self.pattern],['rx_channel', f"0x{self.rx_channel:X}", self.rx_channel]], tablefmt="texttable")
6882
+ return "\n==> Packet module_datapath_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['adaptive_pacer', f"0x{self.adaptive_pacer:X}", self.adaptive_pacer, ""],['unified_echo_pkt', f"0x{self.unified_echo_pkt:X}", self.unified_echo_pkt, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter, MODULE_DATAPATH_V11_PKT_FILTER_MAP[self.pkt_filter]],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_DATAPATH_V11_PATTERN_MAP[self.pattern]],['rx_channel', f"0x{self.rx_channel:X}", self.rx_channel, MODULE_DATAPATH_V11_RX_CHANNEL_MAP[self.rx_channel]]], tablefmt="texttable")
5809
6883
 
5810
6884
  def __eq__(self, other):
5811
6885
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5848,6 +6922,8 @@ class ModuleDatapathV11():
5848
6922
  self.rx_channel = d[14]
5849
6923
  self.unused2 = d[15]
5850
6924
 
6925
+ MODULE_DATAPATH_V10_PKT_FILTER_MAP = {0x00:"Random first Arriving packet", 0x10:"Disable forwarding", 0x11:"Temperature packet", 0x12:"Advanced packet", 0x13:"Temperature and Advanced packets", 0x14:"Debug packet", 0x15:"Temperature and Debug packets", 0x17:"Temperature Advanced and Debug packets"}
6926
+ MODULE_DATAPATH_V10_COMM_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Extended Advertising", 0x04:"Extended Advertising - No Pointers on Channel 37", 0x05:"Extended Advertising - Channel 10"}
5851
6927
  class ModuleDatapathV10():
5852
6928
  def __init__(self, raw='', module_type=MODULE_DATAPATH, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V10, seq_id=0, brg_mac=0, global_pacing_group=0, unused0=0, adaptive_pacer=0, unified_echo_pkt=0, pacer_interval=BRG_DEFAULT_PACER_INTERVAL, pkt_filter=BRG_DEFAULT_PKT_FILTER, tx_repetition=BRG_DEFAULT_TX_REPETITION, comm_output_power=BRG_DEFAULT_OUTPUT_POWER_2_4, comm_pattern=BRG_DEFAULT_DATAPATH_PATTERN, unused1=0, unused2=0):
5853
6929
  self.module_type = module_type
@@ -5870,7 +6946,7 @@ class ModuleDatapathV10():
5870
6946
  self.set(raw)
5871
6947
 
5872
6948
  def __repr__(self) -> str:
5873
- return "\n==> Packet module_datapath_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['adaptive_pacer', f"0x{self.adaptive_pacer:X}", self.adaptive_pacer],['unified_echo_pkt', f"0x{self.unified_echo_pkt:X}", self.unified_echo_pkt],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['comm_output_power', f"0x{self.comm_output_power:X}", self.comm_output_power],['comm_pattern', f"0x{self.comm_pattern:X}", self.comm_pattern]], tablefmt="texttable")
6949
+ return "\n==> Packet module_datapath_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['adaptive_pacer', f"0x{self.adaptive_pacer:X}", self.adaptive_pacer, ""],['unified_echo_pkt', f"0x{self.unified_echo_pkt:X}", self.unified_echo_pkt, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter, MODULE_DATAPATH_V10_PKT_FILTER_MAP[self.pkt_filter]],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['comm_output_power', f"0x{self.comm_output_power:X}", self.comm_output_power, ""],['comm_pattern', f"0x{self.comm_pattern:X}", self.comm_pattern, MODULE_DATAPATH_V10_COMM_PATTERN_MAP[self.comm_pattern]]], tablefmt="texttable")
5874
6950
 
5875
6951
  def __eq__(self, other):
5876
6952
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5913,6 +6989,8 @@ class ModuleDatapathV10():
5913
6989
  self.unused1 = d[14]
5914
6990
  self.unused2 = d[15]
5915
6991
 
6992
+ MODULE_DATAPATH_V9_PKT_FILTER_MAP = {0x00:"Random first Arriving packet", 0x10:"Disable forwarding", 0x11:"Temperature packet", 0x12:"Advanced packet", 0x13:"Temperature and Advanced packets", 0x14:"Debug packet", 0x15:"Temperature and Debug packets", 0x17:"Temperature Advanced and Debug packets"}
6993
+ MODULE_DATAPATH_V9_COMM_PATTERN_MAP = {0x00:"Standard beaconing", 0x01:"No Beacons on Channel 37", 0x02:"EU pattern", 0x03:"Extended Advertising", 0x04:"Extended Advertising - No Pointers on Channel 37", 0x05:"Extended Advertising - Channel 10"}
5916
6994
  class ModuleDatapathV9():
5917
6995
  def __init__(self, raw='', module_type=MODULE_DATAPATH, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V9, seq_id=0, brg_mac=0, global_pacing_group=0, unused0=0, adaptive_pacer=0, unified_echo_pkt=0, pacer_interval=BRG_DEFAULT_PACER_INTERVAL, pkt_filter=BRG_DEFAULT_PKT_FILTER, tx_repetition=BRG_DEFAULT_TX_REPETITION, comm_output_power=BRG_DEFAULT_OUTPUT_POWER_2_4, comm_pattern=BRG_DEFAULT_DATAPATH_PATTERN, unused1=0, unused2=0):
5918
6996
  self.module_type = module_type
@@ -5935,7 +7013,7 @@ class ModuleDatapathV9():
5935
7013
  self.set(raw)
5936
7014
 
5937
7015
  def __repr__(self) -> str:
5938
- return "\n==> Packet module_datapath_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['adaptive_pacer', f"0x{self.adaptive_pacer:X}", self.adaptive_pacer],['unified_echo_pkt', f"0x{self.unified_echo_pkt:X}", self.unified_echo_pkt],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition],['comm_output_power', f"0x{self.comm_output_power:X}", self.comm_output_power],['comm_pattern', f"0x{self.comm_pattern:X}", self.comm_pattern]], tablefmt="texttable")
7016
+ return "\n==> Packet module_datapath_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['adaptive_pacer', f"0x{self.adaptive_pacer:X}", self.adaptive_pacer, ""],['unified_echo_pkt', f"0x{self.unified_echo_pkt:X}", self.unified_echo_pkt, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['pkt_filter', f"0x{self.pkt_filter:X}", self.pkt_filter, MODULE_DATAPATH_V9_PKT_FILTER_MAP[self.pkt_filter]],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""],['comm_output_power', f"0x{self.comm_output_power:X}", self.comm_output_power, ""],['comm_pattern', f"0x{self.comm_pattern:X}", self.comm_pattern, MODULE_DATAPATH_V9_COMM_PATTERN_MAP[self.comm_pattern]]], tablefmt="texttable")
5939
7017
 
5940
7018
  def __eq__(self, other):
5941
7019
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -5995,7 +7073,7 @@ class ModuleDatapathV8():
5995
7073
  self.set(raw)
5996
7074
 
5997
7075
  def __repr__(self) -> str:
5998
- return "\n==> Packet module_datapath_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['pkt_types_mask', f"0x{self.pkt_types_mask:X}", self.pkt_types_mask],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition]], tablefmt="texttable")
7076
+ return "\n==> Packet module_datapath_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['pkt_types_mask', f"0x{self.pkt_types_mask:X}", self.pkt_types_mask, ""],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""]], tablefmt="texttable")
5999
7077
 
6000
7078
  def __eq__(self, other):
6001
7079
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6030,7 +7108,7 @@ class ModuleDatapathV8():
6030
7108
  self.unused1 = d[10]
6031
7109
 
6032
7110
  class ModuleDatapathV7():
6033
- def __init__(self, raw='', module_type=MODULE_DATAPATH, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V7, seq_id=0, brg_mac=0, global_pacing_group=0, unused0=0, pacer_interval=BRG_DEFAULT_PACER_INTERVAL, unsued2=0, tx_repetition=BRG_DEFAULT_TX_REPETITION, unused1=0):
7111
+ def __init__(self, raw='', module_type=MODULE_DATAPATH, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V7, seq_id=0, brg_mac=0, global_pacing_group=0, unused0=0, pacer_interval=BRG_DEFAULT_PACER_INTERVAL, unused2=0, tx_repetition=BRG_DEFAULT_TX_REPETITION, unused1=0):
6034
7112
  self.module_type = module_type
6035
7113
  self.msg_type = msg_type
6036
7114
  self.api_version = api_version
@@ -6039,14 +7117,14 @@ class ModuleDatapathV7():
6039
7117
  self.global_pacing_group = global_pacing_group
6040
7118
  self.unused0 = unused0
6041
7119
  self.pacer_interval = pacer_interval
6042
- self.unsued2 = unsued2
7120
+ self.unused2 = unused2
6043
7121
  self.tx_repetition = tx_repetition
6044
7122
  self.unused1 = unused1
6045
7123
  if raw:
6046
7124
  self.set(raw)
6047
7125
 
6048
7126
  def __repr__(self) -> str:
6049
- return "\n==> Packet module_datapath_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval],['unsued2', f"0x{self.unsued2:X}", self.unsued2],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition]], tablefmt="texttable")
7127
+ return "\n==> Packet module_datapath_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['global_pacing_group', f"0x{self.global_pacing_group:X}", self.global_pacing_group, ""],['pacer_interval', f"0x{self.pacer_interval:X}", self.pacer_interval, ""],['tx_repetition', f"0x{self.tx_repetition:X}", self.tx_repetition, ""]], tablefmt="texttable")
6050
7128
 
6051
7129
  def __eq__(self, other):
6052
7130
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6057,13 +7135,12 @@ class ModuleDatapathV7():
6057
7135
  self.brg_mac == other.brg_mac and
6058
7136
  self.global_pacing_group == other.global_pacing_group and
6059
7137
  self.pacer_interval == other.pacer_interval and
6060
- self.unsued2 == other.unsued2 and
6061
7138
  self.tx_repetition == other.tx_repetition
6062
7139
  )
6063
7140
  return False
6064
7141
 
6065
7142
  def dump(self):
6066
- string = bitstruct.pack("u4u4u8u8u48u4u4u16u5u3u88", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.global_pacing_group, self.unused0, self.pacer_interval, self.unsued2, self.tx_repetition, self.unused1)
7143
+ string = bitstruct.pack("u4u4u8u8u48u4u4u16u5u3u88", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.global_pacing_group, self.unused0, self.pacer_interval, self.unused2, self.tx_repetition, self.unused1)
6067
7144
  return string.hex().upper()
6068
7145
 
6069
7146
  def set(self, string):
@@ -6076,10 +7153,67 @@ class ModuleDatapathV7():
6076
7153
  self.global_pacing_group = d[5]
6077
7154
  self.unused0 = d[6]
6078
7155
  self.pacer_interval = d[7]
6079
- self.unsued2 = d[8]
7156
+ self.unused2 = d[8]
6080
7157
  self.tx_repetition = d[9]
6081
7158
  self.unused1 = d[10]
6082
7159
 
7160
+ MODULE_ENERGY_2400_V13_PATTERN_MAP = {0x00:"No Energizing", 0x01:"Channel 37", 0x02:"Channel 38", 0x03:"Channel 39", 0x04:"2450MHz", 0x05:"2454MHz"}
7161
+ MODULE_ENERGY_2400_V13_OUTPUT_POWER_MAP = {0x00:"Maximum", 0x02:"Maximum - 2 dBm", 0x03:"Maximum - 3 dBm", 0x04:"Maximum - 4 dBm", 0x06:"Maximum - 6 dBm", 0x07:"Maximum - 7 dBm", 0x08:"Maximum - 8 dBm", 0x0A:"Maximum - 10 dBm", 0x0B:"Maximum - 11 dBm", 0x0C:"Maximum - 12 dBm", 0x0E:"Maximum - 14 dBm", 0x0F:"Maximum - 15 dBm", 0x10:"Maximum - 16 dBm", 0x12:"Maximum - 18 dBm", 0x13:"Maximum - 19 dBm", 0x14:"Maximum - 20 dBm", 0x16:"Maximum - 22 dBm", 0x17:"Maximum - 23 dBm", 0x1A:"Maximum - 26 dBm"}
7162
+ MODULE_ENERGY_2400_V13_SIGNAL_INDICATOR_REP_ENC = {SIGNAL_INDICATOR_REP_1:0, SIGNAL_INDICATOR_REP_2:1, SIGNAL_INDICATOR_REP_3:2, SIGNAL_INDICATOR_REP_4:3}
7163
+ MODULE_ENERGY_2400_V13_SIGNAL_INDICATOR_REP_DEC = {0:SIGNAL_INDICATOR_REP_1, 1:SIGNAL_INDICATOR_REP_2, 2:SIGNAL_INDICATOR_REP_3, 3:SIGNAL_INDICATOR_REP_4}
7164
+ class ModuleEnergy2400V13():
7165
+ def __init__(self, raw='', module_type=MODULE_ENERGY_2400, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, duty_cycle=BRG_DEFAULT_ENERGY_DUTY_CYCLE_2_4, pattern=BRG_DEFAULT_ENERGY_PATTERN_2_4, output_power=BRG_DEFAULT_OUTPUT_POWER_2_4, signal_indicator_cycle=BRG_DEFAULT_SIGNAL_INDICATOR_CYCLE, signal_indicator_rep=BRG_DEFAULT_SIGNAL_INDICATOR_REP, unused0=0):
7166
+ self.module_type = module_type
7167
+ self.msg_type = msg_type
7168
+ self.api_version = api_version
7169
+ self.seq_id = seq_id
7170
+ self.brg_mac = brg_mac
7171
+ self.duty_cycle = duty_cycle
7172
+ self.pattern = pattern
7173
+ self.output_power = output_power
7174
+ self.signal_indicator_cycle = signal_indicator_cycle
7175
+ self.signal_indicator_rep = signal_indicator_rep
7176
+ self.unused0 = unused0
7177
+ if raw:
7178
+ self.set(raw)
7179
+
7180
+ def __repr__(self) -> str:
7181
+ return "\n==> Packet module_energy_2400_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_ENERGY_2400_V13_PATTERN_MAP[self.pattern]],['output_power', f"0x{self.output_power:X}", self.output_power, MODULE_ENERGY_2400_V13_OUTPUT_POWER_MAP[self.output_power]],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle, ""],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep, ""]], tablefmt="texttable")
7182
+
7183
+ def __eq__(self, other):
7184
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
7185
+ return (
7186
+ self.module_type == other.module_type and
7187
+ self.msg_type == other.msg_type and
7188
+ self.api_version == other.api_version and
7189
+ self.brg_mac == other.brg_mac and
7190
+ self.duty_cycle == other.duty_cycle and
7191
+ self.pattern == other.pattern and
7192
+ self.output_power == other.output_power and
7193
+ self.signal_indicator_cycle == other.signal_indicator_cycle and
7194
+ self.signal_indicator_rep == other.signal_indicator_rep
7195
+ )
7196
+ return False
7197
+
7198
+ def dump(self):
7199
+ string = bitstruct.pack("u4u4u8u8u48u8u8u8u14u2u80", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.duty_cycle, self.pattern, self.output_power, self.signal_indicator_cycle, MODULE_ENERGY_2400_V13_SIGNAL_INDICATOR_REP_ENC[self.signal_indicator_rep], self.unused0)
7200
+ return string.hex().upper()
7201
+
7202
+ def set(self, string):
7203
+ d = bitstruct.unpack("u4u4u8u8u48u8u8u8u14u2u80", binascii.unhexlify(string))
7204
+ self.module_type = d[0]
7205
+ self.msg_type = d[1]
7206
+ self.api_version = d[2]
7207
+ self.seq_id = d[3]
7208
+ self.brg_mac = d[4]
7209
+ self.duty_cycle = d[5]
7210
+ self.pattern = d[6]
7211
+ self.output_power = d[7]
7212
+ self.signal_indicator_cycle = d[8]
7213
+ self.signal_indicator_rep = MODULE_ENERGY_2400_V13_SIGNAL_INDICATOR_REP_DEC[d[9]]
7214
+ self.unused0 = d[10]
7215
+
7216
+ MODULE_ENERGY_2400_V12_PATTERN_MAP = {0x00:"No Energizing", 0x01:"Channel 37", 0x02:"Channel 38", 0x03:"Channel 39", 0x04:"2450MHz", 0x05:"2454MHz"}
6083
7217
  MODULE_ENERGY_2400_V12_SIGNAL_INDICATOR_REP_ENC = {SIGNAL_INDICATOR_REP_1:0, SIGNAL_INDICATOR_REP_2:1, SIGNAL_INDICATOR_REP_3:2, SIGNAL_INDICATOR_REP_4:3}
6084
7218
  MODULE_ENERGY_2400_V12_SIGNAL_INDICATOR_REP_DEC = {0:SIGNAL_INDICATOR_REP_1, 1:SIGNAL_INDICATOR_REP_2, 2:SIGNAL_INDICATOR_REP_3, 3:SIGNAL_INDICATOR_REP_4}
6085
7219
  class ModuleEnergy2400V12():
@@ -6099,7 +7233,7 @@ class ModuleEnergy2400V12():
6099
7233
  self.set(raw)
6100
7234
 
6101
7235
  def __repr__(self) -> str:
6102
- return "\n==> Packet module_energy_2400_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle],['pattern', f"0x{self.pattern:X}", self.pattern],['output_power', f"0x{self.output_power:X}", self.output_power],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep]], tablefmt="texttable")
7236
+ return "\n==> Packet module_energy_2400_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_ENERGY_2400_V12_PATTERN_MAP[self.pattern]],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle, ""],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep, ""]], tablefmt="texttable")
6103
7237
 
6104
7238
  def __eq__(self, other):
6105
7239
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6134,6 +7268,7 @@ class ModuleEnergy2400V12():
6134
7268
  self.signal_indicator_rep = MODULE_ENERGY_2400_V12_SIGNAL_INDICATOR_REP_DEC[d[9]]
6135
7269
  self.unused0 = d[10]
6136
7270
 
7271
+ MODULE_ENERGY_2400_V11_PATTERN_MAP = {0x00:"No Energizing", 0x01:"Channel 37", 0x02:"Channel 38", 0x03:"Channel 39", 0x04:"2450MHz", 0x05:"2454MHz"}
6137
7272
  MODULE_ENERGY_2400_V11_SIGNAL_INDICATOR_REP_ENC = {SIGNAL_INDICATOR_REP_1:0, SIGNAL_INDICATOR_REP_2:1, SIGNAL_INDICATOR_REP_3:2, SIGNAL_INDICATOR_REP_4:3}
6138
7273
  MODULE_ENERGY_2400_V11_SIGNAL_INDICATOR_REP_DEC = {0:SIGNAL_INDICATOR_REP_1, 1:SIGNAL_INDICATOR_REP_2, 2:SIGNAL_INDICATOR_REP_3, 3:SIGNAL_INDICATOR_REP_4}
6139
7274
  class ModuleEnergy2400V11():
@@ -6153,7 +7288,7 @@ class ModuleEnergy2400V11():
6153
7288
  self.set(raw)
6154
7289
 
6155
7290
  def __repr__(self) -> str:
6156
- return "\n==> Packet module_energy_2400_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle],['pattern', f"0x{self.pattern:X}", self.pattern],['output_power', f"0x{self.output_power:X}", self.output_power],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep]], tablefmt="texttable")
7291
+ return "\n==> Packet module_energy_2400_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_ENERGY_2400_V11_PATTERN_MAP[self.pattern]],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle, ""],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep, ""]], tablefmt="texttable")
6157
7292
 
6158
7293
  def __eq__(self, other):
6159
7294
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6188,6 +7323,7 @@ class ModuleEnergy2400V11():
6188
7323
  self.signal_indicator_rep = MODULE_ENERGY_2400_V11_SIGNAL_INDICATOR_REP_DEC[d[9]]
6189
7324
  self.unused0 = d[10]
6190
7325
 
7326
+ MODULE_ENERGY_2400_V10_ENERGY_PATTERN_2400_MAP = {0x00:"No Energizing", 0x01:"Channel 37", 0x02:"Channel 38", 0x03:"Channel 39", 0x04:"2450MHz", 0x05:"2454MHz"}
6191
7327
  MODULE_ENERGY_2400_V10_SIGNAL_INDICATOR_REP_ENC = {SIGNAL_INDICATOR_REP_1:0, SIGNAL_INDICATOR_REP_2:1, SIGNAL_INDICATOR_REP_3:2, SIGNAL_INDICATOR_REP_4:3}
6192
7328
  MODULE_ENERGY_2400_V10_SIGNAL_INDICATOR_REP_DEC = {0:SIGNAL_INDICATOR_REP_1, 1:SIGNAL_INDICATOR_REP_2, 2:SIGNAL_INDICATOR_REP_3, 3:SIGNAL_INDICATOR_REP_4}
6193
7329
  class ModuleEnergy2400V10():
@@ -6207,7 +7343,7 @@ class ModuleEnergy2400V10():
6207
7343
  self.set(raw)
6208
7344
 
6209
7345
  def __repr__(self) -> str:
6210
- return "\n==> Packet module_energy_2400_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle],['energy_pattern_2400', f"0x{self.energy_pattern_2400:X}", self.energy_pattern_2400],['output_power', f"0x{self.output_power:X}", self.output_power],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep]], tablefmt="texttable")
7346
+ return "\n==> Packet module_energy_2400_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['energy_pattern_2400', f"0x{self.energy_pattern_2400:X}", self.energy_pattern_2400, MODULE_ENERGY_2400_V10_ENERGY_PATTERN_2400_MAP[self.energy_pattern_2400]],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle, ""],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep, ""]], tablefmt="texttable")
6211
7347
 
6212
7348
  def __eq__(self, other):
6213
7349
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6242,6 +7378,7 @@ class ModuleEnergy2400V10():
6242
7378
  self.signal_indicator_rep = MODULE_ENERGY_2400_V10_SIGNAL_INDICATOR_REP_DEC[d[9]]
6243
7379
  self.unused0 = d[10]
6244
7380
 
7381
+ MODULE_ENERGY_2400_V9_ENERGY_PATTERN_2400_MAP = {0x00:"No Energizing", 0x01:"Channel 37", 0x02:"Channel 38", 0x03:"Channel 39", 0x04:"2450MHz", 0x05:"2454MHz"}
6245
7382
  class ModuleEnergy2400V9():
6246
7383
  def __init__(self, raw='', module_type=MODULE_ENERGY_2400, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V9, seq_id=0, brg_mac=0, duty_cycle=BRG_DEFAULT_ENERGY_DUTY_CYCLE_2_4, energy_pattern_2400=BRG_DEFAULT_ENERGY_PATTERN_2_4, output_power=BRG_DEFAULT_OUTPUT_POWER_2_4, unused0=0):
6247
7384
  self.module_type = module_type
@@ -6257,7 +7394,7 @@ class ModuleEnergy2400V9():
6257
7394
  self.set(raw)
6258
7395
 
6259
7396
  def __repr__(self) -> str:
6260
- return "\n==> Packet module_energy_2400_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle],['energy_pattern_2400', f"0x{self.energy_pattern_2400:X}", self.energy_pattern_2400],['output_power', f"0x{self.output_power:X}", self.output_power]], tablefmt="texttable")
7397
+ return "\n==> Packet module_energy_2400_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['energy_pattern_2400', f"0x{self.energy_pattern_2400:X}", self.energy_pattern_2400, MODULE_ENERGY_2400_V9_ENERGY_PATTERN_2400_MAP[self.energy_pattern_2400]],['output_power', f"0x{self.output_power:X}", self.output_power, ""]], tablefmt="texttable")
6261
7398
 
6262
7399
  def __eq__(self, other):
6263
7400
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6304,7 +7441,7 @@ class ModuleEnergy2400V8():
6304
7441
  self.set(raw)
6305
7442
 
6306
7443
  def __repr__(self) -> str:
6307
- return "\n==> Packet module_energy_2400_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['rx_tx_period', f"0x{self.rx_tx_period:X}", self.rx_tx_period],['tx_period', f"0x{self.tx_period:X}", self.tx_period],['energy_pattern', f"0x{self.energy_pattern:X}", self.energy_pattern],['output_power', f"0x{self.output_power:X}", self.output_power]], tablefmt="texttable")
7444
+ return "\n==> Packet module_energy_2400_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['rx_tx_period', f"0x{self.rx_tx_period:X}", self.rx_tx_period, ""],['tx_period', f"0x{self.tx_period:X}", self.tx_period, ""],['energy_pattern', f"0x{self.energy_pattern:X}", self.energy_pattern, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""]], tablefmt="texttable")
6308
7445
 
6309
7446
  def __eq__(self, other):
6310
7447
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6355,7 +7492,7 @@ class ModuleEnergy2400V7():
6355
7492
  self.set(raw)
6356
7493
 
6357
7494
  def __repr__(self) -> str:
6358
- return "\n==> Packet module_energy_2400_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['rx_tx_period', f"0x{self.rx_tx_period:X}", self.rx_tx_period],['tx_period', f"0x{self.tx_period:X}", self.tx_period],['energy_pattern', f"0x{self.energy_pattern:X}", self.energy_pattern],['output_power', f"0x{self.output_power:X}", self.output_power],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability]], tablefmt="texttable")
7495
+ return "\n==> Packet module_energy_2400_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['rx_tx_period', f"0x{self.rx_tx_period:X}", self.rx_tx_period, ""],['tx_period', f"0x{self.tx_period:X}", self.tx_period, ""],['energy_pattern', f"0x{self.energy_pattern:X}", self.energy_pattern, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['tx_probability', f"0x{self.tx_probability:X}", self.tx_probability, ""]], tablefmt="texttable")
6359
7496
 
6360
7497
  def __eq__(self, other):
6361
7498
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6391,6 +7528,59 @@ class ModuleEnergy2400V7():
6391
7528
  self.unused0 = d[10]
6392
7529
  self.unused1 = d[11]
6393
7530
 
7531
+ MODULE_ENERGY_SUB1G_V13_PATTERN_MAP = {0x00:"No Energizing", 0x01:"Single Tone 915MHz", 0x02:"FCC (Hopping)", 0x03:"Japan1W", 0x04:"Japan350mW", 0x05:"Korea", 0x06:"Single tone 916300MHz", 0x07:"Single tone 917500MHz", 0x08:"Australia", 0x09:"Israel", 0x0A:"NZ (Hopping)"}
7532
+ MODULE_ENERGY_SUB1G_V13_SIGNAL_INDICATOR_REP_ENC = {SIGNAL_INDICATOR_SUB1G_REP_1:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_1, SIGNAL_INDICATOR_SUB1G_REP_2:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_2, SIGNAL_INDICATOR_SUB1G_REP_3:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_3, SIGNAL_INDICATOR_SUB1G_REP_4:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4}
7533
+ MODULE_ENERGY_SUB1G_V13_SIGNAL_INDICATOR_REP_DEC = {SIGNAL_INDICATOR_SUB1G_REP_PROFILE_1:SIGNAL_INDICATOR_SUB1G_REP_1, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_2:SIGNAL_INDICATOR_SUB1G_REP_2, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_3:SIGNAL_INDICATOR_SUB1G_REP_3, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4:SIGNAL_INDICATOR_SUB1G_REP_4}
7534
+ class ModuleEnergySub1GV13():
7535
+ def __init__(self, raw='', module_type=MODULE_ENERGY_SUB1G, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, pattern=BRG_DEFAULT_SUB1G_ENERGY_PATTERN, duty_cycle=BRG_DEFAULT_SUB1G_DUTY_CYCLE, signal_indicator_cycle=BRG_DEFAULT_SIGNAL_INDICATOR_SUB1G_CYCLE, signal_indicator_rep=BRG_DEFAULT_SIGNAL_INDICATOR_SUB1G_REP, unused0=0):
7536
+ self.module_type = module_type
7537
+ self.msg_type = msg_type
7538
+ self.api_version = api_version
7539
+ self.seq_id = seq_id
7540
+ self.brg_mac = brg_mac
7541
+ self.pattern = pattern
7542
+ self.duty_cycle = duty_cycle
7543
+ self.signal_indicator_cycle = signal_indicator_cycle
7544
+ self.signal_indicator_rep = signal_indicator_rep
7545
+ self.unused0 = unused0
7546
+ if raw:
7547
+ self.set(raw)
7548
+
7549
+ def __repr__(self) -> str:
7550
+ return "\n==> Packet module_energy_sub1g_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_ENERGY_SUB1G_V13_PATTERN_MAP[self.pattern]],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle, ""],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep, ""]], tablefmt="texttable")
7551
+
7552
+ def __eq__(self, other):
7553
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
7554
+ return (
7555
+ self.module_type == other.module_type and
7556
+ self.msg_type == other.msg_type and
7557
+ self.api_version == other.api_version and
7558
+ self.brg_mac == other.brg_mac and
7559
+ self.pattern == other.pattern and
7560
+ self.duty_cycle == other.duty_cycle and
7561
+ self.signal_indicator_cycle == other.signal_indicator_cycle and
7562
+ self.signal_indicator_rep == other.signal_indicator_rep
7563
+ )
7564
+ return False
7565
+
7566
+ def dump(self):
7567
+ string = bitstruct.pack("u4u4u8u8u48u8u8u14u2u88", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.pattern, self.duty_cycle, self.signal_indicator_cycle, MODULE_ENERGY_SUB1G_V13_SIGNAL_INDICATOR_REP_ENC[self.signal_indicator_rep], self.unused0)
7568
+ return string.hex().upper()
7569
+
7570
+ def set(self, string):
7571
+ d = bitstruct.unpack("u4u4u8u8u48u8u8u14u2u88", binascii.unhexlify(string))
7572
+ self.module_type = d[0]
7573
+ self.msg_type = d[1]
7574
+ self.api_version = d[2]
7575
+ self.seq_id = d[3]
7576
+ self.brg_mac = d[4]
7577
+ self.pattern = d[5]
7578
+ self.duty_cycle = d[6]
7579
+ self.signal_indicator_cycle = d[7]
7580
+ self.signal_indicator_rep = MODULE_ENERGY_SUB1G_V13_SIGNAL_INDICATOR_REP_DEC[d[8]]
7581
+ self.unused0 = d[9]
7582
+
7583
+ MODULE_ENERGY_SUB1G_V12_PATTERN_MAP = {0x00:"No Energizing", 0x01:"Single Tone 915MHz", 0x02:"FCC (Hopping)", 0x03:"Japan1W", 0x04:"Japan350mW", 0x05:"Korea", 0x06:"Single tone 916300MHz", 0x07:"Single tone 917500MHz", 0x08:"Australia", 0x09:"Israel", 0x0A:"NZ (Hopping)"}
6394
7584
  MODULE_ENERGY_SUB1G_V12_SIGNAL_INDICATOR_REP_ENC = {SIGNAL_INDICATOR_SUB1G_REP_1:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_1, SIGNAL_INDICATOR_SUB1G_REP_2:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_2, SIGNAL_INDICATOR_SUB1G_REP_3:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_3, SIGNAL_INDICATOR_SUB1G_REP_4:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4}
6395
7585
  MODULE_ENERGY_SUB1G_V12_SIGNAL_INDICATOR_REP_DEC = {SIGNAL_INDICATOR_SUB1G_REP_PROFILE_1:SIGNAL_INDICATOR_SUB1G_REP_1, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_2:SIGNAL_INDICATOR_SUB1G_REP_2, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_3:SIGNAL_INDICATOR_SUB1G_REP_3, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4:SIGNAL_INDICATOR_SUB1G_REP_4}
6396
7586
  class ModuleEnergySub1GV12():
@@ -6409,7 +7599,7 @@ class ModuleEnergySub1GV12():
6409
7599
  self.set(raw)
6410
7600
 
6411
7601
  def __repr__(self) -> str:
6412
- return "\n==> Packet module_energy_sub1g_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['pattern', f"0x{self.pattern:X}", self.pattern],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep]], tablefmt="texttable")
7602
+ return "\n==> Packet module_energy_sub1g_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['pattern', f"0x{self.pattern:X}", self.pattern, MODULE_ENERGY_SUB1G_V12_PATTERN_MAP[self.pattern]],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle, ""],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep, ""]], tablefmt="texttable")
6413
7603
 
6414
7604
  def __eq__(self, other):
6415
7605
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6444,6 +7634,7 @@ class ModuleEnergySub1GV12():
6444
7634
 
6445
7635
  MODULE_ENERGY_SUB1G_V11_OUTPUT_POWER_ENC = {SUB1G_OUTPUT_POWER_14:SUB1G_OUTPUT_POWER_PROFILE_14, SUB1G_OUTPUT_POWER_17:SUB1G_OUTPUT_POWER_PROFILE_17, SUB1G_OUTPUT_POWER_20:SUB1G_OUTPUT_POWER_PROFILE_20, SUB1G_OUTPUT_POWER_23:SUB1G_OUTPUT_POWER_PROFILE_23, SUB1G_OUTPUT_POWER_26:SUB1G_OUTPUT_POWER_PROFILE_26, SUB1G_OUTPUT_POWER_29:SUB1G_OUTPUT_POWER_PROFILE_29, SUB1G_OUTPUT_POWER_32:SUB1G_OUTPUT_POWER_PROFILE_32}
6446
7636
  MODULE_ENERGY_SUB1G_V11_OUTPUT_POWER_DEC = {SUB1G_OUTPUT_POWER_PROFILE_14:SUB1G_OUTPUT_POWER_14, SUB1G_OUTPUT_POWER_PROFILE_17:SUB1G_OUTPUT_POWER_17, SUB1G_OUTPUT_POWER_PROFILE_20:SUB1G_OUTPUT_POWER_20, SUB1G_OUTPUT_POWER_PROFILE_23:SUB1G_OUTPUT_POWER_23, SUB1G_OUTPUT_POWER_PROFILE_26:SUB1G_OUTPUT_POWER_26, SUB1G_OUTPUT_POWER_PROFILE_29:SUB1G_OUTPUT_POWER_29, SUB1G_OUTPUT_POWER_PROFILE_32:SUB1G_OUTPUT_POWER_32}
7637
+ MODULE_ENERGY_SUB1G_V11_SUB1G_ENERGY_PATTERN_MAP = {0x00:"No Energizing", 0x01:"Single Tone 915MHz", 0x02:"FCC (Hopping)", 0x03:"Japan1W", 0x04:"Japan350mW", 0x05:"Korea", 0x06:"Single tone 916300MHz", 0x07:"Single tone 917500MHz", 0x08:"Australia", 0x09:"Israel", 0x0A:"NZ (Hopping)"}
6447
7638
  MODULE_ENERGY_SUB1G_V11_SIGNAL_INDICATOR_REP_ENC = {SIGNAL_INDICATOR_SUB1G_REP_1:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_1, SIGNAL_INDICATOR_SUB1G_REP_2:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_2, SIGNAL_INDICATOR_SUB1G_REP_3:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_3, SIGNAL_INDICATOR_SUB1G_REP_4:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4}
6448
7639
  MODULE_ENERGY_SUB1G_V11_SIGNAL_INDICATOR_REP_DEC = {SIGNAL_INDICATOR_SUB1G_REP_PROFILE_1:SIGNAL_INDICATOR_SUB1G_REP_1, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_2:SIGNAL_INDICATOR_SUB1G_REP_2, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_3:SIGNAL_INDICATOR_SUB1G_REP_3, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4:SIGNAL_INDICATOR_SUB1G_REP_4}
6449
7640
  class ModuleEnergySub1GV11():
@@ -6464,7 +7655,7 @@ class ModuleEnergySub1GV11():
6464
7655
  self.set(raw)
6465
7656
 
6466
7657
  def __repr__(self) -> str:
6467
- return "\n==> Packet module_energy_sub1g_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['output_power', f"0x{self.output_power:X}", self.output_power],['sub1g_energy_pattern', f"0x{self.sub1g_energy_pattern:X}", self.sub1g_energy_pattern],['cycle', f"0x{self.cycle:X}", self.cycle],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep]], tablefmt="texttable")
7658
+ return "\n==> Packet module_energy_sub1g_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['sub1g_energy_pattern', f"0x{self.sub1g_energy_pattern:X}", self.sub1g_energy_pattern, MODULE_ENERGY_SUB1G_V11_SUB1G_ENERGY_PATTERN_MAP[self.sub1g_energy_pattern]],['cycle', f"0x{self.cycle:X}", self.cycle, ""],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle, ""],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep, ""]], tablefmt="texttable")
6468
7659
 
6469
7660
  def __eq__(self, other):
6470
7661
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6503,6 +7694,7 @@ class ModuleEnergySub1GV11():
6503
7694
 
6504
7695
  MODULE_ENERGY_SUB1G_V10_OUTPUT_POWER_ENC = {SUB1G_OUTPUT_POWER_14:SUB1G_OUTPUT_POWER_PROFILE_14, SUB1G_OUTPUT_POWER_17:SUB1G_OUTPUT_POWER_PROFILE_17, SUB1G_OUTPUT_POWER_20:SUB1G_OUTPUT_POWER_PROFILE_20, SUB1G_OUTPUT_POWER_23:SUB1G_OUTPUT_POWER_PROFILE_23, SUB1G_OUTPUT_POWER_26:SUB1G_OUTPUT_POWER_PROFILE_26, SUB1G_OUTPUT_POWER_29:SUB1G_OUTPUT_POWER_PROFILE_29, SUB1G_OUTPUT_POWER_32:SUB1G_OUTPUT_POWER_PROFILE_32}
6505
7696
  MODULE_ENERGY_SUB1G_V10_OUTPUT_POWER_DEC = {SUB1G_OUTPUT_POWER_PROFILE_14:SUB1G_OUTPUT_POWER_14, SUB1G_OUTPUT_POWER_PROFILE_17:SUB1G_OUTPUT_POWER_17, SUB1G_OUTPUT_POWER_PROFILE_20:SUB1G_OUTPUT_POWER_20, SUB1G_OUTPUT_POWER_PROFILE_23:SUB1G_OUTPUT_POWER_23, SUB1G_OUTPUT_POWER_PROFILE_26:SUB1G_OUTPUT_POWER_26, SUB1G_OUTPUT_POWER_PROFILE_29:SUB1G_OUTPUT_POWER_29, SUB1G_OUTPUT_POWER_PROFILE_32:SUB1G_OUTPUT_POWER_32}
7697
+ MODULE_ENERGY_SUB1G_V10_SUB1G_ENERGY_PATTERN_MAP = {0x00:"No Energizing", 0x01:"Single Tone 915MHz", 0x02:"FCC (Hopping)", 0x03:"Japan1W", 0x04:"Japan350mW", 0x05:"Korea", 0x06:"Single tone 916300MHz", 0x07:"Single tone 917500MHz", 0x08:"Australia", 0x09:"Israel", 0x0A:"NZ (Hopping)"}
6506
7698
  MODULE_ENERGY_SUB1G_V10_SIGNAL_INDICATOR_REP_ENC = {SIGNAL_INDICATOR_SUB1G_REP_1:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_1, SIGNAL_INDICATOR_SUB1G_REP_2:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_2, SIGNAL_INDICATOR_SUB1G_REP_3:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_3, SIGNAL_INDICATOR_SUB1G_REP_4:SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4}
6507
7699
  MODULE_ENERGY_SUB1G_V10_SIGNAL_INDICATOR_REP_DEC = {SIGNAL_INDICATOR_SUB1G_REP_PROFILE_1:SIGNAL_INDICATOR_SUB1G_REP_1, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_2:SIGNAL_INDICATOR_SUB1G_REP_2, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_3:SIGNAL_INDICATOR_SUB1G_REP_3, SIGNAL_INDICATOR_SUB1G_REP_PROFILE_4:SIGNAL_INDICATOR_SUB1G_REP_4}
6508
7700
  class ModuleEnergySub1GV10():
@@ -6523,7 +7715,7 @@ class ModuleEnergySub1GV10():
6523
7715
  self.set(raw)
6524
7716
 
6525
7717
  def __repr__(self) -> str:
6526
- return "\n==> Packet module_energy_sub1g_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['output_power', f"0x{self.output_power:X}", self.output_power],['sub1g_energy_pattern', f"0x{self.sub1g_energy_pattern:X}", self.sub1g_energy_pattern],['cycle', f"0x{self.cycle:X}", self.cycle],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep]], tablefmt="texttable")
7718
+ return "\n==> Packet module_energy_sub1g_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['sub1g_energy_pattern', f"0x{self.sub1g_energy_pattern:X}", self.sub1g_energy_pattern, MODULE_ENERGY_SUB1G_V10_SUB1G_ENERGY_PATTERN_MAP[self.sub1g_energy_pattern]],['cycle', f"0x{self.cycle:X}", self.cycle, ""],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""],['signal_indicator_cycle', f"0x{self.signal_indicator_cycle:X}", self.signal_indicator_cycle, ""],['signal_indicator_rep', f"0x{self.signal_indicator_rep:X}", self.signal_indicator_rep, ""]], tablefmt="texttable")
6527
7719
 
6528
7720
  def __eq__(self, other):
6529
7721
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6562,6 +7754,7 @@ class ModuleEnergySub1GV10():
6562
7754
 
6563
7755
  MODULE_ENERGY_SUB1G_V9_OUTPUT_POWER_ENC = {SUB1G_OUTPUT_POWER_14:SUB1G_OUTPUT_POWER_PROFILE_14, SUB1G_OUTPUT_POWER_17:SUB1G_OUTPUT_POWER_PROFILE_17, SUB1G_OUTPUT_POWER_20:SUB1G_OUTPUT_POWER_PROFILE_20, SUB1G_OUTPUT_POWER_23:SUB1G_OUTPUT_POWER_PROFILE_23, SUB1G_OUTPUT_POWER_26:SUB1G_OUTPUT_POWER_PROFILE_26, SUB1G_OUTPUT_POWER_29:SUB1G_OUTPUT_POWER_PROFILE_29, SUB1G_OUTPUT_POWER_32:SUB1G_OUTPUT_POWER_PROFILE_32}
6564
7756
  MODULE_ENERGY_SUB1G_V9_OUTPUT_POWER_DEC = {SUB1G_OUTPUT_POWER_PROFILE_14:SUB1G_OUTPUT_POWER_14, SUB1G_OUTPUT_POWER_PROFILE_17:SUB1G_OUTPUT_POWER_17, SUB1G_OUTPUT_POWER_PROFILE_20:SUB1G_OUTPUT_POWER_20, SUB1G_OUTPUT_POWER_PROFILE_23:SUB1G_OUTPUT_POWER_23, SUB1G_OUTPUT_POWER_PROFILE_26:SUB1G_OUTPUT_POWER_26, SUB1G_OUTPUT_POWER_PROFILE_29:SUB1G_OUTPUT_POWER_29, SUB1G_OUTPUT_POWER_PROFILE_32:SUB1G_OUTPUT_POWER_32}
7757
+ MODULE_ENERGY_SUB1G_V9_SUB1G_ENERGY_PATTERN_MAP = {0x00:"No Energizing", 0x01:"Single Tone 915MHz", 0x02:"FCC (Hopping)", 0x03:"Japan1W", 0x04:"Japan350mW", 0x05:"Korea", 0x06:"Single tone 916300MHz", 0x07:"Single tone 917500MHz", 0x08:"Australia", 0x09:"Israel", 0x0A:"NZ (Hopping)"}
6565
7758
  class ModuleEnergySub1GV9():
6566
7759
  def __init__(self, raw='', module_type=MODULE_ENERGY_SUB1G, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V9, seq_id=0, brg_mac=0, output_power=BRG_DEFAULT_OUTPUT_POWER_SUB1G, sub1g_energy_pattern=BRG_DEFAULT_SUB1G_ENERGY_PATTERN, cycle=15, duty_cycle=BRG_DEFAULT_SUB1G_DUTY_CYCLE, unused0=0):
6567
7760
  self.module_type = module_type
@@ -6578,7 +7771,7 @@ class ModuleEnergySub1GV9():
6578
7771
  self.set(raw)
6579
7772
 
6580
7773
  def __repr__(self) -> str:
6581
- return "\n==> Packet module_energy_sub1g_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['output_power', f"0x{self.output_power:X}", self.output_power],['sub1g_energy_pattern', f"0x{self.sub1g_energy_pattern:X}", self.sub1g_energy_pattern],['cycle', f"0x{self.cycle:X}", self.cycle],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle]], tablefmt="texttable")
7774
+ return "\n==> Packet module_energy_sub1g_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['sub1g_energy_pattern', f"0x{self.sub1g_energy_pattern:X}", self.sub1g_energy_pattern, MODULE_ENERGY_SUB1G_V9_SUB1G_ENERGY_PATTERN_MAP[self.sub1g_energy_pattern]],['cycle', f"0x{self.cycle:X}", self.cycle, ""],['duty_cycle', f"0x{self.duty_cycle:X}", self.duty_cycle, ""]], tablefmt="texttable")
6582
7775
 
6583
7776
  def __eq__(self, other):
6584
7777
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6629,7 +7822,7 @@ class ModuleEnergySub1GV8():
6629
7822
  self.set(raw)
6630
7823
 
6631
7824
  def __repr__(self) -> str:
6632
- return "\n==> Packet module_energy_sub1g_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['output_power', f"0x{self.output_power:X}", self.output_power],['frequency', f"0x{self.frequency:X}", self.frequency]], tablefmt="texttable")
7825
+ return "\n==> Packet module_energy_sub1g_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['frequency', f"0x{self.frequency:X}", self.frequency, ""]], tablefmt="texttable")
6633
7826
 
6634
7827
  def __eq__(self, other):
6635
7828
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6676,7 +7869,7 @@ class ModuleEnergySub1GV7():
6676
7869
  self.set(raw)
6677
7870
 
6678
7871
  def __repr__(self) -> str:
6679
- return "\n==> Packet module_energy_sub1g_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['output_power', f"0x{self.output_power:X}", self.output_power],['frequency', f"0x{self.frequency:X}", self.frequency]], tablefmt="texttable")
7872
+ return "\n==> Packet module_energy_sub1g_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['frequency', f"0x{self.frequency:X}", self.frequency, ""]], tablefmt="texttable")
6680
7873
 
6681
7874
  def __eq__(self, other):
6682
7875
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6705,6 +7898,73 @@ class ModuleEnergySub1GV7():
6705
7898
  self.frequency = MODULE_ENERGY_SUB1G_V7_FREQUENCY_DEC[d[6]]
6706
7899
  self.unused0 = d[7]
6707
7900
 
7901
+ class ModulePwrMgmtV13():
7902
+ def __init__(self, raw='', module_type=MODULE_PWR_MGMT, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, static_leds_on=PWR_MGMT_DEFAULTS_LEDS_ON, static_keep_alive_period=PWR_MGMT_DEFAULTS_KEEP_ALIVE_PERIOD, static_keep_alive_scan=PWR_MGMT_DEFAULTS_KEEP_ALIVE_SCAN, static_on_duration=PWR_MGMT_DEFAULTS_ON_DURATION, static_sleep_duration=PWR_MGMT_DEFAULTS_SLEEP_DURATION, dynamic_leds_on=PWR_MGMT_DEFAULTS_LEDS_ON, dynamic_keep_alive_period=PWR_MGMT_DEFAULTS_KEEP_ALIVE_PERIOD, dynamic_keep_alive_scan=PWR_MGMT_DEFAULTS_KEEP_ALIVE_SCAN, dynamic_on_duration=PWR_MGMT_DEFAULTS_ON_DURATION, dynamic_sleep_duration=PWR_MGMT_DEFAULTS_SLEEP_DURATION, unused0=0):
7903
+ self.module_type = module_type
7904
+ self.msg_type = msg_type
7905
+ self.api_version = api_version
7906
+ self.seq_id = seq_id
7907
+ self.brg_mac = brg_mac
7908
+ self.static_leds_on = static_leds_on
7909
+ self.static_keep_alive_period = static_keep_alive_period # 5sec resolution
7910
+ self.static_keep_alive_scan = static_keep_alive_scan # 10msec resolution
7911
+ self.static_on_duration = static_on_duration # 30sec resolution
7912
+ self.static_sleep_duration = static_sleep_duration # 60sec resolution
7913
+ self.dynamic_leds_on = dynamic_leds_on
7914
+ self.dynamic_keep_alive_period = dynamic_keep_alive_period # 5sec resolution
7915
+ self.dynamic_keep_alive_scan = dynamic_keep_alive_scan # 10msec resolution
7916
+ self.dynamic_on_duration = dynamic_on_duration # 30sec resolution
7917
+ self.dynamic_sleep_duration = dynamic_sleep_duration # 60sec resolution
7918
+ self.unused0 = unused0
7919
+ if raw:
7920
+ self.set(raw)
7921
+
7922
+ def __repr__(self) -> str:
7923
+ return "\n==> Packet module_pwr_mgmt_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on, ""],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period, ""],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan, ""],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration, ""],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration, ""],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on, ""],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period, ""],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan, ""],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration, ""],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration, ""]], tablefmt="texttable")
7924
+
7925
+ def __eq__(self, other):
7926
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
7927
+ return (
7928
+ self.module_type == other.module_type and
7929
+ self.msg_type == other.msg_type and
7930
+ self.api_version == other.api_version and
7931
+ self.brg_mac == other.brg_mac and
7932
+ self.static_leds_on == other.static_leds_on and
7933
+ self.static_keep_alive_period == other.static_keep_alive_period and
7934
+ self.static_keep_alive_scan == other.static_keep_alive_scan and
7935
+ self.static_on_duration == other.static_on_duration and
7936
+ self.static_sleep_duration == other.static_sleep_duration and
7937
+ self.dynamic_leds_on == other.dynamic_leds_on and
7938
+ self.dynamic_keep_alive_period == other.dynamic_keep_alive_period and
7939
+ self.dynamic_keep_alive_scan == other.dynamic_keep_alive_scan and
7940
+ self.dynamic_on_duration == other.dynamic_on_duration and
7941
+ self.dynamic_sleep_duration == other.dynamic_sleep_duration
7942
+ )
7943
+ return False
7944
+
7945
+ def dump(self):
7946
+ string = bitstruct.pack("u4u4u8u8u48u8u8u8u8u16u8u8u8u8u16u24", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.static_leds_on, ((self.static_keep_alive_period-0)//5), ((self.static_keep_alive_scan-0)//10), ((self.static_on_duration-0)//30), ((self.static_sleep_duration-0)//60), self.dynamic_leds_on, ((self.dynamic_keep_alive_period-0)//5), ((self.dynamic_keep_alive_scan-0)//10), ((self.dynamic_on_duration-0)//30), ((self.dynamic_sleep_duration-0)//60), self.unused0)
7947
+ return string.hex().upper()
7948
+
7949
+ def set(self, string):
7950
+ d = bitstruct.unpack("u4u4u8u8u48u8u8u8u8u16u8u8u8u8u16u24", binascii.unhexlify(string))
7951
+ self.module_type = d[0]
7952
+ self.msg_type = d[1]
7953
+ self.api_version = d[2]
7954
+ self.seq_id = d[3]
7955
+ self.brg_mac = d[4]
7956
+ self.static_leds_on = d[5]
7957
+ self.static_keep_alive_period = ((d[6]*5)+0)
7958
+ self.static_keep_alive_scan = ((d[7]*10)+0)
7959
+ self.static_on_duration = ((d[8]*30)+0)
7960
+ self.static_sleep_duration = ((d[9]*60)+0)
7961
+ self.dynamic_leds_on = d[10]
7962
+ self.dynamic_keep_alive_period = ((d[11]*5)+0)
7963
+ self.dynamic_keep_alive_scan = ((d[12]*10)+0)
7964
+ self.dynamic_on_duration = ((d[13]*30)+0)
7965
+ self.dynamic_sleep_duration = ((d[14]*60)+0)
7966
+ self.unused0 = d[15]
7967
+
6708
7968
  class ModulePwrMgmtV12():
6709
7969
  def __init__(self, raw='', module_type=MODULE_PWR_MGMT, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, static_leds_on=PWR_MGMT_DEFAULTS_LEDS_ON, static_keep_alive_period=PWR_MGMT_DEFAULTS_KEEP_ALIVE_PERIOD, static_keep_alive_scan=PWR_MGMT_DEFAULTS_KEEP_ALIVE_SCAN, static_on_duration=PWR_MGMT_DEFAULTS_ON_DURATION, static_sleep_duration=PWR_MGMT_DEFAULTS_SLEEP_DURATION, dynamic_leds_on=PWR_MGMT_DEFAULTS_LEDS_ON, dynamic_keep_alive_period=PWR_MGMT_DEFAULTS_KEEP_ALIVE_PERIOD, dynamic_keep_alive_scan=PWR_MGMT_DEFAULTS_KEEP_ALIVE_SCAN, dynamic_on_duration=PWR_MGMT_DEFAULTS_ON_DURATION, dynamic_sleep_duration=PWR_MGMT_DEFAULTS_SLEEP_DURATION, unused0=0):
6710
7970
  self.module_type = module_type
@@ -6727,7 +7987,7 @@ class ModulePwrMgmtV12():
6727
7987
  self.set(raw)
6728
7988
 
6729
7989
  def __repr__(self) -> str:
6730
- return "\n==> Packet module_pwr_mgmt_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration]], tablefmt="texttable")
7990
+ return "\n==> Packet module_pwr_mgmt_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on, ""],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period, ""],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan, ""],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration, ""],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration, ""],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on, ""],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period, ""],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan, ""],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration, ""],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration, ""]], tablefmt="texttable")
6731
7991
 
6732
7992
  def __eq__(self, other):
6733
7993
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6794,7 +8054,7 @@ class ModulePwrMgmtV11():
6794
8054
  self.set(raw)
6795
8055
 
6796
8056
  def __repr__(self) -> str:
6797
- return "\n==> Packet module_pwr_mgmt_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration]], tablefmt="texttable")
8057
+ return "\n==> Packet module_pwr_mgmt_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on, ""],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period, ""],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan, ""],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration, ""],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration, ""],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on, ""],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period, ""],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan, ""],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration, ""],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration, ""]], tablefmt="texttable")
6798
8058
 
6799
8059
  def __eq__(self, other):
6800
8060
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6861,7 +8121,7 @@ class ModulePwrMgmtV10():
6861
8121
  self.set(raw)
6862
8122
 
6863
8123
  def __repr__(self) -> str:
6864
- return "\n==> Packet module_pwr_mgmt_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration]], tablefmt="texttable")
8124
+ return "\n==> Packet module_pwr_mgmt_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on, ""],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period, ""],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan, ""],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration, ""],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration, ""],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on, ""],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period, ""],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan, ""],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration, ""],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration, ""]], tablefmt="texttable")
6865
8125
 
6866
8126
  def __eq__(self, other):
6867
8127
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6928,7 +8188,7 @@ class ModulePwrMgmtV9():
6928
8188
  self.set(raw)
6929
8189
 
6930
8190
  def __repr__(self) -> str:
6931
- return "\n==> Packet module_pwr_mgmt_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration]], tablefmt="texttable")
8191
+ return "\n==> Packet module_pwr_mgmt_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on, ""],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period, ""],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan, ""],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration, ""],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration, ""],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on, ""],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period, ""],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan, ""],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration, ""],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration, ""]], tablefmt="texttable")
6932
8192
 
6933
8193
  def __eq__(self, other):
6934
8194
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -6995,7 +8255,7 @@ class ModulePwrMgmtV8():
6995
8255
  self.set(raw)
6996
8256
 
6997
8257
  def __repr__(self) -> str:
6998
- return "\n==> Packet module_pwr_mgmt_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration]], tablefmt="texttable")
8258
+ return "\n==> Packet module_pwr_mgmt_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on, ""],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period, ""],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan, ""],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration, ""],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration, ""],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on, ""],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period, ""],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan, ""],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration, ""],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration, ""]], tablefmt="texttable")
6999
8259
 
7000
8260
  def __eq__(self, other):
7001
8261
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7062,7 +8322,7 @@ class ModulePwrMgmtV7():
7062
8322
  self.set(raw)
7063
8323
 
7064
8324
  def __repr__(self) -> str:
7065
- return "\n==> Packet module_pwr_mgmt_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration]], tablefmt="texttable")
8325
+ return "\n==> Packet module_pwr_mgmt_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['static_leds_on', f"0x{self.static_leds_on:X}", self.static_leds_on, ""],['static_keep_alive_period', f"0x{self.static_keep_alive_period:X}", self.static_keep_alive_period, ""],['static_keep_alive_scan', f"0x{self.static_keep_alive_scan:X}", self.static_keep_alive_scan, ""],['static_on_duration', f"0x{self.static_on_duration:X}", self.static_on_duration, ""],['static_sleep_duration', f"0x{self.static_sleep_duration:X}", self.static_sleep_duration, ""],['dynamic_leds_on', f"0x{self.dynamic_leds_on:X}", self.dynamic_leds_on, ""],['dynamic_keep_alive_period', f"0x{self.dynamic_keep_alive_period:X}", self.dynamic_keep_alive_period, ""],['dynamic_keep_alive_scan', f"0x{self.dynamic_keep_alive_scan:X}", self.dynamic_keep_alive_scan, ""],['dynamic_on_duration', f"0x{self.dynamic_on_duration:X}", self.dynamic_on_duration, ""],['dynamic_sleep_duration', f"0x{self.dynamic_sleep_duration:X}", self.dynamic_sleep_duration, ""]], tablefmt="texttable")
7066
8326
 
7067
8327
  def __eq__(self, other):
7068
8328
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7107,6 +8367,63 @@ class ModulePwrMgmtV7():
7107
8367
  self.dynamic_sleep_duration = ((d[14]*60)+0)
7108
8368
  self.unused0 = d[15]
7109
8369
 
8370
+ MODULE_EXT_SENSORS_V13_SENSOR0_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
8371
+ MODULE_EXT_SENSORS_V13_SENSOR1_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
8372
+ MODULE_EXT_SENSORS_V13_SENSOR2_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
8373
+ class ModuleExtSensorsV13():
8374
+ def __init__(self, raw='', module_type=MODULE_EXT_SENSORS, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, sensor0=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, sensor1=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, sensor2=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, rssi_threshold=BRG_DEFAULT_RSSI_THRESHOLD, sub1g_rssi_threshold=BRG_DEFAULT_RSSI_THRESHOLD, unused=0):
8375
+ self.module_type = module_type
8376
+ self.msg_type = msg_type
8377
+ self.api_version = api_version
8378
+ self.seq_id = seq_id
8379
+ self.brg_mac = brg_mac
8380
+ self.sensor0 = sensor0
8381
+ self.sensor1 = sensor1
8382
+ self.sensor2 = sensor2
8383
+ self.rssi_threshold = rssi_threshold
8384
+ self.sub1g_rssi_threshold = sub1g_rssi_threshold
8385
+ self.unused = unused
8386
+ if raw:
8387
+ self.set(raw)
8388
+
8389
+ def __repr__(self) -> str:
8390
+ return "\n==> Packet module_ext_sensors_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['sensor0', f"0x{self.sensor0:X}", self.sensor0, MODULE_EXT_SENSORS_V13_SENSOR0_MAP[self.sensor0]],['sensor1', f"0x{self.sensor1:X}", self.sensor1, MODULE_EXT_SENSORS_V13_SENSOR1_MAP[self.sensor1]],['sensor2', f"0x{self.sensor2:X}", self.sensor2, MODULE_EXT_SENSORS_V13_SENSOR2_MAP[self.sensor2]],['rssi_threshold', f"0x{self.rssi_threshold:X}", self.rssi_threshold, ""],['sub1g_rssi_threshold', f"0x{self.sub1g_rssi_threshold:X}", self.sub1g_rssi_threshold, ""]], tablefmt="texttable")
8391
+
8392
+ def __eq__(self, other):
8393
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
8394
+ return (
8395
+ self.module_type == other.module_type and
8396
+ self.msg_type == other.msg_type and
8397
+ self.api_version == other.api_version and
8398
+ self.brg_mac == other.brg_mac and
8399
+ self.sensor0 == other.sensor0 and
8400
+ self.sensor1 == other.sensor1 and
8401
+ self.sensor2 == other.sensor2 and
8402
+ self.rssi_threshold == other.rssi_threshold and
8403
+ self.sub1g_rssi_threshold == other.sub1g_rssi_threshold
8404
+ )
8405
+ return False
8406
+
8407
+ def dump(self):
8408
+ string = bitstruct.pack("u4u4u8u8u48u32u32u32s8s8u8", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, self.sensor0, self.sensor1, self.sensor2, ((self.rssi_threshold-0)//-1), ((self.sub1g_rssi_threshold-0)//-1), self.unused)
8409
+ return string.hex().upper()
8410
+
8411
+ def set(self, string):
8412
+ d = bitstruct.unpack("u4u4u8u8u48u32u32u32s8s8u8", binascii.unhexlify(string))
8413
+ self.module_type = d[0]
8414
+ self.msg_type = d[1]
8415
+ self.api_version = d[2]
8416
+ self.seq_id = d[3]
8417
+ self.brg_mac = d[4]
8418
+ self.sensor0 = d[5]
8419
+ self.sensor1 = d[6]
8420
+ self.sensor2 = d[7]
8421
+ self.rssi_threshold = ((d[8]*-1)+0)
8422
+ self.sub1g_rssi_threshold = ((d[9]*-1)+0)
8423
+ self.unused = d[10]
8424
+
8425
+ MODULE_EXT_SENSORS_V12_SENSOR0_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
8426
+ MODULE_EXT_SENSORS_V12_SENSOR1_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
7110
8427
  class ModuleExtSensorsV12():
7111
8428
  def __init__(self, raw='', module_type=MODULE_EXT_SENSORS, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, sensor0=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, sensor1=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, rssi_threshold=BRG_DEFAULT_RSSI_THRESHOLD, sub1g_rssi_threshold=BRG_DEFAULT_RSSI_THRESHOLD, unused=0):
7112
8429
  self.module_type = module_type
@@ -7123,7 +8440,7 @@ class ModuleExtSensorsV12():
7123
8440
  self.set(raw)
7124
8441
 
7125
8442
  def __repr__(self) -> str:
7126
- return "\n==> Packet module_ext_sensors_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['sensor0', f"0x{self.sensor0:X}", self.sensor0],['sensor1', f"0x{self.sensor1:X}", self.sensor1],['rssi_threshold', f"0x{self.rssi_threshold:X}", self.rssi_threshold],['sub1g_rssi_threshold', f"0x{self.sub1g_rssi_threshold:X}", self.sub1g_rssi_threshold]], tablefmt="texttable")
8443
+ return "\n==> Packet module_ext_sensors_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['sensor0', f"0x{self.sensor0:X}", self.sensor0, MODULE_EXT_SENSORS_V12_SENSOR0_MAP[self.sensor0]],['sensor1', f"0x{self.sensor1:X}", self.sensor1, MODULE_EXT_SENSORS_V12_SENSOR1_MAP[self.sensor1]],['rssi_threshold', f"0x{self.rssi_threshold:X}", self.rssi_threshold, ""],['sub1g_rssi_threshold', f"0x{self.sub1g_rssi_threshold:X}", self.sub1g_rssi_threshold, ""]], tablefmt="texttable")
7127
8444
 
7128
8445
  def __eq__(self, other):
7129
8446
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7156,6 +8473,8 @@ class ModuleExtSensorsV12():
7156
8473
  self.sub1g_rssi_threshold = ((d[8]*-1)+0)
7157
8474
  self.unused = d[9]
7158
8475
 
8476
+ MODULE_EXT_SENSORS_V11_SENSOR0_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
8477
+ MODULE_EXT_SENSORS_V11_SENSOR1_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
7159
8478
  class ModuleExtSensorsV11():
7160
8479
  def __init__(self, raw='', module_type=MODULE_EXT_SENSORS, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V11, seq_id=0, brg_mac=0, sensor0=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, sensor1=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, unused=0):
7161
8480
  self.module_type = module_type
@@ -7170,7 +8489,7 @@ class ModuleExtSensorsV11():
7170
8489
  self.set(raw)
7171
8490
 
7172
8491
  def __repr__(self) -> str:
7173
- return "\n==> Packet module_ext_sensors_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['sensor0', f"0x{self.sensor0:X}", self.sensor0],['sensor1', f"0x{self.sensor1:X}", self.sensor1]], tablefmt="texttable")
8492
+ return "\n==> Packet module_ext_sensors_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['sensor0', f"0x{self.sensor0:X}", self.sensor0, MODULE_EXT_SENSORS_V11_SENSOR0_MAP[self.sensor0]],['sensor1', f"0x{self.sensor1:X}", self.sensor1, MODULE_EXT_SENSORS_V11_SENSOR1_MAP[self.sensor1]]], tablefmt="texttable")
7174
8493
 
7175
8494
  def __eq__(self, other):
7176
8495
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7199,6 +8518,8 @@ class ModuleExtSensorsV11():
7199
8518
  self.sensor1 = d[6]
7200
8519
  self.unused = d[7]
7201
8520
 
8521
+ MODULE_EXT_SENSORS_V10_SENSOR0_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
8522
+ MODULE_EXT_SENSORS_V10_SENSOR1_MAP = {0x00000000:"No_Sensor", 0x16E1FF01:"MinewS1", 0xFF050500:"USB dongle ADC", 0xFF000502:"Signal Indicator", 0x0279FE01:"Zebra Printer", 0xFFAE0400:"ERM Smart MS"}
7202
8523
  class ModuleExtSensorsV10():
7203
8524
  def __init__(self, raw='', module_type=MODULE_EXT_SENSORS, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V10, seq_id=0, brg_mac=0, sensor0=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, sensor1=BRG_DEFAULT_EXTERNAL_SENSOR_CFG, unused=0):
7204
8525
  self.module_type = module_type
@@ -7213,7 +8534,7 @@ class ModuleExtSensorsV10():
7213
8534
  self.set(raw)
7214
8535
 
7215
8536
  def __repr__(self) -> str:
7216
- return "\n==> Packet module_ext_sensors_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['sensor0', f"0x{self.sensor0:X}", self.sensor0],['sensor1', f"0x{self.sensor1:X}", self.sensor1]], tablefmt="texttable")
8537
+ return "\n==> Packet module_ext_sensors_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['sensor0', f"0x{self.sensor0:X}", self.sensor0, MODULE_EXT_SENSORS_V10_SENSOR0_MAP[self.sensor0]],['sensor1', f"0x{self.sensor1:X}", self.sensor1, MODULE_EXT_SENSORS_V10_SENSOR1_MAP[self.sensor1]]], tablefmt="texttable")
7217
8538
 
7218
8539
  def __eq__(self, other):
7219
8540
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7263,7 +8584,7 @@ class ModuleExtSensorsV9():
7263
8584
  self.set(raw)
7264
8585
 
7265
8586
  def __repr__(self) -> str:
7266
- return "\n==> Packet module_ext_sensors_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['ad_type0', f"0x{self.ad_type0:X}", self.ad_type0],['uuid_msb0', f"0x{self.uuid_msb0:X}", self.uuid_msb0],['uuid_lsb0', f"0x{self.uuid_lsb0:X}", self.uuid_lsb0],['ad_type1', f"0x{self.ad_type1:X}", self.ad_type1],['uuid_msb1', f"0x{self.uuid_msb1:X}", self.uuid_msb1],['uuid_lsb1', f"0x{self.uuid_lsb1:X}", self.uuid_lsb1],['sensor0_scramble', f"0x{self.sensor0_scramble:X}", self.sensor0_scramble],['sensor1_scramble', f"0x{self.sensor1_scramble:X}", self.sensor1_scramble]], tablefmt="texttable")
8587
+ return "\n==> Packet module_ext_sensors_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['ad_type0', f"0x{self.ad_type0:X}", self.ad_type0, ""],['uuid_msb0', f"0x{self.uuid_msb0:X}", self.uuid_msb0, ""],['uuid_lsb0', f"0x{self.uuid_lsb0:X}", self.uuid_lsb0, ""],['ad_type1', f"0x{self.ad_type1:X}", self.ad_type1, ""],['uuid_msb1', f"0x{self.uuid_msb1:X}", self.uuid_msb1, ""],['uuid_lsb1', f"0x{self.uuid_lsb1:X}", self.uuid_lsb1, ""],['sensor0_scramble', f"0x{self.sensor0_scramble:X}", self.sensor0_scramble, ""],['sensor1_scramble', f"0x{self.sensor1_scramble:X}", self.sensor1_scramble, ""]], tablefmt="texttable")
7267
8588
 
7268
8589
  def __eq__(self, other):
7269
8590
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7326,7 +8647,7 @@ class ModuleExtSensorsV8():
7326
8647
  self.set(raw)
7327
8648
 
7328
8649
  def __repr__(self) -> str:
7329
- return "\n==> Packet module_ext_sensors_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['ad_type0', f"0x{self.ad_type0:X}", self.ad_type0],['uuid_msb0', f"0x{self.uuid_msb0:X}", self.uuid_msb0],['uuid_lsb0', f"0x{self.uuid_lsb0:X}", self.uuid_lsb0],['ad_type1', f"0x{self.ad_type1:X}", self.ad_type1],['uuid_msb1', f"0x{self.uuid_msb1:X}", self.uuid_msb1],['uuid_lsb1', f"0x{self.uuid_lsb1:X}", self.uuid_lsb1],['sensor0_scramble', f"0x{self.sensor0_scramble:X}", self.sensor0_scramble],['sensor1_scramble', f"0x{self.sensor1_scramble:X}", self.sensor1_scramble]], tablefmt="texttable")
8650
+ return "\n==> Packet module_ext_sensors_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['ad_type0', f"0x{self.ad_type0:X}", self.ad_type0, ""],['uuid_msb0', f"0x{self.uuid_msb0:X}", self.uuid_msb0, ""],['uuid_lsb0', f"0x{self.uuid_lsb0:X}", self.uuid_lsb0, ""],['ad_type1', f"0x{self.ad_type1:X}", self.ad_type1, ""],['uuid_msb1', f"0x{self.uuid_msb1:X}", self.uuid_msb1, ""],['uuid_lsb1', f"0x{self.uuid_lsb1:X}", self.uuid_lsb1, ""],['sensor0_scramble', f"0x{self.sensor0_scramble:X}", self.sensor0_scramble, ""],['sensor1_scramble', f"0x{self.sensor1_scramble:X}", self.sensor1_scramble, ""]], tablefmt="texttable")
7330
8651
 
7331
8652
  def __eq__(self, other):
7332
8653
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7389,7 +8710,7 @@ class ModuleExtSensorsV7():
7389
8710
  self.set(raw)
7390
8711
 
7391
8712
  def __repr__(self) -> str:
7392
- return "\n==> Packet module_ext_sensors_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['ad_type0', f"0x{self.ad_type0:X}", self.ad_type0],['uuid_msb0', f"0x{self.uuid_msb0:X}", self.uuid_msb0],['uuid_lsb0', f"0x{self.uuid_lsb0:X}", self.uuid_lsb0],['ad_type1', f"0x{self.ad_type1:X}", self.ad_type1],['uuid_msb1', f"0x{self.uuid_msb1:X}", self.uuid_msb1],['uuid_lsb1', f"0x{self.uuid_lsb1:X}", self.uuid_lsb1],['sensor0_scramble', f"0x{self.sensor0_scramble:X}", self.sensor0_scramble],['sensor1_scramble', f"0x{self.sensor1_scramble:X}", self.sensor1_scramble]], tablefmt="texttable")
8713
+ return "\n==> Packet module_ext_sensors_v7 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['ad_type0', f"0x{self.ad_type0:X}", self.ad_type0, ""],['uuid_msb0', f"0x{self.uuid_msb0:X}", self.uuid_msb0, ""],['uuid_lsb0', f"0x{self.uuid_lsb0:X}", self.uuid_lsb0, ""],['ad_type1', f"0x{self.ad_type1:X}", self.ad_type1, ""],['uuid_msb1', f"0x{self.uuid_msb1:X}", self.uuid_msb1, ""],['uuid_lsb1', f"0x{self.uuid_lsb1:X}", self.uuid_lsb1, ""],['sensor0_scramble', f"0x{self.sensor0_scramble:X}", self.sensor0_scramble, ""],['sensor1_scramble', f"0x{self.sensor1_scramble:X}", self.sensor1_scramble, ""]], tablefmt="texttable")
7393
8714
 
7394
8715
  def __eq__(self, other):
7395
8716
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7431,6 +8752,52 @@ class ModuleExtSensorsV7():
7431
8752
  self.unused1 = d[13]
7432
8753
  self.unused2 = d[14]
7433
8754
 
8755
+ class ModuleCustomV13():
8756
+ def __init__(self, raw='', module_type=MODULE_CUSTOM, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V13, seq_id=0, brg_mac=0, motion_sensitivity_threshold=LIS2DW12_DEFAULTS_MOTION_SENSITIVITY_THRESHOLD, s2d_transition_time=LIS2DW12_DEFAULTS_S2D_TRANSITION_TIME, d2s_transition_time=LIS2DW12_DEFAULTS_D2S_TRANSITION_TIME, unused1=0):
8757
+ self.module_type = module_type
8758
+ self.msg_type = msg_type
8759
+ self.api_version = api_version
8760
+ self.seq_id = seq_id
8761
+ self.brg_mac = brg_mac
8762
+ self.motion_sensitivity_threshold = motion_sensitivity_threshold # 31 [mg] resolution
8763
+ self.s2d_transition_time = s2d_transition_time # 3 [sec] resolution
8764
+ self.d2s_transition_time = d2s_transition_time # 5 [sec] resolution
8765
+ self.unused1 = unused1
8766
+ if raw:
8767
+ self.set(raw)
8768
+
8769
+ def __repr__(self) -> str:
8770
+ return "\n==> Packet module_custom_v13 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['motion_sensitivity_threshold', f"0x{self.motion_sensitivity_threshold:X}", self.motion_sensitivity_threshold, ""],['s2d_transition_time', f"0x{self.s2d_transition_time:X}", self.s2d_transition_time, ""],['d2s_transition_time', f"0x{self.d2s_transition_time:X}", self.d2s_transition_time, ""]], tablefmt="texttable")
8771
+
8772
+ def __eq__(self, other):
8773
+ if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
8774
+ return (
8775
+ self.module_type == other.module_type and
8776
+ self.msg_type == other.msg_type and
8777
+ self.api_version == other.api_version and
8778
+ self.brg_mac == other.brg_mac and
8779
+ self.motion_sensitivity_threshold == other.motion_sensitivity_threshold and
8780
+ self.s2d_transition_time == other.s2d_transition_time and
8781
+ self.d2s_transition_time == other.d2s_transition_time
8782
+ )
8783
+ return False
8784
+
8785
+ def dump(self):
8786
+ string = bitstruct.pack("u4u4u8u8u48u8u8u8u96", self.module_type, self.msg_type, self.api_version, self.seq_id, self.brg_mac, ((self.motion_sensitivity_threshold-0)//31), ((self.s2d_transition_time-0)//3), ((self.d2s_transition_time-0)//5), self.unused1)
8787
+ return string.hex().upper()
8788
+
8789
+ def set(self, string):
8790
+ d = bitstruct.unpack("u4u4u8u8u48u8u8u8u96", binascii.unhexlify(string))
8791
+ self.module_type = d[0]
8792
+ self.msg_type = d[1]
8793
+ self.api_version = d[2]
8794
+ self.seq_id = d[3]
8795
+ self.brg_mac = d[4]
8796
+ self.motion_sensitivity_threshold = ((d[5]*31)+0)
8797
+ self.s2d_transition_time = ((d[6]*3)+0)
8798
+ self.d2s_transition_time = ((d[7]*5)+0)
8799
+ self.unused1 = d[8]
8800
+
7434
8801
  class ModuleCustomV12():
7435
8802
  def __init__(self, raw='', module_type=MODULE_CUSTOM, msg_type=BRG_MGMT_MSG_TYPE_CFG_SET, api_version=API_VERSION_V12, seq_id=0, brg_mac=0, motion_sensitivity_threshold=LIS2DW12_DEFAULTS_MOTION_SENSITIVITY_THRESHOLD, s2d_transition_time=LIS2DW12_DEFAULTS_S2D_TRANSITION_TIME, d2s_transition_time=LIS2DW12_DEFAULTS_D2S_TRANSITION_TIME, unused1=0):
7436
8803
  self.module_type = module_type
@@ -7446,7 +8813,7 @@ class ModuleCustomV12():
7446
8813
  self.set(raw)
7447
8814
 
7448
8815
  def __repr__(self) -> str:
7449
- return "\n==> Packet module_custom_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['motion_sensitivity_threshold', f"0x{self.motion_sensitivity_threshold:X}", self.motion_sensitivity_threshold],['s2d_transition_time', f"0x{self.s2d_transition_time:X}", self.s2d_transition_time],['d2s_transition_time', f"0x{self.d2s_transition_time:X}", self.d2s_transition_time]], tablefmt="texttable")
8816
+ return "\n==> Packet module_custom_v12 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['motion_sensitivity_threshold', f"0x{self.motion_sensitivity_threshold:X}", self.motion_sensitivity_threshold, ""],['s2d_transition_time', f"0x{self.s2d_transition_time:X}", self.s2d_transition_time, ""],['d2s_transition_time', f"0x{self.d2s_transition_time:X}", self.d2s_transition_time, ""]], tablefmt="texttable")
7450
8817
 
7451
8818
  def __eq__(self, other):
7452
8819
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7492,7 +8859,7 @@ class ModuleCustomV11():
7492
8859
  self.set(raw)
7493
8860
 
7494
8861
  def __repr__(self) -> str:
7495
- return "\n==> Packet module_custom_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['state_threshold', f"0x{self.state_threshold:X}", self.state_threshold],['wake_up_duration', f"0x{self.wake_up_duration:X}", self.wake_up_duration],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration]], tablefmt="texttable")
8862
+ return "\n==> Packet module_custom_v11 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['state_threshold', f"0x{self.state_threshold:X}", self.state_threshold, ""],['wake_up_duration', f"0x{self.wake_up_duration:X}", self.wake_up_duration, ""],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration, ""]], tablefmt="texttable")
7496
8863
 
7497
8864
  def __eq__(self, other):
7498
8865
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7538,7 +8905,7 @@ class ModuleCustomV10():
7538
8905
  self.set(raw)
7539
8906
 
7540
8907
  def __repr__(self) -> str:
7541
- return "\n==> Packet module_custom_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['state_threshold', f"0x{self.state_threshold:X}", self.state_threshold],['wake_up_duration', f"0x{self.wake_up_duration:X}", self.wake_up_duration],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration]], tablefmt="texttable")
8908
+ return "\n==> Packet module_custom_v10 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['state_threshold', f"0x{self.state_threshold:X}", self.state_threshold, ""],['wake_up_duration', f"0x{self.wake_up_duration:X}", self.wake_up_duration, ""],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration, ""]], tablefmt="texttable")
7542
8909
 
7543
8910
  def __eq__(self, other):
7544
8911
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7586,7 +8953,7 @@ class ModuleCustomV9():
7586
8953
  self.set(raw)
7587
8954
 
7588
8955
  def __repr__(self) -> str:
7589
- return "\n==> Packet module_custom_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['custom_id', f"0x{self.custom_id:X}", self.custom_id],['version', f"0x{self.version:X}", self.version],['state_threshold', f"0x{self.state_threshold:X}", self.state_threshold],['wake_up_duration', f"0x{self.wake_up_duration:X}", self.wake_up_duration],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration]], tablefmt="texttable")
8956
+ return "\n==> Packet module_custom_v9 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['custom_id', f"0x{self.custom_id:X}", self.custom_id, ""],['version', f"0x{self.version:X}", self.version, ""],['state_threshold', f"0x{self.state_threshold:X}", self.state_threshold, ""],['wake_up_duration', f"0x{self.wake_up_duration:X}", self.wake_up_duration, ""],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration, ""]], tablefmt="texttable")
7590
8957
 
7591
8958
  def __eq__(self, other):
7592
8959
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7638,7 +9005,7 @@ class ModuleCustomV8():
7638
9005
  self.set(raw)
7639
9006
 
7640
9007
  def __repr__(self) -> str:
7641
- return "\n==> Packet module_custom_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['api_version', f"0x{self.api_version:X}", self.api_version],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac],['custom_id', f"0x{self.custom_id:X}", self.custom_id],['version', f"0x{self.version:X}", self.version],['state_threshold', f"0x{self.state_threshold:X}", self.state_threshold],['wake_up_duration', f"0x{self.wake_up_duration:X}", self.wake_up_duration],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration]], tablefmt="texttable")
9008
+ return "\n==> Packet module_custom_v8 <==\n" + tabulate.tabulate([['module_type', f"0x{self.module_type:X}", self.module_type, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['api_version', f"0x{self.api_version:X}", self.api_version, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['brg_mac', f"0x{self.brg_mac:X}", self.brg_mac, ""],['custom_id', f"0x{self.custom_id:X}", self.custom_id, ""],['version', f"0x{self.version:X}", self.version, ""],['state_threshold', f"0x{self.state_threshold:X}", self.state_threshold, ""],['wake_up_duration', f"0x{self.wake_up_duration:X}", self.wake_up_duration, ""],['sleep_duration', f"0x{self.sleep_duration:X}", self.sleep_duration, ""]], tablefmt="texttable")
7642
9009
 
7643
9010
  def __eq__(self, other):
7644
9011
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7674,19 +9041,18 @@ class ModuleCustomV8():
7674
9041
  self.unused0 = d[10]
7675
9042
 
7676
9043
  class Lis2Dw12Data():
7677
- def __init__(self, raw='', version=LIS2DW12_PACKET_VERSION_LATEST, state=0, temperature=0, new_g_value_sample=0, xyz_g_value=0, unused0=0, pkt_id=0):
9044
+ def __init__(self, raw='', version=LIS2DW12_PACKET_VERSION_LATEST, state=0, temperature=0, new_g_value_sample=0, xyz_g_value=0, unused0=0):
7678
9045
  self.version = version
7679
9046
  self.state = state
7680
9047
  self.temperature = temperature # Multiplied by 100
7681
9048
  self.new_g_value_sample = new_g_value_sample # Indicates if the g value sent is new or old
7682
9049
  self.xyz_g_value = xyz_g_value # The acceleration in mg for each axis axis
7683
9050
  self.unused0 = unused0
7684
- self.pkt_id = pkt_id
7685
9051
  if raw:
7686
9052
  self.set(raw)
7687
9053
 
7688
9054
  def __repr__(self) -> str:
7689
- return "\n==> Packet lis2dw12_data <==\n" + tabulate.tabulate([['version', f"0x{self.version:X}", self.version],['state', f"0x{self.state:X}", self.state],['temperature', f"0x{self.temperature:X}", self.temperature],['new_g_value_sample', f"0x{self.new_g_value_sample:X}", self.new_g_value_sample],['xyz_g_value', f"0x{self.xyz_g_value:X}", self.xyz_g_value],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id]], tablefmt="texttable")
9055
+ return "\n==> Packet lis2dw12_data <==\n" + tabulate.tabulate([['version', f"0x{self.version:X}", self.version, ""],['state', f"0x{self.state:X}", self.state, ""],['temperature', f"0x{self.temperature:X}", self.temperature, ""],['new_g_value_sample', f"0x{self.new_g_value_sample:X}", self.new_g_value_sample, ""],['xyz_g_value', f"0x{self.xyz_g_value:X}", self.xyz_g_value, ""]], tablefmt="texttable")
7690
9056
 
7691
9057
  def __eq__(self, other):
7692
9058
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7695,95 +9061,88 @@ class Lis2Dw12Data():
7695
9061
  self.state == other.state and
7696
9062
  self.temperature == other.temperature and
7697
9063
  self.new_g_value_sample == other.new_g_value_sample and
7698
- self.xyz_g_value == other.xyz_g_value and
7699
- self.pkt_id == other.pkt_id
9064
+ self.xyz_g_value == other.xyz_g_value
7700
9065
  )
7701
9066
  return False
7702
9067
 
7703
9068
  def dump(self):
7704
- string = bitstruct.pack("u8u8u16u8s48u96u32", self.version, self.state, ((self.temperature-0)//0.01), self.new_g_value_sample, self.xyz_g_value, self.unused0, self.pkt_id)
9069
+ string = bitstruct.pack("u8u8u16u8s48u128", self.version, self.state, ((self.temperature-0)//0.01), self.new_g_value_sample, self.xyz_g_value, self.unused0)
7705
9070
  return string.hex().upper()
7706
9071
 
7707
9072
  def set(self, string):
7708
- d = bitstruct.unpack("u8u8u16u8s48u96u32", binascii.unhexlify(string))
9073
+ d = bitstruct.unpack("u8u8u16u8s48u128", binascii.unhexlify(string))
7709
9074
  self.version = d[0]
7710
9075
  self.state = d[1]
7711
9076
  self.temperature = ((d[2]*0.01)+0)
7712
9077
  self.new_g_value_sample = d[3]
7713
9078
  self.xyz_g_value = d[4]
7714
9079
  self.unused0 = d[5]
7715
- self.pkt_id = d[6]
7716
9080
 
7717
9081
  class BatterySensorData():
7718
- def __init__(self, raw='', version=BATTERY_SENSOR_PACKET_VERSION_LATEST, power_source=0, battery_level=0, unused0=0, pkt_id=0):
9082
+ def __init__(self, raw='', version=BATTERY_SENSOR_PACKET_VERSION_LATEST, power_source=0, battery_level=0, unused0=0):
7719
9083
  self.version = version
7720
9084
  self.power_source = power_source
7721
9085
  self.battery_level = battery_level # In [mV]
7722
9086
  self.unused0 = unused0
7723
- self.pkt_id = pkt_id
7724
9087
  if raw:
7725
9088
  self.set(raw)
7726
9089
 
7727
9090
  def __repr__(self) -> str:
7728
- return "\n==> Packet battery_sensor_data <==\n" + tabulate.tabulate([['version', f"0x{self.version:X}", self.version],['power_source', f"0x{self.power_source:X}", self.power_source],['battery_level', f"0x{self.battery_level:X}", self.battery_level],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id]], tablefmt="texttable")
9091
+ return "\n==> Packet battery_sensor_data <==\n" + tabulate.tabulate([['version', f"0x{self.version:X}", self.version, ""],['power_source', f"0x{self.power_source:X}", self.power_source, ""],['battery_level', f"0x{self.battery_level:X}", self.battery_level, ""]], tablefmt="texttable")
7729
9092
 
7730
9093
  def __eq__(self, other):
7731
9094
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
7732
9095
  return (
7733
9096
  self.version == other.version and
7734
9097
  self.power_source == other.power_source and
7735
- self.battery_level == other.battery_level and
7736
- self.pkt_id == other.pkt_id
9098
+ self.battery_level == other.battery_level
7737
9099
  )
7738
9100
  return False
7739
9101
 
7740
9102
  def dump(self):
7741
- string = bitstruct.pack("u8u8u16u152u32", self.version, self.power_source, self.battery_level, self.unused0, self.pkt_id)
9103
+ string = bitstruct.pack("u8u8u16u184", self.version, self.power_source, self.battery_level, self.unused0)
7742
9104
  return string.hex().upper()
7743
9105
 
7744
9106
  def set(self, string):
7745
- d = bitstruct.unpack("u8u8u16u152u32", binascii.unhexlify(string))
9107
+ d = bitstruct.unpack("u8u8u16u184", binascii.unhexlify(string))
7746
9108
  self.version = d[0]
7747
9109
  self.power_source = d[1]
7748
9110
  self.battery_level = d[2]
7749
9111
  self.unused0 = d[3]
7750
- self.pkt_id = d[4]
7751
9112
 
7752
9113
  class PofData():
7753
- def __init__(self, raw='', version=POF_DATA_PACKET_VERSION_LATEST, power_source=0, voltage_thr=0, unused0=0, pkt_id=0):
9114
+ def __init__(self, raw='', version=POF_DATA_PACKET_VERSION_LATEST, power_source=0, voltage_thr=0, unused0=0):
7754
9115
  self.version = version
7755
9116
  self.power_source = power_source
7756
9117
  self.voltage_thr = voltage_thr
7757
9118
  self.unused0 = unused0
7758
- self.pkt_id = pkt_id
7759
9119
  if raw:
7760
9120
  self.set(raw)
7761
9121
 
7762
9122
  def __repr__(self) -> str:
7763
- return "\n==> Packet pof_data <==\n" + tabulate.tabulate([['version', f"0x{self.version:X}", self.version],['power_source', f"0x{self.power_source:X}", self.power_source],['voltage_thr', f"0x{self.voltage_thr:X}", self.voltage_thr],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id]], tablefmt="texttable")
9123
+ return "\n==> Packet pof_data <==\n" + tabulate.tabulate([['version', f"0x{self.version:X}", self.version, ""],['power_source', f"0x{self.power_source:X}", self.power_source, ""],['voltage_thr', f"0x{self.voltage_thr:X}", self.voltage_thr, ""]], tablefmt="texttable")
7764
9124
 
7765
9125
  def __eq__(self, other):
7766
9126
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
7767
9127
  return (
7768
9128
  self.version == other.version and
7769
9129
  self.power_source == other.power_source and
7770
- self.voltage_thr == other.voltage_thr and
7771
- self.pkt_id == other.pkt_id
9130
+ self.voltage_thr == other.voltage_thr
7772
9131
  )
7773
9132
  return False
7774
9133
 
7775
9134
  def dump(self):
7776
- string = bitstruct.pack("u8u8u16u152u32", self.version, self.power_source, self.voltage_thr, self.unused0, self.pkt_id)
9135
+ string = bitstruct.pack("u8u8u16u184", self.version, self.power_source, self.voltage_thr, self.unused0)
7777
9136
  return string.hex().upper()
7778
9137
 
7779
9138
  def set(self, string):
7780
- d = bitstruct.unpack("u8u8u16u152u32", binascii.unhexlify(string))
9139
+ d = bitstruct.unpack("u8u8u16u184", binascii.unhexlify(string))
7781
9140
  self.version = d[0]
7782
9141
  self.power_source = d[1]
7783
9142
  self.voltage_thr = d[2]
7784
9143
  self.unused0 = d[3]
7785
- self.pkt_id = d[4]
7786
9144
 
9145
+ SIGNAL_INDICATOR_DATA_V1_ANTENNA_TYPE_MAP = {0x0:"2_4 Antenna", 0x1:"Sub1g Antenna"}
7787
9146
  class SignalIndicatorDataV1():
7788
9147
  def __init__(self, raw='', group_id=0, version=SIGNAL_INDICATOR_PACKET_VERSION_LATEST, msg_type=0, output_power=0, antenna_type=0, tx_antenna=0, rx_antenna=0, seq_id=0, unused0=0, pkt_id=0):
7789
9148
  self.group_id = group_id
@@ -7800,7 +9159,7 @@ class SignalIndicatorDataV1():
7800
9159
  self.set(raw)
7801
9160
 
7802
9161
  def __repr__(self) -> str:
7803
- return "\n==> Packet signal_indicator_data_v1 <==\n" + tabulate.tabulate([['group_id', f"0x{self.group_id:X}", self.group_id],['version', f"0x{self.version:X}", self.version],['msg_type', f"0x{self.msg_type:X}", self.msg_type],['output_power', f"0x{self.output_power:X}", self.output_power],['antenna_type', f"0x{self.antenna_type:X}", self.antenna_type],['tx_antenna', f"0x{self.tx_antenna:X}", self.tx_antenna],['rx_antenna', f"0x{self.rx_antenna:X}", self.rx_antenna],['seq_id', f"0x{self.seq_id:X}", self.seq_id],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id]], tablefmt="texttable")
9162
+ return "\n==> Packet signal_indicator_data_v1 <==\n" + tabulate.tabulate([['group_id', f"0x{self.group_id:X}", self.group_id, ""],['version', f"0x{self.version:X}", self.version, ""],['msg_type', f"0x{self.msg_type:X}", self.msg_type, ""],['output_power', f"0x{self.output_power:X}", self.output_power, ""],['antenna_type', f"0x{self.antenna_type:X}", self.antenna_type, SIGNAL_INDICATOR_DATA_V1_ANTENNA_TYPE_MAP[self.antenna_type]],['tx_antenna', f"0x{self.tx_antenna:X}", self.tx_antenna, ""],['rx_antenna', f"0x{self.rx_antenna:X}", self.rx_antenna, ""],['seq_id', f"0x{self.seq_id:X}", self.seq_id, ""],['pkt_id', f"0x{self.pkt_id:X}", self.pkt_id, ""]], tablefmt="texttable")
7804
9163
 
7805
9164
  def __eq__(self, other):
7806
9165
  if other and set(other.__dict__.keys()) == set(self.__dict__.keys()):
@@ -7833,7 +9192,7 @@ class SignalIndicatorDataV1():
7833
9192
  self.unused0 = d[8]
7834
9193
  self.pkt_id = d[9]
7835
9194
 
7836
- MODULES_LIST = [ModuleIfV12, ModuleIfV11, ModuleIfV10, ModuleIfV9, ModuleIfV8, ModuleIfV7, ModuleCalibrationV12, ModuleCalibrationV11, ModuleCalibrationV10, ModuleCalibrationV9, ModuleCalibrationV8, ModuleCalibrationV7, ModuleDatapathV12, ModuleDatapathV11, ModuleDatapathV10, ModuleDatapathV9, ModuleDatapathV8, ModuleDatapathV7, ModuleEnergy2400V12, ModuleEnergy2400V11, ModuleEnergy2400V10, ModuleEnergy2400V9, ModuleEnergy2400V8, ModuleEnergy2400V7, ModuleEnergySub1GV12, ModuleEnergySub1GV11, ModuleEnergySub1GV10, ModuleEnergySub1GV9, ModuleEnergySub1GV8, ModuleEnergySub1GV7, ModulePwrMgmtV12, ModulePwrMgmtV11, ModulePwrMgmtV10, ModulePwrMgmtV9, ModulePwrMgmtV8, ModulePwrMgmtV7, ModuleExtSensorsV12, ModuleExtSensorsV11, ModuleExtSensorsV10, ModuleExtSensorsV9, ModuleExtSensorsV8, ModuleExtSensorsV7, ModuleCustomV12, ModuleCustomV11, ModuleCustomV10, ModuleCustomV9, ModuleCustomV8]
9195
+ MODULES_LIST = [ModuleIfV13, ModuleIfV12, ModuleIfV11, ModuleIfV10, ModuleIfV9, ModuleIfV8, ModuleIfV7, ModuleCalibrationV13, ModuleCalibrationV12, ModuleCalibrationV11, ModuleCalibrationV10, ModuleCalibrationV9, ModuleCalibrationV8, ModuleCalibrationV7, ModuleDatapathV13, ModuleDatapathV12, ModuleDatapathV11, ModuleDatapathV10, ModuleDatapathV9, ModuleDatapathV8, ModuleDatapathV7, ModuleEnergy2400V13, ModuleEnergy2400V12, ModuleEnergy2400V11, ModuleEnergy2400V10, ModuleEnergy2400V9, ModuleEnergy2400V8, ModuleEnergy2400V7, ModuleEnergySub1GV13, ModuleEnergySub1GV12, ModuleEnergySub1GV11, ModuleEnergySub1GV10, ModuleEnergySub1GV9, ModuleEnergySub1GV8, ModuleEnergySub1GV7, ModulePwrMgmtV13, ModulePwrMgmtV12, ModulePwrMgmtV11, ModulePwrMgmtV10, ModulePwrMgmtV9, ModulePwrMgmtV8, ModulePwrMgmtV7, ModuleExtSensorsV13, ModuleExtSensorsV12, ModuleExtSensorsV11, ModuleExtSensorsV10, ModuleExtSensorsV9, ModuleExtSensorsV8, ModuleExtSensorsV7, ModuleCustomV13, ModuleCustomV12, ModuleCustomV11, ModuleCustomV10, ModuleCustomV9, ModuleCustomV8]
7837
9196
  MODULES_DICT = {MODULE_IF:'ModuleIfV', MODULE_CALIBRATION:'ModuleCalibrationV', MODULE_DATAPATH:'ModuleDatapathV', MODULE_ENERGY_2400:'ModuleEnergy2400V', MODULE_ENERGY_SUB1G:'ModuleEnergySub1GV', MODULE_PWR_MGMT:'ModulePwrMgmtV', MODULE_EXT_SENSORS:'ModuleExtSensorsV', MODULE_CUSTOM:'ModuleCustomV'}
7838
9197
  ACTIONS_DICT = {ACTION_EMPTY:'ActionGenericV', ACTION_GW_HB:'ActionGwHbV', ACTION_REBOOT:'ActionRebootV', ACTION_BLINK:'ActionBlinkV', ACTION_GET_MODULE:'ActionGetModuleV', ACTION_RESTORE_DEFAULTS:'ActionRestoreDefaultsV', ACTION_SEND_HB:'ActionSendHbV', ACTION_GET_BATTERY_SENSOR:'ActionGetBatterySensorV', ACTION_GET_POF_DATA:'ActionGetPofDataV', ACTION_PL_STATUS:'ActionPlStatusV'}
7839
- WLT_PKT_TYPES = [UnifiedEchoExtPkt, UnifiedEchoPktV1, UnifiedEchoPktV0, ActionGenericV12, ActionGenericV11, ActionGenericV10, ActionGenericV9, ActionGenericV8, ActionGenericV7, ActionGwHbV12, ActionGwHbV11, ActionGwHbV10, ActionGwHbV9, ActionGwHbV8, ActionRebootV12, ActionRebootV11, ActionRebootV10, ActionRebootV9, ActionRebootV8, ActionBlinkV12, ActionBlinkV11, ActionBlinkV10, ActionBlinkV9, ActionBlinkV8, ActionGetModuleV12, ActionGetModuleV11, ActionGetModuleV10, ActionGetModuleV9, ActionGetModuleV8, ActionRestoreDefaultsV12, ActionRestoreDefaultsV11, ActionRestoreDefaultsV10, ActionRestoreDefaultsV9, ActionRestoreDefaultsV8, ActionSendHbV12, ActionSendHbV11, ActionSendHbV10, ActionSendHbV9, ActionSendHbV8, ActionGetBatterySensorV12, ActionGetBatterySensorV11, ActionGetBatterySensorV10, ActionGetBatterySensorV9, ActionGetBatterySensorV8, ActionGetPofDataV12, ActionGetPofDataV11, ActionGetPofDataV10, ActionGetPofDataV9, ActionGetPofDataV8, ActionPlStatusV12, ActionPlStatusV11, ActionPlStatusV10, Brg2BrgOtaV12, Brg2BrgOtaV11, Brg2BrgOtaV10, Brg2BrgOtaV9, Brg2BrgCfgV12, Brg2BrgCfgV11, Brg2BrgCfgV10, Brg2BrgCfgV9, Gw2BrgCfgV8, Gw2BrgCfgV7, Brg2GwCfgV8, Brg2GwCfgV7, Brg2GwCfgV6, Brg2GwCfgV5, Brg2GwCfgV2, Brg2GwHbSleepV12, Brg2GwHbSleepV11, Brg2GwHbSleepV10, Brg2GwHbV12, Brg2GwHbV11, Brg2GwHbV10, Brg2GwHbV9, Brg2GwHbV8, Brg2GwHbV7, Brg2GwHbV6, Brg2GwHbV5, Brg2GwHbV1, SideInfo, SensorData, SideInfoSensor, ModuleIfV12, ModuleIfV11, ModuleIfV10, ModuleIfV9, ModuleIfV8, ModuleIfV7, ModuleCalibrationV12, ModuleCalibrationV11, ModuleCalibrationV10, ModuleCalibrationV9, ModuleCalibrationV8, ModuleCalibrationV7, ModuleDatapathV12, ModuleDatapathV11, ModuleDatapathV10, ModuleDatapathV9, ModuleDatapathV8, ModuleDatapathV7, ModuleEnergy2400V12, ModuleEnergy2400V11, ModuleEnergy2400V10, ModuleEnergy2400V9, ModuleEnergy2400V8, ModuleEnergy2400V7, ModuleEnergySub1GV12, ModuleEnergySub1GV11, ModuleEnergySub1GV10, ModuleEnergySub1GV9, ModuleEnergySub1GV8, ModuleEnergySub1GV7, ModulePwrMgmtV12, ModulePwrMgmtV11, ModulePwrMgmtV10, ModulePwrMgmtV9, ModulePwrMgmtV8, ModulePwrMgmtV7, ModuleExtSensorsV12, ModuleExtSensorsV11, ModuleExtSensorsV10, ModuleExtSensorsV9, ModuleExtSensorsV8, ModuleExtSensorsV7, ModuleCustomV12, ModuleCustomV11, ModuleCustomV10, ModuleCustomV9, ModuleCustomV8]
9198
+ WLT_PKT_TYPES = [UnifiedEchoExtPktV1, UnifiedEchoExtPktV0, UnifiedEchoPktV2, UnifiedEchoPktV1, UnifiedEchoPktV0, SideInfo, UnifiedSensorPkt, SensorData, SideInfoSensor, ActionGenericV13, ActionGenericV12, ActionGenericV11, ActionGenericV10, ActionGenericV9, ActionGenericV8, ActionGenericV7, ActionGwHbV13, ActionGwHbV12, ActionGwHbV11, ActionGwHbV10, ActionGwHbV9, ActionGwHbV8, ActionRebootV13, ActionRebootV12, ActionRebootV11, ActionRebootV10, ActionRebootV9, ActionRebootV8, ActionBlinkV13, ActionBlinkV12, ActionBlinkV11, ActionBlinkV10, ActionBlinkV9, ActionBlinkV8, ActionGetModuleV13, ActionGetModuleV12, ActionGetModuleV11, ActionGetModuleV10, ActionGetModuleV9, ActionGetModuleV8, ActionRestoreDefaultsV13, ActionRestoreDefaultsV12, ActionRestoreDefaultsV11, ActionRestoreDefaultsV10, ActionRestoreDefaultsV9, ActionRestoreDefaultsV8, ActionSendHbV13, ActionSendHbV12, ActionSendHbV11, ActionSendHbV10, ActionSendHbV9, ActionSendHbV8, ActionGetBatterySensorV13, ActionGetBatterySensorV12, ActionGetBatterySensorV11, ActionGetBatterySensorV10, ActionGetBatterySensorV9, ActionGetBatterySensorV8, ActionGetPofDataV13, ActionGetPofDataV12, ActionGetPofDataV11, ActionGetPofDataV10, ActionGetPofDataV9, ActionGetPofDataV8, ActionPlStatusV13, ActionPlStatusV12, ActionPlStatusV11, ActionPlStatusV10, Brg2BrgOtaV13, Brg2BrgOtaV12, Brg2BrgOtaV11, Brg2BrgOtaV10, Brg2BrgOtaV9, Brg2BrgCfgV13, Brg2BrgCfgV12, Brg2BrgCfgV11, Brg2BrgCfgV10, Brg2BrgCfgV9, Gw2BrgCfgV8, Gw2BrgCfgV7, Brg2GwCfgV8, Brg2GwCfgV7, Brg2GwCfgV6, Brg2GwCfgV5, Brg2GwCfgV2, Brg2GwHbSleepV13, Brg2GwHbSleepV12, Brg2GwHbSleepV11, Brg2GwHbSleepV10, Brg2GwHbV13, Brg2GwHbV12, Brg2GwHbV11, Brg2GwHbV10, Brg2GwHbV9, Brg2GwHbV8, Brg2GwHbV7, Brg2GwHbV6, Brg2GwHbV5, Brg2GwHbV1, ModuleIfV13, ModuleIfV12, ModuleIfV11, ModuleIfV10, ModuleIfV9, ModuleIfV8, ModuleIfV7, ModuleCalibrationV13, ModuleCalibrationV12, ModuleCalibrationV11, ModuleCalibrationV10, ModuleCalibrationV9, ModuleCalibrationV8, ModuleCalibrationV7, ModuleDatapathV13, ModuleDatapathV12, ModuleDatapathV11, ModuleDatapathV10, ModuleDatapathV9, ModuleDatapathV8, ModuleDatapathV7, ModuleEnergy2400V13, ModuleEnergy2400V12, ModuleEnergy2400V11, ModuleEnergy2400V10, ModuleEnergy2400V9, ModuleEnergy2400V8, ModuleEnergy2400V7, ModuleEnergySub1GV13, ModuleEnergySub1GV12, ModuleEnergySub1GV11, ModuleEnergySub1GV10, ModuleEnergySub1GV9, ModuleEnergySub1GV8, ModuleEnergySub1GV7, ModulePwrMgmtV13, ModulePwrMgmtV12, ModulePwrMgmtV11, ModulePwrMgmtV10, ModulePwrMgmtV9, ModulePwrMgmtV8, ModulePwrMgmtV7, ModuleExtSensorsV13, ModuleExtSensorsV12, ModuleExtSensorsV11, ModuleExtSensorsV10, ModuleExtSensorsV9, ModuleExtSensorsV8, ModuleExtSensorsV7, ModuleCustomV13, ModuleCustomV12, ModuleCustomV11, ModuleCustomV10, ModuleCustomV9, ModuleCustomV8]