blob: 18e0a7b488e231642470489f6430c0cffd5b7d39 [file] [log] [blame]
#!/bin/bash
print_usage () {
echo "usage: $0 [MODEM INDEX] [all|ucs2|gsm7|data] [NUMBER]"
echo " if no [NUMBER] is given, a dummy one will be used and no SMS will be sent"
}
test () {
TITLE=$1
TEXT=$2
DATAFILE=$3
echo
echo
echo "============================================================="
echo "$TITLE"
echo "============================================================="
echo
# Build SMS properties
PROPERTIES="number='$NUMBER'"
if [ "x$TEXT" != "x" ]; then
PROPERTIES=$PROPERTIES",text='$TEXT'"
fi
# Create the SMS first, get DBus path returned
echo "Creating SMS..."
CMD="mmcli -m $MODEM_INDEX --messaging-create-sms=\"$PROPERTIES\""
if [ "x$DATAFILE" != "x" ]; then
CMD=$CMD" --messaging-create-sms-with-data=$DATAFILE"
fi
echo "$> $CMD"
OUT=`eval $CMD`
SMS_PATH=`echo "$OUT" | grep "/org/freedesktop/ModemManager1/SMS" | awk 'BEGIN { FS = " " } ; { print $1 }'`
if [ "x$SMS_PATH" = "x" ]; then
echo "error: couldn't create SMS" 1>&2
exit 2
else
echo "SMS created:"
mmcli -s $SMS_PATH
echo
fi
echo "Storing SMS..."
CMD="mmcli -s $SMS_PATH --store"
echo "$> $CMD"
OUT=`eval $CMD`
STORED=`echo "$OUT" | grep "success"`
if [ "x$STORED" = "x" ]; then
echo "error: couldn't store the SMS" 1>&2
exit 2
else
echo "SMS stored:"
mmcli -s $SMS_PATH
echo
fi
if [ "x$DONOTSEND" = "x" ]; then
echo "Sending SMS..."
CMD="mmcli -s $SMS_PATH --send"
echo "$> $CMD"
OUT=`eval $CMD`
SENT=`echo "$OUT" | grep "success"`
if [ "x$SENT" = "x" ]; then
echo "error: couldn't send the SMS" 1>&2
exit 2
else
echo "SMS sent:"
mmcli -s $SMS_PATH
echo
fi
fi
# Delete the SMS now
echo "Deleting SMS..."
CMD="mmcli -m $MODEM_INDEX --messaging-delete-sms=$SMS_PATH"
echo "$> $CMD"
OUT=`eval $CMD`
DELETED=`echo "$OUT" | grep "success"`
if [ "x$DELETED" = "x" ]; then
echo "error: couldn't delete the SMS" 1>&2
exit 2
else
echo "SMS deleted"
fi
}
if [ $# -ge 2 ]; then
MODEM_INDEX=$1
COMMAND=$2
fi
if [ $# -eq 2 ]; then
DONOTSEND=1
NUMBER=123456
elif [ $# -eq 3 ]; then
NUMBER=$3
else
echo "error: missing arguments" 1>&2
print_usage
exit 255
fi
# Process commands
case $COMMAND in
"all")
RUN_UCS2=1
RUN_GSM7=1
RUN_DATA=1
;;
"ucs2")
RUN_UCS2=1
;;
"gsm7")
RUN_GSM7=1
;;
"data")
RUN_DATA=1
;;
*)
echo "error: unexpected command '$COMMAND'" 1>&2
print_usage
exit 255
;;
esac
#
# UCS2 tests
#
if [ "x$RUN_UCS2" != "x" ]; then
test "Testing singlepart SMS with UCS2 text..." "你好你好你好你" ""
test "Testing multipart SMS with UCS2 text..." "你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好好" ""
fi
#
# GSM7 tests
#
if [ "x$RUN_GSM7" != "x" ]; then
test "Testing singlepart SMS with GSM7 text..." "Hello world" ""
test "Testing multipart SMS with GSM7 text..." "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ""
fi
#
# Data tests
#
if [ "x$RUN_DATA" != "x" ]; then
TESTFILE_SHORT=/tmp/`basename $0`-140
TESTFILE_LONG=/tmp/`basename $0`-200
echo
if [ -f $TESTFILE_SHORT ]; then
echo "Re-using previously created 140-byte testfile at $TESTFILE_SHORT"
else
echo "Creating testfile at $TESTFILE_SHORT"
dd if=/dev/random of=$TESTFILE_SHORT bs=1 count=140
fi
if [ -f $TESTFILE_LONG ]; then
echo "Re-using previously created 200-byte testfile at $TESTFILE_LONG"
else
echo "Creating testfile at $TESTFILE_LONG"
dd if=/dev/random of=$TESTFILE_LONG bs=1 count=200
fi
test "Testing singlepart SMS with data..." "" "$TESTFILE_SHORT"
test "Testing multipart SMS with data..." "" "$TESTFILE_LONG"
fi