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,189 +0,0 @@
1
- import ast
2
- import logging
3
- import pandas as pd
4
- import time
5
- import datetime
6
- import threading
7
- import binascii
8
-
9
- from gw_certificate.interface.uart_if import UARTInterface
10
- from gw_certificate.common.debug import debug_print
11
- from gw_certificate.interface.if_defines import *
12
-
13
- class SnifferPkt():
14
- def __init__(self, raw_output, time_received, rx_channel):
15
- self.adva = raw_output[:12]
16
- self.packet = raw_output[12:74]
17
- try:
18
- self.rssi = int.from_bytes(binascii.unhexlify(raw_output[74:]), 'big') * -1
19
- except ValueError:
20
- self.rssi = 99
21
- self.time_received = time_received
22
- self.rx_channel = rx_channel
23
-
24
- def __repr__(self):
25
- return f'CH{self.rx_channel}|{self.adva}{self.packet} RSSI:{self.rssi} {self.time_received}'
26
-
27
- def to_dict(self):
28
- return {'adva': self.adva, 'packet': self.packet, 'rssi': self.rssi, 'time_received': self.time_received, 'rx_channel': self.rx_channel}
29
-
30
- class SnifferPkts():
31
- def __init__(self, pkts=[]):
32
- self.pkts = pkts
33
-
34
- def __add__(self, other):
35
- return SnifferPkts(self.pkts + other.pkts)
36
-
37
- def __len__(self):
38
- return len(self.pkts)
39
-
40
- def __repr__(self):
41
- return self.pkts
42
-
43
- def process_pkt(self, raw_output, time_received, rx_channel, print_pkt=False, adva_filter=None):
44
- pkt = SnifferPkt(raw_output, time_received, rx_channel)
45
- if adva_filter:
46
- if pkt.adva != adva_filter:
47
- return None
48
- self.pkts.append(pkt)
49
- if print_pkt:
50
- print(pkt)
51
- return pkt
52
-
53
- def filter_pkts(self, raw_packet=None, adva=None, time_range:tuple=None):
54
- result = []
55
- for pkt in self.pkts:
56
- if (raw_packet is not None) and (pkt.packet == raw_packet) or \
57
- (adva is not None) and (pkt.adva == adva) or \
58
- (time_range is not None) and (time_range[0] < pkt.time_received < time_range[1]):
59
- result.append(pkt)
60
- return SnifferPkts(result)
61
-
62
- def flush_pkts(self):
63
- self.pkts = []
64
-
65
- def to_list(self):
66
- return [p.to_dict() for p in self.pkts]
67
-
68
- def to_pandas(self):
69
- return pd.DataFrame().from_dict(self.to_list())
70
-
71
- def cur_time():
72
- return datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
73
-
74
-
75
- class BLESniffer():
76
- def __init__(self, uart:UARTInterface, print_pkt=False, logger_filepath=None, adva_filter=None):
77
- self.uart = uart
78
- self.listener_thread = None
79
- self.sniffer_pkts = SnifferPkts()
80
- self.listening = False
81
- self.listener_lock = threading.Lock()
82
- self.print = print_pkt
83
- self.rx_channel = 0
84
- self.adva_filter = None
85
- if adva_filter is not None:
86
- adva_filter = adva_filter.upper()
87
- assert isinstance(adva_filter, str)\
88
- and len(adva_filter) == 12\
89
- and all(c in '0123456789ABCDEF' for c in adva_filter), "Input must be a 12-character hexadecimal string"
90
- self.adva_filter = adva_filter
91
- # Configure Logger
92
- logger = logging.getLogger('ble_sniffer')
93
- logger.setLevel(logging.DEBUG)
94
- if logger_filepath is not None:
95
- # create file handler
96
- fh = logging.FileHandler(logger_filepath)
97
- fh.setLevel(logging.DEBUG)
98
- formatter = logging.Formatter('%(message)s')
99
- fh.setFormatter(formatter)
100
- logger.addHandler(fh)
101
- logger.propagate = False # Do not send logs to 'root' logger
102
- debug_print(f'BLE Sniffer Logger initialized at {logger_filepath}')
103
- self.logger = logger
104
-
105
- def packet_listener(self):
106
- while self.listening:
107
- line = self.uart.read_line()
108
- if line is not None and len(line) == 76:
109
- with self.listener_lock:
110
- pkt = self.sniffer_pkts.process_pkt(line, datetime.datetime.now(), self.rx_channel, self.print, self.adva_filter)
111
- if pkt:
112
- self.logger.info(pkt)
113
-
114
- # Change sniffing modes
115
- def start_sniffer(self, rx_channel):
116
- self.logger.debug(f'{cur_time()} | Starting Sniffer on CH{rx_channel}')
117
- self.uart.set_sniffer(rx_channel)
118
- self.rx_channel = rx_channel
119
- self.listener_thread = threading.Thread(target=self.packet_listener)
120
- self.listening = True
121
- self.listener_thread.start()
122
-
123
- def stop_sniffer(self):
124
- self.logger.debug(f'{cur_time()} | Stopping Sniffer')
125
- self.flush_pkts()
126
- self.listening = False
127
- if self.listener_thread is not None:
128
- self.listener_thread.join()
129
- self.listener_thread = None
130
- self.uart.cancel_sniffer()
131
- self.rx_channel = 0
132
-
133
- def reset_sniffer(self, rx_channel):
134
- self.logger.debug(f'{cur_time()} | Reseting Sniffer')
135
- self.stop_sniffer()
136
- self.start_sniffer(rx_channel)
137
- self.flush_pkts()
138
-
139
- # Data Handling
140
- def get_all_pkts(self):
141
- return self.sniffer_pkts
142
-
143
- def get_filtered_packets(self, raw_packet=None, adva=None, time_range:tuple=None):
144
- return self.sniffer_pkts.filter_pkts(raw_packet, adva, time_range)
145
-
146
- def flush_pkts(self):
147
- self.logger.debug(f'{cur_time()} | Flushing packets')
148
- self.sniffer_pkts.flush_pkts()
149
-
150
- def to_pandas(self):
151
- return self.sniffer_pkts.to_pandas()
152
-
153
- # Packet Counters
154
- def get_pkts_cntrs(self, channel, lookout_time=DEFAULT_LOOKOUT_TIME):
155
- self.logger.debug(f'{cur_time()} | Getting pkt counters for CH{channel}')
156
- if self.rx_channel != channel:
157
- self.uart.set_rx(channel)
158
- self.rx_channel = channel
159
-
160
- lookout_time = lookout_time
161
- pkt_cntrs = None
162
- self.uart.flush()
163
- self.uart.write_ble_command(GET_LOGGER_COUNTERS)
164
- start_time = time.time()
165
- current_time = start_time
166
- while current_time - start_time < lookout_time:
167
- line = self.uart.read_line()
168
- if line is not None and "'bad_crc'" in line:
169
- start_of_cntr_index = line.find('{')
170
- pkt_cntrs = line[start_of_cntr_index:]
171
- debug_print(f"pkt_cntrs: {pkt_cntrs}")
172
- return ast.literal_eval(pkt_cntrs)
173
- current_time = time.time()
174
- debug_print(f"No counter received within the time limit of {lookout_time} seconds")
175
- return pkt_cntrs
176
-
177
- class BLESnifferContext():
178
- def __init__(self, ble_sniffer:BLESniffer, rx_channel):
179
- self.ble_sniffer = ble_sniffer
180
- self.rx_channel = rx_channel
181
-
182
- def __enter__(self):
183
- self.ble_sniffer.flush_pkts()
184
- self.ble_sniffer.start_sniffer(self.rx_channel)
185
- return self.ble_sniffer
186
-
187
- def __exit__(self, exc_type, exc_value, traceback):
188
- if self.ble_sniffer:
189
- self.ble_sniffer.stop_sniffer()
@@ -1,90 +0,0 @@
1
- import sys
2
- import serial
3
- import time
4
- import argparse
5
- import subprocess
6
- import serial.tools.list_ports
7
- import datetime
8
- import tkinter as tk
9
- from tkinter import filedialog
10
- SEP = "#"*100
11
-
12
- NRFUTIL_MAP = {"linux": "nrfutil-linux", "linux2": "nrfutil-linux", "darwin": "nrfutil-mac", "win32": ".\\nrfutil.exe"}
13
-
14
- def read_from_ble(ble_ser):
15
- ble_ser_bytes = ble_ser.readline()
16
- input = ble_ser_bytes.decode("utf-8", "ignore").strip()
17
- if input:
18
- print(input)
19
- return input
20
-
21
- class Command:
22
- def __init__(self, cmd, expected, delay=0):
23
- self.cmd = cmd
24
- self.cmd_exec = b'\r\n!'+bytes(cmd, encoding='utf-8')+b'\r\n'
25
- self.expected = expected
26
- self.delay = delay
27
- def exec_cmd(self, ble_ser):
28
- print("==>> !{}".format(self.cmd))
29
- ble_ser.write(self.cmd_exec)
30
- start_time = datetime.datetime.now()
31
- while (datetime.datetime.now() - start_time).seconds < 2:
32
- if self.expected in read_from_ble(ble_ser):
33
- print("success!\n{}".format(SEP))
34
- return 0
35
- print("failure!\n{}".format(SEP))
36
- return 1
37
-
38
- GW_COMMANDS = [
39
- Command(cmd="version", expected="WILIOT_GW_BLE_CHIP_SW_VER"),
40
- Command(cmd="move_to_bootloader", expected='')
41
- ]
42
-
43
- def run_cmd(cmd):
44
- print("Running: " + cmd)
45
- p = subprocess.Popen(cmd, shell=True)
46
- p.wait()
47
- if p.returncode:
48
- print(f"\nFailed running : {cmd}\n")
49
- sys.exit(-1)
50
- else:
51
- print(f"\nSuccess running : {cmd}\n")
52
-
53
- def main():
54
-
55
- ports = serial.tools.list_ports.comports()
56
- print(SEP + "\nAvailable ports:")
57
- for port, desc, hwid in sorted(ports):
58
- print("{}: {} [{}]".format(port, desc, hwid))
59
- print(SEP + "\n")
60
-
61
- parser = argparse.ArgumentParser(description='Used to load gw image')
62
- parser.add_argument('--p', type=str, help='COM for the ble - meaning loading gw zip file from UART')
63
- args = parser.parse_args()
64
-
65
-
66
- if args.p:
67
- ble_ser = serial.Serial(port=args.p, baudrate=921600, timeout=0.1)
68
- ble_ser.flushInput()
69
-
70
- failures = 0
71
-
72
- for cmd in GW_COMMANDS:
73
- failures += cmd.exec_cmd(ble_ser)
74
- time.sleep(cmd.delay)
75
- if failures == 0:
76
- ble_ser.close()
77
- time.sleep(2)
78
- print("Please pick a file! (<X.Y.Z>_app.zip)")
79
- root = tk.Tk()
80
- root.withdraw()
81
- file_path = filedialog.askopenfilename()
82
- print(file_path)
83
- cmd = f'{NRFUTIL_MAP[sys.platform]} dfu serial --package "{file_path}" -p {args.p} -fc 0 -b 115200 -t 10'
84
- run_cmd(cmd)
85
- else:
86
- print("ERROR: failed to run UART commands!")
87
-
88
-
89
- if __name__ == "__main__":
90
- main()
@@ -1,36 +0,0 @@
1
- RX_CHANNELS = [37, 38, 39]
2
- RX_CHANNELS_SNIFFING_KIT = list(range(40))
3
- SET_SNIFFER = '!set_logger_mode 2'
4
- CANCEL_SNIFFER = '!set_logger_mode 0'
5
- GET_LOGGER_COUNTERS = '!get_logger_counters'
6
- GATEWAY_APP = '!gateway_app'
7
- STOP_ADVERTISING = '!stop_advertising'
8
- CANCEL = '!cancel'
9
- RESET_GW = '!reset'
10
- VERSION = '!version'
11
- SEND_ALL_ADV_CHANNELS = 0
12
- SERIAL_TIMEOUT = 0.1
13
- SEP = "#"*100
14
- LENGTH = '1E'
15
- GAP_TYPE = '16'
16
- DEFAULT_ADVA = 'FFFFFFFFFFFF'
17
- DEFAULT_DUPLICATES = 3
18
- GW_APP_VERSION_HEADER = 'WILIOT_GW_BLE_CHIP_SW_VER'
19
- GW_MAC_ADDRESS_HEADER = 'WILIOT_GW_BLE_CHIP_MAC_ADDRESS'
20
- LOCATION = 'location'
21
- DEFAULT_OUTPUT_POWER = 8
22
- DEFAULT_DELAY = 20
23
- BRIDGES = [i for i in range(3)]
24
- MAX_NFPKT = 65535
25
- MAX_RSSI = 255
26
- ADVA_LENGTH = 12
27
- GAP_LENGTH = 4
28
- SERVICE_UUID_LENGTH = 4
29
- GROUP_ID_LENGTH = 6
30
- UPLINK_DUPLICATIONS = [i for i in range(3, 7)]
31
- UPLINK_TIME_DELAYS = [20, 130, 255]
32
- UNIFIED_DUPLICATIONS = [i for i in range(3, 7)]
33
- UNIFIED_TIME_DELAYS = [20, 130, 255]
34
- DEFAULT_LOOKOUT_TIME = 2
35
-
36
- ADVA_PAYLOAD = 'adva_payload'