Files
bananarchy/overlay/rootfs/usr/bin/sxmo_modemaudio.sh
T

83 lines
3.8 KiB
Bash
Raw Normal View History

#!/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() {
pactl set-card-profile alsa_card.comprC0 off >/dev/null 2>&1 || true
pactl set-card-profile alsa_card.platform-7702000.sound "HiFi (Earpiece, Mic1)" >/dev/null 2>&1 || true
wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 >/dev/null 2>&1 || true
wpctl set-volume @DEFAULT_AUDIO_SINK@ 100% >/dev/null 2>&1 || true
if command -v amixer >/dev/null 2>&1; then
amixer -c 0 cset "name='SPK DAC Switch'" 0 >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX3 MIX1 INP1'" 'ZERO' >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX3 Digital Volume'" 0 >/dev/null 2>&1 || true
amixer -c 0 cset "name='PRI_MI2S_RX Voice Mixer VoiceMMode1'" 1 >/dev/null 2>&1 || true
amixer -c 0 cset "name='VoiceMMode1 Capture Mixer TERT_MI2S_TX'" 1 >/dev/null 2>&1 || true
amixer -c 0 cset "name='MultiMedia2 Mixer TERT_MI2S_TX'" 0 >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX1 MIX1 INP1'" 'RX1' >/dev/null 2>&1 || true
amixer -c 0 cset "name='RDAC2 MUX'" 'RX1' >/dev/null 2>&1 || true
amixer -c 0 cset "name='EAR_S'" 'Switch' >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX1 Mute Switch'" 0 >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX1 Digital Volume'" 88 >/dev/null 2>&1 || true
amixer -c 0 cset "name='CIC1 MUX'" 'AMIC' >/dev/null 2>&1 || true
amixer -c 0 cset "name='DEC1 MUX'" 'ADC1' >/dev/null 2>&1 || true
amixer -c 0 cset "name='ADC1 Volume'" 8 >/dev/null 2>&1 || true
amixer -c 0 cset "name='TX1 Digital Volume'" 88 >/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 cset "name='PRI_MI2S_RX Voice Mixer VoiceMMode1'" 0 >/dev/null 2>&1 || true
amixer -c 0 cset "name='VoiceMMode1 Capture Mixer TERT_MI2S_TX'" 0 >/dev/null 2>&1 || true
amixer -c 0 cset "name='MultiMedia2 Mixer TERT_MI2S_TX'" 1 >/dev/null 2>&1 || true
amixer -c 0 cset "name='EAR_S'" 'ZERO' >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX1 MIX1 INP1'" 'ZERO' >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX1 Digital Volume'" 84 >/dev/null 2>&1 || true
amixer -c 0 cset "name='TX1 Digital Volume'" 84 >/dev/null 2>&1 || true
amixer -c 0 cset "name='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 cset "name='SPK DAC Switch'" 1 >/dev/null 2>&1 || true
amixer -c 0 cset "name='RX3 Digital Volume'" "$rx3_hw" >/dev/null 2>&1 || true
else
amixer -c 0 cset "name='SPK DAC Switch'" 0 >/dev/null 2>&1 || true
amixer -c 0 cset "name='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
}
"$@"