description "smscon - nokia n900 remote control utility"
author "Lutz Schwarz, Frank Visser"
version "$Id: smscon 240 2012-07-29 13:35:07Z yablacky $"

start on started 00smscon
stop on starting shutdown

env LATELOCK="/root/.smscon_latedevlock"
env BOOTLOCK="/root/.smscon_bootdevlock"

console none

pre-start script
    LOG() { test ! -e "/opt/smscon/smscon_boot.log" || echo $* >>"/opt/smscon/smscon_boot.log" ; }
    until [ -e "/opt/smscon" -a -f /tmp/dbus-info ] ; do
        sleep 3
    done
    LOG pre-start
    rm -f "$BOOTLOCK"
    if [ -f "$LATELOCK" ]
    then
        LOG "Doing late dev lock."
        rm -f "$LATELOCK"
        nice -2 run-standalone.sh dbus-send --system --type=method_call \
            --dest=com.nokia.mce /com/nokia/mce/request \
            com.nokia.mce.request.devlock_callback int32:0 || true
    fi
end script

script
    test -f /tmp/dbus-info && . /tmp/dbus-info   
    export DBUS_SESSION_BUS_ADDRESS          
    export DBUS_SESSION_BUS_PID              
    test -e       "/opt/smscon/smscon_boot.log" || exec "/opt/smscon/smscon_daemon"
    echo start >> "/opt/smscon/smscon_boot.log"
    exec "/opt/smscon/smscon_daemon" >> "/opt/smscon/smscon_boot.log" 2>&1
end script

post-stop script
    LOG() { test ! -e "/opt/smscon/smscon_boot.log" || echo $* >>"/opt/smscon/smscon_boot.log" ; }
    LOG post-stop
    if [ ! -r "/etc/event.d/smscon" ]
    then
        rm -f "$LATELOCK"
        LOG "Late dev lock not possible. Preparing for normal dev lock."    
    elif [ -r "$BOOTLOCK" ]
    then
        LOCKMODE_OKSIM=unknown
        DEVICELOCKLATE=unknown
        if [ -r "/opt/smscon/smscon_config" ]
        then
            LOCKMODE_OKSIM=$(awk -F \' "/^\\s*LOCKMODE_OKSIM\\s*=\\s*'.*'/ { print \$2 }" "/opt/smscon/smscon_config")
            DEVICELOCKLATE=$(awk -F \' "/^\\s*DEVICELOCKLATE\\s*=\\s*'.*'/ { print \$2 }" "/opt/smscon/smscon_config")
        fi
        DEVLOCK="$(cat "$BOOTLOCK")"
        rm -f "$BOOTLOCK"
        LOG "Dev lock status = $DEVLOCK, lock mode = $LOCKMODE_OKSIM, lock late = $DEVICELOCKLATE."
        >"$LATELOCK"
        if [ -f "$LATELOCK" ] &&
           [ \( "$DEVICELOCKLATE" == yes -a "$DEVLOCK" != unlocked \) -o "$LOCKMODE_OKSIM" == lockalways ]
        then
            run-standalone.sh dbus-send --system --type=method_call \
                --dest=com.nokia.mce /com/nokia/mce/request \
                com.nokia.mce.request.devlock_callback int32:2 || true
            test "$LOCKMODE_OKSIM" != lockalways || rm -f "$LATELOCK"
            LOG "Preparing for late dev lock."
        else
            rm -f "$LATELOCK"
            LOG "Preparing for normal dev lock."
        fi
    else
        rm -f "$LATELOCK"
        LOG "Dev lock status unknown. Preparing for normal dev lock."
    fi
end script

respawn
