wiliot-certificate 4.4.2__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.2.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.91_app.zip +0 -0
  248. gw_certificate/interface/4.4.91_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.2.dist-info/METADATA +0 -211
  281. wiliot_certificate-4.4.2.dist-info/RECORD +0 -210
  282. wiliot_certificate-4.4.2.dist-info/entry_points.txt +0 -3
  283. wiliot_certificate-4.4.2.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.2.dist-info → wiliot_certificate-4.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,305 +0,0 @@
1
- from brg_certificate.cert_prints import *
2
- from brg_certificate.cert_defines import *
3
- from brg_certificate.wlt_types import *
4
- import brg_certificate.cert_common as cert_common
5
- import brg_certificate.cert_config as cert_config
6
- import brg_certificate.cert_mqtt as cert_mqtt
7
- import csv
8
- # test MACROS definitions #
9
- DEFAULT_SENSOR_PAYLOAD_DATA = "0200002929B0FFF98DB104FA68BD5491456B55CC18AADB"
10
- DEFAULT_ADVA0 = "112233445566"
11
- DEFAULT_ADVA1 = "778899AABBCC"
12
- ERM_SMART_MS_PAYLOAD = "0201060303374C17FFAE0421EF9DE99CE7AE7C5EB13B744D401CC6CFCF0107"
13
- ZEBRA_PRINTER_PAYLOAD = "0201020F0958585A564A323331363038333435030279FEA5A5A5A5A5A5A5A5"
14
- DEFAULT_SPECIAL_PAYLOAD = ZEBRA_PRINTER_PAYLOAD
15
- DEFAULT_PACKET_LENGTH = "1E"
16
-
17
- SCAN_TIMEOUT = 60
18
-
19
- # UUID defines for logs review #
20
- ERM_SMART_MS_UUID = 0xFFAE04
21
- ZEBRA_PRINTER_UUID = 0x0279FE
22
- UUID_0 = ZEBRA_PRINTER_UUID
23
- UUID_1 = 0x987654
24
- SCRAMBLE_ON = 0x01
25
- SCRAMBLE_OFF = 0x00
26
-
27
-
28
- def uuid_scramble_cfg_add(uuid, scramble):
29
- return uuid << 8 | scramble
30
-
31
-
32
- def unscramble(packet):
33
- unscrambled_packet_id = int(hex(packet[RSSI])[2:] + packet[SENSOR_ID][-6:], 16) # transforming parameters string to hex format
34
- for idx in range(6, 60, 8):
35
- current_word = int(packet[PAYLOAD][idx: idx + 8], 16)
36
- unscrambled_packet_id ^= current_word
37
- return packet[PAYLOAD][8:-8] + hex(unscrambled_packet_id)[2:]
38
-
39
-
40
- def find_packet_in_csv(unscrambled_payload):
41
- base_path = os.path.dirname(os.path.abspath(__file__))
42
- with open(f'{base_path}/out_sensor_data.csv', 'r') as csv_file:
43
- csv_reader = csv.DictReader(csv_file)
44
- next(csv_reader) # stepping over the header line
45
- for line in csv_reader:
46
- raw_data_payload = line['raw packet'][20:]
47
- if raw_data_payload[:8] == unscrambled_payload[:8]:
48
- return True
49
- return False
50
-
51
-
52
- # Test functions description #
53
- def create_csv_file_in(test, length=500):
54
- if test.data != DATA_SIMULATION:
55
- return []
56
- else:
57
- base_path = os.path.dirname(os.path.abspath(__file__))
58
- pkts = []
59
- payload_0 = DEFAULT_ADVA0 + DEFAULT_SPECIAL_PAYLOAD
60
- payload_1 = DEFAULT_ADVA1 + DEFAULT_PACKET_LENGTH + cert_common.int2mac_get(UUID_1)[6:] + DEFAULT_SENSOR_PAYLOAD_DATA
61
- with open(f"{base_path}/in_sensor_data.csv", "w+") as f:
62
- f.write("raw packet,output power,delay,duplicates,channel,COM\n")
63
- for i in range(length):
64
- f.write(payload_0 + ",8,200,6,37,COM3\n")
65
- f.write(payload_1 + "{:08X}".format(i) + ",8,200,6,37,COM3\n")
66
- pkts.append(payload_0)
67
- pkts.append(payload_1 + "{:08X}".format(i))
68
- return pkts
69
-
70
-
71
- def create_csv_file_out(test):
72
- if test.data != DATA_SIMULATION:
73
- return
74
- else:
75
- base_path = os.path.dirname(os.path.abspath(__file__))
76
- uuid_0 = cert_common.int2mac_get(UUID_0)[6:]
77
- with (open(f"{base_path}/in_sensor_data.csv", "r") as csv_in,
78
- open(f"{base_path}/out_sensor_data.csv", "w") as csv_out):
79
- csv_out.write("raw packet,output power,delay,duplicates,channel,COM\n")
80
- csv_in = csv.DictReader(csv_in)
81
- next(csv_in) # stepping over the header line
82
- for line in csv_in:
83
- input_payload = line['raw packet'][12:]
84
- if uuid_0 in input_payload:
85
- csv_out.write(DEFAULT_ADVA0 + process_sensor_payload(input_payload, uuid_0) + ",8,200,6,37,COM3\n")
86
- else:
87
- csv_out.write(line['raw packet'] + ",8,200,6,37,COM3\n")
88
-
89
-
90
- def process_sensor_payload(payload, uuid):
91
- uuid_idx = payload.find(uuid)
92
- if uuid_idx == -1:
93
- raise ValueError(f"Pattern {uuid_idx} not found in the packet")
94
-
95
- len = int(payload[uuid_idx - 2:uuid_idx], 16)
96
- segment_start_idx = uuid_idx - 2
97
- segment_end_idx = uuid_idx + len * 2
98
- segment = payload[segment_start_idx:segment_end_idx]
99
- output = segment + payload[:segment_start_idx] + payload[segment_end_idx:]
100
- return output
101
-
102
-
103
- def pkts_get(test, phase):
104
- test.mqttc.flush_pkts()
105
- mqtt_scan_wait(test, duration=SCAN_TIMEOUT)
106
- sensor_pkts = cert_mqtt.get_all_sensor_pkts(test)
107
- generate_log_file(test, phase)
108
-
109
- if len(sensor_pkts) == 0:
110
- if phase != "tag_data_only" and phase != "rssi_threshold":
111
- test.rc = TEST_FAILED
112
- test.add_reason(f"Phase {phase} failed - didn't find any sensor packets")
113
- else:
114
- if phase == "tag_data_only":
115
- test.rc = TEST_FAILED
116
- test.add_reason(f"Phase {phase} failed - found sensor packets")
117
- sensor0_pkts = [p[SENSOR_UUID] == f"{UUID_0:06X}" for p in sensor_pkts]
118
- if phase == "snsr0_scrmbl_snsr1_no_scrmbl" or phase == "snsr0_scrmbl_snsr1_scrmbl" or phase == "snsr0_no_scrmbl":
119
- if not any(sensor0_pkts):
120
- test.rc = TEST_FAILED
121
- test.add_reason(f"Phase {phase} failed - didn't find any sensor0 packets")
122
- sensor1_pkts = [p[SENSOR_UUID] == f"{UUID_1:06X}" for p in sensor_pkts]
123
- if phase == "snsr0_scrmbl_snsr1_no_scrmbl" or phase == "snsr0_scrmbl_snsr1_scrmbl" or phase == "snsr1_scrmbl":
124
- if not any(sensor1_pkts):
125
- test.rc = TEST_FAILED
126
- test.add_reason(f"Phase {phase} failed - didn't find any sensor1 packets")
127
-
128
- return sensor_pkts
129
-
130
-
131
- def test_tag_data_only(test, phase, _):
132
- pkts_get(test, phase)
133
- return test
134
-
135
-
136
- def test_rssi_threshold(test, phase, ext_sensors_module):
137
- rssi_threshold = -25
138
- # Config
139
- utPrint(f"UUID_0 only without scrambling, RSSI Threshold = {rssi_threshold}\n", "BLUE")
140
- sensor0 = uuid_scramble_cfg_add(UUID_0, SCRAMBLE_OFF)
141
- test = cert_config.brg_configure(test=test, module=ext_sensors_module,
142
- fields=[BRG_SENSOR0, BRG_RSSI_THRESHOLD], values=[sensor0, rssi_threshold])[0]
143
- # Analyze
144
- sensor_pkts = pkts_get(test, phase)
145
- if test.rc == TEST_FAILED:
146
- return test
147
- rssi_threshold_viloation_pkts = [p for p in sensor_pkts if p[RSSI] >= -1 * rssi_threshold]
148
- if rssi_threshold_viloation_pkts:
149
- test.rc = TEST_FAILED
150
- test.add_reason("rssi_threshold phase failed - received"
151
- f" {len(rssi_threshold_viloation_pkts)} sensor packets\n with RSSI weaker than {rssi_threshold}")
152
- return test
153
- return test
154
-
155
-
156
- def test_snsr0_no_scrmbl(test, phase, ext_sensors_module):
157
- # Config
158
- utPrint("UUID_0 only without scrambling - UUID is 0x{:06X}".format(UUID_0), "BLUE")
159
- sensor0 = uuid_scramble_cfg_add(UUID_0, SCRAMBLE_OFF)
160
- test = cert_config.brg_configure(test=test, module=ext_sensors_module, fields=[BRG_SENSOR0], values=[sensor0])[0]
161
- if test.rc == TEST_FAILED:
162
- test.add_reason(f"Configuration for phase {phase} failed")
163
- return test
164
- # Analyze
165
- sensor_pkts = pkts_get(test, phase)
166
- if test.rc == TEST_FAILED:
167
- return test
168
- for p in sensor_pkts:
169
- if p[SENSOR_UUID] != "{:06X}".format(UUID_0):
170
- test.rc = TEST_FAILED
171
- test.add_reason(f"Phase {phase} failed - received packets from an un-registered sensor")
172
- return test
173
- unscrambled_payload = p[PAYLOAD][8:]
174
- if find_packet_in_csv(unscrambled_payload) is False:
175
- test.rc = TEST_FAILED
176
- test.add_reason(f"Phase {phase} failed - couldn't find unscrambled payload")
177
- return test
178
- return test
179
-
180
-
181
- def test_snsr1_scrmbl(test, phase, ext_sensors_module):
182
- # Config
183
- utPrint("UUID_1 only with scrambling - UUID is 0x{:06X}".format(UUID_1), "BLUE")
184
- sensor1 = uuid_scramble_cfg_add(UUID_1, SCRAMBLE_ON)
185
- test = cert_config.brg_configure(test=test, module=ext_sensors_module, fields=[BRG_SENSOR1], values=[sensor1])[0]
186
- if test.rc == TEST_FAILED:
187
- test.add_reason(f"Configuration for phase {phase} failed")
188
- return test
189
- # Analyze
190
- sensor_pkts = pkts_get(test, phase)
191
- if test.rc == TEST_FAILED:
192
- return test
193
- for p in sensor_pkts:
194
- if p[SENSOR_UUID] != "{:06X}".format(UUID_1):
195
- test.rc = TEST_FAILED
196
- test.add_reason(f"Phase {phase} failed - received packets from an un-registered sensor")
197
- return test
198
- unscrambled_payload = unscramble(p)
199
- if find_packet_in_csv(unscrambled_payload) is False:
200
- test.rc = TEST_FAILED
201
- test.add_reason(f"Phase {phase} failed - scrambling algorithm error")
202
- return test
203
- return test
204
-
205
-
206
- def test_snsr0_scrmbl_snsr1_no_scrmbl(test, phase, ext_sensors_module):
207
- # Config
208
- print(f"UUID_0 with scrambling, UUID_1 without scrambling, {SCAN_TIMEOUT} sec\n")
209
- sensor0 = uuid_scramble_cfg_add(UUID_0, SCRAMBLE_ON)
210
- sensor1 = uuid_scramble_cfg_add(UUID_1, SCRAMBLE_OFF)
211
- test = cert_config.brg_configure(test=test, module=ext_sensors_module, fields=[BRG_SENSOR0, BRG_SENSOR1], values=[sensor0, sensor1])[0]
212
- if test.rc == TEST_FAILED:
213
- test.add_reason(f"Configuration for phase {phase} failed")
214
- return test
215
- # Analyze
216
- sensor_pkts = pkts_get(test, phase)
217
- if test.rc == TEST_FAILED:
218
- return test
219
- for p in sensor_pkts:
220
- if p[SENSOR_UUID] == "{:06X}".format(UUID_0):
221
- unscrambled_payload = unscramble(p)
222
- if find_packet_in_csv(unscrambled_payload) is False:
223
- test.rc = TEST_FAILED
224
- test.add_reason(f"Phase {phase} failed - scrambling algorithm error")
225
- return test
226
- if p[SENSOR_UUID] == "{:06X}".format(UUID_1):
227
- unscrambled_payload = p[PAYLOAD][8:]
228
- if find_packet_in_csv(unscrambled_payload) is False:
229
- test.rc = TEST_FAILED
230
- test.add_reason(f"Phase {phase} failed - couldn't find unscrambled payload")
231
- return test
232
- return test
233
-
234
-
235
- def test_snsr0_scrmbl_snsr1_scrmbl(test, phase, ext_sensors_module):
236
- # Config
237
- utPrint(f"UUID_0 with scrambling, UUID_1 with scrambling, {SCAN_TIMEOUT} sec\n", "BLUE")
238
- sensor0 = uuid_scramble_cfg_add(UUID_0, SCRAMBLE_ON)
239
- sensor1 = uuid_scramble_cfg_add(UUID_1, SCRAMBLE_ON)
240
- test = cert_config.brg_configure(test=test, module=ext_sensors_module, fields=[BRG_SENSOR0, BRG_SENSOR1], values=[sensor0, sensor1])[0]
241
- if test.rc == TEST_FAILED:
242
- return test
243
- # Analyze
244
- sensor_pkts = pkts_get(test, phase)
245
- if test.rc == TEST_FAILED:
246
- return test
247
- for p in sensor_pkts:
248
- unscrambled_payload = unscramble(p)
249
- if find_packet_in_csv(unscrambled_payload) is False:
250
- test.rc = TEST_FAILED
251
- test.add_reason(f"Phase {phase} failed - scrambling algorithm error")
252
- return test
253
- return test
254
-
255
-
256
- EXT_SENSOR_TEST_MAP = {"tag_data_only": test_tag_data_only,
257
- "rssi_threshold": test_rssi_threshold,
258
- "snsr0_no_scrmbl": test_snsr0_no_scrmbl,
259
- "snsr1_scrmbl": test_snsr1_scrmbl,
260
- "snsr0_scrmbl_snsr1_no_scrmbl": test_snsr0_scrmbl_snsr1_no_scrmbl,
261
- "snsr0_scrmbl_snsr1_scrmbl": test_snsr0_scrmbl_snsr1_scrmbl}
262
-
263
-
264
- def run(test):
265
- datapath_module = test.active_brg.datapath
266
- ext_sensors_module = test.active_brg.sensors
267
- test = cert_common.test_prolog(test)
268
- # check for problems in prolog
269
- if test.rc == TEST_FAILED:
270
- test = cert_common.test_epilog(test)
271
- return test
272
-
273
- # Adaptation of GW configuration for internal BRG test
274
- if test.internal_brg:
275
- test = cert_config.brg_configure(test, fields=[BRG_RX_CHANNEL], values=[ag.RX_CHANNEL_37], module=datapath_module, wait=True)[0]
276
- if test.rc == TEST_FAILED and test.exit_on_param_failure:
277
- return cert_common.test_epilog(test, revert_gws=True)
278
-
279
- # create csv file for the test
280
- in_pkts = create_csv_file_in(test)
281
- create_csv_file_out(test)
282
-
283
- if test.data == DATA_SIMULATION:
284
- # start generating sensor pkts and send them using data simulator
285
- pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=len(in_pkts), duplicates=6, delay=200,
286
- pkt_types=[0], pixels_type=RAW_DATA, pkts=in_pkts)
287
- pixel_sim_thread.start()
288
- ble_sim_thread = pixel_sim_thread
289
-
290
- for param in test.params:
291
- functionality_run_print(param.name)
292
- test = EXT_SENSOR_TEST_MAP[param.value](test, param.name, ext_sensors_module)
293
- field_functionality_pass_fail_print(test, param.name)
294
- test.set_phase_rc(param.name, test.rc)
295
- test.add_phase_reason(param.name, test.reason)
296
- if test.rc == TEST_FAILED:
297
- if test.exit_on_param_failure:
298
- break # break the whole for loop and keep the test as failed
299
- test.reset_result() # reset result and continue to next param
300
-
301
- # Kill the ble simulator
302
- if test.data == DATA_SIMULATION:
303
- ble_sim_thread.stop()
304
-
305
- return cert_common.test_epilog(test, revert_brgs=True, modules=[ext_sensors_module, datapath_module])
@@ -1,234 +0,0 @@
1
- from google.protobuf.internal import containers as _containers
2
- from google.protobuf import descriptor as _descriptor
3
- from google.protobuf import message as _message
4
- from collections.abc import Iterable as _Iterable, Mapping as _Mapping
5
- from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
6
-
7
- DESCRIPTOR: _descriptor.FileDescriptor
8
-
9
- class Location(_message.Message):
10
- __slots__ = ("lat", "lng")
11
- LAT_FIELD_NUMBER: _ClassVar[int]
12
- LNG_FIELD_NUMBER: _ClassVar[int]
13
- lat: float
14
- lng: float
15
- def __init__(self, lat: _Optional[float] = ..., lng: _Optional[float] = ...) -> None: ...
16
-
17
- class Value(_message.Message):
18
- __slots__ = ("integerValue", "numberValue", "stringValue", "boolValue")
19
- INTEGERVALUE_FIELD_NUMBER: _ClassVar[int]
20
- NUMBERVALUE_FIELD_NUMBER: _ClassVar[int]
21
- STRINGVALUE_FIELD_NUMBER: _ClassVar[int]
22
- BOOLVALUE_FIELD_NUMBER: _ClassVar[int]
23
- integerValue: int
24
- numberValue: float
25
- stringValue: str
26
- boolValue: bool
27
- def __init__(self, integerValue: _Optional[int] = ..., numberValue: _Optional[float] = ..., stringValue: _Optional[str] = ..., boolValue: bool = ...) -> None: ...
28
-
29
- class GatewayData(_message.Message):
30
- __slots__ = ("gatewayId", "timestamp", "packets", "location")
31
- class Packet(_message.Message):
32
- __slots__ = ("payload", "timestamp", "sequenceId", "rssi", "aliasBridgeId")
33
- PAYLOAD_FIELD_NUMBER: _ClassVar[int]
34
- TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
35
- SEQUENCEID_FIELD_NUMBER: _ClassVar[int]
36
- RSSI_FIELD_NUMBER: _ClassVar[int]
37
- ALIASBRIDGEID_FIELD_NUMBER: _ClassVar[int]
38
- payload: bytes
39
- timestamp: int
40
- sequenceId: int
41
- rssi: int
42
- aliasBridgeId: str
43
- def __init__(self, payload: _Optional[bytes] = ..., timestamp: _Optional[int] = ..., sequenceId: _Optional[int] = ..., rssi: _Optional[int] = ..., aliasBridgeId: _Optional[str] = ...) -> None: ...
44
- GATEWAYID_FIELD_NUMBER: _ClassVar[int]
45
- TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
46
- PACKETS_FIELD_NUMBER: _ClassVar[int]
47
- LOCATION_FIELD_NUMBER: _ClassVar[int]
48
- gatewayId: str
49
- timestamp: int
50
- packets: _containers.RepeatedCompositeFieldContainer[GatewayData.Packet]
51
- location: Location
52
- def __init__(self, gatewayId: _Optional[str] = ..., timestamp: _Optional[int] = ..., packets: _Optional[_Iterable[_Union[GatewayData.Packet, _Mapping]]] = ..., location: _Optional[_Union[Location, _Mapping]] = ...) -> None: ...
53
-
54
- class UplinkMessage(_message.Message):
55
- __slots__ = ("gatewayStatus", "gatewayInfo", "gatewayLogs", "actionStatus")
56
- GATEWAYSTATUS_FIELD_NUMBER: _ClassVar[int]
57
- GATEWAYINFO_FIELD_NUMBER: _ClassVar[int]
58
- GATEWAYLOGS_FIELD_NUMBER: _ClassVar[int]
59
- ACTIONSTATUS_FIELD_NUMBER: _ClassVar[int]
60
- gatewayStatus: GatewayStatus
61
- gatewayInfo: GatewayInfo
62
- gatewayLogs: GatewayLogs
63
- actionStatus: ActionStatus
64
- def __init__(self, gatewayStatus: _Optional[_Union[GatewayStatus, _Mapping]] = ..., gatewayInfo: _Optional[_Union[GatewayInfo, _Mapping]] = ..., gatewayLogs: _Optional[_Union[GatewayLogs, _Mapping]] = ..., actionStatus: _Optional[_Union[ActionStatus, _Mapping]] = ...) -> None: ...
65
-
66
- class ACL(_message.Message):
67
- __slots__ = ("mode_allow", "ids")
68
- MODE_ALLOW_FIELD_NUMBER: _ClassVar[int]
69
- IDS_FIELD_NUMBER: _ClassVar[int]
70
- mode_allow: bool
71
- ids: _containers.RepeatedScalarFieldContainer[bytes]
72
- def __init__(self, mode_allow: bool = ..., ids: _Optional[_Iterable[bytes]] = ...) -> None: ...
73
-
74
- class GatewayConfigValue(_message.Message):
75
- __slots__ = ("integerValue", "numberValue", "stringValue", "boolValue", "aclValue")
76
- INTEGERVALUE_FIELD_NUMBER: _ClassVar[int]
77
- NUMBERVALUE_FIELD_NUMBER: _ClassVar[int]
78
- STRINGVALUE_FIELD_NUMBER: _ClassVar[int]
79
- BOOLVALUE_FIELD_NUMBER: _ClassVar[int]
80
- ACLVALUE_FIELD_NUMBER: _ClassVar[int]
81
- integerValue: int
82
- numberValue: float
83
- stringValue: str
84
- boolValue: bool
85
- aclValue: ACL
86
- def __init__(self, integerValue: _Optional[int] = ..., numberValue: _Optional[float] = ..., stringValue: _Optional[str] = ..., boolValue: bool = ..., aclValue: _Optional[_Union[ACL, _Mapping]] = ...) -> None: ...
87
-
88
- class GatewayStatus(_message.Message):
89
- __slots__ = ("gatewayId", "gatewayType", "downlinkSupported", "bridgeOtaUpgradeSupported", "apiVersion", "version", "bleSwVersion", "interfaceSwVersion", "location", "config", "bleAddress")
90
- class ConfigEntry(_message.Message):
91
- __slots__ = ("key", "value")
92
- KEY_FIELD_NUMBER: _ClassVar[int]
93
- VALUE_FIELD_NUMBER: _ClassVar[int]
94
- key: str
95
- value: GatewayConfigValue
96
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[GatewayConfigValue, _Mapping]] = ...) -> None: ...
97
- GATEWAYID_FIELD_NUMBER: _ClassVar[int]
98
- GATEWAYTYPE_FIELD_NUMBER: _ClassVar[int]
99
- DOWNLINKSUPPORTED_FIELD_NUMBER: _ClassVar[int]
100
- BRIDGEOTAUPGRADESUPPORTED_FIELD_NUMBER: _ClassVar[int]
101
- APIVERSION_FIELD_NUMBER: _ClassVar[int]
102
- VERSION_FIELD_NUMBER: _ClassVar[int]
103
- BLESWVERSION_FIELD_NUMBER: _ClassVar[int]
104
- INTERFACESWVERSION_FIELD_NUMBER: _ClassVar[int]
105
- LOCATION_FIELD_NUMBER: _ClassVar[int]
106
- CONFIG_FIELD_NUMBER: _ClassVar[int]
107
- BLEADDRESS_FIELD_NUMBER: _ClassVar[int]
108
- gatewayId: str
109
- gatewayType: str
110
- downlinkSupported: bool
111
- bridgeOtaUpgradeSupported: bool
112
- apiVersion: int
113
- version: str
114
- bleSwVersion: str
115
- interfaceSwVersion: str
116
- location: Location
117
- config: _containers.MessageMap[str, GatewayConfigValue]
118
- bleAddress: str
119
- def __init__(self, gatewayId: _Optional[str] = ..., gatewayType: _Optional[str] = ..., downlinkSupported: bool = ..., bridgeOtaUpgradeSupported: bool = ..., apiVersion: _Optional[int] = ..., version: _Optional[str] = ..., bleSwVersion: _Optional[str] = ..., interfaceSwVersion: _Optional[str] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., config: _Optional[_Mapping[str, GatewayConfigValue]] = ..., bleAddress: _Optional[str] = ...) -> None: ...
120
-
121
- class GatewayInfo(_message.Message):
122
- __slots__ = ("entries",)
123
- class EntriesEntry(_message.Message):
124
- __slots__ = ("key", "value")
125
- KEY_FIELD_NUMBER: _ClassVar[int]
126
- VALUE_FIELD_NUMBER: _ClassVar[int]
127
- key: str
128
- value: Value
129
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[Value, _Mapping]] = ...) -> None: ...
130
- ENTRIES_FIELD_NUMBER: _ClassVar[int]
131
- entries: _containers.MessageMap[str, Value]
132
- def __init__(self, entries: _Optional[_Mapping[str, Value]] = ...) -> None: ...
133
-
134
- class GatewayLogs(_message.Message):
135
- __slots__ = ("logs",)
136
- LOGS_FIELD_NUMBER: _ClassVar[int]
137
- logs: _containers.RepeatedScalarFieldContainer[str]
138
- def __init__(self, logs: _Optional[_Iterable[str]] = ...) -> None: ...
139
-
140
- class ActionStatus(_message.Message):
141
- __slots__ = ("action", "status", "step", "progress", "bridgeId")
142
- ACTION_FIELD_NUMBER: _ClassVar[int]
143
- STATUS_FIELD_NUMBER: _ClassVar[int]
144
- STEP_FIELD_NUMBER: _ClassVar[int]
145
- PROGRESS_FIELD_NUMBER: _ClassVar[int]
146
- BRIDGEID_FIELD_NUMBER: _ClassVar[int]
147
- action: int
148
- status: int
149
- step: int
150
- progress: int
151
- bridgeId: bytes
152
- def __init__(self, action: _Optional[int] = ..., status: _Optional[int] = ..., step: _Optional[int] = ..., progress: _Optional[int] = ..., bridgeId: _Optional[bytes] = ...) -> None: ...
153
-
154
- class DownlinkMessage(_message.Message):
155
- __slots__ = ("txPacket", "gatewayAction", "bridgeUpgrade", "gatewayConfig", "customMessage")
156
- TXPACKET_FIELD_NUMBER: _ClassVar[int]
157
- GATEWAYACTION_FIELD_NUMBER: _ClassVar[int]
158
- BRIDGEUPGRADE_FIELD_NUMBER: _ClassVar[int]
159
- GATEWAYCONFIG_FIELD_NUMBER: _ClassVar[int]
160
- CUSTOMMESSAGE_FIELD_NUMBER: _ClassVar[int]
161
- txPacket: TxPacket
162
- gatewayAction: GatewayAction
163
- bridgeUpgrade: BridgeUpgrade
164
- gatewayConfig: GatewayConfig
165
- customMessage: CustomMessage
166
- def __init__(self, txPacket: _Optional[_Union[TxPacket, _Mapping]] = ..., gatewayAction: _Optional[_Union[GatewayAction, _Mapping]] = ..., bridgeUpgrade: _Optional[_Union[BridgeUpgrade, _Mapping]] = ..., gatewayConfig: _Optional[_Union[GatewayConfig, _Mapping]] = ..., customMessage: _Optional[_Union[CustomMessage, _Mapping]] = ...) -> None: ...
167
-
168
- class TxPacket(_message.Message):
169
- __slots__ = ("payload", "maxRetries", "maxDurationMs")
170
- PAYLOAD_FIELD_NUMBER: _ClassVar[int]
171
- MAXRETRIES_FIELD_NUMBER: _ClassVar[int]
172
- MAXDURATIONMS_FIELD_NUMBER: _ClassVar[int]
173
- payload: bytes
174
- maxRetries: int
175
- maxDurationMs: int
176
- def __init__(self, payload: _Optional[bytes] = ..., maxRetries: _Optional[int] = ..., maxDurationMs: _Optional[int] = ...) -> None: ...
177
-
178
- class GatewayAction(_message.Message):
179
- __slots__ = ("action",)
180
- ACTION_FIELD_NUMBER: _ClassVar[int]
181
- action: str
182
- def __init__(self, action: _Optional[str] = ...) -> None: ...
183
-
184
- class BridgeUpgrade(_message.Message):
185
- __slots__ = ("rebootPacket", "txMaxDurationMs", "txMaxRetries", "bridgeId", "versionUuid", "upgradeBlSd", "imageDirUrl")
186
- REBOOTPACKET_FIELD_NUMBER: _ClassVar[int]
187
- TXMAXDURATIONMS_FIELD_NUMBER: _ClassVar[int]
188
- TXMAXRETRIES_FIELD_NUMBER: _ClassVar[int]
189
- BRIDGEID_FIELD_NUMBER: _ClassVar[int]
190
- VERSIONUUID_FIELD_NUMBER: _ClassVar[int]
191
- UPGRADEBLSD_FIELD_NUMBER: _ClassVar[int]
192
- IMAGEDIRURL_FIELD_NUMBER: _ClassVar[int]
193
- rebootPacket: bytes
194
- txMaxDurationMs: int
195
- txMaxRetries: int
196
- bridgeId: str
197
- versionUuid: str
198
- upgradeBlSd: bool
199
- imageDirUrl: str
200
- def __init__(self, rebootPacket: _Optional[bytes] = ..., txMaxDurationMs: _Optional[int] = ..., txMaxRetries: _Optional[int] = ..., bridgeId: _Optional[str] = ..., versionUuid: _Optional[str] = ..., upgradeBlSd: bool = ..., imageDirUrl: _Optional[str] = ...) -> None: ...
201
-
202
- class GatewayConfig(_message.Message):
203
- __slots__ = ("version", "bleSwVersion", "interfaceSwVersion", "location", "config")
204
- class ConfigEntry(_message.Message):
205
- __slots__ = ("key", "value")
206
- KEY_FIELD_NUMBER: _ClassVar[int]
207
- VALUE_FIELD_NUMBER: _ClassVar[int]
208
- key: str
209
- value: GatewayConfigValue
210
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[GatewayConfigValue, _Mapping]] = ...) -> None: ...
211
- VERSION_FIELD_NUMBER: _ClassVar[int]
212
- BLESWVERSION_FIELD_NUMBER: _ClassVar[int]
213
- INTERFACESWVERSION_FIELD_NUMBER: _ClassVar[int]
214
- LOCATION_FIELD_NUMBER: _ClassVar[int]
215
- CONFIG_FIELD_NUMBER: _ClassVar[int]
216
- version: str
217
- bleSwVersion: str
218
- interfaceSwVersion: str
219
- location: Location
220
- config: _containers.MessageMap[str, GatewayConfigValue]
221
- def __init__(self, version: _Optional[str] = ..., bleSwVersion: _Optional[str] = ..., interfaceSwVersion: _Optional[str] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., config: _Optional[_Mapping[str, GatewayConfigValue]] = ...) -> None: ...
222
-
223
- class CustomMessage(_message.Message):
224
- __slots__ = ("entries",)
225
- class EntriesEntry(_message.Message):
226
- __slots__ = ("key", "value")
227
- KEY_FIELD_NUMBER: _ClassVar[int]
228
- VALUE_FIELD_NUMBER: _ClassVar[int]
229
- key: str
230
- value: Value
231
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[Value, _Mapping]] = ...) -> None: ...
232
- ENTRIES_FIELD_NUMBER: _ClassVar[int]
233
- entries: _containers.MessageMap[str, Value]
234
- def __init__(self, entries: _Optional[_Mapping[str, Value]] = ...) -> None: ...
@@ -1,113 +0,0 @@
1
- import brg_certificate.ag.wlt_types_ag as ag
2
-
3
- def eval_pkt(string):
4
- try:
5
- return eval(f'ag.{string}')
6
- except:
7
- return None
8
-
9
- def eval_one_param(string):
10
- string = string.strip("' ")
11
- if string in ag.__dict__:
12
- return eval(f'ag.{string}')
13
- try:
14
- return eval(string)
15
- except:
16
- return string
17
-
18
- def eval_param(string):
19
- if "," in string:
20
- return [eval_one_param(x) for x in string.strip("[]").split(",")]
21
- else:
22
- return eval_one_param(string)
23
-
24
- class WltPkt():
25
- supported_pkt_types = ag.WLT_PKT_TYPES
26
-
27
- def __init__(self, raw='', hdr=None, data_hdr=None, generic=None, pkt=None):
28
- self.hdr = ag.Hdr() if hdr is None else hdr
29
- self.data_hdr = ag.DataHdr() if data_hdr is None else data_hdr
30
- self.generic = generic
31
- self.pkt = pkt
32
- if raw:
33
- self.set(raw)
34
-
35
- def __repr__(self) -> str:
36
- if isinstance(self.pkt, (ag.UnifiedEchoPktV0, ag.UnifiedEchoPktV1, ag.UnifiedEchoExtPkt)):
37
- return f"{self.data_hdr}\n{self.pkt}"
38
- return f"{self.hdr}\n{self.pkt}"
39
-
40
- def __eq__(self, other):
41
- if isinstance(other, WltPkt):
42
- return (
43
- (self.hdr == other.hdr or
44
- self.data_hdr == other.data_hdr) and
45
- self.generic == other.generic and
46
- self.pkt == other.pkt
47
- )
48
- return False
49
-
50
- def dump(self):
51
- if self.pkt:
52
- if isinstance(self.pkt, (ag.UnifiedEchoPktV0, ag.UnifiedEchoPktV1, ag.UnifiedEchoExtPkt)):
53
- return self.data_hdr.dump() + self.pkt.dump()
54
- else:
55
- return self.hdr.dump() + self.pkt.dump()
56
- return self.data_hdr.dump() + self.generic.dump()
57
-
58
- def set(self, string):
59
-
60
- self.hdr.set(string[0:14])
61
- self.data_hdr.set(string[0:14])
62
- if self.hdr.group_id == ag.GROUP_ID_BRG2GW or self.hdr.group_id == ag.GROUP_ID_GW2BRG:
63
- # GROUP_ID_BRG2GW & GROUP_ID_GW2BRG
64
- self.generic = eval_pkt(f'GenericV{ag.API_VERSION_LATEST}()')
65
- self.generic.set(string[14:62])
66
-
67
- # MEL modules
68
- if self.generic.module_type:
69
- self.pkt = eval_pkt(f'{ag.MODULES_DICT[self.generic.module_type]}{self.generic.api_version}()')
70
- elif self.generic.module_type == ag.MODULE_GLOBAL:
71
- # Action pkts
72
- if self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_ACTION:
73
- pkt = eval_pkt(f'ActionGenericV{self.generic.api_version}("{string[14:62]}")')
74
- if self.generic.api_version >= ag.API_VERSION_V8:
75
- pkt = eval_pkt(f'{ag.ACTIONS_DICT[pkt.action_id]}{self.generic.api_version}()')
76
- self.pkt = pkt
77
- # OLD global config (GW2BRG & BRG2GW)
78
- elif self.hdr.group_id == ag.GROUP_ID_GW2BRG and self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_CFG_SET:
79
- self.pkt = eval_pkt(f'Gw2BrgCfgV8()') # no api_version field in Gw2BrgCfg pkts - default parse as api version 8 (Latest Gw2BrgCfg)
80
- elif self.hdr.group_id == ag.GROUP_ID_BRG2GW:
81
- if self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_CFG_SET or self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_CFG_INFO:
82
- self.pkt = eval_pkt(f'Brg2GwCfgV{self.generic.api_version}()')
83
- elif self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_HB:
84
- self.pkt = eval_pkt(f'Brg2GwHbV{self.generic.api_version}()')
85
- elif self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_HB_SLEEP:
86
- self.pkt = eval_pkt(f'Brg2GwHbSleepV{self.generic.api_version}()')
87
- # Unified pkt
88
- elif self.data_hdr.group_id_major in ag.UNIFIED_GROUP_ID_LIST:
89
- if self.data_hdr.group_id_major == ag.GROUP_ID_UNIFIED_PKT_V0:
90
- self.pkt = ag.UnifiedEchoPktV0()
91
- elif self.data_hdr.group_id_major == ag.GROUP_ID_UNIFIED_PKT_V1 or self.data_hdr.group_id_major == ag.GROUP_ID_BLE5_PKT0:
92
- self.pkt = ag.UnifiedEchoPktV1()
93
- elif self.data_hdr.group_id_major == ag.GROUP_ID_BLE5_EXTENDED:
94
- self.pkt = ag.UnifiedEchoExtPkt()
95
- # SideInfo pkts
96
- elif self.hdr.group_id == ag.GROUP_ID_SIDE_INFO_SENSOR:
97
- self.pkt = ag.SideInfoSensor()
98
- elif self.hdr.group_id == ag.GROUP_ID_SIDE_INFO:
99
- self.pkt = ag.SideInfo()
100
- if self.pkt:
101
- if self.data_hdr.group_id_major == ag.GROUP_ID_BLE5_EXTENDED:
102
- self.pkt.set(string[14:84])
103
- else:
104
- self.pkt.set(string[14:62])
105
- # Signal Indicator pkt
106
- elif self.hdr.group_id == ag.GROUP_ID_SIGNAL_INDICATOR:
107
- self.pkt = eval_pkt(f'SignalIndicatorDataV{ag.SIGNAL_INDICATOR_PACKET_VERSION_LATEST}')(string[8:62])
108
- elif self.hdr.uuid_lsb == ag.HDR_DEFAULT_BRG_SENSOR_UUID_LSB and self.hdr.uuid_msb == ag.HDR_DEFAULT_BRG_SENSOR_UUID_MSB:
109
- self.pkt = ag.SensorData(string)
110
- # Unparsed pkts
111
- else:
112
- # print(f"Unable to parse packet with payload: {string}")
113
- pass