Skip to main content Link Menu Expand (external link) Document Search Copy Copied

3. BLE Test Cases

3.1 BLE/EP/CONN/REG/BV/01: An unregistered Endpoint successfully completes Sidewalk device registration over BLE.

3.1.1 Test Purpose

An unregistered DUT configures the Sidewalk stack in BLE mode. It accepts a BLE connection from the Lower Tester and completes registration. After it has registered it uses BLE radio for Amazon Sidewalk network activities.

3.1.2 Initial Conditions

  • DUT is not registered with Amazon Sidewalk network.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • Lower Tester operates in BLE mode.

3.1.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Not Registered, Link Mask 0, BLE Disconnected
    Lower_Tester->>DUT: Establish BLE connection
    Note over Lower_Tester,Upper_Tester: Wait until registration process is finished
    DUT->>Lower_Tester: Packet with successful registration result
    DUT->>Upper_Tester: on_status_changed() "Status: Registered, Link Mask 0, BLE Disconnected"
    Lower_Tester->>DUT: Drop BLE connection
    DUT->>Lower_Tester: Beacon with time sync request
    Lower_Tester->>DUT: Establish BLE connection
    Lower_Tester->>DUT: RESP_TIME
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE disconnected"

3.1.4 Expected Results

3.1.4.1 Pass Verdict

DUT with Sidewalk stack (BLE) initialized is successfully registered with Amazon Sidewalk network.

Afterwards, DUT completes time synchronization over BLE.

3.2 BLE/EP/CONN/REG/BV/02: An unregistered Endpoint successfully completes Sidewalk device registration with use of FFN.

3.2.1 Test Purpose

An unregistered DUT configures the Sidewalk stack in BLE mode. Lower tester establishes BLE connection after detecting beacon with provisioning request. DUT starts registration flow by sending “PROV_INIT_REQ” packet to Lower Tester. At the end of the registration flow, DUT receives
SET_CONFIGURATION_COMPLETE packet from Lower Tester and responds with
RESP_CONFIGURATION_COMPLETE packet, which is a sign of successful device registration. After that BLE connection is dropped and DUT continues to work using BLE radio for Amazon Sidewalk network activities.

3.2.2 Initial Conditions

  • DUT is fully unregistered from Amazon Sidewalk network (both Cloud and DUT side)

  • Lower Tester operates in BLE mode.

3.2.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: The Sidewalk stack is uninitialized
    Upper_Tester->>DUT: sid_init(SID_LINK_TYPE_1)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    Upper_Tester->>DUT: sid_start()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Status: Not Registered, Link Mask 0, BLE Disconnected"
    DUT->>Lower_Tester: Beacon with provisioning request: Application ID: 0x4 (Sidewalk Cloud Service), Device mode: Registration mode (0x1)
    Lower_Tester->>DUT: Establish BLE connection
    Note over Lower_Tester,Upper_Tester: Sidewalk Registration
    DUT->>Lower_Tester: PROV_INIT_REQ
    DUT->>Lower_Tester: NOTIFY_PROV_INIT_REQ_SIG
    Lower_Tester->>DUT: RESP_PROV_INIT_REQ
    Lower_Tester->>DUT: PROV_INIT_SIG
    DUT->>Lower_Tester: RESP_PROV_INIT_SIG
    Lower_Tester->>DUT: GET_DEVICE_ECDH_SIG
    DUT->>Lower_Tester: RESP_DEVICE_ECDH_SIG
    Lower_Tester->>DUT: HAND_SHAKE_REQ
    DUT->>Lower_Tester: HAND_SHAKE_RESP
    Lower_Tester->>DUT: SET_PAN_ID
    DUT->>Lower_Tester: RESP_PAN_ID
    Lower_Tester->>DUT: SET_P2P_CHANNEL
    DUT->>Lower_Tester: RESP_P2P_CHANNEL
    Lower_Tester->>DUT: SET_P2P_BROADCAST_KEY
    DUT->>Lower_Tester: SET_P2P_BROADCAST_KEY
    Lower_Tester->>DUT: SET_WAN_SEC_PARAMS
    DUT->>Lower_Tester: RESP_WAN_SEC_PARAMS
    Note over Lower_Tester,Upper_Tester: Continued on next page
sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: Application Registration
    Lower_Tester->>DUT: RESP_PROV_INIT_REQ
    Lower_Tester->>DUT: PROV_INIT_SIG
    DUT->>Lower_Tester: RESP_PROV_INIT_SIG
    Lower_Tester->>DUT: GET_DEVICE_ECDH_SIG
    DUT->>Lower_Tester: RESP_GET_DEVICE_ECDH_SIG
    Lower_Tester->>DUT: SET_APP_SEC_PARAMS
    DUT->>Lower_Tester: RESP_APP_SEC_PARAMS
    Lower_Tester->>DUT: HAND_SHAKE_REQ
    DUT->>Lower_Tester: HAND_SHAKE_RESP
    Lower_Tester->>DUT: SET_CONFIGURATION_COMPLETE
    DUT->>Lower_Tester: RESP_CONFIGURATION_COMPLETE
    DUT->>Upper_Tester: on_status_changed() "Status: Registered, Link Mask 0, BLE Disconnected"
    Lower_Tester->>DUT: Drop BLE connection
    DUT->>Lower_Tester: Beacon with time sync request
    Lower_Tester->>DUT: Establish BLE connection
    Lower_Tester->>DUT: RESP_TIME
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE disconnected"

3.2.4 Expected Results

3.2.4.1 Pass Verdict

Before registration, DUT is transmitting beacons with provisioning request. This information is located in:
“Application ID” - 5th octet of Manufacturing Data - 0x4 (Sidewalk Cloud Service)
“Device State” - second and third bit in 6th octet of Manufacturing Data

  • Registration mode (0x1).

There may be more than one beacon transmitted by DUT before the BLE connection with Lower Tester is established, however this should not negatively affect the registration process.

Lower Tester establishes BLE connection with DUT, after detecting a beacon with provisioning request.

DUT sends “PROV_INIT_REQ” packet to initiate the registration flow.

Every registration related packet is successfully exchanged between Lower Tester and DUT.

DUT receives “SET_CONFIGURATION_COMPLETE” packet from Lower Tester and responds with
“RESP_CONFIGURATION_COMPLETE”. Those two packets signify that DUT is successfully registered with Amazon Sidewalk network with use of FFN.

Registration status on DUT changes to: “Registered”.

Afterwards, DUT completes time synchronization over BLE.

3.3 BLE/EP/CONN/REG/BV/03: Endpoint can be deregistered from Sidewalk network.

3.3.1 Test Purpose

To verify that the DUT is able to be deregistered from the Amazon Sidewalk network. After deregistration DUT starts transmitting beacons with provisioning request.

3.3.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

3.3.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    Upper_Tester->>DUT: sid_set_factory_reset()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Status: Not registered, Link Mask 0, BLE Disconnected"
    DUT->>Lower_Tester: Beacon with provisioning request: Application ID: 0x4 (Sidewalk Cloud Service), Device mode: Registration mode (0x1)
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Status: Not registered, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE

3.3.4 Expected Results

3.3.4.1 Pass Verdict

Calling the method should force the change in registration status of DUT to “not registered”.

After deregistration, DUT starts transmitting beacons with provisioning request. This information is located in:
“Application ID” - 5th octet of Manufacturing Data - 0x4 (Sidewalk Cloud Service)
“Device State” - second and third bit in 6th octet of Manufacturing Data

  • Registration mode (0x1).

3.4.1 Test Purpose

DUT is able to receive downlink packets with various sizes of Command data (1B, 125B, 255B) sent from the Lower Tester.

3.4.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.4.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    DUT->>Lower_Tester: Beacon
    Lower_Tester->>DUT: Establish BLE connection(triggered by upcoming downlink packet)
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (with 1B of Command data)
    DUT->>Upper_Tester: on_msg_received() "Command data: 1B"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (with 125B of Command data)
    DUT->>Upper_Tester: on_msg_received() "Command data: 125B"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (with 255B of Command data)
    DUT->>Upper_Tester: on_msg_received() "Command data: 255B"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.4.4 Expected Results

3.4.4.1 Pass Verdict

Packets with various sizes of Command data sent by Lower Tester are able to reach the DUT.

The Command data content shall be verified for correctness on the Upper Tester side.

3.5.1 Test Purpose

Lower Tester is able to receive uplink packets with various sizes of Command data(1B, 125B, 255B) sent from the DUT.

