wiliot-certificate 4.4.3__py3-none-any.whl → 4.5.0a1__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 (295) 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. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/brg2brg_ota.json +69 -0
  4. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/brg2gw_hb.json +109 -0
  5. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +45 -0
  6. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/calibration.json +96 -0
  7. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/custom.json +99 -0
  8. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/datapath.json +241 -13
  9. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/energy2400.json +120 -0
  10. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/energySub1g.json +96 -0
  11. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/externalSensor.json +135 -6
  12. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/interface.json +157 -0
  13. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/powerManagement.json +205 -0
  14. brg_certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json → certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +27 -11
  15. certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +175 -0
  16. certificate/ag/wlt_types_ag_jsons/unified_sensor_pkt.json +65 -0
  17. certificate/cert_common.py +1459 -0
  18. certificate/cert_config.py +455 -0
  19. {brg_certificate → certificate}/cert_data_sim.py +131 -46
  20. {brg_certificate → certificate}/cert_defines.py +120 -128
  21. {brg_certificate → certificate}/cert_gw_sim.py +151 -49
  22. {brg_certificate → certificate}/cert_mqtt.py +164 -59
  23. {brg_certificate → certificate}/cert_prints.py +34 -33
  24. {brg_certificate → certificate}/cert_protobuf.py +15 -6
  25. {brg_certificate → certificate}/cert_results.py +205 -48
  26. certificate/cert_utils.py +622 -0
  27. certificate/certificate.py +198 -0
  28. certificate/certificate_cli.py +79 -0
  29. certificate/certificate_eth_test_list.txt +74 -0
  30. certificate/certificate_sanity_test_list.txt +65 -0
  31. certificate/certificate_test_list.txt +75 -0
  32. {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.json +2 -2
  33. {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.py +7 -6
  34. certificate/tests/calibration/output_power_test/output_power_test.json +22 -0
  35. certificate/tests/calibration/output_power_test/output_power_test.py +39 -0
  36. {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.json +1 -1
  37. {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.py +20 -15
  38. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +14 -0
  39. certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.py +140 -0
  40. certificate/tests/cloud_connectivity/acl_test/acl_test.json +14 -0
  41. certificate/tests/cloud_connectivity/acl_test/acl_test.py +98 -0
  42. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +18 -0
  43. certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +39 -0
  44. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +18 -0
  45. certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +215 -0
  46. certificate/tests/cloud_connectivity/connection_test/connection_test.json +17 -0
  47. certificate/tests/cloud_connectivity/connection_test/connection_test.py +74 -0
  48. certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +20 -0
  49. certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +204 -0
  50. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +16 -0
  51. certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +98 -0
  52. certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +17 -0
  53. certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +57 -0
  54. certificate/tests/cloud_connectivity/registration_test/registration_test.json +19 -0
  55. certificate/tests/cloud_connectivity/registration_test/registration_test.py +384 -0
  56. certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +90 -0
  57. certificate/tests/cloud_connectivity/stress_test/stress_test.json +16 -0
  58. certificate/tests/cloud_connectivity/stress_test/stress_test.py +97 -0
  59. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +24 -0
  60. certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +93 -0
  61. certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +19 -0
  62. certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +161 -0
  63. {brg_certificate → certificate}/tests/datapath/aging_test/aging_test.json +1 -1
  64. certificate/tests/datapath/aging_test/aging_test.py +138 -0
  65. certificate/tests/datapath/event_ble5_test/event_ble5_test.json +16 -0
  66. certificate/tests/datapath/event_ble5_test/event_ble5_test.py +95 -0
  67. certificate/tests/datapath/event_test/event_test.json +16 -0
  68. certificate/tests/datapath/event_test/event_test.py +85 -0
  69. {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.json +1 -1
  70. {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.py +10 -8
  71. certificate/tests/datapath/output_power_test/output_power_test.json +22 -0
  72. {brg_certificate → certificate}/tests/datapath/output_power_test/output_power_test.py +17 -6
  73. {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +1 -1
  74. {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +10 -8
  75. {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.json +1 -1
  76. {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.py +9 -7
  77. {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.json +2 -2
  78. {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.py +18 -6
  79. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +19 -0
  80. certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +61 -0
  81. {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +1 -1
  82. {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +11 -10
  83. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +18 -0
  84. certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +83 -0
  85. {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +1 -1
  86. {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +10 -9
  87. {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.json +1 -1
  88. {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.py +10 -9
  89. {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +1 -1
  90. {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +9 -8
  91. brg_certificate/tests/datapath/output_power_test/output_power_test.json → certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.json +5 -4
  92. certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.py +77 -0
  93. {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.json +2 -2
  94. {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.py +7 -6
  95. {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +7 -7
  96. {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +112 -72
  97. {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +7 -7
  98. {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +112 -72
  99. {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.json +3 -3
  100. {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.py +12 -11
  101. {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.json +3 -3
  102. {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.py +12 -11
  103. {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.json +2 -1
  104. {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.py +14 -13
  105. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +14 -0
  106. certificate/tests/edge_mgmt/action_blink_test/action_blink_test.py +24 -0
  107. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +14 -0
  108. certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.py +43 -0
  109. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +14 -0
  110. certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.py +42 -0
  111. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +14 -0
  112. certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.py +44 -0
  113. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +15 -0
  114. certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.py +42 -0
  115. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +14 -0
  116. certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.py +49 -0
  117. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +14 -0
  118. certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.py +102 -0
  119. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +14 -0
  120. certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +41 -0
  121. {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +2 -2
  122. {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.py +22 -11
  123. {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.json +1 -1
  124. {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.py +7 -6
  125. certificate/tests/energy2400/output_power_test/output_power_test.json +22 -0
  126. {brg_certificate → certificate}/tests/energy2400/output_power_test/output_power_test.py +17 -6
  127. {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.json +1 -1
  128. {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.py +7 -6
  129. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +25 -0
  130. certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +378 -0
  131. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json → certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +3 -3
  132. brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py → certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +97 -87
  133. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +23 -0
  134. certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +350 -0
  135. {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +1 -1
  136. {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +7 -6
  137. {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.json +1 -1
  138. {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.py +7 -6
  139. {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +1 -1
  140. {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +10 -10
  141. {brg_certificate → certificate}/tests/sensors/ext_sensor_test/ext_sensor_test.json +4 -4
  142. certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +455 -0
  143. certificate/wlt_types.py +122 -0
  144. {gw_certificate → common}/api_if/202/status.json +6 -0
  145. {gw_certificate → common}/api_if/203/status.json +6 -0
  146. {gw_certificate → common}/api_if/204/status.json +6 -0
  147. common/api_if/206/data.json +85 -0
  148. common/api_if/206/status.json +69 -0
  149. common/api_if/api_validation.py +85 -0
  150. common/web/templates/generator.html +148 -0
  151. common/web/templates/index.html +20 -0
  152. common/web/templates/menu.html +54 -0
  153. common/web/templates/parser.html +53 -0
  154. {brg_certificate/ag → common/web/templates}/wlt_types.html +1216 -191
  155. common/web/web_utils.py +377 -0
  156. {brg_certificate → common}/wltPb_pb2.py +14 -12
  157. {gw_certificate/common → common}/wltPb_pb2.pyi +16 -2
  158. gui_certificate/gui_certificate_cli.py +14 -0
  159. gui_certificate/server.py +1062 -0
  160. gui_certificate/templates/cert_run.html +1207 -0
  161. wiliot_certificate-4.5.0a1.dist-info/METADATA +110 -0
  162. wiliot_certificate-4.5.0a1.dist-info/RECORD +182 -0
  163. {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0a1.dist-info}/WHEEL +1 -1
  164. wiliot_certificate-4.5.0a1.dist-info/entry_points.txt +5 -0
  165. wiliot_certificate-4.5.0a1.dist-info/top_level.txt +3 -0
  166. brg_certificate/ag/energous_v0_defines.py +0 -925
  167. brg_certificate/ag/energous_v1_defines.py +0 -931
  168. brg_certificate/ag/energous_v2_defines.py +0 -925
  169. brg_certificate/ag/energous_v3_defines.py +0 -925
  170. brg_certificate/ag/energous_v4_defines.py +0 -925
  171. brg_certificate/ag/fanstel_lan_v0_defines.py +0 -925
  172. brg_certificate/ag/fanstel_lte_v0_defines.py +0 -925
  173. brg_certificate/ag/fanstel_wifi_v0_defines.py +0 -925
  174. brg_certificate/ag/minew_lte_v0_defines.py +0 -925
  175. brg_certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +0 -61
  176. brg_certificate/brg_certificate.py +0 -225
  177. brg_certificate/brg_certificate_cli.py +0 -63
  178. brg_certificate/cert_common.py +0 -923
  179. brg_certificate/cert_config.py +0 -402
  180. brg_certificate/cert_utils.py +0 -362
  181. brg_certificate/certificate_bcc_sanity_test_list.txt +0 -40
  182. brg_certificate/certificate_bcc_test_list.txt +0 -48
  183. brg_certificate/certificate_sanity_test_list.txt +0 -43
  184. brg_certificate/certificate_test_list.txt +0 -53
  185. brg_certificate/config/eclipse.json +0 -10
  186. brg_certificate/config/hivemq.json +0 -10
  187. brg_certificate/config/mosquitto.json +0 -10
  188. brg_certificate/config/mosquitto.md +0 -95
  189. brg_certificate/config/wiliot-dev.json +0 -10
  190. brg_certificate/restore_brg.py +0 -61
  191. brg_certificate/tests/calibration/output_power_test/output_power_test.json +0 -16
  192. brg_certificate/tests/calibration/output_power_test/output_power_test.py +0 -28
  193. brg_certificate/tests/datapath/aging_test/aging_test.py +0 -143
  194. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +0 -16
  195. brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +0 -73
  196. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +0 -17
  197. brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +0 -118
  198. brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +0 -14
  199. brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +0 -396
  200. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +0 -20
  201. brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.py +0 -94
  202. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +0 -19
  203. brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.py +0 -87
  204. brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +0 -17
  205. brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +0 -223
  206. brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +0 -17
  207. brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +0 -128
  208. brg_certificate/tests/energy2400/output_power_test/output_power_test.json +0 -16
  209. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +0 -20
  210. brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +0 -321
  211. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +0 -20
  212. brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +0 -141
  213. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -20
  214. brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +0 -276
  215. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +0 -20
  216. brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +0 -390
  217. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +0 -16
  218. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +0 -28
  219. brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +0 -305
  220. brg_certificate/wltPb_pb2.pyi +0 -234
  221. brg_certificate/wlt_types.py +0 -113
  222. gw_certificate/ag/ut_defines.py +0 -364
  223. gw_certificate/ag/wlt_types.py +0 -85
  224. gw_certificate/ag/wlt_types_ag.py +0 -5310
  225. gw_certificate/ag/wlt_types_data.py +0 -64
  226. gw_certificate/api/extended_api.py +0 -23
  227. gw_certificate/api_if/200/data.json +0 -106
  228. gw_certificate/api_if/200/status.json +0 -47
  229. gw_certificate/api_if/201/data.json +0 -98
  230. gw_certificate/api_if/201/status.json +0 -53
  231. gw_certificate/api_if/205/logs.json +0 -12
  232. gw_certificate/api_if/api_validation.py +0 -38
  233. gw_certificate/api_if/gw_capabilities.py +0 -54
  234. gw_certificate/cert_results.py +0 -145
  235. gw_certificate/common/analysis_data_bricks.py +0 -60
  236. gw_certificate/common/debug.py +0 -42
  237. gw_certificate/common/serialization_formatter.py +0 -93
  238. gw_certificate/common/utils.py +0 -8
  239. gw_certificate/common/utils_defines.py +0 -15
  240. gw_certificate/common/wltPb_pb2.py +0 -84
  241. gw_certificate/gw_certificate.py +0 -154
  242. gw_certificate/gw_certificate_cli.py +0 -87
  243. gw_certificate/interface/4.4.93_app.zip +0 -0
  244. gw_certificate/interface/4.4.93_sd_bl_app.zip +0 -0
  245. gw_certificate/interface/ble_simulator.py +0 -61
  246. gw_certificate/interface/ble_sniffer.py +0 -189
  247. gw_certificate/interface/flash_fw.py +0 -90
  248. gw_certificate/interface/if_defines.py +0 -36
  249. gw_certificate/interface/mqtt.py +0 -563
  250. gw_certificate/interface/nrfutil-linux +0 -0
  251. gw_certificate/interface/nrfutil-mac +0 -0
  252. gw_certificate/interface/nrfutil.exe +0 -0
  253. gw_certificate/interface/pkt_generator.py +0 -594
  254. gw_certificate/interface/uart_if.py +0 -236
  255. gw_certificate/interface/uart_ports.py +0 -20
  256. gw_certificate/templates/results.html +0 -241
  257. gw_certificate/templates/stage.html +0 -22
  258. gw_certificate/templates/table.html +0 -6
  259. gw_certificate/templates/test.html +0 -38
  260. gw_certificate/tests/__init__.py +0 -10
  261. gw_certificate/tests/actions.py +0 -289
  262. gw_certificate/tests/bad_crc_to_PER_quantization.csv +0 -51
  263. gw_certificate/tests/connection.py +0 -188
  264. gw_certificate/tests/downlink.py +0 -172
  265. gw_certificate/tests/generic.py +0 -238
  266. gw_certificate/tests/registration.py +0 -340
  267. gw_certificate/tests/static/__init__.py +0 -0
  268. gw_certificate/tests/static/connection_defines.py +0 -9
  269. gw_certificate/tests/static/downlink_defines.py +0 -9
  270. gw_certificate/tests/static/generated_packet_table.py +0 -195
  271. gw_certificate/tests/static/packet_table.csv +0 -10067
  272. gw_certificate/tests/static/references.py +0 -5
  273. gw_certificate/tests/static/uplink_defines.py +0 -14
  274. gw_certificate/tests/throughput.py +0 -240
  275. gw_certificate/tests/uplink.py +0 -853
  276. wiliot_certificate-4.4.3.dist-info/METADATA +0 -211
  277. wiliot_certificate-4.4.3.dist-info/RECORD +0 -210
  278. wiliot_certificate-4.4.3.dist-info/entry_points.txt +0 -3
  279. wiliot_certificate-4.4.3.dist-info/top_level.txt +0 -3
  280. {brg_certificate → certificate}/__init__.py +0 -0
  281. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/side_info_sensor.json +0 -0
  282. {brg_certificate → certificate}/ag/wlt_types_ag_jsons/signal_indicator_data.json +0 -0
  283. {gw_certificate → common}/api_if/202/data.json +0 -0
  284. {gw_certificate/api_if/200 → common/api_if/202}/logs.json +0 -0
  285. {gw_certificate → common}/api_if/203/data.json +0 -0
  286. {gw_certificate/api_if/201 → common/api_if/203}/logs.json +0 -0
  287. {gw_certificate → common}/api_if/204/data.json +0 -0
  288. {gw_certificate/api_if/202 → common/api_if/204}/logs.json +0 -0
  289. {gw_certificate → common}/api_if/205/data.json +0 -0
  290. {gw_certificate/api_if/203 → common/api_if/205}/logs.json +0 -0
  291. {gw_certificate → common}/api_if/205/status.json +0 -0
  292. {gw_certificate/api_if/204 → common/api_if/206}/logs.json +0 -0
  293. {gw_certificate → common/api_if}/__init__.py +0 -0
  294. {gw_certificate/api_if → gui_certificate}/__init__.py +0 -0
  295. {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0a1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,85 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "gatewayId": {
5
+ "type": "string",
6
+ "maxLength": 36
7
+ },
8
+ "gatewayType": {
9
+ "type": "string"
10
+ },
11
+ "timestamp": {
12
+ "type": "number"
13
+ },
14
+ "packets": {
15
+ "description": "Unified Packet",
16
+ "type": "array",
17
+ "items": {
18
+ "type": "object",
19
+ "properties": {
20
+ "aliasBridgeId": {
21
+ "type": "string"
22
+ },
23
+ "timestamp": {
24
+ "type": "number"
25
+ },
26
+ "sequenceId": {
27
+ "type": "number"
28
+ },
29
+ "rssi": {
30
+ "type": "number"
31
+ },
32
+ "payload": {
33
+ "type": "string"
34
+ }
35
+ },
36
+ "if": {
37
+ "description": "unified SI packet + Sensor packet",
38
+ "properties":{
39
+ "payload": {
40
+ "oneOf": [
41
+ { "pattern": "[1][eE][1][6][cC][6][fF][cC][0][0][0][0][37bBfF][fF]" },
42
+ { "pattern": "[1][eE][1][6][cC][6][fF][cC][0][0][0][0][eE][eE]" },
43
+ { "pattern": "[1][eE][1][6][9][0][fF][cC]" },
44
+ { "pattern": "[1][eE][1][6][cC][6][fF][cC][0][0][0][0][eE][bB]" }
45
+ ]
46
+ }
47
+ }
48
+ },
49
+ "then": {
50
+ "required": ["aliasBridgeId", "timestamp", "sequenceId", "payload"]
51
+ },
52
+ "else": {
53
+ "required": ["timestamp", "sequenceId", "payload"]
54
+ }
55
+ }
56
+ }
57
+ },
58
+ "required": [
59
+ "gatewayId",
60
+ "gatewayType",
61
+ "timestamp",
62
+ "packets"
63
+ ],
64
+ "dependentSchemas": {
65
+ "location": {
66
+ "properties": {
67
+ "location": {
68
+ "type": "object",
69
+ "properties": {
70
+ "lat": {
71
+ "type": "number"
72
+ },
73
+ "lng": {
74
+ "type": "number"
75
+ }
76
+ },
77
+ "required": [
78
+ "lat",
79
+ "lng"
80
+ ]
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "type": "object",
3
+ "patternProperties": {
4
+ "^gatewayI[dD]$": {
5
+ "type": "string",
6
+ "maxLength": 36
7
+ }
8
+ },
9
+ "properties": {
10
+ "gatewayType": {
11
+ "type": "string"
12
+ },
13
+ "gatewayConf": {
14
+ "type": "object",
15
+ "properties": {
16
+ "apiVersion": {
17
+ "type": "string",
18
+ "enum": ["206"]
19
+ },
20
+ "bleAddress": {
21
+ "type": "string"
22
+ },
23
+ "gatewayVersion": {
24
+ "type": "string"
25
+ },
26
+ "interfaceChipSwVersion": {
27
+ "type": "string"
28
+ },
29
+ "bleChipSwVersion": {
30
+ "type": "string"
31
+ },
32
+ "additional": {
33
+ "additionalProperties": true
34
+ }
35
+ },
36
+ "required": ["apiVersion", "bleAddress"],
37
+ "oneOf":[
38
+ {"required": ["gatewayVersion"]},
39
+ {"required": ["interfaceChipSwVersion", "bleChipSwVersion"]}
40
+ ]
41
+ },
42
+ "tagMetadataCouplingSupported": {
43
+ "type": "boolean"
44
+ },
45
+ "downlinkSupported": {
46
+ "type": "boolean"
47
+ },
48
+ "bridgeOtaUpgradeSupported": {
49
+ "type": "boolean"
50
+ },
51
+ "fwUpgradeSupported": {
52
+ "type": "boolean"
53
+ },
54
+ "geoLocationSupport": {
55
+ "type": "boolean"
56
+ },
57
+ "gatewayInfo": {
58
+ "type":"object",
59
+ "additionalProperties":true
60
+ }
61
+ },
62
+ "oneOf":[
63
+ {"required": ["gatewayId", "gatewayType", "gatewayConf", "tagMetadataCouplingSupported", "downlinkSupported", "bridgeOtaUpgradeSupported", "fwUpgradeSupported"]},
64
+ {"required": ["gatewayID", "gatewayType", "gatewayConf", "tagMetadataCouplingSupported", "downlinkSupported", "bridgeOtaUpgradeSupported", "fwUpgradeSupported"]}
65
+ ],
66
+ "additionalProperties": false
67
+ }
68
+
69
+
@@ -0,0 +1,85 @@
1
+ import json
2
+ from jsonschema import Draft202012Validator
3
+ import pkg_resources
4
+ from enum import Enum
5
+
6
+ from certificate.cert_prints import *
7
+ from certificate.cert_defines import GW_LOGS
8
+ import certificate.cert_utils as cert_utils
9
+ import certificate.cert_mqtt as cert_mqtt
10
+
11
+ class MESSAGE_TYPES(Enum):
12
+ STATUS = "status"
13
+ DATA = "data"
14
+ LOGS = "logs"
15
+
16
+ API_VALIDATION = "API Validation"
17
+
18
+ def api_validation(test):
19
+ phase_run_print(API_VALIDATION)
20
+ api_validation_phase = cert_utils.Phase(API_VALIDATION, rc=TEST_PASSED)
21
+
22
+ if test.dut.protobuf:
23
+ utPrint("API validation is skipped for protobuf messages", "WARNING")
24
+ api_validation_phase.rc = TEST_SKIPPED
25
+ api_validation_phase.reason = "API validation is skipped for protobuf messages"
26
+ test.phases[-1:-1] = [api_validation_phase]
27
+ return test
28
+ else:
29
+ def validate_message(message: dict, msg_type=MESSAGE_TYPES.DATA.value) -> tuple[bool, str]:
30
+ json_path = pkg_resources.resource_filename(__name__, f"{test.dut.gw_api_version}/{msg_type}.json")
31
+ with open(json_path) as f:
32
+ relevant_schema = json.load(f)
33
+ validator = Draft202012Validator(relevant_schema)
34
+ valid = validator.is_valid(message)
35
+ errors = [e for e in validator.iter_errors(message)]
36
+ return (valid, errors)
37
+
38
+ utPrint(f"Validating all messages in the test according to API version {test.dut.gw_api_version} validation schema", "BLUE")
39
+ report = []
40
+ phase_passed = True
41
+ for msg_type in MESSAGE_TYPES:
42
+ if msg_type.value == MESSAGE_TYPES.STATUS.value:
43
+ all_msgs = [msg.body for msg in test.get_mqttc_by_target(DUT)._userdata[PKTS].status if GW_LOGS not in msg.body]
44
+ elif msg_type.value == MESSAGE_TYPES.LOGS.value:
45
+ all_msgs = [msg.body for msg in test.get_mqttc_by_target(DUT)._userdata[PKTS].status if GW_LOGS in msg.body]
46
+ else:
47
+ all_msgs = [msg.body for msg in test.get_mqttc_by_target(DUT)._userdata[PKTS].data]
48
+
49
+ utPrint(f"Validating {msg_type.value} messages", "BLUE")
50
+ message_type_passed = True
51
+ total_num_of_errors = 0
52
+ error_report = []
53
+ for idx, message_body in enumerate(all_msgs):
54
+ if msg_type.value == MESSAGE_TYPES.DATA.value and len(message_body[PACKETS]) == 0:
55
+ continue
56
+ validation = validate_message(message_body, msg_type.value)
57
+ errors = []
58
+ for e in validation[1]:
59
+ if e.message not in errors:
60
+ errors.append(e.message)
61
+ if not validation[0]:
62
+ phase_passed = False
63
+ message_type_passed = False
64
+ total_num_of_errors += len(errors)
65
+ error_report.append(f'The errors in message (idx={idx}, json timestamp={message_body.get(TIMESTAMP)}) Errors:')
66
+ for idx, e in enumerate(errors):
67
+ error_report.append(f'Error number {idx}:\n {e}')
68
+ report.append("\n")
69
+ report.append(f'Summary for {msg_type.value} messages')
70
+ report.append({'valid': {message_type_passed}, 'num of errors': total_num_of_errors})
71
+ report.append('******************************************************\n')
72
+ report.extend(error_report)
73
+ utPrint("\nAPI validation errors:", "BLUE")
74
+ for line in report:
75
+ print(line)
76
+ report_path = os.path.join(ARTIFACTS_DIR, test.dir, 'api_validation_report.txt')
77
+ with open(report_path, 'w') as f:
78
+ for line in report:
79
+ f.write(str(line) + '\n')
80
+ if not phase_passed:
81
+ api_validation_phase.rc = TEST_FAILED
82
+ api_validation_phase.reason = "API (JSON strcture) is invalid"
83
+ field_functionality_pass_fail_print(api_validation_phase, API_VALIDATION)
84
+ test.phases[-1:-1] = [api_validation_phase]
85
+ return test
@@ -0,0 +1,148 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <!-- Required meta tags -->
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <title>{{ app }}</title>
8
+ <link rel="icon" href="https://www.wiliot.com/favicon.ico" type="image/x-icon" />
9
+ <!-- Bootstrap CSS -->
10
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
11
+ <style>
12
+ #card-body {
13
+ height: 550px;
14
+ overflow:auto;
15
+ }
16
+ </style>
17
+ </head>
18
+ <body>
19
+ <div class="container">
20
+ {% include 'menu.html' %}
21
+ <h1 style="color:#00AB83">{{ title }}</h1>
22
+ <hr>
23
+ <form class="form-horizontal" id="form" action="">
24
+ <div id="builder_form">
25
+ {% for n in pkt_types_list %}
26
+ <div class="form-check form-check-inline">
27
+ <input class="form-check-input" type="radio" name="radios" value="{{ n }}" onclick="show();">
28
+ <label class="form-check-label" for="{{ n }}">{{ n }}</label>
29
+ </div>
30
+ {% endfor %}
31
+ {% for n,p in pkt_types.items() %}
32
+ <div id="{{ n }}_form">
33
+ <hr>
34
+ {% for k,v in p.__dict__.items() %}
35
+ <div class="row">
36
+ <label for="{{ n }}_{{ k }}" class="col-sm-2">{{ k }}:</label>
37
+ {% if k == 'brg_mac' or k == 'pkt_size' or k == 'ad_type' or k == 'uuid_msb' or k == 'uuid_lsb' or k == 'group_id' %}
38
+ <input type="text" class="col-sm-4" name="{{ n }}_{{ k }}" value="{{ '0x'+('%0x' % v).upper() }}">
39
+ {% else %}
40
+ <input type="text" class="col-sm-4" name="{{ n }}_{{ k }}" value="{{ v }}">
41
+ {% endif %}
42
+ </div>
43
+ {% endfor %}
44
+ </div>
45
+ {% endfor %}
46
+ </div>
47
+ <hr>
48
+ <div class="row">
49
+ <button type="submit" class="btn btn-primary col-sm-12">Build Packet</button>
50
+ </div>
51
+ </form>
52
+ <br>
53
+ <br>
54
+ <div class="card">
55
+ <div class="card-header">
56
+ Output
57
+ </div>
58
+ <div class="card-body" id="card-body">
59
+ <samp>{{ output | safe }}</samp>
60
+ </div>
61
+ </div>
62
+ <br>
63
+ <br>
64
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
65
+ <script>
66
+ function show()
67
+ {
68
+ const form = document.getElementById('form');
69
+ const group_id_brg2gw = {{ GROUP_ID_BRG2GW }};
70
+ const group_id_gw2brg = {{ GROUP_ID_GW2BRG }};
71
+ const group_id_side_info_sensor = {{ GROUP_ID_SIDE_INFO_SENSOR }};
72
+ const group_id_side_info = {{ GROUP_ID_SIDE_INFO }};
73
+ const group_id_signal_indicator = {{ GROUP_ID_SIGNAL_INDICATOR }};
74
+ const group_id_unified_v0 = {{ GROUP_ID_UNIFIED_PKT_V0 }};
75
+ const group_id_unified_v1 = {{ GROUP_ID_UNIFIED_PKT_V1 }};
76
+ const group_id_unified_v2 = {{ GROUP_ID_UNIFIED_PKT_V2 }};
77
+ const group_id_unified_ext_v0 = {{ GROUP_ID_BLE5_EXTENDED_V0 }};
78
+ const group_id_unified_ext_v1 = {{ GROUP_ID_BLE5_EXTENDED_V1 }};
79
+ var radios = document.getElementsByName("radios");
80
+ var pktTypes = {{ pkt_types_list | tojson | safe }};
81
+ console.log(pktTypes)
82
+ var forms = [];
83
+
84
+ for (var i = 0; i < pktTypes.length; i++) {
85
+ forms[i] = document.getElementById(pktTypes[i]+"_form");
86
+ if (pktTypes[i] != "Hdr"){
87
+ forms[i].style.display = 'none';
88
+ }
89
+ }
90
+
91
+ for(var i = 0; i < radios.length; i++) {
92
+ radios[i].onclick = function() {
93
+ for(var j = 0; j < radios.length; j++) {
94
+ forms[j].style.display = 'none';
95
+ }
96
+ if (this.value == "DataHdr"){
97
+ document.getElementById("Hdr_form").style.display = 'none';
98
+ }
99
+ else{
100
+ document.getElementById("Hdr_form").style.display = 'block';
101
+ var default_value = 0;
102
+ if (this.value.includes("Brg2Gw")){
103
+ default_value = group_id_brg2gw;
104
+ }
105
+ else if (this.value.includes("Gw2Brg")){
106
+ default_value = group_id_gw2brg;
107
+ }
108
+ else if (this.value.includes("SignalIndicator")){
109
+ default_value = group_id_signal_indicator;
110
+ }
111
+ else if (this.value.includes("SideInfoSensor")){
112
+ default_value = group_id_side_info_sensor;
113
+ }
114
+ else if (this.value.includes("SideInfo")){
115
+ default_value = group_id_side_info;
116
+ }
117
+ else if (this.value.includes("Unified")){
118
+ if (this.value.includes("V0")){
119
+ if (this.value.includes("Ext")){
120
+ default_value = group_id_unified_ext_v0
121
+ }
122
+ else {
123
+ default_value = group_id_unified_v0
124
+ }
125
+ }
126
+ else if (this.value.includes("V1")){
127
+ if (this.value.includes("Ext")){
128
+ default_value = group_id_unified_ext_v1
129
+ }
130
+ else {
131
+ default_value = group_id_unified_v1
132
+ }
133
+ }
134
+ else if (this.value.includes("V2")){
135
+ default_value = group_id_unified_v2
136
+ }
137
+ }
138
+ form.elements.Hdr_group_id.value = "0x" + default_value.toString(16).toUpperCase();
139
+ }
140
+ console.log(this.value)
141
+ document.getElementById(this.value + "_form").style.display = 'block';
142
+ }
143
+ }
144
+ }
145
+ show();
146
+ </script>
147
+ </body>
148
+ </html>
@@ -0,0 +1,20 @@
1
+
2
+ <!DOCTYPE html>
3
+ <html>
4
+ <head>
5
+ <!-- Required meta tags -->
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1">
8
+ <title>{{ app }}</title>
9
+ <link rel="icon" href="https://www.wiliot.com/favicon.ico" type="image/x-icon" />
10
+ <!-- Bootstrap CSS -->
11
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
12
+ </head>
13
+ <body>
14
+ <div class="container">
15
+ {% include 'menu.html' %}
16
+ <h1 style="color:#00AB83">{{ title }}</h1>
17
+ <hr>
18
+ {% include wlt_types_html %}
19
+ </body>
20
+ </html>
@@ -0,0 +1,54 @@
1
+ <nav class="navbar navbar-light navbar-expand-lg" style="background-color: #E5F7F3;">
2
+ <div class="container-fluid">
3
+ <ul class="navbar-nav">
4
+ <li class="nav-item">
5
+ <a class="nav-link active" aria-current="page" href="/">
6
+ <img src="https://www.wiliot.com/src/img/svg/logo.svg" width="100" height="40" alt="Wiliot logo">
7
+ </a>
8
+ </li>
9
+ {% if app == FDM %}
10
+ <li>
11
+ <a class="nav-link" href="/">
12
+ <button class="btn btn-outline-success my-5 my-sm-0">DEV MODE</button>
13
+ </a>
14
+ </li>
15
+ <li>
16
+ <a class="nav-link" href="/gw">
17
+ <button class="btn btn-outline-success my-5 my-sm-0">GW</button>
18
+ </a>
19
+ </li>
20
+ <li>
21
+ <a class="nav-link" href="/brg">
22
+ <button class="btn btn-outline-success my-5 my-sm-0">BRG</button>
23
+ </a>
24
+ </li>
25
+ <li>
26
+ <a class="nav-link" href="/tag2brg">
27
+ <button class="btn btn-outline-success my-5 my-sm-0">Tag to Bridge Packet</button>
28
+ </a>
29
+ </li>
30
+ {% elif app == CERT_WEB %}
31
+ <li>
32
+ <a class="nav-link" href="/">
33
+ <button class="btn btn-outline-success my-5 my-sm-0">RUN CERTIFICATE</button>
34
+ </a>
35
+ </li>
36
+ {% endif %}
37
+ <li>
38
+ <a class="nav-link" href="/parser">
39
+ <button class="btn btn-outline-success my-5 my-sm-0">PACKET PARSER</button>
40
+ </a>
41
+ </li>
42
+ <li>
43
+ <a class="nav-link" href="/generator">
44
+ <button class="btn btn-outline-success my-5 my-sm-0">PACKET GENERATOR</button>
45
+ </a>
46
+ </li>
47
+ <li>
48
+ <a class="nav-link" href="/data_structs">
49
+ <button class="btn btn-outline-success my-5 my-sm-0">DATA STRUCTURES</button>
50
+ </a>
51
+ </li>
52
+ </ul>
53
+ </div>
54
+ </nav>
@@ -0,0 +1,53 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <!-- Required meta tags -->
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <title>{{ app }}</title>
8
+ <link rel="icon" href="https://www.wiliot.com/favicon.ico" type="image/x-icon" />
9
+ <!-- Bootstrap CSS -->
10
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
11
+ <style>
12
+ #card-body {
13
+ height: 550px;
14
+ overflow:auto;
15
+ }
16
+ </style>
17
+ </head>
18
+ <body>
19
+ <div class="container">
20
+ {% include 'menu.html' %}
21
+ <h1 style="color:#00AB83">{{ title }}</h1>
22
+ <hr>
23
+ <form class="form-horizontal" action="">
24
+ <div class="row">
25
+ <label for="payload" class="col-sm-2">PAYLOAD:</label>
26
+ <input type="text" class="col-sm-4" name="payload" value="" placeholder="required" required>
27
+ </div>
28
+ {% if app == FDM %}
29
+ <div class="row">
30
+ <label for="packet_version" class="col-sm-2">PACKET VERSION:</label>
31
+ <input type="text" class="col-sm-4" name="packet_version" value="3.0">
32
+ </div>
33
+ {% endif %}
34
+ <hr>
35
+ <div class="row">
36
+ <button type="submit" class="btn btn-primary col-sm-12">Parse Packet</button>
37
+ </div>
38
+ </form>
39
+ <br>
40
+ <br>
41
+ <div class="card">
42
+ <div class="card-header">
43
+ Output
44
+ </div>
45
+ <div class="card-body" id="card-body">
46
+ <samp>{{ output | safe }}</samp>
47
+ </div>
48
+ </div>
49
+ <br>
50
+ <br>
51
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
52
+ </body>
53
+ </html>