wiliot-certificate 4.4.0a1__py3-none-any.whl → 4.4.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. brg_certificate/cert_results.py +2 -2
  2. brg_certificate/certificate_bcc_test_list.txt +0 -2
  3. brg_certificate/tests/calibration/interval_test/interval_test.json +1 -1
  4. brg_certificate/tests/calibration/interval_test/interval_test.py +2 -3
  5. brg_certificate/tests/calibration/output_power_test/output_power_test.json +1 -1
  6. brg_certificate/tests/calibration/output_power_test/output_power_test.py +2 -3
  7. brg_certificate/tests/calibration/pattern_test/pattern_test.json +1 -1
  8. brg_certificate/tests/calibration/pattern_test/pattern_test.py +4 -8
  9. brg_certificate/tests/datapath/aging_test/aging_test.py +3 -4
  10. brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py +4 -7
  11. brg_certificate/tests/datapath/output_power_test/output_power_test.json +1 -1
  12. brg_certificate/tests/datapath/output_power_test/output_power_test.py +1 -3
  13. brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json +1 -1
  14. brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py +2 -3
  15. brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.py +1 -3
  16. brg_certificate/tests/datapath/pattern_test/pattern_test.json +1 -1
  17. brg_certificate/tests/datapath/pattern_test/pattern_test.py +1 -3
  18. brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json +1 -1
  19. brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py +1 -3
  20. brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json +1 -1
  21. brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py +1 -3
  22. brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json +1 -1
  23. brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.py +2 -3
  24. brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json +1 -1
  25. brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.py +2 -3
  26. brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.json +1 -1
  27. brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.py +2 -3
  28. brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py +9 -6
  29. brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py +9 -6
  30. brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json +1 -1
  31. brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py +17 -11
  32. brg_certificate/tests/datapath/stress_test/stress_test.json +1 -1
  33. brg_certificate/tests/datapath/stress_test/stress_test.py +15 -10
  34. brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json +1 -1
  35. brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.py +2 -3
  36. brg_certificate/tests/edge_mgmt/actions_test/actions_test.json +1 -1
  37. brg_certificate/tests/edge_mgmt/actions_test/actions_test.py +1 -3
  38. brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json +1 -1
  39. brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.py +1 -3
  40. brg_certificate/tests/energy2400/output_power_test/output_power_test.json +1 -1
  41. brg_certificate/tests/energy2400/output_power_test/output_power_test.py +1 -3
  42. brg_certificate/tests/energy2400/pattern_test/pattern_test.json +1 -1
  43. brg_certificate/tests/energy2400/pattern_test/pattern_test.py +1 -3
  44. brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json +1 -1
  45. brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py +2 -3
  46. brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.json +1 -1
  47. brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.py +1 -3
  48. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json +1 -1
  49. brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py +2 -3
  50. brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json +1 -1
  51. brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py +1 -3
  52. brg_certificate/wltPb_pb2.py +4 -4
  53. brg_certificate/wltPb_pb2.pyi +2 -1
  54. gw_certificate/common/serialization_formatter.py +14 -1
  55. gw_certificate/gw_certificate.py +2 -2
  56. gw_certificate/interface/4.4.91_app.zip +0 -0
  57. gw_certificate/interface/{4.4.88_sd_bl_app.zip → 4.4.91_sd_bl_app.zip} +0 -0
  58. gw_certificate/interface/flash_fw.py +90 -0
  59. gw_certificate/interface/uart_if.py +1 -1
  60. gw_certificate/tests/actions.py +1 -1
  61. gw_certificate/tests/downlink.py +2 -2
  62. gw_certificate/tests/generic.py +4 -3
  63. gw_certificate/tests/static/generated_packet_table.py +16 -16
  64. gw_certificate/tests/static/packet_table.csv +10052 -10052
  65. gw_certificate/tests/static/uplink_defines.py +1 -1
  66. gw_certificate/tests/throughput.py +1 -1
  67. gw_certificate/tests/uplink.py +38 -19
  68. {wiliot_certificate-4.4.0a1.dist-info → wiliot_certificate-4.4.2.dist-info}/METADATA +73 -32
  69. {wiliot_certificate-4.4.0a1.dist-info → wiliot_certificate-4.4.2.dist-info}/RECORD +73 -72
  70. {wiliot_certificate-4.4.0a1.dist-info → wiliot_certificate-4.4.2.dist-info}/WHEEL +1 -1
  71. gw_certificate/interface/4.4.88_app.zip +0 -0
  72. {wiliot_certificate-4.4.0a1.dist-info → wiliot_certificate-4.4.2.dist-info}/entry_points.txt +0 -0
  73. {wiliot_certificate-4.4.0a1.dist-info → wiliot_certificate-4.4.2.dist-info}/licenses/LICENSE +0 -0
  74. {wiliot_certificate-4.4.0a1.dist-info → wiliot_certificate-4.4.2.dist-info}/top_level.txt +0 -0
@@ -9,6 +9,6 @@ OBJECT_COLUMNS = [PAYLOAD]
9
9
  REPORT_COLUMNS = ['pkt_id', 'duplication', 'time_delay']
10
10
 
11
11
  ADV_TIMESTAMP = 'adv_timestamp'
12
- TS_DEVIATION = 1500
12
+ TS_DEVIATION = 4500
13
13
  TS_TOLERANCE = 2500
14
14
  REC_TIMESTAMP = 'rec_timestamp'
@@ -200,7 +200,7 @@ class StressTestStage(GenericStressStage):
200
200
  for idx, delay in enumerate(self.delays):
201
201
  if self.ts_records_arr[idx].is_ts_error():
202
202
  self.add_to_stage_report(f"Timestamps errors during PPS {self.report_data[str(delay)]['pkts_per_sec_desired']}:")
203
- self.ts_records_arr[idx].add_ts_errs_to_report(self)
203
+ self.ts_records_arr[idx].add_ts_errs_to_report(self, newline=False)
204
204
  self.add_report_line_separator()
205
205
  self.add_to_stage_report(f'Stage data saved - {self.csv_path}')
206
206
 
@@ -15,7 +15,7 @@ from gw_certificate.tests.static.uplink_defines import *
15
15
  from gw_certificate.interface.mqtt import MqttClient, Serialization
16
16
  from gw_certificate.interface.pkt_generator import BrgPktGenerator, apply_adva_bitmask
17
17
  from gw_certificate.tests.static.generated_packet_table import UnifiedRunData, SensorRunData, MgmtRunData, PacketTableHelper, ACLRunData
18
- from gw_certificate.tests.generic import PassCriteria, PERFECT_SCORE, MINIMUM_SCORE, GenericTest, GenericStage, ERR_SUMMARY_DEFAULT
18
+ from gw_certificate.tests.generic import PassCriteria, PERFECT_SCORE, MINIMUM_SCORE, GenericTest, GenericStage, ERR_SUMMARY_DEFAULT, INFORMATIVE
19
19
  from gw_certificate.api_if.api_validation import MESSAGE_TYPES, validate_message
20
20
  from gw_certificate.tests.static.generated_packet_table import CSV_NAME
21
21
  from gw_certificate.common.serialization_formatter import ACL_MODE, ACL_BRIDGE_IDS, SerializationFormatter, Configurable, ACL_ALLOW, ACL_DENY
@@ -108,21 +108,24 @@ class TimestampsHelper(PacketTableHelper):
108
108
 
109
109
  packets_sent_df[REC_TIMESTAMP] = packets_sent_df.apply(validate_row, axis=1)
110
110
 
111
- # Validate no 2 packets hold the same timestamp
112
- if REC_TIMESTAMP in packets_sent_df.columns:
113
- duplicates = packets_sent_df[REC_TIMESTAMP].value_counts()
114
- duplicated_ts = duplicates[duplicates > 1].index
111
+ # # Validate no 2 packets hold the same timestamp - disabled, not a requirement for certification
112
+ # if REC_TIMESTAMP in packets_sent_df.columns:
113
+ # duplicates = packets_sent_df[REC_TIMESTAMP].value_counts()
114
+ # duplicated_ts = duplicates[duplicates > 1].index
115
115
 