3.5.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.5.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE disconnected
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Upper_Tester->>DUT: sid_put_msg(SID_MSG_TYPE_NOTIFY, Command data: 1B)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: CUSTOM_NOTIFY_CMD (with 1B of Command data)
    DUT->>Upper_Tester: on_msg_sent()
    Upper_Tester->>DUT: sid_put_msg(SID_MSG_TYPE_NOTIFY, Command data: 125B)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: CUSTOM_NOTIFY_CMD (with 125B of Command data)
    DUT->>Upper_Tester: on_msg_sent()
    Upper_Tester->>DUT: sid_put_msg(SID_MSG_TYPE_NOTIFY, Command data: 255B)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: CUSTOM_NOTIFY_CMD (with 255B of Command data)
    DUT->>Upper_Tester: on_msg_sent()
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.5.4 Expected Results

3.5.4.1 Pass Verdict

Packets with various sizes of Command data sent by DUT are able to reach the Lower Tester.

The Command data content of each packet shall be verified for correctness on the Lower Tester side.

3.6 BLE/EP/CONN/EST/BV/01: Gateway establishes BLE connection on Endpoint’s request.

3.6.1 Test Purpose

To verify that Lower Tester successfully establishes BLE connection with DUT, after detecting connection request in the payload of the DUT’s advertising beacon.

3.6.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.6.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    DUT->>Lower_Tester: Beacon Device Mode: Normal mode (0x0)
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request Device Mode: Connection request (0x2)
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.6.4 Expected Results

3.6.4.1 Pass Verdict

When BLE connection is requested, DUT should change beacon payload to include connection request. Change occurs in Device State - 6th octet of Manufacturing Data in the beacon. Within the Device State, second and third bits signify Device Mode, where: 0x0 - Normal mode, 0x2 - Connection request. Payload of the beacons to be checked with BLE sniffer on Lower Tester side.

Device Mode before setting the connection request: Normal mode (0x0).

Device Mode after setting the connection request: Connection request (0x2).

Lower Tester establishes BLE connection with DUT, after receiving beacon with connection request.

After BLE connection is established, DUT triggers “()” with “Link Mask” value of 1, which indicates that the BLE connection was established.

3.7 BLE/EP/CONN/EST/BV/02: Endpoint can connect with Gateway via BLE, after reinitializing Sidewalk library.

3.7.1 Test Purpose

To verify that DUT and Lower Tester can establish a BLE connection, after Sidewalk library is reinitialized.

3.7.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.7.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_init(SID_LINK_TYPE_1)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    Upper_Tester->>DUT: sid_start()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"
    DUT->>Lower_Tester: Beacon with time sync request
    Lower_Tester->>DUT: Establish BLE connection
    Lower_Tester->>DUT: RESP_TIME
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.7.4 Expected Results

3.7.4.1 Pass Verdict

After reinitializing Sidewalk library DUT and Lower Tester establish BLE connection to complete time synchronization.

DUT is able to request and establish BLE connection with Lower Tester, when the time synchronization is completed.

During time synchronization and after requesting BLE connection, DUT triggers “()” with “Link Mask” value of 1, which indicates that the BLE connection was established.

3.8 BLE/EP/CONN/EST/BV/03: Endpoint can connect with Gateway via BLE, after restarting Sidewalk library.

3.8.1 Test Purpose

To verify that DUT and Lower Tester can establish a BLE connection, after Sidewalk library is restarted.

3.8.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.8.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_start()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"
    DUT->>Lower_Tester: Beacon with time sync request
    Lower_Tester->>DUT: Establish BLE connection
    Lower_Tester->>DUT: RESP_TIME
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.8.4 Expected Results

3.8.4.1 Pass Verdict

After restarting Sidewalk library DUT and Lower Tester establish BLE connection to complete time synchronization.

DUT is able to request and establish BLE connection with Lower Tester, when the time synchronization is completed.

During time synchronization and after requesting BLE connection, DUT triggers “()” with “Link Mask” value of 1, which indicates that the BLE connection was established.

3.9 BLE/EP/CONN/DSC/BV/01: BLE connection between Gateway and Endpoint is dropped after 30 seconds of being idle.

3.9.1 Test Purpose

To verify that BLE connection is dropped after 30 seconds, if there is no uplink/downlink traffic generated.

3.9.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.9.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE disconnected
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Note over Lower_Tester,Upper_Tester: Wait for 30s
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.9.4 Expected Results

3.9.4.1 Pass Verdict

