73 lines
2.9 KiB
Bash
Executable File
73 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
export PATH="${XDG_CONFIG_HOME:-$HOME/.config}/sxmo/hooks:/usr/share/sxmo/default_hooks:$PATH"
|
|
|
|
# shellcheck source=scripts/core/sxmo_common.sh
|
|
. sxmo_common.sh
|
|
|
|
enable_call_audio_mode() {
|
|
if command -v amixer >/dev/null 2>&1; then
|
|
amixer -c 0 sset 'SPK DAC Switch' off >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'RX3 MIX1 INP1' 'ZERO' >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'PRI_MI2S_RX Voice Mixer VoiceMMode1' on >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'VoiceMMode1 Capture Mixer TERT_MI2S_TX' on >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'MultiMedia2 Mixer TERT_MI2S_TX' on >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'RX1 MIX1 INP1' 'RX1' >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'RDAC2 MUX' 'RX1' >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'EAR_S' 'Switch' >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'CIC1 MUX' 'AMIC' >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'DEC1 MUX' 'ADC1' >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'ADC1 Volume' 6 >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'RX1 Digital Volume' 84 >/dev/null 2>&1 || true
|
|
fi
|
|
sxmo_log "Enabled ALSA voice call audio mode (Earpiece)."
|
|
sxmo_hook_statusbar.sh volume >/dev/null 2>&1 || true
|
|
return 0
|
|
}
|
|
|
|
disable_call_audio_mode() {
|
|
spk_vol=85
|
|
if [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/sxmo/speaker_vol" ]; then
|
|
read -r spk_vol < "${XDG_CONFIG_HOME:-$HOME/.config}/sxmo/speaker_vol" 2>/dev/null || spk_vol=85
|
|
fi
|
|
case "$spk_vol" in ''|*[!0-9]*) spk_vol=85 ;; esac
|
|
[ "$spk_vol" -gt 100 ] && spk_vol=100
|
|
|
|
pactl set-card-profile alsa_card.comprC0 off >/dev/null 2>&1 || true
|
|
if ! pactl list sinks short 2>/dev/null | grep -q "Speaker"; then
|
|
pactl set-card-profile alsa_card.platform-7702000.sound "HiFi (Mic1, Speaker)" >/dev/null 2>&1 || true
|
|
fi
|
|
if command -v amixer >/dev/null 2>&1; then
|
|
amixer -c 0 sset 'PRI_MI2S_RX Voice Mixer VoiceMMode1' off >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'VoiceMMode1 Capture Mixer TERT_MI2S_TX' off >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'EAR_S' 'ZERO' >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'RX1 MIX1 INP1' 'ZERO' >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'RX3 MIX1 INP1' 'RX1' >/dev/null 2>&1 || true
|
|
if [ "$spk_vol" -gt 0 ]; then
|
|
rx3_hw=$(( 60 + spk_vol * 32 / 100 ))
|
|
amixer -c 0 sset 'SPK DAC Switch' on >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'RX3 Digital Volume' "$rx3_hw" >/dev/null 2>&1 || true
|
|
else
|
|
amixer -c 0 sset 'SPK DAC Switch' off >/dev/null 2>&1 || true
|
|
amixer -c 0 sset 'RX3 Digital Volume' 0 >/dev/null 2>&1 || true
|
|
fi
|
|
fi
|
|
wpctl set-mute @DEFAULT_AUDIO_SINK@ "$([ "$spk_vol" -le 0 ] && echo 1 || echo 0)" >/dev/null 2>&1 || true
|
|
wpctl set-volume @DEFAULT_AUDIO_SINK@ "${spk_vol}%" >/dev/null 2>&1 || true
|
|
sxmo_log "Disabled ALSA voice call audio mode (Speaker)."
|
|
sxmo_hook_statusbar.sh volume >/dev/null 2>&1 || true
|
|
return 0
|
|
}
|
|
|
|
setup_audio() {
|
|
enable_call_audio_mode
|
|
return 0
|
|
}
|
|
|
|
reset_audio() {
|
|
disable_call_audio_mode
|
|
return 0
|
|
}
|
|
|
|
"$@"
|