Add set-carrier command to modem script, with error checking.
Pull in the modemmanagers() function along the way.
(adapted from the flimflam mm.sh)
BUG=chromium-os:15089
TEST="modem set-carrier 'Generic UMTS'"
Change-Id: Ib7bbe8d84aeb7801621c11a8854c32f246753f2a
Reviewed-on: http://gerrit.chromium.org/gerrit/3888
Tested-by: Nathan J. Williams <njw@chromium.org>
Reviewed-by: Jason Glasgow <jglasgow@chromium.org>
Reviewed-by: Eric Shienbrood <ers@chromium.org>
diff --git a/mm.sh b/mm.sh
index ccfc5d6..1b917c5 100644
--- a/mm.sh
+++ b/mm.sh
@@ -8,6 +8,7 @@
MM=${MM:-/org/chromium/ModemManager}
IDBUS=org.freedesktop.DBus
+DBUS=/org/freedesktop/DBus
IDBUS_PROPERTIES=$IDBUS.Properties
IMM=org.freedesktop.ModemManager
IMODEM=$IMM.Modem
@@ -36,6 +37,12 @@
dbus $MM $IMM.EnumerateDevices | awk '{print $2}'
}
+modemmanagers () {
+ dbus-send --system --print-reply --fixed \
+ --dest=$IDBUS $DBUS $IDBUS.ListNames \
+ | awk '/ModemManager/ { print $2 }'
+}
+
modemprops () {
local modem=$1
for i in $IMODEMS; do
diff --git a/modem b/modem
index a323467..ca284d8 100755
--- a/modem
+++ b/modem
@@ -160,6 +160,28 @@
rm -f $tmpfile
}
+set_carrier () {
+ local modem
+ local mm
+ mm=$(modemmanagers | grep chromium)
+ [ -z "$mm" ] && echo "no compatible modem found" && exit 1
+ $(arg_or_default modem $(modems | head -1))
+ [ -z "$modem" ] && echo "no modem found" && exit 1
+ $(needarg carrier)
+
+ echo Setting carrier to "$carrier". This could take up to two minutes.
+ echo Using modem "$modem"
+
+ dbus-send \
+ --reply-timeout=120000 \
+ --system \
+ --print-reply \
+ --dest=$DEST \
+ "$modem" \
+ org.chromium.ModemManager.Modem.Gobi.SetCarrier \
+ "string:$carrier"
+}
+
usage () {
echo "Usage: $0 <command> [args...]"
echo " activate [-modem <modem>] [<carrier>] Activate modem"
@@ -168,6 +190,7 @@
echo " factory-reset [-modem <modem>] [<spc>] Factory-reset the modem"
echo " status Display modem status"
echo " update-prl [-modem <modem>] <prl-file-name> Install a PRL file"
+ echo " set-carrier [-modem <modem>] <carrier-name> Set modem carrier firmware"
exit 0
}
@@ -191,6 +214,9 @@
update-prl)
update_prl "$@"
;;
+ set-carrier)
+ set_carrier "$@"
+ ;;
*)
usage
;;