2023-04-01 10:00:13 +08:00

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