66 lines
1.2 KiB
Bash
66 lines
1.2 KiB
Bash
#!/bin/sh
|
|
|
|
ROOTER=/usr/lib/rooter
|
|
|
|
log() {
|
|
logger -t "sms process" "$@"
|
|
}
|
|
|
|
ADDR="$1"
|
|
shift 1
|
|
TXT="$@"
|
|
MYPID=$(printf "%05d" $$)
|
|
RESFILE="/tmp/pdu"$MYPID
|
|
|
|
CURRMODEM=$(uci get modem.general.smsnum)
|
|
COMMPORT="/dev/ttyUSB"$(uci get modem.modem$CURRMODEM.commport)
|
|
|
|
RES=""
|
|
XSTATUS=0
|
|
|
|
lua /usr/lib/sms/sys2sms.lua "$ADDR" "$TXT" $MYPID
|
|
|
|
if [ -e $RESFILE ]; then
|
|
read PDUL PDU < $RESFILE
|
|
rm $RESFILE
|
|
else
|
|
RES="Failed to write SMS - is text too long?"
|
|
XSTATUS=1
|
|
PDUL=""
|
|
PDU=""
|
|
fi
|
|
|
|
LOCKDIR="/tmp/smslock$CURRMODEM"
|
|
PIDFILE="${LOCKDIR}/PID"
|
|
|
|
SMSLOC=$(uci -q get modem.modem$CURRMODEM.smsloc)
|
|
ATCMDD="$PDUL,$SMSLOC,0,$PDU"
|
|
|
|
while [ $XSTATUS -eq 0 ]; do
|
|
if mkdir "${LOCKDIR}" &>/dev/null; then
|
|
echo "$$" > "${PIDFILE}"
|
|
OX=$($ROOTER/gcom/gcom-locked "$COMMPORT" "smswrite.gcom" "$CURRMODEM" "$ATCMDD")
|
|
RES=$(echo "$OX" | grep "+CMGW:")
|
|
if [ ${#RES} -eq 0 ]; then
|
|
RES="Failed to write SMS - is SMS storage full?"
|
|
XSTATUS=1
|
|
else
|
|
RES="New SMS written successfully"
|
|
fi
|
|
rm -rf "${LOCKDIR}"
|
|
break
|
|
else
|
|
OTHERPID="$(cat "${PIDFILE}")"
|
|
if [ $? = 0 ]; then
|
|
if ! kill -0 $OTHERPID &>/dev/null; then
|
|
rm -rf "${LOCKDIR}"
|
|
fi
|
|
fi
|
|
sleep 1
|
|
fi
|
|
done
|
|
|
|
log "$RES"
|
|
echo "$RES"
|
|
exit $XSTATUS
|