wiliot-certificate 4.4.3__py3-none-any.whl → 4.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {brg_certificate → certificate}/ag/wlt_cmd_if.html +10 -4
- {brg_certificate → certificate}/ag/wlt_types_ag.py +1878 -519
- certificate/cert_common.py +1488 -0
- certificate/cert_config.py +480 -0
- {brg_certificate → certificate}/cert_data_sim.py +134 -46
- {brg_certificate → certificate}/cert_defines.py +129 -128
- {brg_certificate → certificate}/cert_gw_sim.py +183 -53
- {brg_certificate → certificate}/cert_mqtt.py +179 -64
- {brg_certificate → certificate}/cert_prints.py +35 -33
- {brg_certificate → certificate}/cert_protobuf.py +15 -6
- {brg_certificate → certificate}/cert_results.py +240 -64
- certificate/cert_utils.py +634 -0
- certificate/certificate.py +205 -0
- certificate/certificate_cli.py +76 -0
- certificate/certificate_eth_test_list.txt +76 -0
- certificate/certificate_sanity_test_list.txt +66 -0
- certificate/certificate_test_list.txt +76 -0
- {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.json +3 -2
- {brg_certificate → certificate}/tests/calibration/interval_test/interval_test.py +7 -6
- certificate/tests/calibration/output_power_test/output_power_test.json +23 -0
- certificate/tests/calibration/output_power_test/output_power_test.py +39 -0
- {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.json +2 -1
- {brg_certificate → certificate}/tests/calibration/pattern_test/pattern_test.py +20 -15
- certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.json +15 -0
- certificate/tests/cloud_connectivity/acl_ext_adv_test/acl_ext_adv_test.py +140 -0
- certificate/tests/cloud_connectivity/acl_test/acl_test.json +15 -0
- certificate/tests/cloud_connectivity/acl_test/acl_test.py +96 -0
- certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.json +19 -0
- certificate/tests/cloud_connectivity/brg_ota_test/brg_ota_test.py +41 -0
- certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.json +19 -0
- certificate/tests/cloud_connectivity/channel_scan_behaviour_test/channel_scan_behaviour_test.py +215 -0
- certificate/tests/cloud_connectivity/connection_test/connection_test.json +18 -0
- certificate/tests/cloud_connectivity/connection_test/connection_test.py +67 -0
- certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.json +15 -0
- certificate/tests/cloud_connectivity/deduplication_test/deduplication_test.py +80 -0
- certificate/tests/cloud_connectivity/downlink_test/downlink_test.json +21 -0
- certificate/tests/cloud_connectivity/downlink_test/downlink_test.py +201 -0
- certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.json +17 -0
- certificate/tests/cloud_connectivity/ext_adv_stress_test/ext_adv_stress_test.py +104 -0
- certificate/tests/cloud_connectivity/reboot_test/reboot_test.json +18 -0
- certificate/tests/cloud_connectivity/reboot_test/reboot_test.py +59 -0
- certificate/tests/cloud_connectivity/registration_test/registration_test.json +20 -0
- certificate/tests/cloud_connectivity/registration_test/registration_test.py +384 -0
- certificate/tests/cloud_connectivity/registration_test/registration_test_cli.py +90 -0
- certificate/tests/cloud_connectivity/stress_test/stress_test.json +17 -0
- certificate/tests/cloud_connectivity/stress_test/stress_test.py +101 -0
- certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.json +25 -0
- certificate/tests/cloud_connectivity/uplink_ext_adv_test/uplink_ext_adv_test.py +92 -0
- certificate/tests/cloud_connectivity/uplink_test/uplink_test.json +20 -0
- certificate/tests/cloud_connectivity/uplink_test/uplink_test.py +169 -0
- {brg_certificate → certificate}/tests/datapath/aging_test/aging_test.json +2 -1
- certificate/tests/datapath/aging_test/aging_test.py +142 -0
- certificate/tests/datapath/event_ble5_test/event_ble5_test.json +17 -0
- certificate/tests/datapath/event_ble5_test/event_ble5_test.py +89 -0
- certificate/tests/datapath/event_test/event_test.json +17 -0
- certificate/tests/datapath/event_test/event_test.py +80 -0
- {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.json +4 -3
- {brg_certificate → certificate}/tests/datapath/num_of_tags_test/num_of_tags_test.py +19 -13
- certificate/tests/datapath/output_power_test/output_power_test.json +23 -0
- {brg_certificate → certificate}/tests/datapath/output_power_test/output_power_test.py +17 -6
- {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +13 -11
- {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pacer_interval_test/pacer_interval_test.py +9 -7
- {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.json +3 -2
- {brg_certificate → certificate}/tests/datapath/pattern_test/pattern_test.py +18 -6
- certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.json +20 -0
- certificate/tests/datapath/pkt_filter_ble5_chl21_test/pkt_filter_ble5_chl21_test.py +61 -0
- {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +15 -14
- certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.json +19 -0
- certificate/tests/datapath/pkt_filter_brg2gw_ext_adv_test/pkt_filter_brg2gw_ext_adv_test.py +85 -0
- {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +10 -9
- {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.json +2 -1
- {brg_certificate → certificate}/tests/datapath/pkt_filter_test/pkt_filter_test.py +10 -9
- {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +3 -2
- {brg_certificate → certificate}/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +9 -8
- 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
- certificate/tests/datapath/rx_channel_hopping_test/rx_channel_hopping_test.py +77 -0
- {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.json +3 -2
- {brg_certificate → certificate}/tests/datapath/rx_channel_test/rx_channel_test.py +7 -6
- {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json +8 -7
- {brg_certificate → certificate}/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +113 -73
- {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json +8 -7
- {brg_certificate → certificate}/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +112 -72
- {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.json +4 -3
- {brg_certificate → certificate}/tests/datapath/stress_gen3_test/stress_gen3_test.py +15 -11
- {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.json +4 -3
- {brg_certificate → certificate}/tests/datapath/stress_test/stress_test.py +15 -11
- {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.json +3 -1
- {brg_certificate → certificate}/tests/datapath/tx_repetition_test/tx_repetition_test.py +14 -13
- certificate/tests/edge_mgmt/action_blink_test/action_blink_test.json +15 -0
- certificate/tests/edge_mgmt/action_blink_test/action_blink_test.py +24 -0
- certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.json +15 -0
- certificate/tests/edge_mgmt/action_get_battery_sensor_test/action_get_battery_sensor_test.py +43 -0
- certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.json +15 -0
- certificate/tests/edge_mgmt/action_get_module_test/action_get_module_test.py +42 -0
- certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.json +15 -0
- certificate/tests/edge_mgmt/action_get_pof_data_test/action_get_pof_data_test.py +44 -0
- certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.json +16 -0
- certificate/tests/edge_mgmt/action_gw_hb_test/action_gw_hb_test.py +42 -0
- certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.json +15 -0
- certificate/tests/edge_mgmt/action_reboot_test/action_reboot_test.py +49 -0
- certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.json +15 -0
- certificate/tests/edge_mgmt/action_restore_defaults_test/action_restore_defaults_test.py +102 -0
- certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.json +15 -0
- certificate/tests/edge_mgmt/action_send_hb_test/action_send_hb_test.py +45 -0
- {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json +3 -2
- {brg_certificate → certificate}/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.py +22 -11
- {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.json +2 -1
- {brg_certificate → certificate}/tests/energy2400/duty_cycle_test/duty_cycle_test.py +7 -6
- certificate/tests/energy2400/output_power_test/output_power_test.json +23 -0
- {brg_certificate → certificate}/tests/energy2400/output_power_test/output_power_test.py +17 -6
- {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.json +2 -1
- {brg_certificate → certificate}/tests/energy2400/pattern_test/pattern_test.py +7 -6
- certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.json +26 -0
- certificate/tests/energy2400/signal_indicator_ble5_test/signal_indicator_ble5_test.py +379 -0
- certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.json +20 -0
- certificate/tests/energy2400/signal_indicator_ext_adv_test/signal_indicator_ext_adv_test.py +173 -0
- certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +24 -0
- certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +350 -0
- {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +2 -1
- {brg_certificate → certificate}/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +7 -6
- {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.json +2 -1
- {brg_certificate → certificate}/tests/energy_sub1g/pattern_test/pattern_test.py +7 -6
- {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json +2 -1
- {brg_certificate → certificate}/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py +10 -10
- {brg_certificate → certificate}/tests/sensors/ext_sensor_test/ext_sensor_test.json +5 -4
- certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +450 -0
- certificate/wlt_types.py +122 -0
- {gw_certificate → common}/api_if/202/status.json +6 -0
- {gw_certificate → common}/api_if/203/status.json +6 -0
- {gw_certificate → common}/api_if/204/status.json +6 -0
- common/api_if/206/data.json +85 -0
- common/api_if/206/status.json +69 -0
- common/api_if/api_validation.py +91 -0
- common/web/templates/generator.html +210 -0
- common/web/templates/index.html +20 -0
- common/web/templates/menu.html +54 -0
- common/web/templates/parser.html +53 -0
- {brg_certificate/ag → common/web/templates}/wlt_types.html +1216 -191
- common/web/web_utils.py +399 -0
- {brg_certificate → common}/wltPb_pb2.py +14 -12
- {gw_certificate/common → common}/wltPb_pb2.pyi +16 -2
- gui_certificate/gui_certificate_cli.py +14 -0
- gui_certificate/server.py +1267 -0
- gui_certificate/templates/cert_run.html +1273 -0
- wiliot_certificate-4.5.0.dist-info/METADATA +99 -0
- wiliot_certificate-4.5.0.dist-info/RECORD +168 -0
- {wiliot_certificate-4.4.3.dist-info → wiliot_certificate-4.5.0.dist-info}/WHEEL +1 -1
- wiliot_certificate-4.5.0.dist-info/entry_points.txt +5 -0
- wiliot_certificate-4.5.0.dist-info/top_level.txt +3 -0
- brg_certificate/ag/energous_v0_defines.py +0 -925
- brg_certificate/ag/energous_v1_defines.py +0 -931
- brg_certificate/ag/energous_v2_defines.py +0 -925
- brg_certificate/ag/energous_v3_defines.py +0 -925
- brg_certificate/ag/energous_v4_defines.py +0 -925
- brg_certificate/ag/fanstel_lan_v0_defines.py +0 -925
- brg_certificate/ag/fanstel_lte_v0_defines.py +0 -925
- brg_certificate/ag/fanstel_wifi_v0_defines.py +0 -925
- brg_certificate/ag/minew_lte_v0_defines.py +0 -925
- brg_certificate/ag/wlt_types_ag_jsons/brg2brg_ota.json +0 -142
- brg_certificate/ag/wlt_types_ag_jsons/brg2gw_hb.json +0 -785
- brg_certificate/ag/wlt_types_ag_jsons/brg2gw_hb_sleep.json +0 -139
- brg_certificate/ag/wlt_types_ag_jsons/calibration.json +0 -394
- brg_certificate/ag/wlt_types_ag_jsons/custom.json +0 -515
- brg_certificate/ag/wlt_types_ag_jsons/datapath.json +0 -672
- brg_certificate/ag/wlt_types_ag_jsons/energy2400.json +0 -550
- brg_certificate/ag/wlt_types_ag_jsons/energySub1g.json +0 -595
- brg_certificate/ag/wlt_types_ag_jsons/externalSensor.json +0 -598
- brg_certificate/ag/wlt_types_ag_jsons/interface.json +0 -938
- brg_certificate/ag/wlt_types_ag_jsons/powerManagement.json +0 -1234
- brg_certificate/ag/wlt_types_ag_jsons/side_info_sensor.json +0 -105
- brg_certificate/ag/wlt_types_ag_jsons/signal_indicator_data.json +0 -77
- brg_certificate/ag/wlt_types_ag_jsons/unified_echo_ext_pkt.json +0 -61
- brg_certificate/ag/wlt_types_ag_jsons/unified_echo_pkt.json +0 -110
- brg_certificate/brg_certificate.py +0 -225
- brg_certificate/brg_certificate_cli.py +0 -63
- brg_certificate/cert_common.py +0 -923
- brg_certificate/cert_config.py +0 -402
- brg_certificate/cert_utils.py +0 -362
- brg_certificate/certificate_bcc_sanity_test_list.txt +0 -40
- brg_certificate/certificate_bcc_test_list.txt +0 -48
- brg_certificate/certificate_sanity_test_list.txt +0 -43
- brg_certificate/certificate_test_list.txt +0 -53
- brg_certificate/config/eclipse.json +0 -10
- brg_certificate/config/hivemq.json +0 -10
- brg_certificate/config/mosquitto.json +0 -10
- brg_certificate/config/mosquitto.md +0 -95
- brg_certificate/config/wiliot-dev.json +0 -10
- brg_certificate/restore_brg.py +0 -61
- brg_certificate/tests/calibration/output_power_test/output_power_test.json +0 -16
- brg_certificate/tests/calibration/output_power_test/output_power_test.py +0 -28
- brg_certificate/tests/datapath/aging_test/aging_test.py +0 -143
- brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json +0 -16
- brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py +0 -73
- brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json +0 -17
- brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py +0 -118
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +0 -14
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +0 -396
- brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json +0 -20
- brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.py +0 -94
- brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json +0 -19
- brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.py +0 -87
- brg_certificate/tests/edge_mgmt/leds_test/leds_test.json +0 -17
- brg_certificate/tests/edge_mgmt/leds_test/leds_test.py +0 -223
- brg_certificate/tests/edge_mgmt/ota_test/ota_test.json +0 -17
- brg_certificate/tests/edge_mgmt/ota_test/ota_test.py +0 -128
- brg_certificate/tests/energy2400/output_power_test/output_power_test.json +0 -16
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json +0 -20
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py +0 -321
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json +0 -20
- brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.py +0 -321
- brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.json +0 -20
- brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py +0 -141
- brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json +0 -20
- brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py +0 -276
- brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json +0 -20
- brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py +0 -390
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +0 -16
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +0 -28
- brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +0 -305
- brg_certificate/wltPb_pb2.pyi +0 -234
- brg_certificate/wlt_types.py +0 -113
- gw_certificate/ag/ut_defines.py +0 -364
- gw_certificate/ag/wlt_types.py +0 -85
- gw_certificate/ag/wlt_types_ag.py +0 -5310
- gw_certificate/ag/wlt_types_data.py +0 -64
- gw_certificate/api/extended_api.py +0 -23
- gw_certificate/api_if/200/data.json +0 -106
- gw_certificate/api_if/200/status.json +0 -47
- gw_certificate/api_if/201/data.json +0 -98
- gw_certificate/api_if/201/status.json +0 -53
- gw_certificate/api_if/205/logs.json +0 -12
- gw_certificate/api_if/api_validation.py +0 -38
- gw_certificate/api_if/gw_capabilities.py +0 -54
- gw_certificate/cert_results.py +0 -145
- gw_certificate/common/analysis_data_bricks.py +0 -60
- gw_certificate/common/debug.py +0 -42
- gw_certificate/common/serialization_formatter.py +0 -93
- gw_certificate/common/utils.py +0 -8
- gw_certificate/common/utils_defines.py +0 -15
- gw_certificate/common/wltPb_pb2.py +0 -84
- gw_certificate/gw_certificate.py +0 -154
- gw_certificate/gw_certificate_cli.py +0 -87
- gw_certificate/interface/4.4.93_app.zip +0 -0
- gw_certificate/interface/4.4.93_sd_bl_app.zip +0 -0
- gw_certificate/interface/ble_simulator.py +0 -61
- gw_certificate/interface/ble_sniffer.py +0 -189
- gw_certificate/interface/flash_fw.py +0 -90
- gw_certificate/interface/if_defines.py +0 -36
- gw_certificate/interface/mqtt.py +0 -563
- gw_certificate/interface/nrfutil-linux +0 -0
- gw_certificate/interface/nrfutil-mac +0 -0
- gw_certificate/interface/nrfutil.exe +0 -0
- gw_certificate/interface/pkt_generator.py +0 -594
- gw_certificate/interface/uart_if.py +0 -236
- gw_certificate/interface/uart_ports.py +0 -20
- gw_certificate/templates/results.html +0 -241
- gw_certificate/templates/stage.html +0 -22
- gw_certificate/templates/table.html +0 -6
- gw_certificate/templates/test.html +0 -38
- gw_certificate/tests/__init__.py +0 -10
- gw_certificate/tests/actions.py +0 -289
- gw_certificate/tests/bad_crc_to_PER_quantization.csv +0 -51
- gw_certificate/tests/connection.py +0 -188
- gw_certificate/tests/downlink.py +0 -172
- gw_certificate/tests/generic.py +0 -238
- gw_certificate/tests/registration.py +0 -340
- gw_certificate/tests/static/__init__.py +0 -0
- gw_certificate/tests/static/connection_defines.py +0 -9
- gw_certificate/tests/static/downlink_defines.py +0 -9
- gw_certificate/tests/static/generated_packet_table.py +0 -195
- gw_certificate/tests/static/packet_table.csv +0 -10067
- gw_certificate/tests/static/references.py +0 -5
- gw_certificate/tests/static/uplink_defines.py +0 -14
- gw_certificate/tests/throughput.py +0 -240
- gw_certificate/tests/uplink.py +0 -853
- wiliot_certificate-4.4.3.dist-info/METADATA +0 -211
- wiliot_certificate-4.4.3.dist-info/RECORD +0 -210
- wiliot_certificate-4.4.3.dist-info/entry_points.txt +0 -3
- wiliot_certificate-4.4.3.dist-info/top_level.txt +0 -3
- {brg_certificate → certificate}/__init__.py +0 -0
- {gw_certificate → common}/api_if/202/data.json +0 -0
- {gw_certificate/api_if/200 → common/api_if/202}/logs.json +0 -0
- {gw_certificate → common}/api_if/203/data.json +0 -0
- {gw_certificate/api_if/201 → common/api_if/203}/logs.json +0 -0
- {gw_certificate → common}/api_if/204/data.json +0 -0
- {gw_certificate/api_if/202 → common/api_if/204}/logs.json +0 -0
- {gw_certificate → common}/api_if/205/data.json +0 -0
- {gw_certificate/api_if/203 → common/api_if/205}/logs.json +0 -0
- {gw_certificate → common}/api_if/205/status.json +0 -0
- {gw_certificate/api_if/204 → common/api_if/206}/logs.json +0 -0
- {gw_certificate → common/api_if}/__init__.py +0 -0
- {gw_certificate/api_if → gui_certificate}/__init__.py +0 -0
- {wiliot_certificate-4.4.3.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'
|