diff options
author | Dan Williams <dcbw@redhat.com> | 2010-07-09 15:24:42 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-07-09 15:24:42 -0700 |
commit | fe2145ddc407a81a0282e5729fd806ca8f80a735 (patch) | |
tree | 19005efa7a50bbcb8ded43f56b8daba1070b98f8 /test | |
parent | 6f40ecbed52645915f458dc0b2b3a5e8779d9b22 (diff) |
test: add modem info helper
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 8 | ||||
-rwxr-xr-x | test/info.py | 248 |
2 files changed, 255 insertions, 1 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index 3d571c3b..2fbc519e 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -19,5 +19,11 @@ lsudev_LDADD = $(GUDEV_LIBS) EXTRA_DIST = \ - mm-test.py + mm-test.py \ + disable.py \ + enable.py \ + info.py \ + list-modems.py \ + location.py \ + mm-send-sms.py diff --git a/test/info.py b/test/info.py new file mode 100755 index 00000000..ee8cc5a3 --- /dev/null +++ b/test/info.py @@ -0,0 +1,248 @@ +#!/usr/bin/python +# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details: +# +# Copyright (C) 2008 Novell, Inc. +# Copyright (C) 2009 Red Hat, Inc. +# + +import sys, dbus + +DBUS_INTERFACE_PROPERTIES='org.freedesktop.DBus.Properties' +MM_DBUS_SERVICE='org.freedesktop.ModemManager' +MM_DBUS_PATH='/org/freedesktop/ModemManager' +MM_DBUS_INTERFACE='org.freedesktop.ModemManager' +MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem' +MM_DBUS_INTERFACE_MODEM_CDMA='org.freedesktop.ModemManager.Modem.Cdma' +MM_DBUS_INTERFACE_MODEM_GSM_CARD='org.freedesktop.ModemManager.Modem.Gsm.Card' +MM_DBUS_INTERFACE_MODEM_GSM_NETWORK='org.freedesktop.ModemManager.Modem.Gsm.Network' + +def get_cdma_band_class(band_class): + if band_class == 1: + return "800MHz" + elif band_class == 2: + return "1900MHz" + else: + return "Unknown" + +def get_reg_state(state): + if state == 1: + return "registered (roaming unknown)" + elif state == 2: + return "registered on home network" + elif state == 3: + return "registered on roaming network" + else: + return "unknown" + +def cdma_inspect(proxy, props): + cdma = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_CDMA) + + esn = cdma.GetEsn() + print "ESN: %s" % esn + + try: + (cdma_1x_state, evdo_state) = cdma.GetRegistrationState() + print "1x State: %s" % get_reg_state (cdma_1x_state) + print "EVDO State: %s" % get_reg_state (evdo_state) + except dbus.exceptions.DBusException, e: + print "Error reading registration state: %s" % e + + try: + quality = cdma.GetSignalQuality() + print "Signal quality: %d" % quality + except dbus.exceptions.DBusException, e: + print "Error reading signal quality: %s" % e + + try: + info = cdma.GetServingSystem() + print "Class: %s" % get_cdma_band_class(info[0]) + print "Band: %s" % info[1] + print "SID: %d" % info[2] + except dbus.exceptions.DBusException, e: + print "Error reading serving system: %s" % e + + +def get_gsm_network_mode(modem): + mode = modem.GetNetworkMode() + if mode == 0x0: + mode = "Unknown" + elif mode == 0x1: + mode = "Any" + elif mode == 0x2: + mode = "GPRS" + elif mode == 0x4: + mode = "EDGE" + elif mode == 0x8: + mode = "UMTS" + elif mode == 0x10: + mode = "HSDPA" + elif mode == 0x20: + mode = "2G Preferred" + elif mode == 0x40: + mode = "3G Preferred" + elif mode == 0x80: + mode = "2G Only" + elif mode == 0x100: + mode = "3G Only" + elif mode == 0x200: + mode = "HSUPA" + elif mode == 0x400: + mode = "HSPA" + else: + mode = "(Unknown)" + + print "Mode: %s" % mode + +def get_gsm_band(modem): + band = modem.GetBand() + if band == 0x0: + band = "Unknown" + elif band == 0x1: + band = "Any" + elif band == 0x2: + band = "EGSM (900 MHz)" + elif band == 0x4: + band = "DCS (1800 MHz)" + elif band == 0x8: + band = "PCS (1900 MHz)" + elif band == 0x10: + band = "G850 (850 MHz)" + elif band == 0x20: + band = "U2100 (WCSMA 2100 MHZ, Class I)" + elif band == 0x40: + band = "U1700 (WCDMA 3GPP UMTS1800 MHz, Class III)" + elif band == 0x80: + band = "17IV (WCDMA 3GPP AWS 1700/2100 MHz, Class IV)" + elif band == 0x100: + band = "U800 (WCDMA 3GPP UMTS800 MHz, Class VI)" + elif band == 0x200: + band = "U850 (WCDMA 3GPP UMT850 MHz, Class V)" + elif band == 0x400: + band = "U900 (WCDMA 3GPP UMTS900 MHz, Class VIII)" + elif band == 0x800: + band = "U17IX (WCDMA 3GPP UMTS MHz, Class IX)" + else: + band = "(invalid)" + + print "Band: %s" % band + + +mm_allowed = { 0: "any", + 1: "2G preferred", + 2: "3G preferred", + 3: "2G only", + 4: "3G only" + } + +mm_act = { 0: "unknown", + 1: "GSM", + 2: "GSM Compact", + 3: "GPRS", + 4: "EDGE", + 5: "UMTS", + 6: "HSDPA", + 7: "HSUPA", + 8: "HSPA" + } + +mm_reg = { 0: "idle", + 1: "home", + 2: "searching", + 3: "denied", + 4: "unknown", + 5: "roaming" + } + +def gsm_inspect(proxy, props): + # Gsm.Card interface + card = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_CARD) + + imei = "<unavailable>" + try: + imei = card.GetImei() + except dbus.exceptions.DBusException: + pass + print "IMEI: %s" % imei + + imsi = "<unavailable>" + try: + imsi = card.GetImsi() + except dbus.exceptions.DBusException: + pass + print "IMSI: %s" % imsi + + opid = "<unavailable>" + try: + opid = card.GetOperatorId() + except dbus.exceptions.DBusException: + pass + print "Operator ID: %s" % opid + + # Gsm.Network interface + net = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_NETWORK) + try: + quality = net.GetSignalQuality() + print "Signal quality: %d" % quality + except dbus.exceptions.DBusException, e: + print "Error reading signal quality: %s" % e + + try: + reg = net.GetRegistrationInfo() + print "Reg status: %s (%s, '%s')" % (mm_reg[int(reg[0])], reg[1], reg[2]) + except dbus.exceptions.DBusException, e: + print "Error reading registration: %s" % e + + try: + allowed = props.Get(MM_DBUS_INTERFACE_MODEM_GSM_NETWORK, "AllowedMode") + print "Allowed mode: %s" % mm_allowed[allowed] + except dbus.exceptions.DBusException, e: + print "Error reading allowed mode: %s" % e + + try: + act = props.Get(MM_DBUS_INTERFACE_MODEM_GSM_NETWORK, "AccessTechnology") + print "Access Tech: %s" % mm_act[act] + except dbus.exceptions.DBusException, e: + print "Error reading current access technology: %s" % e + + + +bus = dbus.SystemBus() +bus = dbus.SystemBus() +proxy = bus.get_object(MM_DBUS_SERVICE, sys.argv[1]) + +# Properties +props = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties') + +mtype = props.Get(MM_DBUS_INTERFACE_MODEM, 'Type') +if mtype == 1: + print "Type: GSM" +elif mtype == 2: + print "Type: CDMA" + +print "Driver: '%s'" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'Driver')) +print "Modem device: '%s'" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'MasterDevice')) +print "Data device: '%s'" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'Device')) +print "" + +modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM) +info = modem.GetInfo() +print "Vendor: %s" % info[0] +print "Model: %s" % info[1] +print "Version: %s" % info[2] +print "" + +if mtype == 1: + gsm_inspect(proxy, props) +elif mtype == 2: + cdma_inspect(proxy, props) + |