Power Optimization Test Cases
Test Case ID: FSK/EP/PWR/OPT/BV/01: Verify RX duration can be adjusted
| Field | Value |
|---|---|
| Case ID | C103619364 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize FSK stack with power optimization profile (rx_duration=6s):sid init 2sid option -lp_set 2 630 1 6sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 2Njoin(1, 2) st 2->6Key check: EN joined via FSK |
| 2 | Wait 30 seconds for RX windows to close | No RX window opening event Key check: RX windows closed after idle period |
| 3 | Wait for beacon received, then send UL (T=0s):sid send TEST | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 2Key check: UL sent, T=0 |
| 4 | T < 5s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ..., LINK: 2Key check: DL received within RX duration window |
| 5 | Wait until T >= 7s, then send DL from cloud to EN | No DL received Key check: DL not received after RX duration expired (rx_duration=6s + rx_window_interval=0.63s) |
Test Case ID: FSK/EP/PWR/OPT/BV/02: Verify RX windows after control message sent should not be closed
| Field | Value |
|---|---|
| Case ID | C103619365 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize FSK stack with power optimization profile:sid init 2sid option -lp_set 2 5040 1 6sid startWait for GWD scan to complete, then disable GW Wi-Fi | GWD(<n>) st <n>->6Key check: GWD finished, GW Wi-Fi disabled |
| 2 | Wait for 2 time-sync requests from EN, then enable GW Wi-Fi | [Tx][0:108:0:<n>] (2 times)Key check: GW Wi-Fi re-enabled before 3rd time-sync request |
| 3 | Wait for time-sync response, then disable GW Wi-Fi | [Rx][0:108:3:<n>]Key check: EN time-synced, GW Wi-Fi disabled again |
| 4 | Wait for 2 join requests from EN, then enable GW Wi-Fi | [Tx][0:22F:1:<n>] (2 times)Key check: GW Wi-Fi re-enabled before 3rd join request |
| 5 | Wait for join response | [Rx][0:22F:3:<n>]Njoin(1, 2) st 2->6Key check: EN joined |
| 6 | Wait 30 seconds, then send DL from cloud to EN | No EVENT SID RECEIVED logKey check: RX windows closed after 30s idle, DL not received |
Test Case ID: FSK/EP/PWR/OPT/BV/03: Verify RX window termination request stops RX window opened at profile 2
| Field | Value |
|---|---|
| Case ID | C103619366 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize FSK stack with power optimization profile (rx_duration=20s):sid init 2sid option -lp_set 2 630 1 20sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 2Njoin(1, 2) st 2->6Key check: EN joined via FSK |
| 2 | Wait 30 seconds for RX windows to close | No RX window opening event Key check: RX windows closed |
| 3 | Send UL (T=0s):sid send TEST | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 2Key check: UL sent, T=0 |
| 4 | T < 5s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ..., LINK: 2Key check: DL received within RX duration window |
| 5 | Execute RX terminate command:sid option -sub_ghz_ctl 1 | CMD: ERR: 0Key check: RX windows terminated |
| 6 | T = 10s: Send DL from cloud to EN | No EVENT SID RECEIVED logKey check: DL not received, RX windows already terminated |
Test Case ID: FSK/EP/PWR/OPT/BV/04: Verify RX window termination request should not stop RX window opened at profile 1
| Field | Value |
|---|---|
| Case ID | C103619367 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize FSK stack with profile 1:sid init 2sid option -lp_set 1sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 2Njoin(1, 2) st 2->6Key check: EN joined via FSK with profile 1 |
| 2 | Wait 30 seconds, then send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ..., LINK: 2Key check: DL received, profile 1 RX windows always open |
| 3 | Execute RX terminate command:sid option -sub_ghz_ctl 1 | CMD: ERR: -6Key check: Command fails, profile 1 does not support RX terminate |
| 4 | Send DL from cloud to EN again | EVENT SID RECEIVED: TYPE: 3, ..., LINK: 2Key check: DL still received, RX windows not affected by terminate command |
Test Case ID: FSK/EP/PWR/OPT/BV/05: Verify Beacon interval can be adjusted
| Field | Value |
|---|---|
| Case ID | C103619368 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize FSK stack with profile 2, beacon interval=3:sid init 2sid option -lp_set 2 5040 3 0sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 2Njoin(1, 2) st 2->6Key check: EN joined via FSK |
| 2 | Catch 2 consecutive beacon logs, verify interval ≈ 30240ms (3x) | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi> (2 times)Interval ≈ 30240ms ±30ms Key check: Beacon interval = 3x 10080 ms (30240ms) |
| 3 | Change beacon interval to 2x:sid option -lp_set 2 5040 2 0Wait for join response | [Rx][0:22F:3:<n>]Njoin(1, 2) st 2->6Key check: Rejoined |
| 4 | Catch 2 consecutive beacon logs, verify interval ≈ 20160ms (2x) | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi> (2 times)Interval ≈ 20160ms ±20ms Key check: Beacon interval = 2x 10080 ms (20160ms) |
| 5 | Change beacon interval to 1x:sid option -lp_set 2 5040 1 0Wait for join response | [Rx][0:22F:3:<n>]Njoin(1, 2) st 2->6Key check: Rejoined |
| 6 | Catch 2 consecutive beacon logs, verify interval ≈ 10080ms (1x) | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi> (2 times)Interval ≈ 10080ms ±10ms Key check: Beacon interval = 1x 10080 ms (10080ms) |
| 7 | Switch to profile 1, beacon interval=3:sid option -lp_set 1 3Wait for join response | [Rx][0:22F:3:<n>]Njoin(1, 2) st 2->6Key check: Rejoined, switched to profile 1 |
| 8 | Catch 2 consecutive beacon logs, verify interval ≈ 30240ms (3x) | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi> (2 times)Interval ≈ 30240ms ±30ms Key check: Beacon interval = 3x |
| 9 | Change beacon interval to 2x:sid option -lp_set 1 2Wait for join response | [Rx][0:22F:3:<n>]Njoin(1, 2) st 2->6Key check: Rejoined |
| 10 | Catch 2 consecutive beacon logs, verify interval ≈ 20160ms (2x) | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi> (2 times)Interval ≈ 20160ms ±20ms Key check: Beacon interval = 2x |
| 11 | Change beacon interval to 1x:sid option -lp_set 1 1Wait for join response | [Rx][0:22F:3:<n>]Njoin(1, 2) st 2->6Key check: Rejoined |
| 12 | Catch 2 consecutive beacon logs, verify interval ≈ 10080ms (1x) | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi> (2 times)Interval ≈ 10080ms ±10ms Key check: Beacon interval = 1x |
Test Case ID: FSK/EP/PWR/OPT/BV/06: Verify beacon interval revert to default after 2nd beacon misses
| Field | Value |
|---|---|
| Case ID | C103619369 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
- Shielding box available for blocking GW signal
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize FSK stack with profile 2, beacon interval=3:sid init 2sid option -lp_set 2 5040 3mac scfg C 1 <GW_Sidewalk_ID>sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 2EVENT SID STATUS LINK MODE: LORA: 0, FSK: 1, BLE: 0Key check: EN joined via FSK, beacon interval=3x (30240ms) |
| 2 | After a beacon received, close shielding box door to block GW signal | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi>Key check: Beacon received, shielding box closed |
| 3 | Wait for 2 consecutive beacon misses: - Beacon miss 1 at ~30s - Beacon miss 2 at ~60s | BCN:bcn miss:1BCN:bcn miss:2Key check: 2 beacon misses detected, EN reverts to default interval (10080ms) |
| 4 | Open shielding box door to restore GW signal | Key check: GW signal restored |
| 5 | Check beacon received at ~70s (default interval after 2nd miss) | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi>Key check: Beacon received at ~70s using default interval (10080ms) |
| 6 | Check beacon received at ~100s (reverted to user-configured interval 30240ms) | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi>Key check: Beacon interval restored to user-configured 3x (30240ms) |
| 7 | Repeat steps 1-6 with beacon interval=2:sid option -lp_set 2 5040 2- Beacon miss 1 at ~20s - Beacon miss 2 at ~40s - Beacon received at ~50s (default) - Beacon received at ~70s (restored to 2x) | BCN:bcn miss:1BCN:bcn miss:2BCN:pkt rcvd (at ~50s)BCN:pkt rcvd (at ~70s)Key check: Same behavior with beacon interval=2x (20160ms) |
Test Case ID: FSK/EP/PWR/OPT/BV/07: Verify DUT can still perform uplinks and downlinks normally after a beacon skipped
| Field | Value |
|---|---|
| Case ID | C103619370 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize FSK stack with profile 2, beacon interval=3, rx_duration=8s:sid init 2sid option -lp_set 2 630 3 8sid startWait for time sync and join Wait for beacon received, record time T | BCN:pkt rcvd gw_id:<id> ch:<ch> rssi:<rssi>Njoin(1, 2) st 2->6Key check: EN joined, beacon received at T=0 |
| 2 | Wait until T ≈ 11s (1 beacon skipped), then send UL and wait for DL:sid send PING | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 2EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 2Key check: UL/DL successful after 1 beacon skipped |
| 3 | Wait until T ≈ 22s (2 beacons skipped), then send UL and wait for DL:sid send PING | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 2EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 2Key check: UL/DL successful after 2 beacons skipped |
Test Case ID: LORA/EP/PWR/OPT/BV/01: Verify number of RX windows is limited and can be changed
| Field | Value |
|---|---|
| Case ID | C103619371 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP should be flashed with MAC v2 image (
sid_dut_v2) - EP is registered in Sidewalk network
- GW is properly communicating with the Cloud (receives time sync)
- In Device Profile A, after single transmission in Uplink, endpoint should open specified number of RX windows and go to sleep
- RX window count: 0~60 (0 is for uplink-only mode)
- Window validity period in seconds: 0~300 (0 is for uplink-only mode)
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize LoRa stack with profile A, rx_window=2:sid init 3sid option -lp_set 128 2sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 4Njoin(1, 4) st 2->6Key check: EN joined via LoRa, rx_window=2 (~10s validity) |
| 2 | Wait 30 seconds for RX windows to close | No RX window events Key check: RX windows closed |
| 3 | Send UL (T=0s):sid send TEST | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 4Key check: UL sent, T=0 |
| 4 | T = 3s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 4Key check: DL received within RX window (T=3s < 10s) |
| 5 | T = 15s: Send DL from cloud to EN | No EVENT SID RECEIVED logKey check: DL not received, RX windows expired (T=15s > 10s) |
| 6 | Change RX windows to 60:sid option -lp_set 128 60Wait for join response | [Rx][0:22F:3:<n>]Njoin(1, 4) st 2->6Key check: Rejoined with rx_window=60 (~300s validity) |
| 7 | Wait 30 seconds for RX windows to close | No RX window events |
| 8 | Send UL (T=0s):sid send TEST | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 4Key check: UL sent, T=0 |
| 9 | T = 3s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 4Key check: DL received |
| 10 | T = 293s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 4Key check: DL received within extended RX window (T=293s < 300s) |
| 11 | T = 305s: Send DL from cloud to EN | No EVENT SID RECEIVED logKey check: DL not received, RX windows expired (T=305s > 300s) |
Test Case ID: LORA/EP/PWR/OPT/BV/02: Verify number of RX windows is reset after sending an additional uplink
| Field | Value |
|---|---|
| Case ID | C103619372 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP should be flashed with MAC v2 image (
sid_dut_v2) - EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize LoRa stack with profile A, rx_window=30:sid init 3sid option -lp_set 128 30sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 4Njoin(1, 4) st 2->6Key check: EN joined via LoRa, rx_window=30 (~150s validity) |
| 2 | Wait 30 seconds for RX windows to close | No RX window events Key check: RX windows closed |
| 3 | Send UL (T=0s):sid send TEST | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 4Key check: UL sent, T=0, RX windows open for ~150s |
| 4 | T = 73s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 4Key check: DL received (RX window was reset by additional UL before T=73s) |
| 5 | Send additional UL to reset RX window timer:sid send TEST | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 4Key check: UL sent, RX window timer reset to ~150s |
| 6 | T = 222s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 4Key check: DL received within reset RX window |
Test Case ID: LORA/EP/PWR/OPT/BV/03: Verify RX window termination request stops RX window opened at profile A
| Field | Value |
|---|---|
| Case ID | C103619373 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP should be flashed with MAC v2 image (
sid_dut_v2) - EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize LoRa stack with profile A, rx_window=30:sid init 3sid option -lp_set 128 30sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 4Njoin(1, 4) st 2->6Key check: EN joined via LoRa, profile A, rx_window=30 (~150s validity) |
| 2 | Wait 30 seconds for RX windows to close | No RX window events Key check: RX windows closed |
| 3 | Send UL (T=0s):sid send TEST | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 4Key check: UL sent, T=0 |
| 4 | T < 5s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 4Key check: DL received |
| 5 | Execute RX terminate command:sid option -sub_ghz_ctl 1 | CMD: ERR: 0Key check: RX terminate command executed |
| 6 | T = 18s: Send DL from cloud to EN | No EVENT SID RECEIVED logKey check: DL not received, RX windows terminated by sid option -sub_ghz_ctl 1 |
Test Case ID: LORA/EP/PWR/OPT/BV/04: Verify RX window termination request should not stop RX window opened at profile B
| Field | Value |
|---|---|
| Case ID | C103619374 |
| Executable by Customer | Yes |
Preconditions
- GW and EP should be flashed with debug variant build
- EP should be flashed with MAC v2 image (
sid_dut_v2) - EP is registered in Sidewalk network
- GW is properly communicating with the Cloud
Test Steps
| Step | Description | Expected Result |
|---|---|---|
| 1 | Initialize LoRa stack with profile B (infinite RX):sid init 3sid option -lp_set 129 0sid startWait for time sync and join | EVENT SID STATUS: State: 0, Reg: 0, Time: 0, Link_Mask: 4Njoin(1, 4) st 2->6Key check: EN joined via LoRa, profile B (infinite RX windows) |
| 2 | Wait 30 seconds for RX windows to close | No RX window events Key check: RX windows closed |
| 3 | Send UL (T=0s):sid send TEST | EVENT SID SEND STATUS: SID ERR: 0, TYPE: 2, ID: <id>, LINK: 4Key check: UL sent, T=0 |
| 4 | T < 5s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 4Key check: DL received |
| 5 | Execute RX terminate command:sid option -sub_ghz_ctl 1 | CMD: ERR: 0Key check: RX terminate command executed |
| 6 | T = 18s: Send DL from cloud to EN | EVENT SID RECEIVED: TYPE: 3, ID: <id>, LEN: <len>, LINK: 4Key check: DL still received, profile B not affected by terminate command |