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
@@ -0,0 +1,42 @@
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
7
+
8
+
9
+ def run(test):
10
+ test = cert_common.test_prolog(test)
11
+ if test.rc == TEST_FAILED:
12
+ return cert_common.test_epilog(test)
13
+
14
+ if test.active_brg.board_type in POF_NOT_SUPPORTING_BOARD_TYPES:
15
+ test.rc = TEST_SKIPPED
16
+ return cert_common.test_epilog(test)
17
+ functionality_run_print("action_get_module")
18
+
19
+ # CHECK ONLY FOR ONE MODULE (ModuleDatapath) #
20
+ # send action
21
+ print("\nCHECK ONLY FOR ModuleDatapath\n")
22
+ cert_config.send_brg_action(test, ag.ACTION_GET_MODULE, datapath=1)
23
+ # analysis
24
+ test = cert_common.search_action_ack(test, ag.ACTION_GET_MODULE, datapath=1)
25
+ test = cert_common.scan_for_modules(test, [test.active_brg.datapath])
26
+ if test.rc == TEST_FAILED:
27
+ return cert_common.test_epilog(test)
28
+
29
+ # CHECK FOR ALL MODULES AT ONCE #
30
+ # send action
31
+ print("\nCHECK FOR ALL MODULES AT ONCE\n")
32
+ cert_config.send_brg_action(test, ag.ACTION_GET_MODULE, interface=1, datapath=1, energy2400=1,
33
+ energy_sub1g=1, calibration=1, pwr_mgmt=1, ext_sensors=1, custom=1)
34
+ # analysis
35
+ test = cert_common.search_action_ack(test, ag.ACTION_GET_MODULE, interface=1, datapath=1, energy2400=1,
36
+ energy_sub1g=1, calibration=1, pwr_mgmt=1, ext_sensors=1, custom=1)
37
+ test = cert_common.scan_for_modules(test)
38
+
39
+ cert_mqtt.generate_log_file(test, "action_get_module")
40
+ field_functionality_pass_fail_print(test, "action_get_module")
41
+
42
+ return cert_common.test_epilog(test)
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "Get POF Data Action",
3
+ "module": "Edge Management",
4
+ "purpose": "Test get POF data action functionality",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": ["Test prolog", "Send get POF data action and test bridge's response accordingly", "Test epilog"],
8
+ "expectedOutcome": "Bridge returned an ack for the action, and sent a POF data packet.",
9
+ "mandatory": 0,
10
+ "multiBridgeTest": 0,
11
+ "gwOnlyTest": 0,
12
+ "dataSimOnlyTest": 0,
13
+ "SupportedFromApiVersion": 12,
14
+ "allSupportedValues": []
15
+ }
@@ -0,0 +1,44 @@
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
7
+
8
+
9
+ def run(test):
10
+ test = cert_common.test_prolog(test)
11
+ if test.rc == TEST_FAILED:
12
+ return cert_common.test_epilog(test)
13
+
14
+ if test.active_brg.board_type in POF_NOT_SUPPORTING_BOARD_TYPES:
15
+ test.rc = TEST_SKIPPED
16
+ return cert_common.test_epilog(test)
17
+
18
+ functionality_run_print("action_get_pof_data")
19
+
20
+ # send action
21
+ cert_config.send_brg_action(test, ag.ACTION_GET_POF_DATA)
22
+ # analysis
23
+ test = cert_common.search_action_ack(test, ag.ACTION_GET_POF_DATA)
24
+ if test.rc == TEST_FAILED:
25
+ return cert_common.test_epilog(test)
26
+
27
+ found_packet = False
28
+ custom_pkts = cert_mqtt.get_all_custom_pkts(test)
29
+ for p in custom_pkts:
30
+ if ("{:02X}{:02X}{:02X}".format(p[UNIFIED_SENSOR_PKT].pkt.sensor_ad_type,
31
+ p[UNIFIED_SENSOR_PKT].pkt.sensor_uuid_msb,
32
+ p[UNIFIED_SENSOR_PKT].pkt.sensor_uuid_lsb) ==
33
+ f"{ag.SENSOR_SERVICE_ID_POF_DATA:06X}"):
34
+ print_pkt(p)
35
+ found_packet = True
36
+ break
37
+ if found_packet is False:
38
+ test.rc = TEST_FAILED
39
+ test.add_reason("Didn't find pof data packet.")
40
+
41
+ cert_mqtt.generate_log_file(test, "action_get_pof_data")
42
+ field_functionality_pass_fail_print(test, "action_get_pof_data")
43
+
44
+ return cert_common.test_epilog(test)
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "GW Heartbeat Action",
3
+ "module": "Edge Management",
4
+ "purpose": "Test GW Heartbeat action functionality",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": ["Test prolog", "Send GW HB action and test bridge's response accordingly", "Test epilog"],
8
+ "expectedOutcome": "Bridge sent a GW HB packet.",
9
+ "mandatory": 1,
10
+ "multiBridgeTest": 0,
11
+ "gwOnlyTest": 0,
12
+ "bridgeOnlyTest": 1,
13
+ "dataSimOnlyTest": 0,
14
+ "SupportedFromApiVersion": 12,
15
+ "allSupportedValues": []
16
+ }
@@ -0,0 +1,42 @@
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
7
+ import random
8
+
9
+
10
+ def run(test):
11
+ test = cert_common.test_prolog(test)
12
+ if test.rc == TEST_FAILED:
13
+ return cert_common.test_epilog(test)
14
+
15
+ functionality_run_print("action_gw_hb")
16
+
17
+ # Create randomized 13 bytes hex to send as the gw
18
+ randomized_gw = ''.join(f'{b:02X}' for b in bytes([random.randint(0, 255) for _ in range(13)]))
19
+ randomized_gw = hex_str2int(randomized_gw)
20
+ # send action
21
+ cert_config.send_brg_action(test, ag.ACTION_GW_HB, gw_id=randomized_gw)
22
+ # analysis
23
+ gw_hb_pkt = eval_pkt(f'ActionGwHbV{test.active_brg.api_version}')
24
+ test, mgmt_pkts = cert_common.scan_for_mgmt_pkts(test, [gw_hb_pkt])
25
+ if not mgmt_pkts:
26
+ test.add_reason("Didn't find ACTION GW HB ACK pkts")
27
+ test.rc = TEST_FAILED
28
+ else:
29
+ for p in mgmt_pkts:
30
+ if p[MGMT_PKT].pkt.rssi == 0 or randomized_gw != p[MGMT_PKT].pkt.gw_id:
31
+ if p[MGMT_PKT].pkt.rssi == 0:
32
+ print("ERROR: PKT RSSI is zero!")
33
+ test.add_reason("RSSI is zero on the ACTION GW HB ACK pkt")
34
+ else:
35
+ print(f"ERROR: GW ID does not match!\nGW_ID: {p[MGMT_PKT].pkt.gw_id}\nrandomized_gw: {randomized_gw}")
36
+ test.add_reason("GW ID not found on the ACTION GW HB ACK pkt")
37
+ test.rc = TEST_FAILED
38
+
39
+ cert_mqtt.generate_log_file(test, "action_gw_hb")
40
+ field_functionality_pass_fail_print(test, "action_gw_hb")
41
+
42
+ return cert_common.test_epilog(test)
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "Reboot Action",
3
+ "module": "Edge Management",
4
+ "purpose": "Test rebot action functionality",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": ["Test prolog", "Configure bridge to non-default configurations, send reboot action, and test bridge's response accordingly", "Test epilog"],
8
+ "expectedOutcome": "Bridge rebooted properly and kept its configurations.",
9
+ "mandatory": 1,
10
+ "multiBridgeTest": 0,
11
+ "gwOnlyTest": 0,
12
+ "dataSimOnlyTest": 0,
13
+ "SupportedFromApiVersion": 12,
14
+ "allSupportedValues": []
15
+ }
@@ -0,0 +1,49 @@
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
7
+
8
+
9
+ def run(test):
10
+ test = cert_common.test_prolog(test)
11
+ if test.rc == TEST_FAILED:
12
+ return cert_common.test_epilog(test)
13
+
14
+ functionality_run_print("action_reboot")
15
+
16
+ # configure tester to listen to ch39 so we can receieve euro pattern packets
17
+ test = cert_config.brg_configure(test, fields=[BRG_RX_CHANNEL], values=[ag.RX_CHANNEL_39],
18
+ module=test.tester.internal_brg.datapath,
19
+ target=TESTER)[0]
20
+ if test.rc == TEST_FAILED:
21
+ return cert_common.test_epilog(test)
22
+ # non-default cfg
23
+ test = cert_common.brg_non_default_modules_cfg(test)
24
+ if test.rc == TEST_FAILED and test.exit_on_param_failure:
25
+ return cert_common.test_epilog(test, revert_brgs=True)
26
+ # sample non-default cfg_hash
27
+ test, non_default_hash = cert_common.get_cfg_hash(test)
28
+ if test.active_brg.cfg_hash == non_default_hash:
29
+ test.rc = TEST_FAILED
30
+ test.add_reason(f"Config failed default_hash==non_default==0x{non_default_hash:08X}")
31
+ if test.rc == TEST_FAILED:
32
+ return cert_common.test_epilog(test)
33
+ print(f"\nnon_default_hash: 0x{non_default_hash:08X}\n")
34
+ # send action
35
+ cert_config.send_brg_action(test, ag.ACTION_REBOOT)
36
+ # analysis
37
+ test = cert_common.reboot_config_analysis(test, expected_hash=non_default_hash, timeout=40)
38
+ # epilog
39
+ test = cert_config.config_brg_defaults(test)[0]
40
+ if test.rc == TEST_FAILED:
41
+ return cert_common.test_epilog(test)
42
+
43
+ # configure tester to listen to default channel again
44
+ test = cert_config.brg_configure(test, module=test.tester.internal_brg.datapath, target=TESTER)[0]
45
+
46
+ cert_mqtt.generate_log_file(test, "action_reboot")
47
+ field_functionality_pass_fail_print(test, "action_reboot")
48
+
49
+ return cert_common.test_epilog(test)
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "Restore Defaults Action",
3
+ "module": "Edge Management",
4
+ "purpose": "Test restore defaults action functionality",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": ["Test prolog", "Configure bridge to non-default configurations, send restore defaults action, and test bridge's response accordingly", "Test epilog"],
8
+ "expectedOutcome": "Bridge rebooted properly and restored its default configurations.",
9
+ "mandatory": 1,
10
+ "multiBridgeTest": 0,
11
+ "gwOnlyTest": 0,
12
+ "dataSimOnlyTest": 0,
13
+ "SupportedFromApiVersion": 13,
14
+ "allSupportedValues": []
15
+ }
@@ -0,0 +1,102 @@
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
7
+
8
+
9
+ def run(test):
10
+ test = cert_common.test_prolog(test)
11
+ if test.rc == TEST_FAILED:
12
+ return cert_common.test_epilog(test)
13
+
14
+ functionality_run_print("action_restore_defaults")
15
+
16
+ # configure tester to listen to ch39 so we can receieve euro pattern packets
17
+ test = cert_config.brg_configure(test, fields=[BRG_RX_CHANNEL], values=[ag.RX_CHANNEL_39],
18
+ module=test.tester.internal_brg.datapath,
19
+ target=TESTER)[0]
20
+ if test.rc == TEST_FAILED:
21
+ return cert_common.test_epilog(test)
22
+ # non-default cfg
23
+ test = cert_common.brg_non_default_modules_cfg(test)
24
+ if test.rc == TEST_FAILED and test.exit_on_param_failure:
25
+ return cert_common.test_epilog(test, revert_brgs=True)
26
+ # sample non-default cfg_hash
27
+ test, non_default_hash = cert_common.get_cfg_hash(test)
28
+ if test.rc == TEST_FAILED:
29
+ # revert to defaults without restore_defaults action if action failed
30
+ test = cert_config.config_brg_defaults(test)[0]
31
+ return cert_common.test_epilog(test)
32
+ # send action
33
+ cert_config.send_brg_action(test, ag.ACTION_RESTORE_DEFAULTS)
34
+ # analysis
35
+ expected_hash = test.active_brg.cfg_hash
36
+ utPrint("Analyzing Restore Defaults", "BLUE")
37
+ # First 30 for wlt app start + 10 sec extra for brg to settle to recieve its get module action
38
+ wait_time_n_print(40, txt="Analyzing Restore Defaults")
39
+
40
+ start_time = datetime.datetime.now()
41
+ seq_ids = []
42
+ cfg_once = True
43
+ test.get_mqttc_by_target(DUT).flush_pkts()
44
+
45
+ utPrint(f"Get Interface Module from BRG {test.active_brg.id_str}")
46
+ cert_config.send_brg_action(test, ag.ACTION_GET_MODULE, interface=1)
47
+ test = cert_common.search_action_ack(test, ag.ACTION_GET_MODULE, interface=1)
48
+ if test.rc == TEST_FAILED:
49
+ return cert_common.test_epilog(test)
50
+
51
+ while True:
52
+ # scan for ModuleIf pkt of all api versions to support api version change on update
53
+ mgmt_types = [eval_pkt(f'ModuleIfV{test.active_brg.api_version}')]
54
+ pkts = cert_mqtt.get_brg2gw_mgmt_pkts(test.get_mqttc_by_target(DUT), test.active_brg, mgmt_types=mgmt_types)
55
+ for p in pkts:
56
+ if (not seq_ids or p[SEQUENCE_ID] not in seq_ids):
57
+ seq_ids.append(p[SEQUENCE_ID])
58
+ interface = p[MGMT_PKT].pkt
59
+ if interface:
60
+ test.active_brg.api_version = interface.api_version
61
+ print(f"\nGot pkt after {(datetime.datetime.now() - start_time).seconds} sec!")
62
+ print(interface)
63
+ received_hash = interface.cfg_hash
64
+ print(f"\nexpected cfg_hash: 0x{expected_hash:08X}\n"
65
+ f"received cfg_hash: 0x{received_hash:08X}\n"
66
+ f"non_default_hash: 0x{non_default_hash:08X}")
67
+ if received_hash == non_default_hash:
68
+ # test.rc = TEST_FAILED
69
+ test.add_reason("received_hash is equal to non_default_hash, ACTION_RESTORE_DEFAULTS was not received by the brg!")
70
+ # return test
71
+ elif received_hash == expected_hash:
72
+ return cert_common.test_epilog(test)
73
+ else:
74
+ # Default SUB1G EP in the BRG is 0 and in the UT is 9
75
+ # in order to allign BRG cfg to the one after ut.py start script
76
+ # we should configure sub1g ep individually once after reboot in case cfg hash dont match
77
+ if ag.MODULE_ENERGY_SUB1G in test.active_brg.sup_caps and cfg_once:
78
+ cfg_once = False
79
+ cfg_pkt = cert_config.get_default_brg_pkt(test,
80
+ test.active_brg.energy_sub1g,
81
+ **{BRG_PATTERN: ag.SUB1G_ENERGY_PATTERN_ISRAEL})
82
+ test = cert_config.brg_configure(test, cfg_pkt=cfg_pkt)[0]
83
+ if test.rc == TEST_FAILED:
84
+ return cert_common.test_epilog(test)
85
+ cert_config.send_brg_action(test, ag.ACTION_GET_MODULE, interface=1)
86
+ print_update_wait()
87
+
88
+ if (datetime.datetime.now() - start_time).seconds > DEFAULT_BRG_FIELD_UPDATE_TIMEOUT:
89
+ test.rc = TEST_FAILED
90
+ test.add_reason(f"Didn't receive expected ModuleIfV{test.active_brg.api_version} pkt "
91
+ f"after {DEFAULT_BRG_FIELD_UPDATE_TIMEOUT} seconds!")
92
+ # revert to defaults without restore_defaults action if action failed
93
+ test = cert_config.config_brg_defaults(test)[0]
94
+ break
95
+
96
+ # configure tester to listen to default channel again
97
+ test = cert_config.brg_configure(test, module=test.tester.internal_brg.datapath, target=TESTER)[0]
98
+
99
+ cert_mqtt.generate_log_file(test, "action_restore_defaults")
100
+ field_functionality_pass_fail_print(test, "action_restore_defaults")
101
+
102
+ return cert_common.test_epilog(test)
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "Send Heartbeat Action",
3
+ "module": "Edge Management",
4
+ "purpose": "Test send Heartbeat action functionality",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": ["Test prolog", "Send HB action and test bridge's response accordingly", "Test epilog"],
8
+ "expectedOutcome": "Bridge sent a HB packet.",
9
+ "mandatory": 1,
10
+ "multiBridgeTest": 0,
11
+ "gwOnlyTest": 0,
12
+ "dataSimOnlyTest": 0,
13
+ "SupportedFromApiVersion": 12,
14
+ "allSupportedValues": []
15
+ }
@@ -0,0 +1,45 @@
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
7
+
8
+
9
+ def run(test):
10
+ test = cert_common.test_prolog(test)
11
+ if test.rc == TEST_FAILED:
12
+ return cert_common.test_epilog(test)
13
+
14
+ functionality_run_print("action_send_hb")
15
+
16
+ # send action
17
+ cert_config.send_brg_action(test, ag.ACTION_SEND_HB)
18
+ # analysis
19
+ test, mgmt_pkts = cert_common.scan_for_mgmt_pkts(test, [eval_pkt(f'Brg2GwHbV{test.active_brg.api_version}')])
20
+ if not mgmt_pkts:
21
+ test.add_reason("Didn't find ACTION HB pkt")
22
+ test.rc = TEST_FAILED
23
+ elif test.active_brg.api_version >= ag.API_VERSION_V13:
24
+ utPrint("Got HB pkt", "GREEN")
25
+ algo_tx_rep_val = []
26
+ for p in mgmt_pkts:
27
+ algo_tx_rep_val.append(p[MGMT_PKT].pkt.algo_tx_rep)
28
+ if test.dut_is_combo() and any(val != 0 for val in algo_tx_rep_val):
29
+ invalid_vals = [val for val in algo_tx_rep_val if val != 0]
30
+ print(f"ERROR: tx_rep_algo yielded invalid value(s) {invalid_vals} instead of '0' for internal brg!")
31
+ test.add_reason("Internal's BRG tx_rep_algo isn't working as expected!")
32
+ test.rc = TEST_FAILED
33
+ elif test.dut_is_bridge() and any((val < 1 or val > 3) for val in algo_tx_rep_val):
34
+ invalid_vals = [val for val in algo_tx_rep_val if val < 1 or val > 3]
35
+ print(f"ERROR: tx_rep_algo yielded invalid value(s) {invalid_vals}!")
36
+ test.add_reason("BRG's tx_rep_algo isn't working as expected!")
37
+ test.rc = TEST_FAILED
38
+ print(f"tx_rep_algo yielded valid value(s) of - {algo_tx_rep_val}")
39
+ else:
40
+ utPrint("Got HB pkt, Skipping tx_rep_algo hb field check - API version < V13", "GREEN")
41
+
42
+ cert_mqtt.generate_log_file(test, "action_send_hb")
43
+ field_functionality_pass_fail_print(test, "action_send_hb")
44
+
45
+ return cert_common.test_epilog(test)
@@ -2,13 +2,14 @@
2
2
  "name": "Periodic Messages",