BLE connection is dropped after 30 seconds, from the time it was established.

There should be no connection drops and reconnects before the 30 seconds timeout is reached.

After the timeout, DUT triggers “()” with “Link Mask” value of 0, which indicates that the BLE connection was dropped.

3.10.1 Test Purpose

To verify that BLE connection is dropped 30 seconds after uplink packet transmission was finished, which results in extending total time the devices are connected.

3.10.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.10.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE disconnected
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Note over Lower_Tester,Upper_Tester: Wait for 15s
    Upper_Tester->>DUT: sid_put_msg(SID_MSG_TYPE_NOTIFY, Command data: any)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: CUSTOM_NOTIFY_CMD (with any Command data)
    DUT->>Upper_Tester: on_msg_sent()
    Note over Lower_Tester,Upper_Tester: Wait for 30s
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.10.4 Expected Results

3.10.4.1 Pass Verdict

BLE connection is dropped after 30 seconds, from the time the uplink packet transmission was finished.

There should be no connection drops and reconnects before the 30 seconds timeout is reached.

After the timeout, DUT triggers “()” with “Link Mask” value of 0, which indicates that the BLE connection was dropped.

3.11.1 Test Purpose

To verify that BLE connection is dropped 30 seconds after downlink packet transmission was finished, which results in extending total time the devices are connected.

3.11.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.11.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE disconnected
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Note over Lower_Tester,Upper_Tester: Wait for 15s
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (with any Command data)
    DUT->>Upper_Tester: on_msg_received() "Command data: any"
    Note over Lower_Tester,Upper_Tester: Wait for 30s
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.11.4 Expected Results

3.11.4.1 Pass Verdict

BLE connection is dropped after 30 seconds, from the time the downlink packet transmission was finished.

There should be no connection drops and reconnects before the 30 seconds timeout is reached.

After the timeout, DUT triggers “()” with “Link Mask” value of 0, which indicates that the BLE connection was dropped.

3.12 BLE/EP/CONN/DSC/BV/06: Endpoint drops BLE connection after stopping Sidewalk library.

3.12.1 Test Purpose

To verify that DUT drops BLE connection if Sidewalk library is stopped.

3.12.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.12.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.12.4 Expected Results

3.12.4.1 Pass Verdict

After sending the command to stop Sidewalk library, DUT triggers “()” with “Link Mask” value of 0, which indicates that the BLE connection was dropped.

3.13 BLE/EP/CONN/DSC/BV/07: Endpoint drops BLE connection after deinitializing Sidewalk library.

3.13.1 Test Purpose

To verify that DUT drops BLE connection if Sidewalk library is deinitialized.

3.13.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.13.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.13.4 Expected Results

3.13.4.1 Pass Verdict

After sending the command to deinitialize Sidewalk library, DUT triggers “()” with “Link Mask” value of 0, which indicates that the BLE connection was dropped.

3.14 BLE/EP/CONN/BCN/BV/01: Endpoint transmits beacons only when BLE connection is not established.

3.14.1 Test Purpose

To verify that DUT transmits beacons before establishing BLE connection and after disconnecting. During the active connection, no beacons should be transmitted.

3.14.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.14.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE disconnected
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    Upper_Tester->>DUT: sid_ble_bcn_connection_request(set = true)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Beacon with connection request
    Lower_Tester->>DUT: Establish BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Note over Lower_Tester,Upper_Tester: Wait for 30 seconds, during that time no beacons should be detected
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.14.4 Expected Results

3.14.4.1 Pass Verdict

DUT transmits beacons before establishing BLE connection.

DUT stops transmitting beacons after establishing BLE connection.

DUT starts transmitting beacons again after disconnecting from the BLE connection.

All the beaconing activities to be checked with BLE sniffer on Lower Tester side.

3.15 BLE/EP/CONN/BCN/BV/02: Endpoint transmits beacons that contain Identifier (TX-ID), which changes every 15 minutes.

3.15.1 Test Purpose

To verify that DUT transmits beacons with Identifier (TX-ID). The Identifier is changed every 15 minutes, which can be verified in the application specific data of subsequent beacons.

3.15.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