116
- for ts in duplicated_ts:
117
- self.ts_errors.append(f"Multiple packets were uploaded with identical timestamp (ts = {int(ts)})")
118
- self.has_identical_ts = True
116
+ # for ts in duplicated_ts:
117
+ # self.ts_errors.append(f"Multiple packets were uploaded with identical timestamp (ts = {int(ts)})")
118
+ # self.has_identical_ts = True
119
+
120
+ def add_ts_errs_to_report(self, stage:GenericStage, newline=True):
119
121
 
120
- def add_ts_errs_to_report(self, stage:GenericStage):
121
122
  for idx, ts_err in enumerate(self.ts_errors):
122
123
  stage.add_to_stage_report(ts_err)
123
124
  if idx == 1 and (len(self.ts_errors) - 1) > idx:
124
125
  stage.add_to_stage_report(f'Additional errors ({len(self.ts_errors) - 1 - idx}) are suppressed to avoid clutter')
125
126
  break
127
+ if len(self.ts_errors) > 0 and newline:
128
+ stage.add_to_stage_report('')
126
129
 
127
130
  def is_ts_error(self) -> bool:
128
131
  return len(self.ts_errors) > 0
@@ -205,6 +208,7 @@ class GenericUplinkStage(GenericStage):
205
208
  if len(not_received) > 0:
206
209
  self.add_to_stage_report('Packets not received:')
207
210
  self.add_to_stage_report(tabulate.tabulate(not_received, headers='keys', showindex=False))
211
+ self.add_to_stage_report('')
208
212
 
209
213
  self.ts_records.add_ts_errs_to_report(self)
210
214
 
@@ -223,6 +227,9 @@ class GenericUplinkStage(GenericStage):
223
227
 
224
228
  return self.report
225
229
 
230
+ def swap_endianness(self, hex_str: str) -> str:
231
+ return ''.join(format(b, '02X') for b in bytes.fromhex(hex_str)[::-1])
232
+
226
233
 
227
234
  class ManagementPacketStage(GenericUplinkStage):
228
235
  def __init__(self, **kwargs):
@@ -374,6 +381,7 @@ class SensorPacketStage(GenericUplinkStage):
374
381
  if len(not_received) > 0:
375
382
  self.add_to_stage_report('Packets not received:')
376
383
  self.add_to_stage_report(tabulate.tabulate(not_received_rep_cols, headers='keys', showindex=False))
384
+ self.add_to_stage_report('')
377
385
 
378
386
  def all_varying_len_sensors_missed(not_received_df):
379
387
  not_uploaded_count = 0
@@ -568,9 +576,6 @@ class AliasBridgeIDStage(GenericUplinkStage):
568
576
  if any(payload in test_payload for test_payload in self.all_test_payloads):
569
577
  filtered_pkts.append(pkt)
570
578
  message['packets'] = filtered_pkts
571
-
572
- def swap_endianness(hex_str: str) -> str:
573
- return ''.join(format(b, '02X') for b in bytes.fromhex(hex_str)[::-1])
574
579
 
575
580
  def is_alias_bridge_id_valid(message):
576
581
  nonlocal aliasBridgeId_valid
@@ -585,7 +590,7 @@ class AliasBridgeIDStage(GenericUplinkStage):
585
590
  debug_print(f"validation_data unexpected len:{len(validation_data)}, for payload:{pkt_payload}")
586
591
  return
587
592
  expected_bridge_id = validation_data.iloc[0]['adva']
588
- expected_bridge_ids = [expected_bridge_id, swap_endianness(expected_bridge_id)]
593
+ expected_bridge_ids = [expected_bridge_id, self.swap_endianness(expected_bridge_id)]
589
594
  if pkt_alias_bridge_id.upper() not in expected_bridge_ids:
590
595
  report.append(f"Alias bridge ID of the packet does not match. Expected alias bridge IDs:{expected_bridge_ids} but the packet alias bridge ID is {pkt_alias_bridge_id}")
591
596
  self.stage_pass = MINIMUM_SCORE
@@ -625,6 +630,7 @@ class GeolocationStage(GenericUplinkStage):
625
630
  self.__dict__.update(kwargs)
626
631
  super().__init__(**self.__dict__, stage_name=type(self).__name__)
627
632
  self.graph_html_path = os.path.join(self.test_dir, f'{self.stage_name}.html')
633
+ self.result_indication = INFORMATIVE
628
634
 
629
635
 
630
636
  def prepare_stage(self):
@@ -672,7 +678,7 @@ class GeolocationStage(GenericUplinkStage):
672
678
 
673
679
  class ACLStage(GenericUplinkStage):
674
680
  def __init__(self, **kwargs):
675
- self.stage_tooltip = "Tests the Access Control List capability of a gateway. Simulates packets from two bridges, with different ACL configurations"
681
+ self.stage_tooltip = "Configures the gateway's Access Control List and simulate bridges. Expects 100% discard rate"
676
682
  self.__dict__.update(kwargs)
677
683
  super().__init__(**self.__dict__, stage_name=type(self).__name__)
678
684
  self.pass_min = 60
@@ -712,7 +718,10 @@ class ACLStage(GenericUplinkStage):
712
718
  self.mqttc.send_payload(payload)
713
719
  time.sleep(5 if self.aggregation_time == 0 else self.aggregation_time)
714
720
  debug_print('Status message received from gw:')
715
- debug_print(self.mqttc.get_status_message())
721
+ gw_status = self.mqttc.get_status_message()
722
+ if gw_status != None and isinstance(gw_status, dict) and ser_format.is_pb():
723
+ gw_status = ser_format.pb_status_acl_bytes_to_hex_string(gw_status)
724
+ debug_print(gw_status)
716
725
 
717
726
  # Configuring each bridge in ACL, once for each mode
718
727
  brg_ids = self.run_data['bridge_id'].unique().tolist()
@@ -759,18 +768,28 @@ class ACLStage(GenericUplinkStage):
759
768
  num_pkts_should_received = self.comparison[SHOULD_RECEIVE].eq(True).sum()
760
769
  num_pkts_should_discard = self.comparison[SHOULD_RECEIVE].eq(False).sum()
761
770
  num_pkts_discarded_correctly = (self.comparison[SHOULD_RECEIVE].eq(False) & self.comparison[RECEIVED].eq(False)).sum()
762
- num_pkts_received_falsly = (self.comparison[SHOULD_RECEIVE].eq(False) & self.comparison[RECEIVED].eq(True)).sum()
771
+ num_pkts_received_correctly = (self.comparison[SHOULD_RECEIVE].eq(True) & self.comparison[RECEIVED].eq(True)).sum()
772
+ num_pkts_failed_to_discard = (self.comparison[SHOULD_RECEIVE].eq(False) & self.comparison[RECEIVED].eq(True)).sum()
773
+ num_pkts_failed_to_receive = (self.comparison[SHOULD_RECEIVE].eq(True) & self.comparison[RECEIVED].eq(False)).sum()
763
774
  self.add_to_stage_report(f"Total packets advertised: {num_pkts_sent}")
764
- self.add_to_stage_report(f"Packets received / should've received: {num_pkts_received} / {num_pkts_should_received}")
775
+ self.add_to_stage_report(f"Packets received / should've received: {num_pkts_received_correctly} / {num_pkts_should_received}")
765
776
  self.add_to_stage_report(f"Packets discarded / should've discarded: {num_pkts_discarded_correctly} / {num_pkts_should_discard}")
766
- self.add_to_stage_report(f"False positives (failed to discard): {num_pkts_received_falsly}")
777
+ self.add_to_stage_report(f"Failed to discard: {num_pkts_failed_to_discard}\n")
767
778
 
768
- if num_pkts_received_falsly > 0:
779
+ if num_pkts_failed_to_discard > 0:
769
780
  self.stage_pass = MINIMUM_SCORE
770
781
  self.error_summary = "Received packet/s that should've been discarded"
771
782
  for index, row in self.comparison.iterrows():
772
783
  if row[RECEIVED] == True and row[SHOULD_RECEIVE] == False:
773
784
  self.add_to_stage_report(f"Payload from bridge {row['aliasBridgeId']} should have been filtered out: {row[PAYLOAD]}")