3
3
  "module": "Edge Management",
4
4
  "purpose": "Test periodic messages (heartbeat and interface) sent from the bridge",
5
- "documentation": "<TEST_DOCUMENTATION_LINK>",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Bridge-Modular-Architecture",
6
6
  "initialCondition": "Bridge configured to defaults",
7
7
  "procedure": ["Test prolog", "Scan for heartbeat and interface packets", "Test epilog"],
8
8
  "expectedOutcome": "Both heartbeat and interface packets received from the bridge within 65 seconds",
9
9
  "mandatory": 1,
10
10
  "multiBridgeTest": 0,
11
11
  "gwOnlyTest": 0,
12
- "internalBridge": 1,
12
+ "dataSimOnlyTest": 0,
13
+ "SupportedFromApiVersion": 12,
13
14
  "allSupportedValues": []
14
15
  }
@@ -1,7 +1,8 @@
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
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
5
6
 
6
7
  BRG_PER_MSGS_SCAN_TIMEOUT = 65
7
8
 
@@ -13,18 +14,28 @@ def scan_for_brg_periodic_msgs(test, timeout=BRG_PER_MSGS_SCAN_TIMEOUT, only_hb=
13
14
  for pkt_type in found:
14
15
  if pkt_type != HB:
15
16
  found[pkt_type] = True
16
- else: # flash pkts if only_hb=False
17
- test.mqttc.flush_pkts()
17
+ else: # flush pkts if only_hb=False
18
+ test.get_mqttc_by_target(DUT).flush_pkts()
18
19
 
19
20
  start_time = datetime.datetime.now()
20
21
  # Search for packets
21
22
  while not all(found.values()):
22
- if (cert_mqtt.get_brg2gw_mgmt_pkts(test.mqttc, test, mgmt_types=[eval_pkt(f'Brg2GwHbV{test.active_brg.api_version}')]) and
23
- not found[HB]):
23
+ mgmt_types = [eval_pkt(f'Brg2GwHbV{test.active_brg.api_version}')]
24
+ hb_pkts = cert_mqtt.get_brg2gw_mgmt_pkts(
25
+ test.get_mqttc_by_target(DUT),
26
+ test.active_brg,
27
+ mgmt_types=mgmt_types,
28
+ )
29
+ if hb_pkts and not found[HB]:
24
30
  found[HB] = True
25
31
  print(f"Got HB packet after {(datetime.datetime.now() - start_time).seconds} sec!")
26
- if (cert_mqtt.get_brg2gw_mgmt_pkts(test.mqttc, test, mgmt_types=[eval_pkt(f'ModuleIfV{test.active_brg.api_version}')]) and
27
- not found[MODULE_IF]):
32
+ mgmt_types = [eval_pkt(f'ModuleIfV{test.active_brg.api_version}')]
33
+ module_if_pkts = cert_mqtt.get_brg2gw_mgmt_pkts(
34
+ test.get_mqttc_by_target(DUT),
35
+ test.active_brg,
36
+ mgmt_types=mgmt_types,
37
+ )
38
+ if module_if_pkts and not found[MODULE_IF]:
28
39
  found[MODULE_IF] = True
29
40
  print(f"Got interface module packet after {(datetime.datetime.now() - start_time).seconds} sec!")
30
41
  print_update_wait()
@@ -43,6 +54,6 @@ def run(test):
43
54
  return cert_common.test_epilog(test)
44
55
 
45
56
  test = scan_for_brg_periodic_msgs(test)
46
- generate_log_file(test, "periodic_msgs")
57
+ cert_mqtt.generate_log_file(test, "periodic_msgs")
47
58
 
48
59
  return cert_common.test_epilog(test)
@@ -11,6 +11,7 @@
11
11
  "mandatory": 0,
12
12
  "multiBridgeTest": 0,
13
13
  "gwOnlyTest": 0,
14
- "internalBridge": 1,
14
+ "dataSimOnlyTest": 0,
15
+ "SupportedFromApiVersion": 12,
15
16
  "allSupportedValues": [1, 25, 50, 75]
16
17
  }
