#!/bin/sh
#
# Callback Handler for zaurus mixer events
#
# $1 = Current Jack function
#      Valid options: "Off, Headphone, Headset, Mic, Line"
# $2 = External Speaker Status
#      Valid options: "On, Off"
# The speaker can't be "On" in Headset, Mic or Line Jack modes

if [ -z "$1" -o -z "$2" ]; then
  echo "Incorrect usage"
  exit 1
fi

JACK="$1"
SPK="$2"
LEFT="true"
RLPLAYBACK="false"
RLBYPASS="false"

case $SPK in
  "On")
    ;;
  "Off")
    ;;
  *)
    echo "Invalid speaker option: $SPK"
    exit 1
    ;;
esac

case $JACK in
  "Off")
    ;;
  "Headphone")
    ;;
  "Headset" | "Mic" | "Line")
    LEFT="false"
    RLPLAYBACK="true"
    RLBYPASS="true"
    SPK="Off"
    ;;
  *)
    echo "Invalid jack option: $JACK"
    exit 1
    ;;
esac

#. /etc/zaurusd/config

/usr/sbin/alsactl store
cp /etc/asound.state /etc/asound.state.bak

cat /etc/asound.state | sed "/Jack Function/ {
N
s:\(Jack Function.*\n.*value \).*$:\1$JACK:
}; /Speaker Function/ {
N
s:\(Speaker Function.*\n.*value \).*$:\1$SPK:
}; /Right Mixer Left Playback/ {
N
s:\(Right Mixer Left Playback.*\n.*value \).*$:\1$RLPLAYBACK:
}; /Right Mixer Left Bypass/ {
N
s:\(Right Mixer Left Bypass.*\n.*value \).*$:\1$RLBYPASS:
}; /Left Mixer Playback/ {
N
s:\(Left Mixer Playback.*\n.*value \).*$:\1$LEFT:
}" > /etc/asound.state.new 

mv /etc/asound.state.new /etc/asound.state
/usr/sbin/alsactl restore