785
+ self.add_to_stage_report('')
786
+ # Report packets failed to receive only if we have issue discarding.
787
+ # Since it increase the likelyhood of bad logic, and not just missed packets
788
+ if num_pkts_failed_to_receive > 0:
789
+ for index, row in self.comparison.iterrows():
790
+ if row[RECEIVED] == False and row[SHOULD_RECEIVE] == True:
791
+ self.add_to_stage_report(f"Payload from bridge {row['aliasBridgeId']} wasn't received: {row[PAYLOAD]}")
792
+ self.add_to_stage_report('')
774
793
  elif num_pkts_received == 0:
775
794
  self.stage_pass = MINIMUM_SCORE
776
795
  self.error_summary = "No packets received"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wiliot_certificate
3
- Version: 4.4.0a1
3
+ Version: 4.4.2
4
4
  Summary: A library for certifying Wiliot-compliant boards
5
5
  Author-email: Wiliot <support@wiliot.com>
6
6
  License: MIT License
@@ -30,13 +30,13 @@ Project-URL: Certified, https://www.wiliot.com/product/ambient-iot-network#partn
30
30
  Classifier: Programming Language :: Python :: 3
31
31
  Classifier: License :: OSI Approved :: MIT License
32
32
  Classifier: Operating System :: OS Independent
33
- Requires-Python: >=3.13
33
+ Requires-Python: >=3.9
34
34
  Description-Content-Type: text/markdown
35
35
  License-File: LICENSE
36
36
  Requires-Dist: jinja2>=3.1.5
37
37
  Requires-Dist: appdirs>=1.4.4
38
38
  Requires-Dist: plotly>=6.0.0
39
- Requires-Dist: numpy>=2.2.2
39
+ Requires-Dist: numpy>=1.21.5
40
40
  Requires-Dist: pandas>=2.2.3
41
41
  Requires-Dist: colorama>=0.4.6
42
42
  Requires-Dist: tabulate>=0.9.0
@@ -52,24 +52,33 @@ Requires-Dist: reportlab>=4.3.1
52
52
  Requires-Dist: google-api-python-client>=2.162.0
53
53
  Dynamic: license-file
54
54
 
55
- # wiliot-certificate
55
+ # wiliot-certificate Version 4.4.0
56
56
 
57
57
  <!-- Description -->
58
- wiliot-certificate is a python library with tools used to test & certify boards and their compatibility with Wiliot's echosystem.
58
+ wiliot-certificate is a Python library that provides tools for testing and certifying boards for compatibility with Wiliots ecosystem.
59
59
  This python package includes the following CLI utilities:
60
60
  - Gateway Certificate (`wlt-cert-gw`)
61
61
  - Bridge Certificate (`wlt-cert-brg`)
62
62
 
63
+ # Version:
64
+ wiliot-certificate versions 4.4.0 are compatible with firmware version 4.4.6 (ESP: 4.4.44, BLE: 4.4.93)
65
+
63
66
  ## Installing wiliot-certificate
67
+ Uninstall wiliot-deployment-tools if installed (relevant for old wlt-gw-certificate users):
68
+ ````commandline
69
+ pip uninstall wiliot-deployment-tools
70
+ ````
71
+
72
+ Install wiliot-certificate:
64
73
  ````commandline
65
74
  pip install wiliot-certificate
66
75
  ````
67
76
 
68
77
  ## Using wiliot-certificate
69
78
  ### Gateway Certificate
70
- Test Wiliot GWs capabilities.
71
- The GW Certificate includes different test that run sequentially to test each capability reported by the GW.
72
- To run the GW Certificate the GW needs to use a public MQTT Broker (Eclipse):
79
+ Test Wiliot Gateway capabilities.
80
+ The Gateway Certificate includes different test that run sequentially to test each capability reported by the Gateway.
81
+ To run the Gateway Certificate the Gateway needs to use a public MQTT Broker (Eclipse):
73
82
 
74
83
  Host: mqtt.eclipseprojects.io
75
84
  TLS TCP Port: 8883
@@ -79,59 +88,91 @@ Websocket Port: 80
79
88
 
80
89
  More information can be found at https://mqtt.eclipseprojects.io/.
81
90
 
82
- #### GW Certificate Release Notes:
91
+ #### Gateway Certificate Release Notes:
83
92
  Release:
84
93
  - Standalone wiliot-certificate package
85
94
  - Python 3.13 support
86
- - Gw API version 205 support
95
+ - Gateway API version 205 support
87
96
  - Registration test added
88
97
  - Bridge OTA stage added under actions
89
98
  - Aggregation flag supported by StressTest
90
99
  - -update flag compatibility fix. Upgrades bootloader if needed
91
100
  - -actions flag to select specific actions to test
101
+ - ACL (Access control list) test for gateways reporting API version 205 in the connection test
102
+
103
+ #### The following capabilities are not tested in this version
104
+ - Access control list stress stress
105
+ - Validation schema verification
106
+ - Board type registered within the Board Type Management system
107
+ - Bridge OTA progress reporting
108
+
92
109
 
93
110
  ```
94
- usage: wlt-gw-certificate [-h] -owner OWNER -gw GW [-suffix SUFFIX] [-tests {connection,uplink,downlink,stress}]
111
+ Usage: wlt-cert-gw [-h] -owner OWNER -gw GW [-suffix SUFFIX] [-tests {connection,uplink,downlink,stress}]
95
112
 
96
113
  Gateway Certificate - CLI Tool to test Wiliot GWs
97
114
 
98
- required arguments:
115
+ Required arguments:
99
116
  -gw GW Gateway ID
100
117
 
101
- optional arguments:
118
+ Optional arguments:
102
119
  -owner OWNER Owner ID (Required for non-registration tests)
103
120
  -tests Pick specific tests to run
104
121
  -actions Pick specific actions to test during the ActionsTest
105
122
  -update Update the firmware of the test board
106
123
  -pps Pick specific PPS rate for the stress test
107
- -agg Time the uplink stages should wait before processing packets
108
- -suffix Allow for different suffixes after the GW ID in MQTT topics
109
- -env Wiliot envrionment for Registration and bridgeOTA tests
124
+ -agg Duration uplink stages wait before processing packets
125
+ -suffix Allow for different suffixes after the Gateway ID in MQTT topics
126
+ -env Wiliot environment for registration and bridgeOTA tests
110
127
  -h, --help show this help message and exit
111
128
  ```
112
129
 
113
130
  ### Bridge Certificate
114
- Test Wiliot BRGs capabilities.
115
- The BRG Certificate includes different tests that run sequentially to test each capability reported by the BRG.
116
- The BRG Certificate tool uses a public MQTT Broker (Eclipse):
117
-
118
- Host: mqtt.eclipseprojects.io
119
- TLS TCP Port: 8883
120
- TLS Websocket Port: 443
121
- TCP Port: 1883
122
- Websocket Port: 80
123
-
124
- More information can be found at https://mqtt.eclipseprojects.io/.
131
+ Test Wiliot Bridge capabilities.
132
+ The Bridge Certificate includes different tests that run sequentially to test each capability reported by the bridge.
133
+
134
+
135
+ # update Gateway sim version :
136
+ - Update your gateway and bridge using Wiliot's platform. (https://platform.wiliot.com/)
137
+ - Transfer the gateway to dev mode - run the following command: py ut\dev_mode.py --gw [GW] --enable
138
+ - Connect the gateway to your laptop via USB connection:
139
+ - Run the following: wlt-cert-brg --gw SIM --brg <XXXXXXXXXXXX> --port <COM_PORT>
140
+ - For other options of running, see the 'run example' section.
141
+
142
+ #### Bridge Certificate Release Notes:
143
+ Release
144
+ - First release of Bridge Certificate – includes validation tests for bridge functionality.
145
+ - Additional details are available in the JSON files.
146
+
147
+ # The following capabilities are not tested in this version
148
+
149
+ ## Power management
150
+ - Functionality of energize and transmit in sleep mode
151
+ ## Edge management
152
+ - Timing of heartbeat and interface packets
153
+ ## Module Energy 2400
154
+ - Functionality of energy pattern, output power and duty cycle
155
+ ## Module Energy SUB1G
156
+ - Functionality of energy pattern and duty cycle
157
+ ## Module Datapath
158
+ - RSSI edge cases: -127 and 0
159
+ - Functionality of transmission pattern, output power
160
+ - Pacer interval with channel 10 and 500k modulation
161
+ - Pacer interval using GEN3 Pixels
162
+ - Packet filter: the following configuration - DEBUG, TEMP & DEBUG, TEMPS & DEBUG & ADVANCE
163
+ - Rx rate feature with extended advertising
164
+ - Functionality of adaptive pacer algorithm
165
+ - Supported Pixels for extended advertising and GEN3
166
+ ## Calibration
167
+ - Functionality of output power and interval calibration
168
+ - Functionality of calibration transmission patterns for the configuration STANDARD & EU & DISABLE
125
169
 