@@ -1,8 +1,9 @@
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
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
6
7
 
7
8
 
8
9
  def run(test):
@@ -15,7 +16,7 @@ def run(test):
15
16
  return cert_common.test_epilog(test)
16
17
  for param in test.params:
17
18
  test = cert_config.brg_configure(test, fields=fields, values=[param.value], module=energy2400_module)[0]
18
- generate_log_file(test, param.name)
19
+ cert_mqtt.generate_log_file(test, param.name)
19
20
  field_functionality_pass_fail_print(test, fields[0], value=param.name)
20
21
  test.set_phase_rc(param.name, test.rc)
21
22
  test.add_phase_reason(param.name, test.reason)
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "Output Power",
3
+ "module": "Energizer 2.4GHz",
4
+ "purpose": "Test configuration for all supported Energizer 2.4GHz output power values",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Wiliot-Network-Energizing-2-4Ghz",
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": ["Test prolog",
8
+ "For each supported value - configure the BRG and verify the value",
9
+ "Test epilog and revert to defaults"],
10
+ "expectedOutcome": "All values configured successfully",
11
+ "mandatory": 0,
12
+ "multiBridgeTest": 0,
13
+ "gwOnlyTest": 0,
14
+ "dataSimOnlyTest": 0,
15
+ "SupportedFromApiVersion": 13,
16
+ "allSupportedValues": ["OUTPUT_POWER_2_4_MAX", "OUTPUT_POWER_2_4_MAX_MINUS_2", "OUTPUT_POWER_2_4_MAX_MINUS_3",
17
+ "OUTPUT_POWER_2_4_MAX_MINUS_4", "OUTPUT_POWER_2_4_MAX_MINUS_6", "OUTPUT_POWER_2_4_MAX_MINUS_7",
18
+ "OUTPUT_POWER_2_4_MAX_MINUS_8", "OUTPUT_POWER_2_4_MAX_MINUS_10", "OUTPUT_POWER_2_4_MAX_MINUS_11",
19
+ "OUTPUT_POWER_2_4_MAX_MINUS_12", "OUTPUT_POWER_2_4_MAX_MINUS_14", "OUTPUT_POWER_2_4_MAX_MINUS_15",
20
+ "OUTPUT_POWER_2_4_MAX_MINUS_16", "OUTPUT_POWER_2_4_MAX_MINUS_18", "OUTPUT_POWER_2_4_MAX_MINUS_19",
21
+ "OUTPUT_POWER_2_4_MAX_MINUS_20", "OUTPUT_POWER_2_4_MAX_MINUS_22", "OUTPUT_POWER_2_4_MAX_MINUS_23",
22
+ "OUTPUT_POWER_2_4_MAX_MINUS_26"]
23
+ }
@@ -1,8 +1,9 @@
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
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
6
7
 
