#! /bin/sh
#
# sredd     Bring up/down sredd
#
# description: Activates/Deactivates sredd to \
#              start at boot time.
#
### BEGIN INIT INFO
# Provides: $sredd
# Should-Start: sredd
# Short-Description: Bring up/down sredd
# Description: Bring up/down sredd
### END INIT INFO

options=
user=u_sredd
process_dir=/sred/usr/bin
processname=sredd
manifest_name=/usr/share/doc/arb-nfc/config_tree_tags/manifest1.xml
manifest_link_name=/usr/share/doc/arb-nfc/config_tree_tags/manifest.xml

# Set possible L1 versions as for Luxe terminal
l1_version_old=1.2
l1_version_new=3.0
DEVICE=`cat /proc/device-tree/model`
if [ "$DEVICE" == "griffin" ]
then
    # Replace with versions as for Griffin
    l1_version_old=2.0
    l1_version_new=3.1
fi

forced_sredd_version=`cat /etc/platform/settings/L2KernelsVersion 2>/dev/null`
l1_version=`cat /sys/devices/platform/nbs_rfid_as3911/version`
displayed_l1_version=$l1_version

# At first check if sredd version is set in L2KernelsVersion
if [ "$forced_sredd_version" = "1" ]; then
    displayed_l1_version=$l1_version_old
elif [ "$forced_sredd_version" = "2" ]; then
    processname=sredd2
    manifest_name=/usr/share/doc/arb-nfc/config_tree_tags/manifest2.xml
    displayed_l1_version=$l1_version_new
elif [ "$forced_sredd_version" = "3" ]; then
    processname=sredd3
    manifest_name=/usr/share/doc/arb-nfc/config_tree_tags/manifest3.xml
    displayed_l1_version=$l1_version_new
# If not forced via "L2KernelsVersion" choose sredd daemon based on L1 version
# displayed_version = what is read from /sys/devices/platform/nbs_rfid_as3911/version
elif ([ "$DEVICE" == "griffin" ] && [ "$l1_version" = "3.1" ]) || ([ "$DEVICE" == "phoenix" ] && [ "$l1_version" = "3.0" ]); then
    processname=sredd3
    manifest_name=/usr/share/doc/arb-nfc/config_tree_tags/manifest3.xml
fi

# Store determined L1 version to file for further usage
echo $displayed_l1_version > /etc/platform/settings/l1_version

# Create link to right manifest file
ln -sf $manifest_name $manifest_link_name

# Sanity checks.
if [ ! -x $process_dir/$processname ]; then 
    echo $"$processname isn't installed"
    exit 0
fi

RETVAL=0

. /etc/rc.d/init.d/functions 

# See how we were called.
case "$1" in
  start)
    # Allow sredd process to modify threads priority. The key -e modifies RLIMIT_NICE.
    ulimit -HS -e 40
    # Save Trolltech.conf in /var/lib/p2pe (PHX-838)
    export XDG_CONFIG_HOME=/var/lib/p2pe
    export OPENSSL_MODULES=/sred/usr/lib/ossl-modules
    start $process_dir/$processname $user $options
    RETVAL=$?
    ;;
  stop)
    # The command below will find pid of sredd and sredd2
    pid_to_stop=`pgrep  $process_dir/sredd`
    # The regexp in grep finds right part of ls -l output till first space.
    procname_to_stop=`ls -l /proc/$pid_to_stop/exe | grep -Eo "[^ ]+\$"`
    stop $procname_to_stop
    RETVAL=$?
    ;;
  status)
    check_status $processname 0
    RETVAL=$?
    ;;
  restart|reload|force-reload)
    cd "$CWD"
    $0 stop
    # Allow sredd process to modify threads priority. The key -e modifies RLIMIT_NICE.
    ulimit -HS -e 40
    $0 start
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
    exit 2
esac
exit $RETVAL

