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
|
@@ -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,91 @@
|
|
|
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.add_phase(api_validation_phase)
|
|
27
|
+
return test
|
|
28
|
+
elif not test.dut.gw_api_version:
|
|
29
|
+
utPrint("API validation is skipped because no API version was specified", "WARNING")
|
|
30
|
+
api_validation_phase.rc = TEST_FAILED
|
|
31
|
+
api_validation_phase.reason = "API validation is skipped because no API version was specified"
|
|
32
|
+
test.add_phase(api_validation_phase)
|
|
33
|
+
return test
|
|
34
|
+
else:
|
|
35
|
+
def validate_message(message: dict, msg_type=MESSAGE_TYPES.DATA.value) -> tuple[bool, str]:
|
|
36
|
+
json_path = pkg_resources.resource_filename(__name__, f"{test.dut.gw_api_version}/{msg_type}.json")
|
|
37
|
+
with open(json_path) as f:
|
|
38
|
+
relevant_schema = json.load(f)
|
|
39
|
+
validator = Draft202012Validator(relevant_schema)
|
|
40
|
+
valid = validator.is_valid(message)
|
|
41
|
+
errors = [e for e in validator.iter_errors(message)]
|
|
42
|
+
return (valid, errors)
|
|
43
|
+
|
|
44
|
+
utPrint(f"Validating all messages in the test according to API version {test.dut.gw_api_version} validation schema", "BLUE")
|
|
45
|
+
report = []
|
|
46
|
+
phase_passed = True
|
|
47
|
+
for msg_type in MESSAGE_TYPES:
|
|
48
|
+
if msg_type.value == MESSAGE_TYPES.STATUS.value:
|
|
49
|
+
all_msgs = [msg.body for msg in test.get_mqttc_by_target(DUT)._userdata[PKTS].status if GW_LOGS not in msg.body]
|
|
50
|
+
elif msg_type.value == MESSAGE_TYPES.LOGS.value:
|
|
51
|
+
all_msgs = [msg.body for msg in test.get_mqttc_by_target(DUT)._userdata[PKTS].status if GW_LOGS in msg.body]
|
|
52
|
+
else:
|
|
53
|
+
all_msgs = [msg.body for msg in test.get_mqttc_by_target(DUT)._userdata[PKTS].data]
|
|
54
|
+
|
|
55
|
+
utPrint(f"Validating {msg_type.value} messages", "BLUE")
|
|
56
|
+
message_type_passed = True
|
|
57
|
+
total_num_of_errors = 0
|
|
58
|
+
error_report = []
|
|
59
|
+
for idx, message_body in enumerate(all_msgs):
|
|
60
|
+
if msg_type.value == MESSAGE_TYPES.DATA.value and len(message_body[PACKETS]) == 0:
|
|
61
|
+
continue
|
|
62
|
+
validation = validate_message(message_body, msg_type.value)
|
|
63
|
+
errors = []
|
|
64
|
+
for e in validation[1]:
|
|
65
|
+
if e.message not in errors:
|
|
66
|
+
errors.append(e.message)
|
|
67
|
+
if not validation[0]:
|
|
68
|
+
phase_passed = False
|
|
69
|
+
message_type_passed = False
|
|
70
|
+
total_num_of_errors += len(errors)
|
|
71
|
+
error_report.append(f'The errors in message (idx={idx}, json timestamp={message_body.get(TIMESTAMP)}) Errors:')
|
|
72
|
+
for idx, e in enumerate(errors):
|
|
73
|
+
error_report.append(f'Error number {idx}:\n {e}')
|
|
74
|
+
report.append("\n")
|
|
75
|
+
report.append(f'Summary for {msg_type.value} messages')
|
|
76
|
+
report.append({'valid': {message_type_passed}, 'num of errors': total_num_of_errors})
|
|
77
|
+
report.append('******************************************************\n')
|
|
78
|
+
report.extend(error_report)
|
|
79
|
+
utPrint("\nAPI validation errors:", "BLUE")
|
|
80
|
+
for line in report:
|
|
81
|
+
print(line)
|
|
82
|
+
report_path = os.path.join(ARTIFACTS_DIR, test.dir, 'api_validation_report.txt')
|
|
83
|
+
with open(report_path, 'w') as f:
|
|
84
|
+
for line in report:
|
|
85
|
+
f.write(str(line) + '\n')
|
|
86
|
+
if not phase_passed:
|
|
87
|
+
api_validation_phase.rc = TEST_FAILED
|
|
88
|
+
api_validation_phase.reason = "API (JSON strcture) is invalid"
|
|
89
|
+
field_functionality_pass_fail_print(api_validation_phase, API_VALIDATION)
|
|
90
|
+
test.add_phase(api_validation_phase)
|
|
91
|
+
return test
|
|
@@ -0,0 +1,210 @@
|
|
|
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 class="row mb-3">
|
|
25
|
+
<div class="col-md-6">
|
|
26
|
+
<label for="filter_category" class="form-label"><strong>Filter by Type:</strong></label>
|
|
27
|
+
<select class="form-select" id="filter_category" name="filter_category" onchange="applyFilters()">
|
|
28
|
+
<option value="">All Types</option>
|
|
29
|
+
{% for cat in categories %}
|
|
30
|
+
<option value="{{ cat }}" {% if cat == filter_category or (not filter_category and cat == 'Module') %}selected{% endif %}>{{ cat }}</option>
|
|
31
|
+
{% endfor %}
|
|
32
|
+
</select>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="col-md-6">
|
|
35
|
+
<label for="filter_version" class="form-label"><strong>Filter by API Version:</strong></label>
|
|
36
|
+
<select class="form-select" id="filter_version" name="filter_version" onchange="applyFilters()">
|
|
37
|
+
<option value="">All Versions</option>
|
|
38
|
+
{% for ver in api_versions %}
|
|
39
|
+
<option value="{{ ver }}" {% if ver == filter_version or (not filter_version and ver|int == API_VERSION_LATEST) %}selected{% endif %}>V{{ ver }}</option>
|
|
40
|
+
{% endfor %}
|
|
41
|
+
</select>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<hr>
|
|
45
|
+
<div id="builder_form">
|
|
46
|
+
{% for n in pkt_types_list %}
|
|
47
|
+
<div class="form-check form-check-inline pkt-radio"
|
|
48
|
+
data-category="{{ pkt_metadata.get(n, {}).get('category', 'Other') }}"
|
|
49
|
+
data-version="{{ pkt_metadata.get(n, {}).get('api_version', '') }}">
|
|
50
|
+
<input class="form-check-input" type="radio" name="radios" value="{{ n }}" id="radio_{{ n }}"
|
|
51
|
+
{% if n == wanted_pkt_type %}checked{% endif %} onclick="show();">
|
|
52
|
+
<label class="form-check-label" for="radio_{{ n }}">{{ n }}</label>
|
|
53
|
+
</div>
|
|
54
|
+
{% endfor %}
|
|
55
|
+
{% for n,p in pkt_types.items() %}
|
|
56
|
+
<div id="{{ n }}_form" style="display: none;">
|
|
57
|
+
<hr>
|
|
58
|
+
{% for k,v in p.__dict__.items() %}
|
|
59
|
+
<div class="row">
|
|
60
|
+
<label for="{{ n }}_{{ k }}" class="col-sm-2">{{ k }}:</label>
|
|
61
|
+
{% set field_name = n + '_' + k %}
|
|
62
|
+
{% set saved_value = form_values.get(field_name, '') %}
|
|
63
|
+
{% if saved_value %}
|
|
64
|
+
{% set display_value = saved_value %}
|
|
65
|
+
{% elif k == 'brg_mac' or k == 'pkt_size' or k == 'ad_type' or k == 'uuid_msb' or k == 'uuid_lsb' or k == 'group_id' %}
|
|
66
|
+
{% set display_value = '0x' + ('%0x' % v).upper() %}
|
|
67
|
+
{% else %}
|
|
68
|
+
{% set display_value = v %}
|
|
69
|
+
{% endif %}
|
|
70
|
+
<input type="text" class="col-sm-4" name="{{ n }}_{{ k }}" value="{{ display_value }}">
|
|
71
|
+
</div>
|
|
72
|
+
{% endfor %}
|
|
73
|
+
</div>
|
|
74
|
+
{% endfor %}
|
|
75
|
+
</div>
|
|
76
|
+
<hr>
|
|
77
|
+
<div class="row">
|
|
78
|
+
<button type="submit" class="btn btn-primary col-sm-12">Build Packet</button>
|
|
79
|
+
</div>
|
|
80
|
+
</form>
|
|
81
|
+
<br>
|
|
82
|
+
<br>
|
|
83
|
+
<div class="card">
|
|
84
|
+
<div class="card-header">
|
|
85
|
+
Output
|
|
86
|
+
</div>
|
|
87
|
+
<div class="card-body" id="card-body">
|
|
88
|
+
<samp>{{ output | safe }}</samp>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<br>
|
|
92
|
+
<br>
|
|
93
|
+
<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>
|
|
94
|
+
<script>
|
|
95
|
+
var pktMetadata = {{ pkt_metadata | tojson | safe }};
|
|
96
|
+
|
|
97
|
+
function applyFilters() {
|
|
98
|
+
const categoryFilter = document.getElementById('filter_category').value;
|
|
99
|
+
const versionFilter = document.getElementById('filter_version').value;
|
|
100
|
+
const radioContainers = document.querySelectorAll('.pkt-radio');
|
|
101
|
+
radioContainers.forEach(function(container) {
|
|
102
|
+
const category = container.getAttribute('data-category');
|
|
103
|
+
const version = container.getAttribute('data-version');
|
|
104
|
+
const radio = container.querySelector('input[type="radio"]');
|
|
105
|
+
let show = true;
|
|
106
|
+
// Filter by category
|
|
107
|
+
if (categoryFilter && category !== categoryFilter) {
|
|
108
|
+
show = false;
|
|
109
|
+
}
|
|
110
|
+
// Filter by version
|
|
111
|
+
if (versionFilter && version !== versionFilter) {
|
|
112
|
+
show = false;
|
|
113
|
+
}
|
|
114
|
+
// Show/hide the container
|
|
115
|
+
if (show) {
|
|
116
|
+
container.style.display = 'inline-block';
|
|
117
|
+
} else {
|
|
118
|
+
container.style.display = 'none';
|
|
119
|
+
// Uncheck if hidden
|
|
120
|
+
if (radio.checked) {
|
|
121
|
+
radio.checked = false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const form = document.getElementById('form');
|
|
128
|
+
const group_id_brg2gw = {{ GROUP_ID_BRG2GW }};
|
|
129
|
+
const group_id_gw2brg = {{ GROUP_ID_GW2BRG }};
|
|
130
|
+
const group_id_side_info_sensor = {{ GROUP_ID_SIDE_INFO_SENSOR }};
|
|
131
|
+
const group_id_side_info = {{ GROUP_ID_SIDE_INFO }};
|
|
132
|
+
const group_id_signal_indicator = {{ GROUP_ID_SIGNAL_INDICATOR }};
|
|
133
|
+
const group_id_unified_v0 = {{ GROUP_ID_UNIFIED_PKT_V0 }};
|
|
134
|
+
const group_id_unified_v1 = {{ GROUP_ID_UNIFIED_PKT_V1 }};
|
|
135
|
+
const group_id_unified_v2 = {{ GROUP_ID_UNIFIED_PKT_V2 }};
|
|
136
|
+
const group_id_unified_ext_v0 = {{ GROUP_ID_BLE5_EXTENDED_V0 }};
|
|
137
|
+
const group_id_unified_ext_v1 = {{ GROUP_ID_BLE5_EXTENDED_V1 }};
|
|
138
|
+
var pktTypes = {{ pkt_types_list | tojson | safe }};
|
|
139
|
+
|
|
140
|
+
function showPktForm(pktType) {
|
|
141
|
+
// Hide all packet forms
|
|
142
|
+
pktTypes.forEach(function(type) {
|
|
143
|
+
var formEl = document.getElementById(type + "_form");
|
|
144
|
+
if (formEl) formEl.style.display = 'none';
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// Show appropriate header and packet form
|
|
148
|
+
if (pktType && pktType.includes("Unified")) {
|
|
149
|
+
document.getElementById("Hdr_form").style.display = 'none';
|
|
150
|
+
document.getElementById("DataHdr_form").style.display = 'block';
|
|
151
|
+
var default_value = 0;
|
|
152
|
+
if (pktType.includes("V0")) {
|
|
153
|
+
default_value = pktType.includes("Ext") ? group_id_unified_ext_v0 : group_id_unified_v0;
|
|
154
|
+
} else if (pktType.includes("V1")) {
|
|
155
|
+
default_value = pktType.includes("Ext") ? group_id_unified_ext_v1 : group_id_unified_v1;
|
|
156
|
+
} else if (pktType.includes("V2")) {
|
|
157
|
+
default_value = group_id_unified_v2;
|
|
158
|
+
}
|
|
159
|
+
if (form.elements.DataHdr_group_id_major) {
|
|
160
|
+
form.elements.DataHdr_group_id_major.value = "0x" + default_value.toString(16).toUpperCase();
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
document.getElementById("Hdr_form").style.display = 'block';
|
|
164
|
+
document.getElementById("DataHdr_form").style.display = 'none';
|
|
165
|
+
var default_value = 0;
|
|
166
|
+
if (pktType && pktType.includes("Brg2Gw")) {
|
|
167
|
+
default_value = group_id_brg2gw;
|
|
168
|
+
} else if (pktType && pktType.includes("Gw2Brg")) {
|
|
169
|
+
default_value = group_id_gw2brg;
|
|
170
|
+
} else if (pktType && pktType.includes("SignalIndicator")) {
|
|
171
|
+
default_value = group_id_signal_indicator;
|
|
172
|
+
} else if (pktType && pktType.includes("SideInfoSensor")) {
|
|
173
|
+
default_value = group_id_side_info_sensor;
|
|
174
|
+
} else if (pktType && pktType.includes("SideInfo")) {
|
|
175
|
+
default_value = group_id_side_info;
|
|
176
|
+
}
|
|
177
|
+
if (form.elements.Hdr_group_id) {
|
|
178
|
+
form.elements.Hdr_group_id.value = "0x" + default_value.toString(16).toUpperCase();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Show the selected packet form
|
|
183
|
+
if (pktType) {
|
|
184
|
+
var pktForm = document.getElementById(pktType + "_form");
|
|
185
|
+
if (pktForm) pktForm.style.display = 'block';
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function show() {
|
|
190
|
+
// Set up click handlers
|
|
191
|
+
var radios = document.getElementsByName("radios");
|
|
192
|
+
for (var i = 0; i < radios.length; i++) {
|
|
193
|
+
radios[i].onclick = function() {
|
|
194
|
+
showPktForm(this.value);
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Show form for checked radio (if any)
|
|
199
|
+
for (var i = 0; i < radios.length; i++) {
|
|
200
|
+
if (radios[i].checked) {
|
|
201
|
+
showPktForm(radios[i].value);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
applyFilters(); // Apply filters on page load
|
|
207
|
+
show(); // Initialize form display (will show selected packet form if one is checked)
|
|
208
|
+
</script>
|
|
209
|
+
</body>
|
|
210
|
+
</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>
|