7
8
 
8
9
  def run(test):
@@ -15,8 +16,18 @@ def run(test):
15
16
  return cert_common.test_epilog(test)
16
17
 
17
18
  for param in test.params:
19
+ if not cert_common.output_power_supported(test.active_brg.board_type, param.value):
20
+ # Skip this parameter if its value isn't supported by the board
21
+ test.rc = TEST_SKIPPED
22
+ cert_mqtt.generate_log_file(test, param.name)
23
+ field_functionality_pass_fail_print(test, fields[0], value=param.name)
24
+ test.set_phase_rc(param.name, test.rc)
25
+ test.add_phase_reason(param.name, test.reason)
26
+ test.reset_result() # reset result and continue to next param
27
+ continue
28
+
18
29
  test = cert_config.brg_configure(test, fields=fields, values=[param.value], module=energy2400_module)[0]
19
- generate_log_file(test, param.name)
30
+ cert_mqtt.generate_log_file(test, param.name)
20
31
  field_functionality_pass_fail_print(test, fields[0], value=param.name)
21
32
  test.set_phase_rc(param.name, test.rc)
22
33
  test.add_phase_reason(param.name, test.reason)
@@ -11,6 +11,7 @@
11
11
  "mandatory": 0,
12
12
  "multiBridgeTest": 0,
