#! /bin/sh

# Log PPP disconnects to modem_log_year_month_day.log
# Store the log files with the SQL logs

#echo Dn > /dev/kmsg

# get date
DATE=$(date +%Y_%m_%d)
FILENAME=/var/sqllog/modem_log_$DATE.log
TIME=$(date)

/usr/local/bin/gsm


SIGNAL=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemsignal from thisdev;")
MODE=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemmode from thisdev;")
DATA=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modembalance from thisdev;")
AIRTIME=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modembalancea from thisdev;")
MTIME=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemtime from thisdev;")
MSTIME=$(/usr/local/bin/sqlite3shell /var/local/data/capeclock.db "select modemstime from thisdev;")

# Values from libgsm.h
GSM_BASE_DBM=-113
GSM_MULTIPLIER=2
GSM_SIG_UNKNOWN=99
GSM_SIG_NONE=2
GSM_SIG_WEAK=5
GSM_SIG_FAIR=8
GSM_SIG_GOOD=12
GSM_SIG_GREAT=27

# Signal strength display
if [ $SIGNAL -lt 0 ]
then
	SIGNALTEXT="Signal       -"
elif [ $SIGNAL -eq $GSM_SIG_UNKNOWN ]
then
	SIGNALTEXT="Signal       unknown"
elif [ $SIGNAL -le $GSM_SIG_NONE ]
then
	DBM=$(($GSM_BASE_DBM + ($SIGNAL * $GSM_MULTIPLIER)))
	SIGNALTEXT="Signal       $DBM dBm"
elif [ $SIGNAL -ge $GSM_SIG_GREAT ]
then
	DBM=$(($GSM_BASE_DBM + ($SIGNAL * $GSM_MULTIPLIER)))
	SIGNALTEXT="Signal ||||| $DBM dBm"
elif [ $SIGNAL -ge $GSM_SIG_GOOD ]
then
	DBM=$(($GSM_BASE_DBM + ($SIGNAL * $GSM_MULTIPLIER)))
	SIGNALTEXT="Signal ||||  $DBM dBm"
elif [ $SIGNAL -ge $GSM_SIG_FAIR ]
then
	DBM=$(($GSM_BASE_DBM + ($SIGNAL * $GSM_MULTIPLIER)))
	SIGNALTEXT="Signal |||   $DBM dBm"
elif [ $SIGNAL -ge $GSM_SIG_WEAK ]
then
	DBM=$(($GSM_BASE_DBM + ($SIGNAL * $GSM_MULTIPLIER)))
	SIGNALTEXT="Signal ||    $DBM dBm"
else
	DBM=$(($GSM_BASE_DBM + ($SIGNAL * $GSM_MULTIPLIER)))
	SIGNALTEXT="Signal |     $DBM dBm"
fi

# Modem data mode display
if [ $MODE -lt 0 ]
then
	MODETEXT="Mode - Disconnnected"
elif [ $MODE -eq 0 ]
then
	MODETEXT="Mode (0) - Disconnnected"
elif [ $MODE -eq 1 ]
then
	MODETEXT="Mode (1) - Disconnnected"
elif [ $MODE -eq 2 ]
then
	MODETEXT="Mode (2) GPRS Connnected"
elif [ $MODE -eq 3 ]
then
	MODETEXT="Mode (3) GPRS Connnected"
elif [ $MODE -eq 4 ]
then
	MODETEXT="Mode (4) EDGE Connnected"
else
	MODETEXT="Mode $MODE Disconnnected"
fi

echo "$TIME ; PPP Disconnected ;;;  $SIGNALTEXT ; $MODETEXT ; $MSTIME ;;  Data $DATA MB ; Airtime R $AIRTIME ; $MTIME ;;" >> $FILENAME

# Clear ppp failure count file on ppp down
CHECKFILE="/var/tmp/pppfail"
> $CHECKFILE

exit 0
