|
1 | 1 | #!/bin/sh |
2 | 2 | # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. |
3 | | -# SPDX-License-Identifier: BSD-3-Clause-Clear |
| 3 | +# SPDX-License-Identifier: BSD-3-Clause# |
4 | 4 | # BT_SCAN – Bluetooth scanning validation (non-expect version) |
| 5 | + |
5 | 6 | # ---------- Repo env + helpers ---------- |
6 | 7 | SCRIPT_DIR="$( |
7 | 8 | cd "$(dirname "$0")" || exit 1 |
@@ -69,9 +70,12 @@ rm -f "$res_file" |
69 | 70 |
|
70 | 71 | log_info "------------------------------------------------------------" |
71 | 72 | log_info "Starting $TESTNAME Testcase" |
72 | | -log_info "Checking dependency: bluetoothctl" |
| 73 | +log_info "Checking dependencies: bluetoothctl pgrep" |
73 | 74 |
|
74 | | -check_dependencies bluetoothctl pgrep |
| 75 | +if ! check_dependencies bluetoothctl pgrep; then |
| 76 | + echo "$TESTNAME SKIP" > "$res_file" |
| 77 | + exit 0 |
| 78 | +fi |
75 | 79 |
|
76 | 80 | # ----------------------------- |
77 | 81 | # 1. Ensure bluetoothd is running |
@@ -168,10 +172,12 @@ log_info "Discovering state after scan ON window: $dstate_on" |
168 | 172 |
|
169 | 173 | # ----------------------------- |
170 | 174 | # 7. Get devices list after scan ON |
| 175 | +# - Try non-interactive bluetoothctl first |
| 176 | +# - If empty/flaky, fallback to btctl_script "devices" "quit" |
171 | 177 | # ----------------------------- |
172 | 178 | devices_out="$( |
173 | | - bluetoothctl devices 2>/dev/null \ |
174 | | - | sanitize_bt_output |
| 179 | + bt_list_devices_raw 2>/dev/null \ |
| 180 | + | grep '^Device ' || true |
175 | 181 | )" |
176 | 182 |
|
177 | 183 | if [ -n "$TARGET_MAC" ]; then |
|
205 | 211 | # ----------------------------- |
206 | 212 | log_info "Testing scan OFF..." |
207 | 213 | if ! bt_set_scan off "$ADAPTER"; then |
208 | | - log_warn "bt_set_scan(off) returned non-zero continuing with Discovering check." |
| 214 | + # bt_set_scan(off) can be flaky on minimal images; rely on poll helper |
| 215 | + log_warn "bt_set_scan(off) returned non-zero; continuing with scan-off polling." |
209 | 216 | fi |
210 | 217 |
|
211 | | -SCAN_OFF_OK=0 |
212 | | -ITER=10 |
213 | | -i=1 |
214 | | -while [ "$i" -le "$ITER" ]; do |
215 | | - dstate_off="$(bt_get_discovering 2>/dev/null || true)" |
216 | | - [ -z "$dstate_off" ] && dstate_off="unknown" |
217 | | - |
218 | | - log_info "Discovering state during scan OFF wait (iteration $i/$ITER): $dstate_off" |
219 | | - |
220 | | - if [ "$dstate_off" = "no" ]; then |
221 | | - SCAN_OFF_OK=1 |
222 | | - break |
223 | | - fi |
224 | | - |
225 | | - sleep 2 |
226 | | - i=$((i + 1)) |
227 | | -done |
228 | | - |
229 | | -if [ "$SCAN_OFF_OK" -eq 1 ]; then |
230 | | - log_pass "Discovering=no observed after scan OFF polling." |
| 218 | +# Use lib helper to avoid repetitive log spam and handle 'unknown' cleanly. |
| 219 | +if bt_scan_poll_off 10 1; then |
| 220 | + # On minimal/ramdisk images bt_scan_poll_off may treat persistent 'unknown' as non-fatal. |
| 221 | + log_pass "Scan OFF cleanup completed." |
231 | 222 | else |
232 | | - log_warn "Discovering did not transition to 'no' after scan OFF window." |
| 223 | + # If you keep bt_scan_poll_off strict, this may still warn; not a test failure. |
| 224 | + log_warn "Scan OFF cleanup did not confirm Discovering=no (non-fatal)." |
233 | 225 | fi |
234 | 226 |
|
235 | 227 | echo "$TESTNAME PASS" > "$res_file" |
|
0 commit comments