13
13
  "gwOnlyTest": 0,
14
- "internalBridge": 1,
14
+ "dataSimOnlyTest": 0,
15
+ "SupportedFromApiVersion": 12,
15
16
  "allSupportedValues": ["ENERGY_PATTERN_2_4_NO_ENERGIZING", "ENERGY_PATTERN_2_4_CHANNEL_37", "ENERGY_PATTERN_2_4_CHANNEL_38", "ENERGY_PATTERN_2_4_CHANNEL_39", "ENERGY_PATTERN_2_4_FREQ_2450", "ENERGY_PATTERN_2_4_FREQ_2454"]
16
17
  }
@@ -1,8 +1,9 @@
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
1
+ from certificate.cert_prints import *
2
+ from certificate.cert_defines import *
3
+ from certificate.wlt_types import *
4
+ import certificate.cert_mqtt as cert_mqtt
5
+ import certificate.cert_common as cert_common
6
+ import certificate.cert_config as cert_config
6
7
 
7
8
 
8
9
  def run(test):
@@ -17,7 +18,7 @@ def run(test):
17
18
  for param in test.params:
18
19
  test = cert_config.brg_configure(test, fields=fields, values=[param.value], module=energy2400_module)[0]
19
20
  # param epilog
20
- generate_log_file(test, param.name)
21
+ cert_mqtt.generate_log_file(test, param.name)
21
22
  field_functionality_pass_fail_print(test, fields[0], value=param.name)
