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.
- {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.2.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.91_app.zip +0 -0
- gw_certificate/interface/4.4.91_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.2.dist-info/METADATA +0 -211
- wiliot_certificate-4.4.2.dist-info/RECORD +0 -210
- wiliot_certificate-4.4.2.dist-info/entry_points.txt +0 -3
- wiliot_certificate-4.4.2.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.2.dist-info → wiliot_certificate-4.5.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,305 +0,0 @@
|
|
|
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
|
|
6
|
-
import brg_certificate.cert_mqtt as cert_mqtt
|
|
7
|
-
import csv
|
|
8
|
-
# test MACROS definitions #
|
|
9
|
-
DEFAULT_SENSOR_PAYLOAD_DATA = "0200002929B0FFF98DB104FA68BD5491456B55CC18AADB"
|
|
10
|
-
DEFAULT_ADVA0 = "112233445566"
|
|
11
|
-
DEFAULT_ADVA1 = "778899AABBCC"
|
|
12
|
-
ERM_SMART_MS_PAYLOAD = "0201060303374C17FFAE0421EF9DE99CE7AE7C5EB13B744D401CC6CFCF0107"
|
|
13
|
-
ZEBRA_PRINTER_PAYLOAD = "0201020F0958585A564A323331363038333435030279FEA5A5A5A5A5A5A5A5"
|
|
14
|
-
DEFAULT_SPECIAL_PAYLOAD = ZEBRA_PRINTER_PAYLOAD
|
|
15
|
-
DEFAULT_PACKET_LENGTH = "1E"
|
|
16
|
-
|
|
17
|
-
SCAN_TIMEOUT = 60
|
|
18
|
-
|
|
19
|
-
# UUID defines for logs review #
|
|
20
|
-
ERM_SMART_MS_UUID = 0xFFAE04
|
|
21
|
-
ZEBRA_PRINTER_UUID = 0x0279FE
|
|
22
|
-
UUID_0 = ZEBRA_PRINTER_UUID
|
|
23
|
-
UUID_1 = 0x987654
|
|
24
|
-
SCRAMBLE_ON = 0x01
|
|
25
|
-
SCRAMBLE_OFF = 0x00
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def uuid_scramble_cfg_add(uuid, scramble):
|
|
29
|
-
return uuid << 8 | scramble
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def unscramble(packet):
|
|
33
|
-
unscrambled_packet_id = int(hex(packet[RSSI])[2:] + packet[SENSOR_ID][-6:], 16) # transforming parameters string to hex format
|
|
34
|
-
for idx in range(6, 60, 8):
|
|
35
|
-
current_word = int(packet[PAYLOAD][idx: idx + 8], 16)
|
|
36
|
-
unscrambled_packet_id ^= current_word
|
|
37
|
-
return packet[PAYLOAD][8:-8] + hex(unscrambled_packet_id)[2:]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def find_packet_in_csv(unscrambled_payload):
|
|
41
|
-
base_path = os.path.dirname(os.path.abspath(__file__))
|
|
42
|
-
with open(f'{base_path}/out_sensor_data.csv', 'r') as csv_file:
|
|
43
|
-
csv_reader = csv.DictReader(csv_file)
|
|
44
|
-
next(csv_reader) # stepping over the header line
|
|
45
|
-
for line in csv_reader:
|
|
46
|
-
raw_data_payload = line['raw packet'][20:]
|
|
47
|
-
if raw_data_payload[:8] == unscrambled_payload[:8]:
|
|
48
|
-
return True
|
|
49
|
-
return False
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# Test functions description #
|
|
53
|
-
def create_csv_file_in(test, length=500):
|
|
54
|
-
if test.data != DATA_SIMULATION:
|
|
55
|
-
return []
|
|
56
|
-
else:
|
|
57
|
-
base_path = os.path.dirname(os.path.abspath(__file__))
|
|
58
|
-
pkts = []
|
|
59
|
-
payload_0 = DEFAULT_ADVA0 + DEFAULT_SPECIAL_PAYLOAD
|
|
60
|
-
payload_1 = DEFAULT_ADVA1 + DEFAULT_PACKET_LENGTH + cert_common.int2mac_get(UUID_1)[6:] + DEFAULT_SENSOR_PAYLOAD_DATA
|
|
61
|
-
with open(f"{base_path}/in_sensor_data.csv", "w+") as f:
|
|
62
|
-
f.write("raw packet,output power,delay,duplicates,channel,COM\n")
|
|
63
|
-
for i in range(length):
|
|
64
|
-
f.write(payload_0 + ",8,200,6,37,COM3\n")
|
|
65
|
-
f.write(payload_1 + "{:08X}".format(i) + ",8,200,6,37,COM3\n")
|
|
66
|
-
pkts.append(payload_0)
|
|
67
|
-
pkts.append(payload_1 + "{:08X}".format(i))
|
|
68
|
-
return pkts
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def create_csv_file_out(test):
|
|
72
|
-
if test.data != DATA_SIMULATION:
|
|
73
|
-
return
|
|
74
|
-
else:
|
|
75
|
-
base_path = os.path.dirname(os.path.abspath(__file__))
|
|
76
|
-
uuid_0 = cert_common.int2mac_get(UUID_0)[6:]
|
|
77
|
-
with (open(f"{base_path}/in_sensor_data.csv", "r") as csv_in,
|
|
78
|
-
open(f"{base_path}/out_sensor_data.csv", "w") as csv_out):
|
|
79
|
-
csv_out.write("raw packet,output power,delay,duplicates,channel,COM\n")
|
|
80
|
-
csv_in = csv.DictReader(csv_in)
|
|
81
|
-
next(csv_in) # stepping over the header line
|
|
82
|
-
for line in csv_in:
|
|
83
|
-
input_payload = line['raw packet'][12:]
|
|
84
|
-
if uuid_0 in input_payload:
|
|
85
|
-
csv_out.write(DEFAULT_ADVA0 + process_sensor_payload(input_payload, uuid_0) + ",8,200,6,37,COM3\n")
|
|
86
|
-
else:
|
|
87
|
-
csv_out.write(line['raw packet'] + ",8,200,6,37,COM3\n")
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def process_sensor_payload(payload, uuid):
|
|
91
|
-
uuid_idx = payload.find(uuid)
|
|
92
|
-
if uuid_idx == -1:
|
|
93
|
-
raise ValueError(f"Pattern {uuid_idx} not found in the packet")
|
|
94
|
-
|
|
95
|
-
len = int(payload[uuid_idx - 2:uuid_idx], 16)
|
|
96
|
-
segment_start_idx = uuid_idx - 2
|
|
97
|
-
segment_end_idx = uuid_idx + len * 2
|
|
98
|
-
segment = payload[segment_start_idx:segment_end_idx]
|
|
99
|
-
output = segment + payload[:segment_start_idx] + payload[segment_end_idx:]
|
|
100
|
-
return output
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
def pkts_get(test, phase):
|
|
104
|
-
test.mqttc.flush_pkts()
|
|
105
|
-
mqtt_scan_wait(test, duration=SCAN_TIMEOUT)
|
|
106
|
-
sensor_pkts = cert_mqtt.get_all_sensor_pkts(test)
|
|
107
|
-
generate_log_file(test, phase)
|
|
108
|
-
|
|
109
|
-
if len(sensor_pkts) == 0:
|
|
110
|
-
if phase != "tag_data_only" and phase != "rssi_threshold":
|
|
111
|
-
test.rc = TEST_FAILED
|
|
112
|
-
test.add_reason(f"Phase {phase} failed - didn't find any sensor packets")
|
|
113
|
-
else:
|
|
114
|
-
if phase == "tag_data_only":
|
|
115
|
-
test.rc = TEST_FAILED
|
|
116
|
-
test.add_reason(f"Phase {phase} failed - found sensor packets")
|
|
117
|
-
sensor0_pkts = [p[SENSOR_UUID] == f"{UUID_0:06X}" for p in sensor_pkts]
|
|
118
|
-
if phase == "snsr0_scrmbl_snsr1_no_scrmbl" or phase == "snsr0_scrmbl_snsr1_scrmbl" or phase == "snsr0_no_scrmbl":
|
|
119
|
-
if not any(sensor0_pkts):
|
|
120
|
-
test.rc = TEST_FAILED
|
|
121
|
-
test.add_reason(f"Phase {phase} failed - didn't find any sensor0 packets")
|
|
122
|
-
sensor1_pkts = [p[SENSOR_UUID] == f"{UUID_1:06X}" for p in sensor_pkts]
|
|
123
|
-
if phase == "snsr0_scrmbl_snsr1_no_scrmbl" or phase == "snsr0_scrmbl_snsr1_scrmbl" or phase == "snsr1_scrmbl":
|
|
124
|
-
if not any(sensor1_pkts):
|
|
125
|
-
test.rc = TEST_FAILED
|
|
126
|
-
test.add_reason(f"Phase {phase} failed - didn't find any sensor1 packets")
|
|
127
|
-
|
|
128
|
-
return sensor_pkts
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
def test_tag_data_only(test, phase, _):
|
|
132
|
-
pkts_get(test, phase)
|
|
133
|
-
return test
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
def test_rssi_threshold(test, phase, ext_sensors_module):
|
|
137
|
-
rssi_threshold = -25
|
|
138
|
-
# Config
|
|
139
|
-
utPrint(f"UUID_0 only without scrambling, RSSI Threshold = {rssi_threshold}\n", "BLUE")
|
|
140
|
-
sensor0 = uuid_scramble_cfg_add(UUID_0, SCRAMBLE_OFF)
|
|
141
|
-
test = cert_config.brg_configure(test=test, module=ext_sensors_module,
|
|
142
|
-
fields=[BRG_SENSOR0, BRG_RSSI_THRESHOLD], values=[sensor0, rssi_threshold])[0]
|
|
143
|
-
# Analyze
|
|
144
|
-
sensor_pkts = pkts_get(test, phase)
|
|
145
|
-
if test.rc == TEST_FAILED:
|
|
146
|
-
return test
|
|
147
|
-
rssi_threshold_viloation_pkts = [p for p in sensor_pkts if p[RSSI] >= -1 * rssi_threshold]
|
|
148
|
-
if rssi_threshold_viloation_pkts:
|
|
149
|
-
test.rc = TEST_FAILED
|
|
150
|
-
test.add_reason("rssi_threshold phase failed - received"
|
|
151
|
-
f" {len(rssi_threshold_viloation_pkts)} sensor packets\n with RSSI weaker than {rssi_threshold}")
|
|
152
|
-
return test
|
|
153
|
-
return test
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
def test_snsr0_no_scrmbl(test, phase, ext_sensors_module):
|
|
157
|
-
# Config
|
|
158
|
-
utPrint("UUID_0 only without scrambling - UUID is 0x{:06X}".format(UUID_0), "BLUE")
|
|
159
|
-
sensor0 = uuid_scramble_cfg_add(UUID_0, SCRAMBLE_OFF)
|
|
160
|
-
test = cert_config.brg_configure(test=test, module=ext_sensors_module, fields=[BRG_SENSOR0], values=[sensor0])[0]
|
|
161
|
-
if test.rc == TEST_FAILED:
|
|
162
|
-
test.add_reason(f"Configuration for phase {phase} failed")
|
|
163
|
-
return test
|
|
164
|
-
# Analyze
|
|
165
|
-
sensor_pkts = pkts_get(test, phase)
|
|
166
|
-
if test.rc == TEST_FAILED:
|
|
167
|
-
return test
|
|
168
|
-
for p in sensor_pkts:
|
|
169
|
-
if p[SENSOR_UUID] != "{:06X}".format(UUID_0):
|
|
170
|
-
test.rc = TEST_FAILED
|
|
171
|
-
test.add_reason(f"Phase {phase} failed - received packets from an un-registered sensor")
|
|
172
|
-
return test
|
|
173
|
-
unscrambled_payload = p[PAYLOAD][8:]
|
|
174
|
-
if find_packet_in_csv(unscrambled_payload) is False:
|
|
175
|
-
test.rc = TEST_FAILED
|
|
176
|
-
test.add_reason(f"Phase {phase} failed - couldn't find unscrambled payload")
|
|
177
|
-
return test
|
|
178
|
-
return test
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
def test_snsr1_scrmbl(test, phase, ext_sensors_module):
|
|
182
|
-
# Config
|
|
183
|
-
utPrint("UUID_1 only with scrambling - UUID is 0x{:06X}".format(UUID_1), "BLUE")
|
|
184
|
-
sensor1 = uuid_scramble_cfg_add(UUID_1, SCRAMBLE_ON)
|
|
185
|
-
test = cert_config.brg_configure(test=test, module=ext_sensors_module, fields=[BRG_SENSOR1], values=[sensor1])[0]
|
|
186
|
-
if test.rc == TEST_FAILED:
|
|
187
|
-
test.add_reason(f"Configuration for phase {phase} failed")
|
|
188
|
-
return test
|
|
189
|
-
# Analyze
|
|
190
|
-
sensor_pkts = pkts_get(test, phase)
|
|
191
|
-
if test.rc == TEST_FAILED:
|
|
192
|
-
return test
|
|
193
|
-
for p in sensor_pkts:
|
|
194
|
-
if p[SENSOR_UUID] != "{:06X}".format(UUID_1):
|
|
195
|
-
test.rc = TEST_FAILED
|
|
196
|
-
test.add_reason(f"Phase {phase} failed - received packets from an un-registered sensor")
|
|
197
|
-
return test
|
|
198
|
-
unscrambled_payload = unscramble(p)
|
|
199
|
-
if find_packet_in_csv(unscrambled_payload) is False:
|
|
200
|
-
test.rc = TEST_FAILED
|
|
201
|
-
test.add_reason(f"Phase {phase} failed - scrambling algorithm error")
|
|
202
|
-
return test
|
|
203
|
-
return test
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
def test_snsr0_scrmbl_snsr1_no_scrmbl(test, phase, ext_sensors_module):
|
|
207
|
-
# Config
|
|
208
|
-
print(f"UUID_0 with scrambling, UUID_1 without scrambling, {SCAN_TIMEOUT} sec\n")
|
|
209
|
-
sensor0 = uuid_scramble_cfg_add(UUID_0, SCRAMBLE_ON)
|
|
210
|
-
sensor1 = uuid_scramble_cfg_add(UUID_1, SCRAMBLE_OFF)
|
|
211
|
-
test = cert_config.brg_configure(test=test, module=ext_sensors_module, fields=[BRG_SENSOR0, BRG_SENSOR1], values=[sensor0, sensor1])[0]
|
|
212
|
-
if test.rc == TEST_FAILED:
|
|
213
|
-
test.add_reason(f"Configuration for phase {phase} failed")
|
|
214
|
-
return test
|
|
215
|
-
# Analyze
|
|
216
|
-
sensor_pkts = pkts_get(test, phase)
|
|
217
|
-
if test.rc == TEST_FAILED:
|
|
218
|
-
return test
|
|
219
|
-
for p in sensor_pkts:
|
|
220
|
-
if p[SENSOR_UUID] == "{:06X}".format(UUID_0):
|
|
221
|
-
unscrambled_payload = unscramble(p)
|
|
222
|
-
if find_packet_in_csv(unscrambled_payload) is False:
|
|
223
|
-
test.rc = TEST_FAILED
|
|
224
|
-
test.add_reason(f"Phase {phase} failed - scrambling algorithm error")
|
|
225
|
-
return test
|
|
226
|
-
if p[SENSOR_UUID] == "{:06X}".format(UUID_1):
|
|
227
|
-
unscrambled_payload = p[PAYLOAD][8:]
|
|
228
|
-
if find_packet_in_csv(unscrambled_payload) is False:
|
|
229
|
-
test.rc = TEST_FAILED
|
|
230
|
-
test.add_reason(f"Phase {phase} failed - couldn't find unscrambled payload")
|
|
231
|
-
return test
|
|
232
|
-
return test
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
def test_snsr0_scrmbl_snsr1_scrmbl(test, phase, ext_sensors_module):
|
|
236
|
-
# Config
|
|
237
|
-
utPrint(f"UUID_0 with scrambling, UUID_1 with scrambling, {SCAN_TIMEOUT} sec\n", "BLUE")
|
|
238
|
-
sensor0 = uuid_scramble_cfg_add(UUID_0, SCRAMBLE_ON)
|
|
239
|
-
sensor1 = uuid_scramble_cfg_add(UUID_1, SCRAMBLE_ON)
|
|
240
|
-
test = cert_config.brg_configure(test=test, module=ext_sensors_module, fields=[BRG_SENSOR0, BRG_SENSOR1], values=[sensor0, sensor1])[0]
|
|
241
|
-
if test.rc == TEST_FAILED:
|
|
242
|
-
return test
|
|
243
|
-
# Analyze
|
|
244
|
-
sensor_pkts = pkts_get(test, phase)
|
|
245
|
-
if test.rc == TEST_FAILED:
|
|
246
|
-
return test
|
|
247
|
-
for p in sensor_pkts:
|
|
248
|
-
unscrambled_payload = unscramble(p)
|
|
249
|
-
if find_packet_in_csv(unscrambled_payload) is False:
|
|
250
|
-
test.rc = TEST_FAILED
|
|
251
|
-
test.add_reason(f"Phase {phase} failed - scrambling algorithm error")
|
|
252
|
-
return test
|
|
253
|
-
return test
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
EXT_SENSOR_TEST_MAP = {"tag_data_only": test_tag_data_only,
|
|
257
|
-
"rssi_threshold": test_rssi_threshold,
|
|
258
|
-
"snsr0_no_scrmbl": test_snsr0_no_scrmbl,
|
|
259
|
-
"snsr1_scrmbl": test_snsr1_scrmbl,
|
|
260
|
-
"snsr0_scrmbl_snsr1_no_scrmbl": test_snsr0_scrmbl_snsr1_no_scrmbl,
|
|
261
|
-
"snsr0_scrmbl_snsr1_scrmbl": test_snsr0_scrmbl_snsr1_scrmbl}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
def run(test):
|
|
265
|
-
datapath_module = test.active_brg.datapath
|
|
266
|
-
ext_sensors_module = test.active_brg.sensors
|
|
267
|
-
test = cert_common.test_prolog(test)
|
|
268
|
-
# check for problems in prolog
|
|
269
|
-
if test.rc == TEST_FAILED:
|
|
270
|
-
test = cert_common.test_epilog(test)
|
|
271
|
-
return test
|
|
272
|
-
|
|
273
|
-
# Adaptation of GW configuration for internal BRG test
|
|
274
|
-
if test.internal_brg:
|
|
275
|
-
test = cert_config.brg_configure(test, fields=[BRG_RX_CHANNEL], values=[ag.RX_CHANNEL_37], module=datapath_module, wait=True)[0]
|
|
276
|
-
if test.rc == TEST_FAILED and test.exit_on_param_failure:
|
|
277
|
-
return cert_common.test_epilog(test, revert_gws=True)
|
|
278
|
-
|
|
279
|
-
# create csv file for the test
|
|
280
|
-
in_pkts = create_csv_file_in(test)
|
|
281
|
-
create_csv_file_out(test)
|
|
282
|
-
|
|
283
|
-
if test.data == DATA_SIMULATION:
|
|
284
|
-
# start generating sensor pkts and send them using data simulator
|
|
285
|
-
pixel_sim_thread = cert_data_sim.DataSimThread(test=test, num_of_pixels=len(in_pkts), duplicates=6, delay=200,
|
|
286
|
-
pkt_types=[0], pixels_type=RAW_DATA, pkts=in_pkts)
|
|
287
|
-
pixel_sim_thread.start()
|
|
288
|
-
ble_sim_thread = pixel_sim_thread
|
|
289
|
-
|
|
290
|
-
for param in test.params:
|
|
291
|
-
functionality_run_print(param.name)
|
|
292
|
-
test = EXT_SENSOR_TEST_MAP[param.value](test, param.name, ext_sensors_module)
|
|
293
|
-
field_functionality_pass_fail_print(test, param.name)
|
|
294
|
-
test.set_phase_rc(param.name, test.rc)
|
|
295
|
-
test.add_phase_reason(param.name, test.reason)
|
|
296
|
-
if test.rc == TEST_FAILED:
|
|
297
|
-
if test.exit_on_param_failure:
|
|
298
|
-
break # break the whole for loop and keep the test as failed
|
|
299
|
-
test.reset_result() # reset result and continue to next param
|
|
300
|
-
|
|
301
|
-
# Kill the ble simulator
|
|
302
|
-
if test.data == DATA_SIMULATION:
|
|
303
|
-
ble_sim_thread.stop()
|
|
304
|
-
|
|
305
|
-
return cert_common.test_epilog(test, revert_brgs=True, modules=[ext_sensors_module, datapath_module])
|
brg_certificate/wltPb_pb2.pyi
DELETED
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
from google.protobuf.internal import containers as _containers
|
|
2
|
-
from google.protobuf import descriptor as _descriptor
|
|
3
|
-
from google.protobuf import message as _message
|
|
4
|
-
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
|
|
5
|
-
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
|
|
6
|
-
|
|
7
|
-
DESCRIPTOR: _descriptor.FileDescriptor
|
|
8
|
-
|
|
9
|
-
class Location(_message.Message):
|
|
10
|
-
__slots__ = ("lat", "lng")
|
|
11
|
-
LAT_FIELD_NUMBER: _ClassVar[int]
|
|
12
|
-
LNG_FIELD_NUMBER: _ClassVar[int]
|
|
13
|
-
lat: float
|
|
14
|
-
lng: float
|
|
15
|
-
def __init__(self, lat: _Optional[float] = ..., lng: _Optional[float] = ...) -> None: ...
|
|
16
|
-
|
|
17
|
-
class Value(_message.Message):
|
|
18
|
-
__slots__ = ("integerValue", "numberValue", "stringValue", "boolValue")
|
|
19
|
-
INTEGERVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
20
|
-
NUMBERVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
21
|
-
STRINGVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
22
|
-
BOOLVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
23
|
-
integerValue: int
|
|
24
|
-
numberValue: float
|
|
25
|
-
stringValue: str
|
|
26
|
-
boolValue: bool
|
|
27
|
-
def __init__(self, integerValue: _Optional[int] = ..., numberValue: _Optional[float] = ..., stringValue: _Optional[str] = ..., boolValue: bool = ...) -> None: ...
|
|
28
|
-
|
|
29
|
-
class GatewayData(_message.Message):
|
|
30
|
-
__slots__ = ("gatewayId", "timestamp", "packets", "location")
|
|
31
|
-
class Packet(_message.Message):
|
|
32
|
-
__slots__ = ("payload", "timestamp", "sequenceId", "rssi", "aliasBridgeId")
|
|
33
|
-
PAYLOAD_FIELD_NUMBER: _ClassVar[int]
|
|
34
|
-
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
|
|
35
|
-
SEQUENCEID_FIELD_NUMBER: _ClassVar[int]
|
|
36
|
-
RSSI_FIELD_NUMBER: _ClassVar[int]
|
|
37
|
-
ALIASBRIDGEID_FIELD_NUMBER: _ClassVar[int]
|
|
38
|
-
payload: bytes
|
|
39
|
-
timestamp: int
|
|
40
|
-
sequenceId: int
|
|
41
|
-
rssi: int
|
|
42
|
-
aliasBridgeId: str
|
|
43
|
-
def __init__(self, payload: _Optional[bytes] = ..., timestamp: _Optional[int] = ..., sequenceId: _Optional[int] = ..., rssi: _Optional[int] = ..., aliasBridgeId: _Optional[str] = ...) -> None: ...
|
|
44
|
-
GATEWAYID_FIELD_NUMBER: _ClassVar[int]
|
|
45
|
-
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
|
|
46
|
-
PACKETS_FIELD_NUMBER: _ClassVar[int]
|
|
47
|
-
LOCATION_FIELD_NUMBER: _ClassVar[int]
|
|
48
|
-
gatewayId: str
|
|
49
|
-
timestamp: int
|
|
50
|
-
packets: _containers.RepeatedCompositeFieldContainer[GatewayData.Packet]
|
|
51
|
-
location: Location
|
|
52
|
-
def __init__(self, gatewayId: _Optional[str] = ..., timestamp: _Optional[int] = ..., packets: _Optional[_Iterable[_Union[GatewayData.Packet, _Mapping]]] = ..., location: _Optional[_Union[Location, _Mapping]] = ...) -> None: ...
|
|
53
|
-
|
|
54
|
-
class UplinkMessage(_message.Message):
|
|
55
|
-
__slots__ = ("gatewayStatus", "gatewayInfo", "gatewayLogs", "actionStatus")
|
|
56
|
-
GATEWAYSTATUS_FIELD_NUMBER: _ClassVar[int]
|
|
57
|
-
GATEWAYINFO_FIELD_NUMBER: _ClassVar[int]
|
|
58
|
-
GATEWAYLOGS_FIELD_NUMBER: _ClassVar[int]
|
|
59
|
-
ACTIONSTATUS_FIELD_NUMBER: _ClassVar[int]
|
|
60
|
-
gatewayStatus: GatewayStatus
|
|
61
|
-
gatewayInfo: GatewayInfo
|
|
62
|
-
gatewayLogs: GatewayLogs
|
|
63
|
-
actionStatus: ActionStatus
|
|
64
|
-
def __init__(self, gatewayStatus: _Optional[_Union[GatewayStatus, _Mapping]] = ..., gatewayInfo: _Optional[_Union[GatewayInfo, _Mapping]] = ..., gatewayLogs: _Optional[_Union[GatewayLogs, _Mapping]] = ..., actionStatus: _Optional[_Union[ActionStatus, _Mapping]] = ...) -> None: ...
|
|
65
|
-
|
|
66
|
-
class ACL(_message.Message):
|
|
67
|
-
__slots__ = ("mode_allow", "ids")
|
|
68
|
-
MODE_ALLOW_FIELD_NUMBER: _ClassVar[int]
|
|
69
|
-
IDS_FIELD_NUMBER: _ClassVar[int]
|
|
70
|
-
mode_allow: bool
|
|
71
|
-
ids: _containers.RepeatedScalarFieldContainer[bytes]
|
|
72
|
-
def __init__(self, mode_allow: bool = ..., ids: _Optional[_Iterable[bytes]] = ...) -> None: ...
|
|
73
|
-
|
|
74
|
-
class GatewayConfigValue(_message.Message):
|
|
75
|
-
__slots__ = ("integerValue", "numberValue", "stringValue", "boolValue", "aclValue")
|
|
76
|
-
INTEGERVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
77
|
-
NUMBERVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
78
|
-
STRINGVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
79
|
-
BOOLVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
80
|
-
ACLVALUE_FIELD_NUMBER: _ClassVar[int]
|
|
81
|
-
integerValue: int
|
|
82
|
-
numberValue: float
|
|
83
|
-
stringValue: str
|
|
84
|
-
boolValue: bool
|
|
85
|
-
aclValue: ACL
|
|
86
|
-
def __init__(self, integerValue: _Optional[int] = ..., numberValue: _Optional[float] = ..., stringValue: _Optional[str] = ..., boolValue: bool = ..., aclValue: _Optional[_Union[ACL, _Mapping]] = ...) -> None: ...
|
|
87
|
-
|
|
88
|
-
class GatewayStatus(_message.Message):
|
|
89
|
-
__slots__ = ("gatewayId", "gatewayType", "downlinkSupported", "bridgeOtaUpgradeSupported", "apiVersion", "version", "bleSwVersion", "interfaceSwVersion", "location", "config", "bleAddress")
|
|
90
|
-
class ConfigEntry(_message.Message):
|
|
91
|
-
__slots__ = ("key", "value")
|
|
92
|
-
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
93
|
-
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
94
|
-
key: str
|
|
95
|
-
value: GatewayConfigValue
|
|
96
|
-
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[GatewayConfigValue, _Mapping]] = ...) -> None: ...
|
|
97
|
-
GATEWAYID_FIELD_NUMBER: _ClassVar[int]
|
|
98
|
-
GATEWAYTYPE_FIELD_NUMBER: _ClassVar[int]
|
|
99
|
-
DOWNLINKSUPPORTED_FIELD_NUMBER: _ClassVar[int]
|
|
100
|
-
BRIDGEOTAUPGRADESUPPORTED_FIELD_NUMBER: _ClassVar[int]
|
|
101
|
-
APIVERSION_FIELD_NUMBER: _ClassVar[int]
|
|
102
|
-
VERSION_FIELD_NUMBER: _ClassVar[int]
|
|
103
|
-
BLESWVERSION_FIELD_NUMBER: _ClassVar[int]
|
|
104
|
-
INTERFACESWVERSION_FIELD_NUMBER: _ClassVar[int]
|
|
105
|
-
LOCATION_FIELD_NUMBER: _ClassVar[int]
|
|
106
|
-
CONFIG_FIELD_NUMBER: _ClassVar[int]
|
|
107
|
-
BLEADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
108
|
-
gatewayId: str
|
|
109
|
-
gatewayType: str
|
|
110
|
-
downlinkSupported: bool
|
|
111
|
-
bridgeOtaUpgradeSupported: bool
|
|
112
|
-
apiVersion: int
|
|
113
|
-
version: str
|
|
114
|
-
bleSwVersion: str
|
|
115
|
-
interfaceSwVersion: str
|
|
116
|
-
location: Location
|
|
117
|
-
config: _containers.MessageMap[str, GatewayConfigValue]
|
|
118
|
-
bleAddress: str
|
|
119
|
-
def __init__(self, gatewayId: _Optional[str] = ..., gatewayType: _Optional[str] = ..., downlinkSupported: bool = ..., bridgeOtaUpgradeSupported: bool = ..., apiVersion: _Optional[int] = ..., version: _Optional[str] = ..., bleSwVersion: _Optional[str] = ..., interfaceSwVersion: _Optional[str] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., config: _Optional[_Mapping[str, GatewayConfigValue]] = ..., bleAddress: _Optional[str] = ...) -> None: ...
|
|
120
|
-
|
|
121
|
-
class GatewayInfo(_message.Message):
|
|
122
|
-
__slots__ = ("entries",)
|
|
123
|
-
class EntriesEntry(_message.Message):
|
|
124
|
-
__slots__ = ("key", "value")
|
|
125
|
-
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
126
|
-
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
127
|
-
key: str
|
|
128
|
-
value: Value
|
|
129
|
-
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[Value, _Mapping]] = ...) -> None: ...
|
|
130
|
-
ENTRIES_FIELD_NUMBER: _ClassVar[int]
|
|
131
|
-
entries: _containers.MessageMap[str, Value]
|
|
132
|
-
def __init__(self, entries: _Optional[_Mapping[str, Value]] = ...) -> None: ...
|
|
133
|
-
|
|
134
|
-
class GatewayLogs(_message.Message):
|
|
135
|
-
__slots__ = ("logs",)
|
|
136
|
-
LOGS_FIELD_NUMBER: _ClassVar[int]
|
|
137
|
-
logs: _containers.RepeatedScalarFieldContainer[str]
|
|
138
|
-
def __init__(self, logs: _Optional[_Iterable[str]] = ...) -> None: ...
|
|
139
|
-
|
|
140
|
-
class ActionStatus(_message.Message):
|
|
141
|
-
__slots__ = ("action", "status", "step", "progress", "bridgeId")
|
|
142
|
-
ACTION_FIELD_NUMBER: _ClassVar[int]
|
|
143
|
-
STATUS_FIELD_NUMBER: _ClassVar[int]
|
|
144
|
-
STEP_FIELD_NUMBER: _ClassVar[int]
|
|
145
|
-
PROGRESS_FIELD_NUMBER: _ClassVar[int]
|
|
146
|
-
BRIDGEID_FIELD_NUMBER: _ClassVar[int]
|
|
147
|
-
action: int
|
|
148
|
-
status: int
|
|
149
|
-
step: int
|
|
150
|
-
progress: int
|
|
151
|
-
bridgeId: bytes
|
|
152
|
-
def __init__(self, action: _Optional[int] = ..., status: _Optional[int] = ..., step: _Optional[int] = ..., progress: _Optional[int] = ..., bridgeId: _Optional[bytes] = ...) -> None: ...
|
|
153
|
-
|
|
154
|
-
class DownlinkMessage(_message.Message):
|
|
155
|
-
__slots__ = ("txPacket", "gatewayAction", "bridgeUpgrade", "gatewayConfig", "customMessage")
|
|
156
|
-
TXPACKET_FIELD_NUMBER: _ClassVar[int]
|
|
157
|
-
GATEWAYACTION_FIELD_NUMBER: _ClassVar[int]
|
|
158
|
-
BRIDGEUPGRADE_FIELD_NUMBER: _ClassVar[int]
|
|
159
|
-
GATEWAYCONFIG_FIELD_NUMBER: _ClassVar[int]
|
|
160
|
-
CUSTOMMESSAGE_FIELD_NUMBER: _ClassVar[int]
|
|
161
|
-
txPacket: TxPacket
|
|
162
|
-
gatewayAction: GatewayAction
|
|
163
|
-
bridgeUpgrade: BridgeUpgrade
|
|
164
|
-
gatewayConfig: GatewayConfig
|
|
165
|
-
customMessage: CustomMessage
|
|
166
|
-
def __init__(self, txPacket: _Optional[_Union[TxPacket, _Mapping]] = ..., gatewayAction: _Optional[_Union[GatewayAction, _Mapping]] = ..., bridgeUpgrade: _Optional[_Union[BridgeUpgrade, _Mapping]] = ..., gatewayConfig: _Optional[_Union[GatewayConfig, _Mapping]] = ..., customMessage: _Optional[_Union[CustomMessage, _Mapping]] = ...) -> None: ...
|
|
167
|
-
|
|
168
|
-
class TxPacket(_message.Message):
|
|
169
|
-
__slots__ = ("payload", "maxRetries", "maxDurationMs")
|
|
170
|
-
PAYLOAD_FIELD_NUMBER: _ClassVar[int]
|
|
171
|
-
MAXRETRIES_FIELD_NUMBER: _ClassVar[int]
|
|
172
|
-
MAXDURATIONMS_FIELD_NUMBER: _ClassVar[int]
|
|
173
|
-
payload: bytes
|
|
174
|
-
maxRetries: int
|
|
175
|
-
maxDurationMs: int
|
|
176
|
-
def __init__(self, payload: _Optional[bytes] = ..., maxRetries: _Optional[int] = ..., maxDurationMs: _Optional[int] = ...) -> None: ...
|
|
177
|
-
|
|
178
|
-
class GatewayAction(_message.Message):
|
|
179
|
-
__slots__ = ("action",)
|
|
180
|
-
ACTION_FIELD_NUMBER: _ClassVar[int]
|
|
181
|
-
action: str
|
|
182
|
-
def __init__(self, action: _Optional[str] = ...) -> None: ...
|
|
183
|
-
|
|
184
|
-
class BridgeUpgrade(_message.Message):
|
|
185
|
-
__slots__ = ("rebootPacket", "txMaxDurationMs", "txMaxRetries", "bridgeId", "versionUuid", "upgradeBlSd", "imageDirUrl")
|
|
186
|
-
REBOOTPACKET_FIELD_NUMBER: _ClassVar[int]
|
|
187
|
-
TXMAXDURATIONMS_FIELD_NUMBER: _ClassVar[int]
|
|
188
|
-
TXMAXRETRIES_FIELD_NUMBER: _ClassVar[int]
|
|
189
|
-
BRIDGEID_FIELD_NUMBER: _ClassVar[int]
|
|
190
|
-
VERSIONUUID_FIELD_NUMBER: _ClassVar[int]
|
|
191
|
-
UPGRADEBLSD_FIELD_NUMBER: _ClassVar[int]
|
|
192
|
-
IMAGEDIRURL_FIELD_NUMBER: _ClassVar[int]
|
|
193
|
-
rebootPacket: bytes
|
|
194
|
-
txMaxDurationMs: int
|
|
195
|
-
txMaxRetries: int
|
|
196
|
-
bridgeId: str
|
|
197
|
-
versionUuid: str
|
|
198
|
-
upgradeBlSd: bool
|
|
199
|
-
imageDirUrl: str
|
|
200
|
-
def __init__(self, rebootPacket: _Optional[bytes] = ..., txMaxDurationMs: _Optional[int] = ..., txMaxRetries: _Optional[int] = ..., bridgeId: _Optional[str] = ..., versionUuid: _Optional[str] = ..., upgradeBlSd: bool = ..., imageDirUrl: _Optional[str] = ...) -> None: ...
|
|
201
|
-
|
|
202
|
-
class GatewayConfig(_message.Message):
|
|
203
|
-
__slots__ = ("version", "bleSwVersion", "interfaceSwVersion", "location", "config")
|
|
204
|
-
class ConfigEntry(_message.Message):
|
|
205
|
-
__slots__ = ("key", "value")
|
|
206
|
-
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
207
|
-
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
208
|
-
key: str
|
|
209
|
-
value: GatewayConfigValue
|
|
210
|
-
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[GatewayConfigValue, _Mapping]] = ...) -> None: ...
|
|
211
|
-
VERSION_FIELD_NUMBER: _ClassVar[int]
|
|
212
|
-
BLESWVERSION_FIELD_NUMBER: _ClassVar[int]
|
|
213
|
-
INTERFACESWVERSION_FIELD_NUMBER: _ClassVar[int]
|
|
214
|
-
LOCATION_FIELD_NUMBER: _ClassVar[int]
|
|
215
|
-
CONFIG_FIELD_NUMBER: _ClassVar[int]
|
|
216
|
-
version: str
|
|
217
|
-
bleSwVersion: str
|
|
218
|
-
interfaceSwVersion: str
|
|
219
|
-
location: Location
|
|
220
|
-
config: _containers.MessageMap[str, GatewayConfigValue]
|
|
221
|
-
def __init__(self, version: _Optional[str] = ..., bleSwVersion: _Optional[str] = ..., interfaceSwVersion: _Optional[str] = ..., location: _Optional[_Union[Location, _Mapping]] = ..., config: _Optional[_Mapping[str, GatewayConfigValue]] = ...) -> None: ...
|
|
222
|
-
|
|
223
|
-
class CustomMessage(_message.Message):
|
|
224
|
-
__slots__ = ("entries",)
|
|
225
|
-
class EntriesEntry(_message.Message):
|
|
226
|
-
__slots__ = ("key", "value")
|
|
227
|
-
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
228
|
-
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
229
|
-
key: str
|
|
230
|
-
value: Value
|
|
231
|
-
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[Value, _Mapping]] = ...) -> None: ...
|
|
232
|
-
ENTRIES_FIELD_NUMBER: _ClassVar[int]
|
|
233
|
-
entries: _containers.MessageMap[str, Value]
|
|
234
|
-
def __init__(self, entries: _Optional[_Mapping[str, Value]] = ...) -> None: ...
|
brg_certificate/wlt_types.py
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import brg_certificate.ag.wlt_types_ag as ag
|
|
2
|
-
|
|
3
|
-
def eval_pkt(string):
|
|
4
|
-
try:
|
|
5
|
-
return eval(f'ag.{string}')
|
|
6
|
-
except:
|
|
7
|
-
return None
|
|
8
|
-
|
|
9
|
-
def eval_one_param(string):
|
|
10
|
-
string = string.strip("' ")
|
|
11
|
-
if string in ag.__dict__:
|
|
12
|
-
return eval(f'ag.{string}')
|
|
13
|
-
try:
|
|
14
|
-
return eval(string)
|
|
15
|
-
except:
|
|
16
|
-
return string
|
|
17
|
-
|
|
18
|
-
def eval_param(string):
|
|
19
|
-
if "," in string:
|
|
20
|
-
return [eval_one_param(x) for x in string.strip("[]").split(",")]
|
|
21
|
-
else:
|
|
22
|
-
return eval_one_param(string)
|
|
23
|
-
|
|
24
|
-
class WltPkt():
|
|
25
|
-
supported_pkt_types = ag.WLT_PKT_TYPES
|
|
26
|
-
|
|
27
|
-
def __init__(self, raw='', hdr=None, data_hdr=None, generic=None, pkt=None):
|
|
28
|
-
self.hdr = ag.Hdr() if hdr is None else hdr
|
|
29
|
-
self.data_hdr = ag.DataHdr() if data_hdr is None else data_hdr
|
|
30
|
-
self.generic = generic
|
|
31
|
-
self.pkt = pkt
|
|
32
|
-
if raw:
|
|
33
|
-
self.set(raw)
|
|
34
|
-
|
|
35
|
-
def __repr__(self) -> str:
|
|
36
|
-
if isinstance(self.pkt, (ag.UnifiedEchoPktV0, ag.UnifiedEchoPktV1, ag.UnifiedEchoExtPkt)):
|
|
37
|
-
return f"{self.data_hdr}\n{self.pkt}"
|
|
38
|
-
return f"{self.hdr}\n{self.pkt}"
|
|
39
|
-
|
|
40
|
-
def __eq__(self, other):
|
|
41
|
-
if isinstance(other, WltPkt):
|
|
42
|
-
return (
|
|
43
|
-
(self.hdr == other.hdr or
|
|
44
|
-
self.data_hdr == other.data_hdr) and
|
|
45
|
-
self.generic == other.generic and
|
|
46
|
-
self.pkt == other.pkt
|
|
47
|
-
)
|
|
48
|
-
return False
|
|
49
|
-
|
|
50
|
-
def dump(self):
|
|
51
|
-
if self.pkt:
|
|
52
|
-
if isinstance(self.pkt, (ag.UnifiedEchoPktV0, ag.UnifiedEchoPktV1, ag.UnifiedEchoExtPkt)):
|
|
53
|
-
return self.data_hdr.dump() + self.pkt.dump()
|
|
54
|
-
else:
|
|
55
|
-
return self.hdr.dump() + self.pkt.dump()
|
|
56
|
-
return self.data_hdr.dump() + self.generic.dump()
|
|
57
|
-
|
|
58
|
-
def set(self, string):
|
|
59
|
-
|
|
60
|
-
self.hdr.set(string[0:14])
|
|
61
|
-
self.data_hdr.set(string[0:14])
|
|
62
|
-
if self.hdr.group_id == ag.GROUP_ID_BRG2GW or self.hdr.group_id == ag.GROUP_ID_GW2BRG:
|
|
63
|
-
# GROUP_ID_BRG2GW & GROUP_ID_GW2BRG
|
|
64
|
-
self.generic = eval_pkt(f'GenericV{ag.API_VERSION_LATEST}()')
|
|
65
|
-
self.generic.set(string[14:62])
|
|
66
|
-
|
|
67
|
-
# MEL modules
|
|
68
|
-
if self.generic.module_type:
|
|
69
|
-
self.pkt = eval_pkt(f'{ag.MODULES_DICT[self.generic.module_type]}{self.generic.api_version}()')
|
|
70
|
-
elif self.generic.module_type == ag.MODULE_GLOBAL:
|
|
71
|
-
# Action pkts
|
|
72
|
-
if self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_ACTION:
|
|
73
|
-
pkt = eval_pkt(f'ActionGenericV{self.generic.api_version}("{string[14:62]}")')
|
|
74
|
-
if self.generic.api_version >= ag.API_VERSION_V8:
|
|
75
|
-
pkt = eval_pkt(f'{ag.ACTIONS_DICT[pkt.action_id]}{self.generic.api_version}()')
|
|
76
|
-
self.pkt = pkt
|
|
77
|
-
# OLD global config (GW2BRG & BRG2GW)
|
|
78
|
-
elif self.hdr.group_id == ag.GROUP_ID_GW2BRG and self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_CFG_SET:
|
|
79
|
-
self.pkt = eval_pkt(f'Gw2BrgCfgV8()') # no api_version field in Gw2BrgCfg pkts - default parse as api version 8 (Latest Gw2BrgCfg)
|
|
80
|
-
elif self.hdr.group_id == ag.GROUP_ID_BRG2GW:
|
|
81
|
-
if self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_CFG_SET or self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_CFG_INFO:
|
|
82
|
-
self.pkt = eval_pkt(f'Brg2GwCfgV{self.generic.api_version}()')
|
|
83
|
-
elif self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_HB:
|
|
84
|
-
self.pkt = eval_pkt(f'Brg2GwHbV{self.generic.api_version}()')
|
|
85
|
-
elif self.generic.msg_type == ag.BRG_MGMT_MSG_TYPE_HB_SLEEP:
|
|
86
|
-
self.pkt = eval_pkt(f'Brg2GwHbSleepV{self.generic.api_version}()')
|
|
87
|
-
# Unified pkt
|
|
88
|
-
elif self.data_hdr.group_id_major in ag.UNIFIED_GROUP_ID_LIST:
|
|
89
|
-
if self.data_hdr.group_id_major == ag.GROUP_ID_UNIFIED_PKT_V0:
|
|
90
|
-
self.pkt = ag.UnifiedEchoPktV0()
|
|
91
|
-
elif self.data_hdr.group_id_major == ag.GROUP_ID_UNIFIED_PKT_V1 or self.data_hdr.group_id_major == ag.GROUP_ID_BLE5_PKT0:
|
|
92
|
-
self.pkt = ag.UnifiedEchoPktV1()
|
|
93
|
-
elif self.data_hdr.group_id_major == ag.GROUP_ID_BLE5_EXTENDED:
|
|
94
|
-
self.pkt = ag.UnifiedEchoExtPkt()
|
|
95
|
-
# SideInfo pkts
|
|
96
|
-
elif self.hdr.group_id == ag.GROUP_ID_SIDE_INFO_SENSOR:
|
|
97
|
-
self.pkt = ag.SideInfoSensor()
|
|
98
|
-
elif self.hdr.group_id == ag.GROUP_ID_SIDE_INFO:
|
|
99
|
-
self.pkt = ag.SideInfo()
|
|
100
|
-
if self.pkt:
|
|
101
|
-
if self.data_hdr.group_id_major == ag.GROUP_ID_BLE5_EXTENDED:
|
|
102
|
-
self.pkt.set(string[14:84])
|
|
103
|
-
else:
|
|
104
|
-
self.pkt.set(string[14:62])
|
|
105
|
-
# Signal Indicator pkt
|
|
106
|
-
elif self.hdr.group_id == ag.GROUP_ID_SIGNAL_INDICATOR:
|
|
107
|
-
self.pkt = eval_pkt(f'SignalIndicatorDataV{ag.SIGNAL_INDICATOR_PACKET_VERSION_LATEST}')(string[8:62])
|
|
108
|
-
elif self.hdr.uuid_lsb == ag.HDR_DEFAULT_BRG_SENSOR_UUID_LSB and self.hdr.uuid_msb == ag.HDR_DEFAULT_BRG_SENSOR_UUID_MSB:
|
|
109
|
-
self.pkt = ag.SensorData(string)
|
|
110
|
-
# Unparsed pkts
|
|
111
|
-
else:
|
|
112
|
-
# print(f"Unable to parse packet with payload: {string}")
|
|
113
|
-
pass
|