3.15.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE disconnected
    DUT->>Lower_Tester: Beacon with first TX-ID 1
    DUT->>Lower_Tester: Beacon with first TX-ID 1
    DUT->>Lower_Tester: Beacon with first TX-ID 1
    Note over Lower_Tester,Upper_Tester: Keep checking payload of the beacons until TX-ID changes (duration: up to 15 minutes)
    Note over Lower_Tester,DUT: ...
    DUT->>Lower_Tester: Beacon with second TX-ID 2
    DUT->>Lower_Tester: Beacon with second TX-ID 2
    DUT->>Lower_Tester: Beacon with second TX-ID 2
    Note over Lower_Tester,Upper_Tester: Keep checking payload of the beacons until TX-ID changes again (duration: 15 minutes starting from previous TX-ID change)
    Note over Lower_Tester,DUT: ...
    DUT->>Lower_Tester: Beacon with third TX-ID 3
    DUT->>Lower_Tester: Beacon with third TX-ID 3
    DUT->>Lower_Tester: Beacon with third TX-ID 3
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.15.4 Expected Results

3.15.4.1 Pass Verdict

DUT transmits beacons with payload that contains TX-ID.
TX-ID is 5 bytes long and is located in 2nd-6th octets of the “Application Specific Data”, in “Manufacturing Data” section of the beacon.

First TX-ID change occurs within 15 minutes and is used as a starting point of second TX-ID change duration.

Second TX-ID change occurs 15 minutes after the first one.

There should be no additional changes in the data of TX-ID.

All the beaconing activities to be checked with BLE sniffer on Lower Tester side.

3.16 BLE/EP/CONN/BCN/BV/03: Endpoint transmits beacons with 160ms interval for the first 30 seconds after starting BLE protocol.

3.16.1 Test Purpose

To verify that DUT transmits a beacon every 160ms, with +/-10ms of acceptable range (150ms-170ms) for the first 30 seconds after starting BLE protocol. Lower Tester should not react to the beacons with BLE connection establishment, so that the beacon transmission interval stays uninterrupted.

3.16.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

3.16.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: The Sidewalk stack is uninitialised
    Upper_Tester->>DUT: sid_init(SID_LINK_TYPE_1)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    Upper_Tester->>DUT: sid_start()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE disconnected"
    Note over Lower_Tester,Upper_Tester: Interval of 160ms (+/- 10ms) between the upcoming beacons
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    Note over Lower_Tester,Upper_Tester: Wait for 29 seconds, from the time the Sidewalk library was started
    Note over Lower_Tester,Upper_Tester: Interval of 160ms (+/- 10ms) between the upcoming beacons
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE

3.16.4 Expected Results

3.16.4.1 Pass Verdict

The interval of 160ms (+/- 10ms) in beacon transmission is respected by DUT for the first 30 seconds after starting Sidewalk library.

At least 4 beacons to be verified in terms of the valid interval in both cases: immediately after starting Sidewalk library, and 29 seconds after starting Sidewalk library.

All the beaconing activities to be checked with BLE sniffer on Lower Tester side.

3.17 BLE/EP/CONN/BCN/BV/04: Endpoint transmits beacons with customized interval, 30 seconds after starting BLE protocol.

3.17.1 Test Purpose

To verify that DUT transmits a beacon with customized interval (default: every 1000ms) with +/-10ms of acceptable range, 30 seconds after starting BLE protocol. Lower Tester should not react to the beacons with BLE connection establishment, so that the beacon transmission interval stays uninterrupted.

3.17.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

3.17.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: The Sidewalk stack is uninitialised
    Upper_Tester->>DUT: sid_init(SID_LINK_TYPE_1)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    Upper_Tester->>DUT: sid_start()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE disconnected"
    Note over Lower_Tester,Upper_Tester: Wait for 30 seconds
    Note over Lower_Tester,Upper_Tester: Customized interval (default: 1000ms) +/- 10ms between the upcoming beacons
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    DUT->>Lower_Tester: Beacon
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE

3.17.4 Expected Results

3.17.4.1 Pass Verdict

The customized beacon transmission interval (default: 1000ms) +/- 10ms is respected by the device under test (DUT) 30 seconds after starting the Sidewalk library.

At least 4 beacons to be verified in terms of the valid interval.

All the beaconing activities to be checked with BLE sniffer on Lower Tester side.

3.18 BLE/EP/CONN/DUP/BV/01: BLE connection is closed after Endpoint receives 10 packets with duplicate SEQ number within one minute (filter duplicates enabled).

3.18.1 Test Purpose