126
- #### BRG Certificate Release Notes:
127
- 1.3.0:
128
- - FIRST VERSION
129
170
 
130
171
  ```
131
- usage: brg_certificate_cli.py [-h] [--brg BRG] [--brg_cloud_connectivity BRG_CLOUD_CONNECTIVITY] [--brg1 BRG1] --gw GW [--data {tags,sim}] [--port PORT] [--clean] [--tl TL] [--run RUN]
172
+ usage: wlt-cert-brg [-h] [--brg BRG] [--brg_cloud_connectivity BRG_CLOUD_CONNECTIVITY] [--brg1 BRG1] --gw GW [--data {tags,sim}] [--port PORT] [--clean] [--tl TL] [--run RUN]
132
173
  [--drun DRUN] [--exit_on_test_failure] [--exit_on_param_failure] [--analyze_interference]
133
174
 
134
- Bridge Certificate CLI
175
+ # Bridge Certificate CLI
135
176
 
136
177
  options:
137
178
  -h, --help show this help message and exit
@@ -9,15 +9,15 @@ brg_certificate/cert_gw_sim.py,sha256=MWxNKNCVqQEyDKc66VhGz1_KsOczvn0sjaSyvYH15F
9
9
  brg_certificate/cert_mqtt.py,sha256=dcAOsULShN9VmppT150wNwbPRjIdutLnTGlb_MfWpXk,16859
10
10
  brg_certificate/cert_prints.py,sha256=s0u0Omnq1aruo0CkS_7p4hqpD-fSRx7ih9vJ4x9cbcU,7045
11
11
  brg_certificate/cert_protobuf.py,sha256=1jiPIYBFkA21iClxn2fC3GEQzdh7wLB01pdddwXMX-g,3542
12
- brg_certificate/cert_results.py,sha256=GU4oQf1NBrehhaQRPrOuv3ts3RUIzxitaCpxKxNJRu0,20870
12
+ brg_certificate/cert_results.py,sha256=k6EKex2mG28ev8s8VsNfXGg28hiUn133ASGla7B3WnA,20870
13
13
  brg_certificate/cert_utils.py,sha256=zFQFNxNOi5AH92JgWknZv9NZN-sz-G-dh7sOzz_SRgw,16550
14
14
  brg_certificate/certificate_bcc_sanity_test_list.txt,sha256=SURuNOLuIO7xzh5KnMBYYzwMjZlcLqGaPLwBdqxCKbc,2281
15
- brg_certificate/certificate_bcc_test_list.txt,sha256=PI2mU-1iQNq7bgitjVr1ERPYCS-bWRJC7bHLBaPFRf0,3624
15
+ brg_certificate/certificate_bcc_test_list.txt,sha256=WduySF_fWZ3HK1Wr4zGfFNiyRL8ONsIV9D7vyBCpmig,3332
16
16
  brg_certificate/certificate_sanity_test_list.txt,sha256=Egv00zGNAWdFhzO4T1oUkmeLOSG35aHNfXSxH6DRd9g,2291
17
17
  brg_certificate/certificate_test_list.txt,sha256=RnQkzEWrF_RJlDL0E75mwnboKsJUNCX8uAMZs6AOL1M,3624
18
18
  brg_certificate/restore_brg.py,sha256=rPV-Foa-mPHUSTdJq_LDNuoL6orMyevbulzRIW4GIHs,2341
19
- brg_certificate/wltPb_pb2.py,sha256=sZKS4n3oz4EP4gLfzDvYiameKEZ6bHd9DmpARljZFG8,8686
20
- brg_certificate/wltPb_pb2.pyi,sha256=sqsG_kjSix0qytU7qk06waTAJ8rhdHvK832zTC9sG-o,11445
19
+ brg_certificate/wltPb_pb2.py,sha256=DPFrv5IVbxBUpmGRXO6iZjp-QwWUUaD9c37lMZnQoCM,8686
20
+ brg_certificate/wltPb_pb2.pyi,sha256=OcVo8ehkzIQ9EZoXp4om_kT2Any32stYKTTQvUsPEMU,11472
21
21
  brg_certificate/wlt_types.py,sha256=7pWm-56wDkq7HoMheBdvjUwbDS8suYTz13aEeAgIc6w,5166
22
22
  brg_certificate/ag/energous_v0_defines.py,sha256=3VEpuhPee2jLJ9cGuLBNuk_zs2ExHorWor7fhkRTIyk,64353
23
23
  brg_certificate/ag/energous_v1_defines.py,sha256=vIOy1wMmN4k90TEJ1oiDRGDDB52WTWT3j2GyRFTanzU,64563
@@ -51,50 +51,50 @@ brg_certificate/config/hivemq.json,sha256=nj61J4FaDeVopndiK-vAxlV4xw5d-EYnTIYtZh
51
51
  brg_certificate/config/mosquitto.json,sha256=Wd8Fj36GcZNdIKpXZQzx3wb8EmnTBDmOx1kA0Qgi0Ww,254
52
52
  brg_certificate/config/mosquitto.md,sha256=xU7q2-FpYYwxd6xE-6cl6j_ywc3120ZZnGG1ofl9peY,2494
53
53
  brg_certificate/config/wiliot-dev.json,sha256=J6O70nIJYk_qcnw6Hxf9TaKxcaG72p_dqAUpbbeCsCQ,288
54
- brg_certificate/tests/calibration/interval_test/interval_test.json,sha256=g2nHKXAcefdWGfY08mH86OkhjyD_9vur3k6phZd_0M0,594
55
- brg_certificate/tests/calibration/interval_test/interval_test.py,sha256=drnJtV9DjAPNHQD4sGjrK_kViEuq0myf9EWGXf1j7tI,1189
56
- brg_certificate/tests/calibration/output_power_test/output_power_test.json,sha256=QWt6Ovhe5Z11LYWkxIyfPqEAKvKceyHikCHsstqUzQw,690
57
- brg_certificate/tests/calibration/output_power_test/output_power_test.py,sha256=9rtTujxDZmWVaGFBsZPgljYbtD8e3sf_ghlWw_Ds5iM,1165
58
- brg_certificate/tests/calibration/pattern_test/pattern_test.json,sha256=tjSUT52au2jRDYEORLgYy_45PXXyYKaT4b33xbs0P0k,1021
59
- brg_certificate/tests/calibration/pattern_test/pattern_test.py,sha256=bel_CEM4FfNMiLR4jnBa20MzabHtvLdk1iYs8qrSYZk,4407
54
+ brg_certificate/tests/calibration/interval_test/interval_test.json,sha256=xHDygAh4NFOlgHnj3IJtcCV7ywbavF2BFMDE95A8yI8,594
55
+ brg_certificate/tests/calibration/interval_test/interval_test.py,sha256=0gi3uOXMQ1IXoGJQrHVJewAbai3Mh6kv1laH0rRWEz0,1139
56
+ brg_certificate/tests/calibration/output_power_test/output_power_test.json,sha256=B3bvNohuIaPKWFgDJIODbL1OLDclLuszkTGxEYAEm34,690
57
+ brg_certificate/tests/calibration/output_power_test/output_power_test.py,sha256=PSSRFxJ2Yq7YVz1mac3FZCg7NeI9TGd3as5-sXcIuGY,1115
58
+ brg_certificate/tests/calibration/pattern_test/pattern_test.json,sha256=1i0O5_0StjAjusfkEWIiK1uwKbP3hqN9AJHn1IgHeOQ,1021
59
+ brg_certificate/tests/calibration/pattern_test/pattern_test.py,sha256=fLbnShqqu1ptD2DIFgtbERK1qWkeZb3Zejq-IuM8VC8,4315
60
60
  brg_certificate/tests/datapath/aging_test/aging_test.json,sha256=J-cqOVxqtcbq5DEvkUnfhvyshpbm2sfyoD6UUmvx3bk,900
61
- brg_certificate/tests/datapath/aging_test/aging_test.py,sha256=KeAhqJ7xGILmSLPu9fi7dZ_Ncuql7060tcPdwNfBF-Y,5993
61
+ brg_certificate/tests/datapath/aging_test/aging_test.py,sha256=f_qxDOgHuMjjfmJDFPxxYxXzlRrBW0y5yqMiVThiMTY,6042
62
62
  brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.json,sha256=J3FYtqCwyjoqMnxu7ZHKF9McQAxUvWHSop8jRTkuPj0,829
63
- brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py,sha256=f4sY41w_XNTZlbJKW2yhYyB3UFXtvnkTxnkYS64ACJg,3477
64
- brg_certificate/tests/datapath/output_power_test/output_power_test.json,sha256=4Hgbl8VSC2NhWZrhikzNd6Zg8_DiKag1_Zo6ykFDwKA,696
65
- brg_certificate/tests/datapath/output_power_test/output_power_test.py,sha256=1R0RSTZGKE6VdCWZbWKtzYkw8dkHbzKSxe6KWRDB4_M,1172
66
- brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json,sha256=ccPge-tSA0kyMOPlMIa41Y8RoMAQfSj_-qdQZ4LQYy4,947
67
- brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py,sha256=Ie-DrlzHbgR1aaZVyPmhS5saosGMV8d3HoFhsspAga4,2652
63
+ brg_certificate/tests/datapath/num_of_tags_test/num_of_tags_test.py,sha256=WBCdpbqkH1Q9Ry3XfQvqu-3TS7RGcAeSGTn0UTJg8Uk,3403
64
+ brg_certificate/tests/datapath/output_power_test/output_power_test.json,sha256=V4XCGroVhJDYfVXp04YaF-3CubfKaMxuYganSOM7DAg,696
65
+ brg_certificate/tests/datapath/output_power_test/output_power_test.py,sha256=LvHgjMwptUfER4Q8NJ4NfjPfkEyDMbaDitd1I6QXEaI,1121
66
+ brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.json,sha256=IX4Undkuv3RCsSXy-GfsdmgSrpNwSXbkF9UHRctgyhM,947
67
+ brg_certificate/tests/datapath/pacer_interval_ble5_test/pacer_interval_ble5_test.py,sha256=daE1NCAiw1KTvKd3bznhMT8wUC7DXc-M11t2CxDIKWI,2602
68
68
  brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.json,sha256=TrMceZ6FV5g7tQdLRdWLBmuJjUH-HuBv8qYOD22tzBo,905
69
69
  brg_certificate/tests/datapath/pacer_interval_tags_count_test/pacer_interval_tags_count_test.py,sha256=dKRe0tKOeRCm_AhSxHLMV1zMvdq8qAJYYPJDtrdJffo,3956
70
70
  brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.json,sha256=3OLVPgHuu6y_hMnxPgu2FwW6D_rJIzNyPYXsznFOFUo,921
71
- brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.py,sha256=doRFWUYxSezc03ghZ49Ut6Kft3wujrNkCumnKsslR3w,2646
72
- brg_certificate/tests/datapath/pattern_test/pattern_test.json,sha256=_X6l1PiFwqpSSQfCfKPSbre-LLdh_7QltKcsJfSW32Q,758
73
- brg_certificate/tests/datapath/pattern_test/pattern_test.py,sha256=hga1ZJaYtFY13FRjmnpTIiVTPX1hx-uSB4rM8W0B6j4,1188
74
- brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json,sha256=rZdWwMHIrKzPw9dcgtwrQpILRTQDbgMwLAoLhu3c-Zg,1202
75
- brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py,sha256=0m-PDesxO70Ii7jr1TnsoEQhH6u8zEmjSy7bX9t5myU,3165
76
- brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json,sha256=VWvLhVLMKP1aTtYjn6bXe_eSGDZ-bbto1AsvyQUp6e8,1156
77
- brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py,sha256=rneXsHLWmPk10bUXkKNtTA1VLBgc3DoSWlTcGlcqLtw,3157
78
- brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json,sha256=7HmFCJnTWFzEDYKroXZrVDk54g6xn_UiYnAL2yOXMOo,1167
79
- brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.py,sha256=Y2HuZ67vZo0AjGgcPf9bune2jl9KMJh3Pf3zB-_OpGE,3136
80
- brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json,sha256=WJicb8op-0dS-qhbWGpxyjzpUdSYfycgYbFUN_ahItA,737
81
- brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.py,sha256=KNLwj5eYjIYKJsQo9z9fj75_oO4jmN_yPIBel3WBJKA,3263
82
- brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.json,sha256=vn9NJZq-zPxlGyX2lQU3uGSinwyCgQHkjuAZlwGBZkY,765
83
- brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.py,sha256=_jINDia8_nXPvBLzFyVGBtFeB8iO8TnxyAWnI8h0VJA,1790
71
+ brg_certificate/tests/datapath/pacer_interval_test/pacer_interval_test.py,sha256=nqNUew48m_FVDUwxiQLzp-qg2e_0N2ZyQKvMmkw-Kz0,2595
72
+ brg_certificate/tests/datapath/pattern_test/pattern_test.json,sha256=EjV4vYrmkIHc8B2KE2OLq42MMTLi9K2n_YrZx8gurHA,758
73
+ brg_certificate/tests/datapath/pattern_test/pattern_test.py,sha256=eE52YSSMKnBFhSdtbGRhCDxk_qKcMI6m1TRPW8RL1Vg,1137
74
+ brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.json,sha256=87ppotggyGvBs_R4NsAnCjvzbAZS9C1CE93Hfj4rjic,1202
75
+ brg_certificate/tests/datapath/pkt_filter_ble5_test/pkt_filter_ble5_test.py,sha256=k2pQta-QfjqrtQGAh7TsygAsHHsZ9kFw9XWnzuTQN2g,3114
76
+ brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.json,sha256=0kypJ_QvnoYQ_doOHi_sjSdCKfKLAkgDDp7Z5q6EZ1k,1156
77
+ brg_certificate/tests/datapath/pkt_filter_gen3_test/pkt_filter_gen3_test.py,sha256=bjcZgRaR-ZN82J9eao1MbXb78M7KGbhed6rPHBhQYL0,3106
78
+ brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.json,sha256=nW0M2zznpvgLyw-mvHedY22Wno3-jCIycx8Emiyv5p0,1167
79
+ brg_certificate/tests/datapath/pkt_filter_test/pkt_filter_test.py,sha256=Q4HTfqFdQYt72wnd-vBrDMZ8F20ocLoKECnyGYJnwTg,3086
80
+ brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.json,sha256=89IWoUid1s4q471K229k7h3HbScj2PNH6VxmMKGZ1XM,737
81
+ brg_certificate/tests/datapath/rssi_threshold_test/rssi_threshold_test.py,sha256=heC7U7PdhWBIhYS5PhEH1UC8rMTAniK7nJNJY8ELHvs,3213
82
+ brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.json,sha256=FVxQKGqCSGfafn17Y3X2ztGtUxodmv9NZJgWVRwcKeo,765
83
+ brg_certificate/tests/datapath/rx_channel_test/rx_channel_test.py,sha256=u2HyaT_rBVPeTdWJDMZAp3mrbpD9m8JtQ6itv9i4QhE,1740
84
84
  brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.json,sha256=bYp_P_r8XgFDyUv1on5jL8Tp-04RhnnGJp2qOJhd4Tk,1395
85
- brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py,sha256=8Fks8G2hBrBok8cxosbVyaB_BG6CPjgTfFEqOKhvrjk,10483
85
+ brg_certificate/tests/datapath/rx_rate_gen2_test/rx_rate_gen2_test.py,sha256=7fierhPmE8MjqwhvfsaAswtF3qnXeilDzJar47wuMdA,10503
86
86
  brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.json,sha256=qhVoafzoQx8oO4VSxFZDnqXFLI3r8I6IK6ZLWpGAgRY,1395
87
- brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py,sha256=_UPF0K4593AwrR4coWkMlBpX9nMn4uEIeq9dgAF59lA,10483
88
- brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json,sha256=G9TTL_mMWF5lGBG8G32mwFWHrG_9Qa_avroNF2Wice4,1378
89
- brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py,sha256=a0o5LbF80_h2lx3U3PiKtJsbY-XzxGSfT1aSnJTS1-8,10588
90
- brg_certificate/tests/datapath/stress_test/stress_test.json,sha256=Y_OwuUrdFFvnnFv6rlmR_t2AgqvhNgsPe5uxLOdyw2w,1378
91
- brg_certificate/tests/datapath/stress_test/stress_test.py,sha256=9l-vu-27RDS7YM1O1SFIld2vPrc4naYbVV9fTByLay8,10649
87
+ brg_certificate/tests/datapath/rx_rate_gen3_test/rx_rate_gen3_test.py,sha256=NaLZu7s99JqattYqxbOIDpviTGSAVp6H_RjBXZwinZc,10503
88
+ brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.json,sha256=0Xrt9c43zt_X80Hc9syRWvJbUgcNCJiNM8QxKu2j9_M,1378
89
+ brg_certificate/tests/datapath/stress_gen3_test/stress_gen3_test.py,sha256=57gjJtsbBfNiAeFZeC81i51QC9gZRsUZw0zDOuI4Shg,11008
90
+ brg_certificate/tests/datapath/stress_test/stress_test.json,sha256=MG79WsyLNq9kOeA5Z_8L_7cbFZhio9J2jJT3-_DdVJ4,1378
91
+ brg_certificate/tests/datapath/stress_test/stress_test.py,sha256=ddu_YG6Z0Fw4fSvEcfwm3PJvSVW3d9QOgI749cgqBGI,11007
92
92
  brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.json,sha256=RLyxlEUQF24gMXLhsWLOd0jjUZ7KEOX1zSmO9DjVHa0,808
93
93
  brg_certificate/tests/datapath/tx_repetition_algo_test/tx_repetition_algo_test.py,sha256=DxEPHS-ivLBwSxX07cYxnoVjB_DG1XPQrWeK4288hS4,4044
94
- brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json,sha256=tzkc4RRfUYUM926QpRYk3nrSwEfJFNmjXOeGTKRi4g0,968
95
- brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.py,sha256=Z2mkajzJGUmiFOmSlhr0i4Ey2WyZ_6qa2CJYTvFLt00,3664
96
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.json,sha256=Onsxqs4raXyq529PHJt3bPhX-tn7xTE6K_DhvOjNYHQ,714
97
- brg_certificate/tests/edge_mgmt/actions_test/actions_test.py,sha256=mLuQt8w6vTf51csie_0ltpEroC6p6EKc2z2UUHfYlpM,18790
94
+ brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.json,sha256=2mcvlH-djpKP-Al7TSwGx47fiDItk-U-z0Hgg3lWwFY,968
95
+ brg_certificate/tests/datapath/tx_repetition_test/tx_repetition_test.py,sha256=ooCFmhjhnaTmMGT9NBsPTChIyhdezs5Afifjyeo2S0c,3613
96
+ brg_certificate/tests/edge_mgmt/actions_test/actions_test.json,sha256=Nc7amijSFqu5aS2Dw60MKPvwoXTdwx7KJbmgl2TqZUE,714
97
+ brg_certificate/tests/edge_mgmt/actions_test/actions_test.py,sha256=pWHi-4qxEiY7ilGqJKexnLQtsugTQVgMRkc4OG8P23E,18739
98
98
  brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.json,sha256=lYdqQJtgQwVIK4_pUD_abCt4bSHSqFpJQ1lWLcx9Z9I,1268
99
99
  brg_certificate/tests/edge_mgmt/brg2brg_ota_ble5_test/brg2brg_ota_ble5_test.py,sha256=kedRXAc8sgRnL2JRFNXaLNMqgykQlrSYTbbP_08WwzQ,4400
100
100
  brg_certificate/tests/edge_mgmt/brg2brg_ota_test/brg2brg_ota_test.json,sha256=lFLCF9RNZXYjmjeXOHTrasNAmsPF6uDXmfex93DrrSA,1158
@@ -105,12 +105,12 @@ brg_certificate/tests/edge_mgmt/ota_test/ota_test.json,sha256=A-psNlYEFZ6f0KtdKt
105
105
  brg_certificate/tests/edge_mgmt/ota_test/ota_test.py,sha256=m3SlHdtEtbE0L8rclZ-0_z1RsJFm7lej9fxbrv76EXQ,5207
106
106
  brg_certificate/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.json,sha256=As4vG-Tx4iOTF6KWrm-7ciipWh2x5aDbLYn_oN5OjGk,584
107
107
  brg_certificate/tests/edge_mgmt/periodic_msgs_test/periodic_msgs_test.py,sha256=VMGVYtzP2Ic1A5y56zQzLYwMxkJw3DU671ownzmj4rQ,1977
108
- brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json,sha256=qNqVWboeLvjEsmqpGqLPNl7qNdepoJcL9MnWSykatnQ,684
109
- brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.py,sha256=Q097Oy0JilDlNiYrr-ONIajVH7etXN3ujm5Bik4Cs4w,1177
110
- brg_certificate/tests/energy2400/output_power_test/output_power_test.json,sha256=452r2nrI4b5YCTemhQxhO2QYf-QEy5_N1xv5UHHQduY,699
111
- brg_certificate/tests/energy2400/output_power_test/output_power_test.py,sha256=1361LNvb2h8BhkLfAXf-NhlcfFxapz9uGS9VdrA7btc,1180
112
- brg_certificate/tests/energy2400/pattern_test/pattern_test.json,sha256=xZLpZnDZDohZeG4_Sy1vx0MR-VHoKHAPWtFZdDSWSwI,866
113
- brg_certificate/tests/energy2400/pattern_test/pattern_test.py,sha256=9-UDAeoHW-zzO_o6sOUM63fmo7PcQbLv6RCEPuQVI2Q,1198
108
+ brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.json,sha256=-meatjF53qoFBO_q_gOfQvDRDW79Rh5F6T9HOfNqBwE,684
109
+ brg_certificate/tests/energy2400/duty_cycle_test/duty_cycle_test.py,sha256=MG3KHDHvrG6loJxd0vQPgUlPt5LCaBNXYTLSUj7J8CM,1126
110
+ brg_certificate/tests/energy2400/output_power_test/output_power_test.json,sha256=vGyqsmKUyw_5kfgC-bp-fILVFC63CcVRD7cIKTnwHUU,699
111
+ brg_certificate/tests/energy2400/output_power_test/output_power_test.py,sha256=8e1ITKdUJb0f8LfgWDlLyQGgQnM7lkdSIo4KyleclyA,1129
112
+ brg_certificate/tests/energy2400/pattern_test/pattern_test.json,sha256=IlmfE9MbN59IhQyffhAFMCWoaQJcYZWp1qHv2zzs6LQ,866
113
+ brg_certificate/tests/energy2400/pattern_test/pattern_test.py,sha256=4qD--IYlqvexTBNSv7d6dDJ7Q2tUqi3-FgL9pCgWuI4,1147
114
114
  brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.json,sha256=XeH-0GbMC4X_g5S8Or_9-DcIic2E6ffo770f5we8uDY,1409
115
115
  brg_certificate/tests/energy2400/signal_indicator_ble5_10_250k_test/signal_indicator_ble5_10_250k_test.py,sha256=WzpUZoxpmdp5IDCi7-UIgi9vwMC4j7KQG5N9JfACGtE,19205
116
116
  brg_certificate/tests/energy2400/signal_indicator_ble5_10_500k_test/signal_indicator_ble5_10_500k_test.json,sha256=b8mVVwmXup3Xi5dpC2UHOsS0Qhj3DwbxFfzce8GjLAY,1403
@@ -119,22 +119,22 @@ brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicato
119
119
  brg_certificate/tests/energy2400/signal_indicator_sub1g_2_4_test/signal_indicator_sub1g_2_4_test.py,sha256=cVEc0LKCRdzmF85hx2kWQx2gizp_Y_UAXecsGY1852Y,7804
120
120
  brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.json,sha256=iqT5e6Dv1415_LVev_5uowq0dpLTutBJulXYvhpXhjk,1382
121
121
  brg_certificate/tests/energy2400/signal_indicator_test/signal_indicator_test.py,sha256=k0SG_LOdfFjNHmtuWbOUuYQvECvopGdVp_PdntdKtpQ,16175
122
- brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json,sha256=F_FFiXMlrUboMp25JZLxGnfHf70kbHAuHcqw3DADv7Q,713
123
- brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py,sha256=bWcN0hzqGvtRC2x5KJovyDhIecZGdVFogmevkAoqAE0,1197
124
- brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.json,sha256=982h0NXKuWBPBrZ_IN6L_p-07jX5D1srcOrwKo44nQk,1183
125
- brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.py,sha256=yiev7S4A_d2ZaqenwS1kjFF_PLKeXUu0tcqvr2uCCBk,1158
122
+ brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.json,sha256=AroWSbQnToy4_hwReF1JQnAQPgV5A6VXqaP2I69prAY,713
123
+ brg_certificate/tests/energy_sub1g/duty_cycle_test/duty_cycle_test.py,sha256=mtmRpkWCjuC90axh3hCspTMrOpGo8gtTvAOYsO70I9M,1147
124
+ brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.json,sha256=7rIPAklqUC03r1JDvzQUD_9JLvn5k0m-ifd7VFBRxsE,1183
125
+ brg_certificate/tests/energy_sub1g/pattern_test/pattern_test.py,sha256=nqVjDDUKgIVTP7VdS_uyxly-0PIyA1UyyjozspjX0C8,1107
126
126
  brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.json,sha256=qsuf6b0dj_0bp3DhjczuBwiT6jFxyUO8tlJsrj79mLQ,1378
127
127
  brg_certificate/tests/energy_sub1g/signal_indicator_functionality_test/signal_indicator_functionality_test.py,sha256=I9LTNBFd5Nx-4J8Vx_kk_hDRtUjyVu-k6ShIsZDYyQ8,26083
128
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json,sha256=2LuVIAus3DfDkJhLjPf4VeGW6s18SSC4NGiktUDQWwk,746
129
- brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py,sha256=4gozPh19-9blCM5iUhsaSVv5HMsQXqp4DJS6T_GnjQo,1247
128
+ brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.json,sha256=dQxNN--ZG52EO2WWpKxYarkZl3Zuz_uR7NOieiOlZwY,746
129
+ brg_certificate/tests/energy_sub1g/signal_indicator_test/signal_indicator_test.py,sha256=l-2kmmv-Kw2sjWyKNeJrP5oW8ziP9_rFAdSQspQA2L8,1197
130
130
  brg_certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.json,sha256=8mfJavH21XJ4iHD3QDY_H8MVKXr59sA4O3Plx38n1Lk,826
131
131
  brg_certificate/tests/pwr_mgmt/pwr_mgmt_test/pwr_mgmt_test.py,sha256=VoyZhB2JShzpObXlPD2CN9cLBkAVmJ3915dlbv3488c,3726
132
- brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json,sha256=pDn-FPg2XpDY07y8SLBtizUXevbhhR15To8k_XGgtmE,1864
133
- brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py,sha256=QtZl56BCPmYJiBBM779lCFYqkxGtqUQ9eB9ZZC0xNXk,13025
132
+ brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.json,sha256=8MdE9fAz--cb9VVfbNXosX4HVr2ePjA_oPaMLbaHoBw,1932
133
+ brg_certificate/tests/sensors/ext_sensor_test/ext_sensor_test.py,sha256=uYlOSAo-iRPAhV1WklRqmNDjakkNnz93aGhwBeauAh8,12974
134
134
  common/wlt_logo.png,sha256=21DEhCEOOBU7Zt7ocwVIKU_CKUoHXScc3ej5VAzVsjM,132154
135
135
  gw_certificate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
136
  gw_certificate/cert_results.py,sha256=y299oQ3TW4xYp0aM20txqvt7ufsUXSunqg2HN3M5emQ,8856
137
- gw_certificate/gw_certificate.py,sha256=rM-TB5dYETIbF1oVshoF4ZL5IONWd-5RtEaFTJg0WIU,6845
137
+ gw_certificate/gw_certificate.py,sha256=N1c7MmXrW2fMqzG2woe3H17CqJvGyoKAzhEgLjkBcsc,6845
138
138
  gw_certificate/gw_certificate_cli.py,sha256=FZ_A3A6UttACNo56WwhqAl0ZwfOFJDcBgS3q0tH_Mnk,4869
139
139
  gw_certificate/ag/ut_defines.py,sha256=HgrljTmPpKyxj6zYbnrLz1oVdSiAI4voG24d5diSQXc,16892
140
140
  gw_certificate/ag/wlt_types.py,sha256=WFiRPs0E0fN5f-9a9l0y8zjDNAR4Xfmon2k8n7rqODk,3637
@@ -164,46 +164,47 @@ gw_certificate/api_if/205/logs.json,sha256=vfVi4hkxKGcSiupTSS2Er8wn4hZ8_MTaO5xbi
164
164
  gw_certificate/api_if/205/status.json,sha256=WVO5eGzadLazdkHQZ97yEYlPDzJu12WYRZb3s52kixk,1861
165
165
  gw_certificate/common/analysis_data_bricks.py,sha256=_DZvurnE7ymKVJbu-YnQUJY0SalwmZxIuMsN-FMr7Qk,2537
166
166
  gw_certificate/common/debug.py,sha256=sE_N4sWGRkbwdIb2QxqRtL8YQaePlaxvqecgnbxn6Xc,1208
167
- gw_certificate/common/serialization_formatter.py,sha256=fXJQU9DMi5F88-HkJFvYlALOf7lm9I5p9qk6U95ToIc,3812
167
+ gw_certificate/common/serialization_formatter.py,sha256=NC-tPZ5Dw3L7f9EF1PBtEz-eW7GPSGegcJo6_gmDpvc,4358
168
168
  gw_certificate/common/utils.py,sha256=yjE6kdmMIRyQ0rPm56zZroi8a9zY4GnincmOPOL6rJo,215
169
169
  gw_certificate/common/utils_defines.py,sha256=zLWKQBZscX1AVwBdJcM5GgZTJ5aYJWhQ1vjwX25EZrM,543
170
170
  gw_certificate/common/wltPb_pb2.py,sha256=DPFrv5IVbxBUpmGRXO6iZjp-QwWUUaD9c37lMZnQoCM,8686
171
171
  gw_certificate/common/wltPb_pb2.pyi,sha256=OcVo8ehkzIQ9EZoXp4om_kT2Any32stYKTTQvUsPEMU,11472
172
- gw_certificate/interface/4.4.88_app.zip,sha256=bXNmIFpNGJwTtJHezo_AmW0dLyWzuV-YQ6g6PhtjP0M,171429
173
- gw_certificate/interface/4.4.88_sd_bl_app.zip,sha256=0p3IYljHlVlr0sxnVFFVjXwmluixZ9BGGTw_fzdKuiU,368877
172
+ gw_certificate/interface/4.4.91_app.zip,sha256=Z_U2mg6UlpfDIqP8hBlQ7fA9MBr6jsHMxlEyaf8PP_0,171102
173
+ gw_certificate/interface/4.4.91_sd_bl_app.zip,sha256=Czstl4rmWat8Jm0QvQy6PyTLMXs-axZkf2XxeK73JEU,366514
174
174
  gw_certificate/interface/ble_simulator.py,sha256=mdH28n2-pdywKGrTc4nqmyIThNpM68Qf4ICzzeCuxbE,2678
175
175
  gw_certificate/interface/ble_sniffer.py,sha256=S5AtT_3gWlm3FCmQSR4KnCIfnr70E9LgQPtQEJs1YFM,6869
176
+ gw_certificate/interface/flash_fw.py,sha256=yAAAY9pBtlvzab0YFvHP48F8XBLmVm8OxkejiyCr7xo,2724
176
177
  gw_certificate/interface/if_defines.py,sha256=EAdT26qFl7110breWbpTPrpYZRHmizzvd188bse36ek,999
177
178
  gw_certificate/interface/mqtt.py,sha256=dVNkRiFXjCmFlz5897IIZta-t0H095uftczayqDjVUY,25619
178
179
  gw_certificate/interface/nrfutil-linux,sha256=9Fzy9VLSzL5dwEWh4HJUFdfmXH69gTrUVV8hxEjPgGU,26071480
179
180
  gw_certificate/interface/nrfutil-mac,sha256=YG-iPLwnYUFjwYriqaGaFtYuIj-0T4TkeSWkJ638HWQ,15839744
180
181
  gw_certificate/interface/nrfutil.exe,sha256=_uOu7RhDpL_8CCdHzqYNwHKSnrNuZ9Ysij_XRx4NyS0,16155851
181
182
  gw_certificate/interface/pkt_generator.py,sha256=yOSCEj8Ybjsq_u6tVmpsbkwYmLFqZR2eIk9k09AIsUM,22174
182
- gw_certificate/interface/uart_if.py,sha256=ta55cie4PTuDimLPsxccDtpmoCHN4uQm5I8pe1daaik,10360
183
+ gw_certificate/interface/uart_if.py,sha256=m5YHsHo4E75714kThYtUN9OCP7AA9fEzag8QIHkguzo,10360
183
184
  gw_certificate/interface/uart_ports.py,sha256=HOIdrkr8OtALhoorT51k_tvSh6VYholR2ey4_WwcIAk,547
184
185
  gw_certificate/templates/results.html,sha256=w3kqslWDpHb1oYKSbY10RMDZe9HeI-O-GRP15oQIijA,12694
185
186
  gw_certificate/templates/stage.html,sha256=o89N0DWCIs2foA9YzommBZ09EPPN7lytiEsHoXD6fWU,1009
186
187
  gw_certificate/templates/table.html,sha256=PPUf0St1OPT0fB_6OK0SQlsRST-brUJ99x9-Rxwan1Y,201
187
188
  gw_certificate/templates/test.html,sha256=lpwibyrmGXNyNxpxNbQNoT2b5oCq5WHUYZrF0oDnLSA,2062
188
189
  gw_certificate/tests/__init__.py,sha256=6XWYuJ1urHGCUTPQ6bbn25lDd32ZyB2dIDr2A_mkvTg,468
189
- gw_certificate/tests/actions.py,sha256=LSMQS0WPfrsU_2BZDxRiMBYJ1uFVrWsxpuK6C90SHio,13906
190
+ gw_certificate/tests/actions.py,sha256=_EnQxlN3HowRtxdb0fsVz3dOpPl8xLQhKPxzZ2RxVXk,13906
190
191
  gw_certificate/tests/bad_crc_to_PER_quantization.csv,sha256=2V1_7HV7pKEKddA429rp4tTn-je9G3Xi2tMvDhqvGhc,357
191
192
  gw_certificate/tests/connection.py,sha256=f70DB1R0BHOlNnTYt4qa9tKwAJmNAHBju5bwvbcT6b0,9721
192
- gw_certificate/tests/downlink.py,sha256=RhgOZgyOhwwbj_gZziRlzOENgqT6fc00T7fCLaj2Igo,8823
193
- gw_certificate/tests/generic.py,sha256=B2pYlC4BtmQ10UGFSaTC57LhhAa50l1Bbk7DY6CWI6M,8381
193
+ gw_certificate/tests/downlink.py,sha256=UcA18NB5N7BEPIrvIvqXUc681isp0XNT9_tzTP8V-ik,8865
194
+ gw_certificate/tests/generic.py,sha256=C2tm5lalQlFyAF3OgA4qTkvJ8amYbxSjuh_jt4vtZfs,8416
194
195
  gw_certificate/tests/registration.py,sha256=TgfYyDGkT-HAC11dJIdwFJTMZjTESFZb30-Q6ZCkXek,16152
195
- gw_certificate/tests/throughput.py,sha256=T5axw55cP_CngQ4mB0jBj7xQWEp-Y34NsgDnP3eYz0I,11172
196
- gw_certificate/tests/uplink.py,sha256=7DWHcNZ_7Oj2JJEFlg-oG3ssnMw0q2-sBqzqhxz5yZU,38735
196
+ gw_certificate/tests/throughput.py,sha256=vm1Oe4RVDHQZ2DOHpVtJOtdxN2ag6zg_2M4AhlGRkFk,11187
197
+ gw_certificate/tests/uplink.py,sha256=9jAJV9wKh7iuexwzMsGjSw4ig2dQJ4dp8W8ZsWiCxWs,40020
197
198
  gw_certificate/tests/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
199
  gw_certificate/tests/static/connection_defines.py,sha256=RZbqvGNjUN-ST5378VZpleRB_b3_6IwME-j0CFnWmgE,309
199
200
  gw_certificate/tests/static/downlink_defines.py,sha256=gjzQff_70Rn8m6pmfGciFwEC7efYQGEM9yNwl-8zRCs,340
200
- gw_certificate/tests/static/generated_packet_table.py,sha256=nMFtbTyjKDOgL3iD2fxUhnlLvmCH9oNn3W1WC3U8ebI,17059
201
- gw_certificate/tests/static/packet_table.csv,sha256=S8i8AVxEw8cuiLaaYUAORfn4dCaf0L_Z-mQ2q98OSss,1882502
201
+ gw_certificate/tests/static/generated_packet_table.py,sha256=HDESJ-VF41RiZRKmrPAPRXXgMVNXPzDCIgzq0v05CyY,17059
202
+ gw_certificate/tests/static/packet_table.csv,sha256=dGPSheg-RHuShc8NE3SyhCBeNWxbelVBYxw2ayCB8j8,1882502
202
203
  gw_certificate/tests/static/references.py,sha256=vVVaoC_3nEdu2OMtfr_XKxZLvnJmbDeK2pEDFkAzNtU,384
203
- gw_certificate/tests/static/uplink_defines.py,sha256=1gkzWrXivrAqO992UbG6plnZLSpVtpZ8RC5xBak9_TI,387
204
- wiliot_certificate-4.4.0a1.dist-info/licenses/LICENSE,sha256=OL5ajUNVx888yC2ogol0BKwPRLdQAF1noGuQ7WrYiAA,1068
205
- wiliot_certificate-4.4.0a1.dist-info/METADATA,sha256=Nef8FDPnmAHwK7AWG74zg6WoKC5x5ryAZiAv9FAVCZY,7307
206
- wiliot_certificate-4.4.0a1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
207
- wiliot_certificate-4.4.0a1.dist-info/entry_points.txt,sha256=19YeTHY3PnN1wbi7BcgZB0zSgRrp9bvahIX-dIMX3Sg,127
208
- wiliot_certificate-4.4.0a1.dist-info/top_level.txt,sha256=wN_MwxdcfgPP5-WN6sRhmZnGXNbZmXalxwYdh3nb2RA,38
209
- wiliot_certificate-4.4.0a1.dist-info/RECORD,,
204
+ gw_certificate/tests/static/uplink_defines.py,sha256=PJGUpzr_mD4Z6xUKzpCR7JcD1n2rvWrNdyUYS0xQX4s,387
205
+ wiliot_certificate-4.4.2.dist-info/licenses/LICENSE,sha256=OL5ajUNVx888yC2ogol0BKwPRLdQAF1noGuQ7WrYiAA,1068
206
+ wiliot_certificate-4.4.2.dist-info/METADATA,sha256=9vk_B0PJvgi6AdxoHcMNWrd4AA-t1slPPHPxNm_b26Y,9292
207
+ wiliot_certificate-4.4.2.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
208
+ wiliot_certificate-4.4.2.dist-info/entry_points.txt,sha256=19YeTHY3PnN1wbi7BcgZB0zSgRrp9bvahIX-dIMX3Sg,127
209
+ wiliot_certificate-4.4.2.dist-info/top_level.txt,sha256=wN_MwxdcfgPP5-WN6sRhmZnGXNbZmXalxwYdh3nb2RA,38
210
+ wiliot_certificate-4.4.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (80.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
Binary file