Add 'modem set-logging' command.

The 'modem set-logging' command replaces 'mm_debug' for setting logging
level in modem managers.

BUG=chromium-os:34360
TEST=Tested 'modem set-logging' with cromo and ModemManager.

Change-Id: I11c68eb36d602f5ff1fd5e06418e824b56d33fb7
Reviewed-on: https://gerrit.chromium.org/gerrit/33114
Commit-Ready: Ben Chan <[email protected]>
Tested-by: Ben Chan <[email protected]>
Reviewed-by: Thieu Le <[email protected]>
diff --git a/modem-common.sh b/modem-common.sh
index 1e153b9..c852205 100644
--- a/modem-common.sh
+++ b/modem-common.sh
@@ -191,3 +191,32 @@
   [ -z "${modem}" ] && modem=$(mm1_modems | head -1)
   echo "${modem}"
 }
+
+# Returns all modem managers that are currently running.
+modem_managers() {
+  dbus_call org.freedesktop.DBus /org/freedesktop/DBus \
+      org.freedesktop.DBus.ListNames | awk '/ModemManager/ { print $2 }'
+}
+
+# Sets the log level of the specified modem manager.
+set_modem_manager_logging() {
+  local manager="$1"
+  local level="$2"
+
+  case "$manager" in
+    org.chromium.ModemManager)
+      dbus_call "${manager}" "${MM_OBJECT}" "${MM_IMANAGER}.SetLogging" \
+        "string:${level}"
+      ;;
+    org.freedesktop.ModemManager1)
+      if [ "${level}" = "error" ]; then
+        level=err
+      fi
+      dbus_call "${manager}" "${MM1_OBJECT}" "${MM1_IMANAGER}.SetLogging" \
+        "string:${level}"
+      ;;
+    *)
+      return 1
+      ;;
+  esac
+}