To verify that DUT closes BLE connection after total of 10 packets with duplicate sequence number reach it within one minute. To confirm this behavior “filter duplicates” option has to be enabled on DUT.

3.18.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

  • “Filter duplicates” option enabled on the DUT.

3.18.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    DUT->>Lower_Tester: Beacon
    Lower_Tester->>DUT: Establish BLE connection(triggered by upcoming downlink packet)
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    DUT->>Upper_Tester: on_msg_received() "seq_num=1"
    Note over Lower_Tester,Upper_Tester: 10 upcoming packets with duplicate sequence number shall be sent within one minute period.
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.18.4 Expected Results

3.18.4.1 Pass Verdict

The first CUSTOM_NOTIFY_CMD packet with sequence number equal to 1 should be sent from the Lower Tester, correctly decoded and verified against the on the DUT side. Information about this packet should be reported on the Upper Tester side.

Ten CUSTOM_NOTIFY_CMD packets with duplicate sequence number equal to 1 shall be sent from Lower within the one minute period.
One minute period starts after Lower Tester finishes transmission of the first downlink packet with duplicate sequence number.

All packets with duplicate sequence number are rejected by DUT. Information about them will not be reported on the Upper Tester side.

Upon arrival of the last CUSTOM_NOTIFY_CMD packet, DUT triggers “()” with “Link Mask” value of 0, which indicates that the BLE connection was dropped.

3.19 BLE/EP/CONN/DUP/BV/02: BLE connection is closed after Endpoint receives 10 packets with various duplicate SEQ numbers within one minute (filter duplicates enabled).

3.19.1 Test Purpose

To verify that DUT closes BLE connection after total of 10 packets with various duplicate sequence numbers reach it within one minute. To confirm this behavior “filter duplicates” option has to be enabled on DUT.

3.19.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

  • “Filter duplicates” option enabled on the DUT.

3.19.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    DUT->>Lower_Tester: Beacon
    Lower_Tester->>DUT: Establish BLE connection(triggered by upcoming downlink packet)
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    DUT->>Upper_Tester: on_msg_received() "seq_num=1"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=2)
    DUT->>Upper_Tester: on_msg_received() "seq_num=2"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    DUT->>Upper_Tester: on_msg_received() "seq_num=3"
    Note over Lower_Tester,Upper_Tester: 10 upcoming packets with various duplicate sequence numbers shall be sent within one minute period.
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=2)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=2)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=2)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.19.4 Expected Results

3.19.4.1 Pass Verdict

The first three CUSTOM_NOTIFY_CMD packets with sequence numbers increasing sequentially from 1 to 3 should be sent from the Lower Tester, correctly decoded and verified against the on the DUT side. Information about all three of these packets should be reported on the Upper Tester side.

Ten CUSTOM_NOTIFY_CMD packets with various duplicate sequence numbers ranging from 1 to 3, sent from the Lower Tester within the one minute period.
One minute period starts after Lower Tester finishes transmission of the first downlink packet with duplicate sequence number.

All packets with duplicate sequence number are rejected by DUT. Information about them will not be reported on the Upper Tester side.

Upon arrival of the last CUSTOM_NOTIFY_CMD packet, DUT triggers “()” with “Link Mask” value of 0, which indicates that the BLE connection was dropped.

3.20 BLE/EP/CONN/DUP/BV/03: BLE connection is not closed after Endpoint receives 10 packets with duplicate SEQ number within one minute (filter duplicates disabled).

3.20.1 Test Purpose

To verify that DUT does not close BLE connection after total of 10 packets with duplicate sequence number reach it within one minute. To confirm this behavior “filter duplicates” option has to be disabled on DUT.

3.20.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

  • “Filter duplicates” option disabled on the DUT.

3.20.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    DUT->>Lower_Tester: Beacon
    Lower_Tester->>DUT: Establish BLE connection(triggered by upcoming downlink packet)
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    DUT->>Upper_Tester: on_msg_received() "seq_num=1"
    Note over Lower_Tester,Upper_Tester: 10 upcoming packets with duplicate sequence number shall be sent within one minute period.
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.20.4 Expected Results

3.20.4.1 Pass Verdict

The first CUSTOM_NOTIFY_CMD packet with sequence number equal to 1 should be sent from the Lower Tester, correctly decoded and verified against the on the DUT side. Information about this packet should be reported on the Upper Tester side.