22
23
  test.set_phase_rc(param.name, test.rc)
23
24
  test.add_phase_reason(param.name, test.reason)
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "Signal Indicator BLE5",
3
+ "module": "Energizer 2.4GHz",
4
+ "purpose": "verify Energizer 2.4GHz signal indicator functionality for BLE_5.0 in CHANNEL_10",
5
+ "documentation": "https://community.wiliot.com/customers/s/article/Bridge-to-Bridge-Signal-Indicator",
6
+ "initialCondition": "Bridge configured to defaults",
7
+ "procedure": [
8
+ "Test prolog",
9
+ "Configure DUT and TESTER datapath to BLE5 RX channel 10 for the entire test, if DUT is a Bridge only, configure the tx pattern to be extended advertising channel 10 so the tester will receive the packets.",
10
+ "rssi_threshold - Configure DUT as Signal Indicator Receiver with RSSI threshold (e.g., -25 dBm); configure TESTER as Transmitter; scan and verify all received packets on DUT meet the RSSI threshold",
11
+ "rx - Configure DUT as Receiver and TESTER as Transmitter; scan and validate expected packet count in DUT; run antenna, output power, and RSSI checks",
12
+ "tx - Configure DUT as Transmitter; configure TESTER as Receiver; scan and validate expected packet count in TESTER; run antenna, output power, and RSSI checks",
13
+ "disable_tx - Keep DUT at defaults (TX disabled); configure TESTER as Receiver; scan default duration and verify zero signal indicator packets received",
14
+ "disable_rx - Keep DUT RX disabled (defaults); configure TESTER as Transmitter; scan and verify DUT receives zero signal indicator packets",
15
+ "rx_tx - Configure both DUT and TESTER as Signal Indicator RX and TX; scan and validate expected packet counts in both directions; note antenna/output power checks are skipped in this phase",
16
+ "Revert DUT and TESTER datapath modules to defaults",
17
+ "Test epilog"
18
+ ],
19
+ "expectedOutcome": "All phases passed successfully!",
20
+ "mandatory": 0,
21
+ "multiBridgeTest": 1,
22
+ "gwOnlyTest": 0,
23
+ "dataSimOnlyTest": 0,
24
+ "SupportedFromApiVersion": 13,
25
+ "allSupportedValues": ["rssi_threshold", "rx", "tx", "disable_tx", "disable_rx", "rx_tx"]
26
+ }