Ten CUSTOM_NOTIFY_CMD packets with duplicate sequence number equal to 1 shall be sent from Lower within the one minute period.
One minute period starts after Lower Tester finishes transmission of the first downlink packet with duplicate sequence number.

All packets with duplicate sequence number are rejected by DUT. Information about them will not be reported on the Upper Tester side.

Upon arrival of the last CUSTOM_NOTIFY_CMD packet, DUT does not trigger “()”, which means that “Link Mask” value remains unchanged and the BLE connection was not dropped.

3.21 BLE/EP/CONN/DUP/BV/04: BLE connection is not closed after Endpoint receives 10 packets with various duplicate SEQ numbers within one minute (filter duplicates disabled).

3.21.1 Test Purpose

To verify that DUT does not close BLE connection after total of 10 packets with various duplicate sequence numbers reach it within one minute. To confirm this behavior “filter duplicates” option has to be disabled on DUT.

3.21.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

  • “Filter duplicates” option disabled on the DUT.

3.21.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    DUT->>Lower_Tester: Beacon
    Lower_Tester->>DUT: Establish BLE connection(triggered by upcoming downlink packet)
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    DUT->>Upper_Tester: on_msg_received() "seq_num=1"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=2)
    DUT->>Upper_Tester: on_msg_received() "seq_num=2"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    DUT->>Upper_Tester: on_msg_received() "seq_num=3"
    Note over Lower_Tester,Upper_Tester: 10 upcoming packets with various duplicate sequence numbers shall be sent within one minute period.
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=2)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=2)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=2)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=3)
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.21.4 Expected Results

3.21.4.1 Pass Verdict

The first three CUSTOM_NOTIFY_CMD packets with sequence numbers increasing sequentially from 1 to 3 should be sent from the Lower Tester, correctly decoded and verified against the on the DUT side. Information about all three of these packets should be reported on the Upper Tester side.

Ten CUSTOM_NOTIFY_CMD packets with various duplicate sequence numbers ranging from 1 to 3, sent from the Lower Tester within the one minute period.
One minute period starts after Lower Tester finishes transmission of the first downlink packet with duplicate sequence number.

All packets with duplicate sequence number are rejected by DUT. Information about them will not be reported on the Upper Tester side.

Upon arrival of the last CUSTOM_NOTIFY_CMD packet, DUT does not trigger “()”, which means that “Link Mask” value remains unchanged and the BLE connection was not dropped.

3.22 BLE/EP/CONN/DUP/BV/05: BLE connection is not closed after 10 packets with duplicate SEQ number reach Endpoint, if not all of those packets are sent within one minute.

3.22.1 Test Purpose

To verify that DUT does not close BLE connection, when 10th packet with duplicate SEQ number is received by Endpoint more than one minute after the first one. DUT will reset the counter of duplicates after a minute passes, starting from the first packet with duplicate sequence number reaching DUT. To confirm this behavior “filter duplicates” option has to be enabled on DUT.

3.22.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

  • The Sidewalk stack (BLE) is initialized and started on the DUT.

  • DUT has completed the time synchronization.

  • “Filter duplicates” option enabled on the DUT.

3.22.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: DUT Status: Registered, Link Mask 0, BLE Disconnected
    DUT->>Lower_Tester: Beacon
    Lower_Tester->>DUT: Establish BLE connection(triggered by upcoming downlink packet)
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 1, BLE connected"
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    DUT->>Upper_Tester: on_msg_received() "seq_num=1"
    Note over Lower_Tester,Upper_Tester: 9 upcoming packets with duplicate sequence number shall be sent within one minute period and with a consistent interval of 6 seconds between the packets.
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Note over Lower_Tester,Upper_Tester: Upcoming packet with duplicate sequence number shall be sent after the one minute period has ended, within the next 6 seconds.
    Lower_Tester->>DUT: CUSTOM_NOTIFY_CMD (seq_num=1)
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Time Synced, Link Mask 0, BLE disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "No Time, Link Mask 0, BLE Disconnected"

3.22.4 Expected Results

3.22.4.1 Pass Verdict

The first CUSTOM_NOTIFY_CMD packet with sequence number equal to 1 should be sent from the Lower Tester, correctly decoded and verified against the on the DUT side. Information about this packet should be reported on the Upper Tester side.

Ten CUSTOM_NOTIFY_CMD packets with duplicate sequence number equal to 1 shall be sent from Lower Tester, where:
Nine CUSTOM_NOTIFY_CMD packets are sent within the one minute period and with a consistent interval of 6 seconds between the packets. One CUSTOM_NOTIFY_CMD packet is sent after the one minute period has ended, within the next 6 seconds.
One minute period starts after Lower Tester finishes transmission of the first downlink packet with duplicate sequence number.

All packets with duplicate sequence number are rejected by DUT. Information about them will not be reported on the Upper Tester side.

Upon arrival of the last CUSTOM_NOTIFY_CMD packet, DUT does not trigger “()”, which means that “Link Mask” value remains unchanged and the BLE connection was not dropped.

3.23 BLE/EP/NW/SYNC/TIME/BV/01: Endpoint completes the initial time sync procedure.

3.23.1 Test Purpose

DUT is able to pass the initial time synchronization procedure. Payload of the beacons transmitted by DUT is appropriate to the time sync state.

3.23.2 Initial Conditions

  • DUT is registered with Amazon Sidewalk network.

  • Lower Tester operates in BLE mode.

  • SidewalkNetworkFlag is enabled on the Lower Tester.

3.23.3 Test Procedure

sequenceDiagram
    participant Lower_Tester as Lower Tester
    participant DUT as DUT
    participant Upper_Tester as Upper Tester
    Note over Lower_Tester,Upper_Tester: The Sidewalk stack is uninitialised
    Upper_Tester->>DUT: sid_init(SID_LINK_TYPE_1)
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    Upper_Tester->>DUT: sid_start()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Status: Registered, Link Down, No Time, Link Mask 0, BLE Disconnected"
    DUT->>Lower_Tester: Beacon with time sync request: Application ID: 0x3 (Sidewalk Cloud Service)
    Lower_Tester->>DUT: Establish BLE connection
    Lower_Tester->>DUT: RESP_TIME
    DUT->>Upper_Tester: on_status_changed() "Status: Registered, Link Up, Time Synced, Link Mask 1, BLE Connected"
    DUT->>Lower_Tester: Drop BLE connection
    DUT->>Upper_Tester: on_status_changed() "Status: Registered, Link Down, Time Synced, Link Mask 0, BLE Disconnected"
    DUT->>Lower_Tester: Beacon without time sync request: Application ID: 0x21 (IoT Wireless Application)
    Upper_Tester->>DUT: sid_stop()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Status: Registered, Link Down, Time Synced, Link Mask 0, BLE Disconnected"
    Upper_Tester->>DUT: sid_deinit()
    DUT->>Upper_Tester: #35;SID_ERROR_NONE
    DUT->>Upper_Tester: on_status_changed() "Status: Registered, Link Down, No Time, Link Mask 0, BLE Disconnected"

3.23.4 Expected Results

3.23.4.1 Pass Verdict

Depending on the time sync state of DUT, advertising beacon may contain the time sync request. This information is located in “Application ID” - 5th octet of Manufacturing Data in the beacon. Value of the Application ID signifies whether DUT is requesting time sync (0x3

  • Sidewalk Cloud Service) or if it was already completed (0x21 - IoT Wireless Application). Payload of the beacons to be checked with BLE sniffer on Lower Tester side.

Before starting time sync procedure, DUT transmits beacons with time sync request - Application ID: 0x3 (Sidewalk Cloud Service).

There may be more than one beacon transmitted by DUT before the BLE connection with Lower Tester is established, however this should not negatively affect the time synchronization procedure.

Lower Tester establishes BLE connection with DUT after receiving beacon with time sync request.

The RESP_TIME packet will be sent to DUT right after establishing the BLE connection.

DUT is able to acquire time from the network.

No other UL transmission should take place until the DUT receives a correct RESP_TIME packet which will be reported via Time Status: synced.

After completing time synchronization procedure, DUT triggers “()” twice:
With “Link Mask” value of 1, Link status Up and Time synced, which indicate that the BLE connection was established and time synchronization was completed.
With “Link Mask” value of 0 and Link status Down, which indicate that the BLE connection was dropped right after.

Completion of the time synchronization procedure should also result in DUT transmitting beacons to the app server (without time sync request) - Application ID: 0x21 (IoT Wireless Application).


Back to top

©2023 Amazon.com, Inc. or its affiliates (collectively, “Amazon”). All Rights Reserved.