diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-06-18 16:26:51 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-06-18 16:30:26 +0200 |
commit | f3f499fcec13e6ffa9a428972c1108e7c23065d2 (patch) | |
tree | a108b98506903137a2b03425c6f2e516c130f073 /test | |
parent | b582ba58e8e5a3f6ab0b0b18b3883b71373e5e05 (diff) |
test: remove testers of the old interface
Old python tests using the old ModemManager interface are removed, as mmcli
provides already a much nicer way to test the DBus interface.
Also, mm-test.py and the PPPD plugin get removed, which were also using the old
interface, and which were not very useful for testing newer non-PPP based
modems.
https://bugzilla.gnome.org/show_bug.cgi?id=702061
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 30 | ||||
-rwxr-xr-x | test/disable.py | 30 | ||||
-rwxr-xr-x | test/disconnect.py | 30 | ||||
-rwxr-xr-x | test/enable.py | 30 | ||||
-rwxr-xr-x | test/info.py | 261 | ||||
-rwxr-xr-x | test/list-modems.py | 54 | ||||
-rwxr-xr-x | test/location.py | 60 | ||||
-rw-r--r-- | test/mm-test-pppd-plugin.c | 264 | ||||
-rwxr-xr-x | test/mm-test.py | 527 | ||||
-rwxr-xr-x | test/modem-autoenable.py | 50 | ||||
-rwxr-xr-x | test/scan.py | 89 | ||||
-rwxr-xr-x | test/send-pin.py | 69 | ||||
-rwxr-xr-x | test/sms-get.py | 80 | ||||
-rwxr-xr-x | test/sms-send.py | 89 | ||||
-rwxr-xr-x | test/ussd.py | 48 |
15 files changed, 2 insertions, 1709 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index 146f8827..f0bfd188 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -1,35 +1,9 @@ -if HAVE_PPPD_H - -pppd_plugindir = $(PPPD_PLUGIN_DIR) -pppd_plugin_LTLIBRARIES = mm-test-pppd-plugin.la - -mm_test_pppd_plugin_la_SOURCES = \ - mm-test-pppd-plugin.c - -mm_test_pppd_plugin_la_CPPFLAGS = $(MM_CFLAGS) -mm_test_pppd_plugin_la_LDFLAGS = -module -avoid-version -mm_test_pppd_plugin_la_LIBADD = $(MM_LIBS) - -endif noinst_PROGRAMS = lsudev + lsudev_SOURCES = lsudev.c lsudev_CPPFLAGS = $(GUDEV_CFLAGS) lsudev_LDADD = $(GUDEV_LIBS) - EXTRA_DIST = \ - mm-test.py \ - disable.py \ - enable.py \ - disconnect.py \ - info.py \ - list-modems.py \ - location.py \ - sms-send.py \ - sms-get.py \ - send-pin.py \ - modem-autoenable.py \ - ussd.py \ - scan.py - + mmcli-test-sms diff --git a/test/disable.py b/test/disable.py deleted file mode 100755 index 4e52cf1d..00000000 --- a/test/disable.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/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) 2009 - 2010 Red Hat, Inc. -# - -import sys, dbus - -MM_DBUS_SERVICE='org.freedesktop.ModemManager' -MM_DBUS_PATH='/org/freedesktop/ModemManager' -MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem' - -bus = dbus.SystemBus() -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath) -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) -modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM) -modem.Enable (False) - diff --git a/test/disconnect.py b/test/disconnect.py deleted file mode 100755 index 21522353..00000000 --- a/test/disconnect.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/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) 2009 - 2010 Red Hat, Inc. -# - -import sys, dbus - -MM_DBUS_SERVICE='org.freedesktop.ModemManager' -MM_DBUS_PATH='/org/freedesktop/ModemManager' -MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem' - -bus = dbus.SystemBus() -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath) -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) -modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM) -modem.Disconnect () - diff --git a/test/enable.py b/test/enable.py deleted file mode 100755 index 7fa218da..00000000 --- a/test/enable.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/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) 2009 - 2010 Red Hat, Inc. -# - -import sys, dbus - -MM_DBUS_SERVICE='org.freedesktop.ModemManager' -MM_DBUS_PATH='/org/freedesktop/ModemManager' -MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem' - -bus = dbus.SystemBus() -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath) -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) -modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM) -modem.Enable (True) - diff --git a/test/info.py b/test/info.py deleted file mode 100755 index 878adb75..00000000 --- a/test/info.py +++ /dev/null @@ -1,261 +0,0 @@ -#!/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) - - try: - esn = cdma.GetEsn() - print "ESN: %s" % esn - except dbus.exceptions.DBusException, e: - print "Error reading ESN: %s" % e - - 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) - - simid = "<unavailable>" - try: - simid = props.Get(MM_DBUS_INTERFACE_MODEM_GSM_CARD, "SimIdentifier") - except dbus.exceptions.DBusException: - pass - print "SIM ID: %s" % simid - - 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() -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/%s" % str(objpath) -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) - -# 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 "Device ID: %s" % (props.Get(MM_DBUS_INTERFACE_MODEM, 'DeviceIdentifier')) -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) - diff --git a/test/list-modems.py b/test/list-modems.py deleted file mode 100755 index c8cd6189..00000000 --- a/test/list-modems.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/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 - 2010 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' - -bus = dbus.SystemBus() - -# Get available modems: -manager_proxy = bus.get_object(MM_DBUS_SERVICE, MM_DBUS_PATH) -manager_iface = dbus.Interface(manager_proxy, dbus_interface=MM_DBUS_INTERFACE) -modems = manager_iface.EnumerateDevices() - -if not modems: - print "No modems found" - sys.exit(1) - -for m in modems: - proxy = bus.get_object(MM_DBUS_SERVICE, m) - - # Properties - props_iface = dbus.Interface(proxy, dbus_interface=DBUS_INTERFACE_PROPERTIES) - - driver = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Driver') - mtype = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Type') - device = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'MasterDevice') - - strtype = "" - if mtype == 1: - strtype = "GSM" - elif mtype == 2: - strtype = "CDMA" - - print "%s (%s [%s], device %s)" % (m, strtype, driver, device) - diff --git a/test/location.py b/test/location.py deleted file mode 100755 index 96cd1e54..00000000 --- a/test/location.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/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) 2009 - 2010 Red Hat, Inc. -# - -import sys, dbus, time - -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_LOCATION='org.freedesktop.ModemManager.Modem.Location' - -MM_MODEM_LOCATION_CAPABILITY_UNKNOWN = 0x00000000 -MM_MODEM_LOCATION_CAPABILITY_GPS_NMEA = 0x00000001 -MM_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI = 0x00000002 -MM_MODEM_LOCATION_CAPABILITY_GPS_RAW = 0x00000004 - -bus = dbus.SystemBus() -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath) -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) -modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM) - -props = dbus.Interface(proxy, dbus_interface=DBUS_INTERFACE_PROPERTIES) -caps = props.Get(MM_DBUS_INTERFACE_MODEM_LOCATION, "Capabilities") - -print "Location Capabilities:" -if caps & MM_MODEM_LOCATION_CAPABILITY_GPS_NMEA: - print " GPS_NMEA" -if caps & MM_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI: - print " GSM_LAC_CI" -if caps & MM_MODEM_LOCATION_CAPABILITY_GPS_RAW: - print " GPS_RAW" -print "" - -loc = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_LOCATION) -loc.Enable(True, True) - -for i in range(0, 5): - locations = loc.GetLocation() - if locations.has_key(MM_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI): - print "GSM_LAC_CI: %s" % str(locations[MM_MODEM_LOCATION_CAPABILITY_GSM_LAC_CI]) - time.sleep(1) - -loc.Enable(False, False) - diff --git a/test/mm-test-pppd-plugin.c b/test/mm-test-pppd-plugin.c deleted file mode 100644 index 75163fc7..00000000 --- a/test/mm-test-pppd-plugin.c +++ /dev/null @@ -1,264 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; 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. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (C) 2008 Novell, Inc. - * Copyright (C) 2008 - 2009 Red Hat, Inc. - */ - -#include <string.h> -#include <pppd/pppd.h> -#include <pppd/fsm.h> -#include <pppd/ipcp.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <glib.h> - -int plugin_init (void); - -char pppd_version[] = VERSION; -char *my_user = NULL; -char *my_pass = NULL; -char *my_file = NULL; - -static void -mm_phasechange (void *data, int arg) -{ - const char *ppp_phase = NULL; - - switch (arg) { - case PHASE_DEAD: - ppp_phase = "dead"; - break; - case PHASE_INITIALIZE: - ppp_phase = "initialize"; - break; - case PHASE_SERIALCONN: - ppp_phase = "serial connection"; - break; - case PHASE_DORMANT: - ppp_phase = "dormant"; - break; - case PHASE_ESTABLISH: - ppp_phase = "establish"; - break; - case PHASE_AUTHENTICATE: - ppp_phase = "authenticate"; - break; - case PHASE_CALLBACK: - ppp_phase = "callback"; - break; - case PHASE_NETWORK: - ppp_phase = "network"; - break; - case PHASE_RUNNING: - ppp_phase = "running"; - break; - case PHASE_TERMINATE: - ppp_phase = "terminate"; - break; - case PHASE_DISCONNECT: - ppp_phase = "disconnect"; - break; - case PHASE_HOLDOFF: - ppp_phase = "holdoff"; - break; - case PHASE_MASTER: - ppp_phase = "master"; - break; - default: - ppp_phase = "unknown"; - break; - } - - g_message ("mm-test-ppp-plugin: (%s): phase now '%s'", __func__, ppp_phase); -} - -static void -append_ip4_addr (GString *str, const char *tag, guint32 addr) -{ - char buf[INET_ADDRSTRLEN + 2]; - struct in_addr tmp_addr = { .s_addr = addr }; - - memset (buf, 0, sizeof (buf)); - - if (inet_ntop (AF_INET, &tmp_addr, buf, sizeof (buf) - 1)) - g_string_append_printf (str, "%s %s\n", tag, buf); -} - -static void -mm_ip_up (void *data, int arg) -{ - ipcp_options opts = ipcp_gotoptions[0]; - ipcp_options peer_opts = ipcp_hisoptions[0]; - guint32 pppd_made_up_address = htonl (0x0a404040 + ifunit); - GString *contents; - GError *err = NULL; - gboolean success; - - g_message ("mm-test-ppp-plugin: (%s): ip-up event", __func__); - - if (!opts.ouraddr) { - g_warning ("mm-test-ppp-plugin: (%s): didn't receive an internal IP from pppd!", __func__); - mm_phasechange (NULL, PHASE_DEAD); - return; - } - - contents = g_string_sized_new (100); - - g_string_append_printf (contents, "iface %s\n", ifname); - - append_ip4_addr (contents, "addr", opts.ouraddr); - - /* Prefer the peer options remote address first, _unless_ pppd made the - * address up, at which point prefer the local options remote address, - * and if that's not right, use the made-up address as a last resort. - */ - if (peer_opts.hisaddr && (peer_opts.hisaddr != pppd_made_up_address)) - append_ip4_addr (contents, "gateway", peer_opts.hisaddr); - else if (opts.hisaddr) - append_ip4_addr (contents, "gateway", opts.hisaddr); - else if (peer_opts.hisaddr == pppd_made_up_address) { - /* As a last resort, use the made-up address */ - append_ip4_addr (contents, "gateway", peer_opts.hisaddr); - } - - if (opts.dnsaddr[0] || opts.dnsaddr[1]) { - if (opts.dnsaddr[0]) - append_ip4_addr (contents, "dns1", opts.dnsaddr[0]); - if (opts.dnsaddr[1]) - append_ip4_addr (contents, "dns2", opts.dnsaddr[1]); - } - - if (opts.winsaddr[0] || opts.winsaddr[1]) { - if (opts.winsaddr[0]) - append_ip4_addr (contents, "wins1", opts.winsaddr[0]); - if (opts.winsaddr[1]) - append_ip4_addr (contents, "wins2", opts.winsaddr[1]); - } - - g_string_append (contents, "DONE\n"); - - success = g_file_set_contents (my_file, contents->str, -1, &err); - if (success) - g_message ("nm-ppp-plugin: (%s): saved IP4 config to %s", __func__, my_file); - else { - g_message ("nm-ppp-plugin: (%s): error saving IP4 config to %s: (%d) %s", - __func__, my_file, err->code, err->message); - g_clear_error (&err); - } - - g_string_free (contents, TRUE); -} - -static int -get_chap_check() -{ - return 1; -} - -static int -get_pap_check() -{ - return 1; -} - -static int -get_credentials (char *username, char *password) -{ - size_t len; - - if (username && !password) { - /* pppd is checking pap support; return 1 for supported */ - return 1; - } - - g_message ("nm-ppp-plugin: (%s): sending credentials (%s / %s)", - __func__, - my_user ? my_user : "", - my_pass ? my_pass : ""); - - if (my_user) { - len = strlen (my_user) + 1; - len = len < MAXNAMELEN ? len : MAXNAMELEN; - - strncpy (username, my_user, len); - username[len - 1] = '\0'; - } - - if (my_pass) { - len = strlen (my_pass) + 1; - len = len < MAXSECRETLEN ? len : MAXSECRETLEN; - - strncpy (password, my_pass, len); - password[len - 1] = '\0'; - } - - return 1; -} - -static void -mm_exit_notify (void *data, int arg) -{ - g_message ("mm-test-ppp-plugin: (%s): cleaning up", __func__); - - g_free (my_user); - my_user = NULL; - g_free (my_pass); - my_pass = NULL; - g_free (my_file); - my_file = NULL; -} - -int -plugin_init (void) -{ - char **args; - - g_message ("mm-test-ppp-plugin: (%s): initializing", __func__); - - /* mm-test passes the file + username + password in as the 'ipparam' arg - * to pppd. - */ - args = g_strsplit (ipparam, "+", 0); - if (!args || g_strv_length (args) != 3) { - g_message ("mm-test-ppp-plugin: (%s): ipparam arguments error ('%s')", - __func__, ipparam); - return -1; - } - - my_user = (args[0] && strlen (args[0])) ? g_strdup (args[0]) : NULL; - my_pass = (args[1] && strlen (args[1])) ? g_strdup (args[1]) : NULL; - my_file = (args[2] && strlen (args[2])) ? g_strdup (args[2]) : NULL; - - g_strfreev (args); - - if (!my_file) { - g_message ("mm-test-ppp-plugin: (%s): missing IP config file", - __func__); - return -1; - } - - chap_passwd_hook = get_credentials; - chap_check_hook = get_chap_check; - pap_passwd_hook = get_credentials; - pap_check_hook = get_pap_check; - - add_notifier (&phasechange, mm_phasechange, NULL); - add_notifier (&ip_up_notifier, mm_ip_up, NULL); - add_notifier (&exitnotify, mm_exit_notify, NULL); - - return 0; -} diff --git a/test/mm-test.py b/test/mm-test.py deleted file mode 100755 index 99a355f1..00000000 --- a/test/mm-test.py +++ /dev/null @@ -1,527 +0,0 @@ -#!/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, time, os, string, subprocess, socket - -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' -MM_DBUS_INTERFACE_MODEM_SIMPLE='org.freedesktop.ModemManager.Modem.Simple' - -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, dump_private): - cdma = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_CDMA) - - esn = "<private>" - if dump_private: - try: - esn = cdma.GetEsn() - except dbus.exceptions.DBusException: - esn = "<unavailable>" - - print "" - 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 cdma_connect(proxy, user, password): - # Modem.Simple interface - simple = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_SIMPLE) - try: - simple.Connect({'number':"#777"}, timeout=92) - print "\nConnected!" - return True - except Exception, e: - print "Error connecting: %s" % e - return False - - -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 - - -def gsm_inspect(proxy, dump_private, do_scan): - # Gsm.Card interface - card = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_CARD) - - imei = "<private>" - imsi = "<private>" - if dump_private: - try: - imei = card.GetImei() - except dbus.exceptions.DBusException: - imei = "<unavailable>" - try: - imsi = card.GetImsi() - except dbus.exceptions.DBusException: - imsi = "<unavailable>" - - print "IMEI: %s" % imei - print "IMSI: %s" % imsi - - # 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 - - if not do_scan: - return - - print "Scanning..." - try: - results = net.Scan(timeout=120) - except dbus.exceptions.DBusException, e: - print "Error scanning: %s" % e - results = {} - - for r in results: - status = r['status'] - if status == "1": - status = "available" - elif status == "2": - status = "current" - elif status == "3": - status = "forbidden" - else: - status = "(Unknown)" - - access_tech = "" - try: - access_tech_num = r['access-tech'] - if access_tech_num == "0": - access_tech = "(GSM)" - elif access_tech_num == "1": - access_tech = "(Compact GSM)" - elif access_tech_num == "2": - access_tech = "(UMTS)" - elif access_tech_num == "3": - access_tech = "(EDGE)" - elif access_tech_num == "4": - access_tech = "(HSDPA)" - elif access_tech_num == "5": - access_tech = "(HSUPA)" - elif access_tech_num == "6": - access_tech = "(HSPA)" - except KeyError: - pass - - if r.has_key('operator-long') and len(r['operator-long']): - print "%s: %s %s" % (r['operator-long'], status, access_tech) - elif r.has_key('operator-short') and len(r['operator-short']): - print "%s: %s %s" % (r['operator-short'], status, access_tech) - else: - print "%s: %s %s" % (r['operator-num'], status, access_tech) - -def gsm_connect(proxy, apn, user, password): - # Modem.Simple interface - simple = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_SIMPLE) - try: - opts = {'number':"*99#"} - if apn is not None: - opts['apn'] = apn - if user is not None: - opts['username'] = user - if password is not None: - opts['password'] = password - simple.Connect(opts, timeout=120) - print "\nConnected!" - return True - except Exception, e: - print "Error connecting: %s" % e - return False - -def pppd_find(): - paths = ["/usr/local/sbin/pppd", "/usr/sbin/pppd", "/sbin/pppd"] - for p in paths: - if os.path.exists(p): - return p - return None - -def ppp_start(device, user, password, tmpfile): - path = pppd_find() - if not path: - return None - - args = [path] - args += ["nodetach"] - args += ["lock"] - args += ["nodefaultroute"] - args += ["debug"] - if user: - args += ["user"] - args += [user] - args += ["noipdefault"] - args += ["115200"] - args += ["noauth"] - args += ["crtscts"] - args += ["modem"] - args += ["usepeerdns"] - args += ["ipparam"] - - ipparam = "" - if user: - ipparam += user - ipparam += "+" - if password: - ipparam += password - ipparam += "+" - ipparam += tmpfile - args += [ipparam] - - args += ["plugin"] - args += ["mm-test-pppd-plugin.so"] - - args += [device] - - return subprocess.Popen(args, close_fds=True, cwd="/", env={}) - -def ppp_wait(p, tmpfile): - i = 0 - while p.poll() == None and i < 30: - time.sleep(1) - if os.path.exists(tmpfile): - f = open(tmpfile, 'r') - stuff = f.read(500) - idx = string.find(stuff, "DONE") - f.close() - if idx >= 0: - return True - i += 1 - return False - -def ppp_stop(p): - import signal - p.send_signal(signal.SIGTERM) - p.wait() - -def ntop_helper(ip): - ip = socket.ntohl(ip) - n1 = ip >> 24 & 0xFF - n2 = ip >> 16 & 0xFF - n3 = ip >> 8 & 0xFF - n4 = ip & 0xFF - a = "%c%c%c%c" % (n1, n2, n3, n4) - return socket.inet_ntop(socket.AF_INET, a) - -def static_start(iface, modem): - (addr_num, dns1_num, dns2_num, dns3_num) = modem.GetIP4Config() - addr = ntop_helper(addr_num) - dns1 = ntop_helper(dns1_num) - dns2 = ntop_helper(dns2_num) - configure_iface(iface, addr, 0, dns1, dns2) - -def down_iface(iface): - ip = ["ip", "addr", "flush", "dev", iface] - print " ".join(ip) - subprocess.call(ip) - ip = ["ip", "link", "set", iface, "down"] - print " ".join(ip) - subprocess.call(ip) - -def configure_iface(iface, addr, gw, dns1, dns2): - print "\n\n******************************" - print "iface: %s" % iface - print "addr: %s" % addr - print "gw: %s" % gw - print "dns1: %s" % dns1 - print "dns2: %s" % dns2 - - ifconfig = ["ifconfig", iface, "%s/32" % addr] - if gw != 0: - ifconfig += ["pointopoint", gw] - print " ".join(ifconfig) - print "\n******************************\n" - - subprocess.call(ifconfig) - -def file_configure_iface(tmpfile): - addr = None - gw = None - iface = None - dns1 = None - dns2 = None - - f = open(tmpfile, 'r') - lines = f.readlines() - for l in lines: - if l.startswith("addr"): - addr = l[len("addr"):].strip() - if l.startswith("gateway"): - gw = l[len("gateway"):].strip() - if l.startswith("iface"): - iface = l[len("iface"):].strip() - if l.startswith("dns1"): - dns1 = l[len("dns1"):].strip() - if l.startswith("dns2"): - dns2 = l[len("dns2"):].strip() - f.close() - - configure_iface(iface, addr, gw, dns1, dns2) - return iface - -def try_ping(iface): - cmd = ["ping", "-I", iface, "-c", "4", "-i", "3", "-w", "20", "4.2.2.1"] - print " ".join(cmd) - retcode = subprocess.call(cmd) - if retcode != 0: - print "PING: failed" - else: - print "PING: success" - - -dump_private = False -connect = False -apn = None -user = None -password = None -do_ip = False -do_scan = True -x = 1 -while x < len(sys.argv): - if sys.argv[x] == "--private": - dump_private = True - elif sys.argv[x] == "--connect": - connect = True - elif (sys.argv[x] == "--user" or sys.argv[x] == "--username"): - x += 1 - user = sys.argv[x] - elif sys.argv[x] == "--apn": - x += 1 - apn = sys.argv[x] - elif sys.argv[x] == "--password": - x += 1 - password = sys.argv[x] - elif sys.argv[x] == "--ip": - do_ip = True - if os.geteuid() != 0: - print "You probably want to be root to use --ip" - sys.exit(1) - elif sys.argv[x] == "--no-scan": - do_scan = False - x += 1 - -bus = dbus.SystemBus() - -# Get available modems: -manager_proxy = bus.get_object('org.freedesktop.ModemManager', '/org/freedesktop/ModemManager') -manager_iface = dbus.Interface(manager_proxy, dbus_interface='org.freedesktop.ModemManager') -modems = manager_iface.EnumerateDevices() - -if not modems: - print "No modems found" - sys.exit(1) - -for m in modems: - connect_success = False - data_device = None - - proxy = bus.get_object(MM_DBUS_SERVICE, m) - - # Properties - props_iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties') - - type = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Type') - if type == 1: - print "GSM modem" - elif type == 2: - print "CDMA modem" - else: - print "Invalid modem type: %d" % type - - print "Driver: '%s'" % (props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Driver')) - print "Modem device: '%s'" % (props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'MasterDevice')) - data_device = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'Device') - print "Data device: '%s'" % data_device - - # Modem interface - modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM) - - try: - modem.Enable(True) - except dbus.exceptions.DBusException, e: - print "Error enabling modem: %s" % e - sys.exit(1) - - info = modem.GetInfo() - print "Vendor: %s" % info[0] - print "Model: %s" % info[1] - print "Version: %s" % info[2] - - if type == 1: - gsm_inspect(proxy, dump_private, do_scan) - if connect == True: - connect_success = gsm_connect(proxy, apn, user, password) - elif type == 2: - cdma_inspect(proxy, dump_private) - if connect == True: - connect_success = cdma_connect(proxy, user, password) - print - - if connect_success and do_ip: - tmpfile = "/tmp/mm-test-%d.tmp" % os.getpid() - success = False - try: - ip_method = props_iface.Get(MM_DBUS_INTERFACE_MODEM, 'IpMethod') - if ip_method == 0: - # ppp - p = ppp_start(data_device, user, password, tmpfile) - if ppp_wait(p, tmpfile): - data_device = file_configure_iface(tmpfile) - success = True - elif ip_method == 1: - # static - static_start(data_device, modem) - success = True - elif ip_method == 2: - # dhcp - pass - except Exception, e: - print "Error setting up IP: %s" % e - - if success: - try_ping(data_device) - print "Waiting for 30s..." - time.sleep(30) - - print "Disconnecting..." - try: - if ip_method == 0: - ppp_stop(p) - try: - os.remove(tmpfile) - except: - pass - elif ip_method == 1: - # static - down_iface(data_device) - elif ip_method == 2: - # dhcp - down_iface(data_device) - - modem.Disconnect() - except Exception, e: - print "Error tearing down IP: %s" % e - - time.sleep(5) - - modem.Enable(False) - diff --git a/test/modem-autoenable.py b/test/modem-autoenable.py deleted file mode 100755 index d637d3ff..00000000 --- a/test/modem-autoenable.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/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) 2011 Red Hat, Inc. -# - -import gobject, sys, dbus -from dbus.mainloop.glib import DBusGMainLoop - -DBusGMainLoop(set_as_default=True) - -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' - -def modemAdded(modem_path): - proxy = bus.get_object(MM_DBUS_SERVICE, modem_path) - modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM) - modem.Enable (True) - -bus = dbus.SystemBus() - -manager_proxy = bus.get_object(MM_DBUS_SERVICE, MM_DBUS_PATH) -manager_iface = dbus.Interface(manager_proxy, dbus_interface=MM_DBUS_INTERFACE) - -# Enable modems that are already known -for m in manager_iface.EnumerateDevices(): - modemAdded(m) - -# Listen for new modems -manager_iface.connect_to_signal("DeviceAdded", modemAdded) - -# Start the mainloop and listen -loop = gobject.MainLoop() -try: - loop.run() -except KeyboardInterrupt: - pass -sys.exit(0) diff --git a/test/scan.py b/test/scan.py deleted file mode 100755 index eff470d4..00000000 --- a/test/scan.py +++ /dev/null @@ -1,89 +0,0 @@ -#!/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) 2009 - 2010Red Hat, Inc. -# - -import sys, dbus - -DBUS_INTERFACE_PROPERTIES='org.freedesktop.DBus.Properties' -MM_DBUS_SERVICE='org.freedesktop.ModemManager' -MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem' -MM_DBUS_INTERFACE_MODEM_GSM_NETWORK='org.freedesktop.ModemManager.Modem.Gsm.Network' - -gsm_act = { 0: "(GSM)", - 1: "(GSM Compact)", - 2: "(UMTS)", - 3: "(EDGE)", - 4: "(HSDPA)", - 5: "(HSUPA)", - 6: "(HSPA)" - } - -bus = dbus.SystemBus() -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath) -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) - -# Properties -props = dbus.Interface(proxy, dbus_interface='org.freedesktop.DBus.Properties') - -mtype = props.Get(MM_DBUS_INTERFACE_MODEM, 'Type') -if mtype == 2: - print "CDMA modems do not support network scans" - sys.exit(1) - -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 "" - -net = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_GSM_NETWORK) -print "Scanning..." -try: - results = net.Scan(timeout=120) -except dbus.exceptions.DBusException, e: - print "Error scanning: %s" % e - results = {} - -for r in results: - status = r['status'] - if status == "1": - status = "available" - elif status == "2": - status = "current" - elif status == "3": - status = "forbidden" - else: - status = "(Unknown)" - - access_tech = "" - try: - access_tech_num = int(r['access-tech']) - access_tech = gsm_act[access_tech_num] - except KeyError: - pass - - opnum = "(%s):" % r['operator-num'] - # Extra space for 5-digit MCC/MNC - if r['operator-num'] == 5: - opnum += " " - - if r.has_key('operator-long') and len(r['operator-long']): - print "%s %s %s %s" % (r['operator-long'], opnum, status, access_tech) - elif r.has_key('operator-short') and len(r['operator-short']): - print "%s %s %s %s" % (r['operator-short'], opnum, status, access_tech) - else: - print "%s: %s %s" % (r['operator-num'], status, access_tech) - diff --git a/test/send-pin.py b/test/send-pin.py deleted file mode 100755 index 002f1b09..00000000 --- a/test/send-pin.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/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) 2009 - 2010 Red Hat, Inc. -# - -import sys, dbus, os - -MM_DBUS_SERVICE='org.freedesktop.ModemManager' -MM_DBUS_PATH='/org/freedesktop/ModemManager' -DBUS_INTERFACE_PROPS='org.freedesktop.DBus.Properties' -MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem' -MM_DBUS_INTERFACE_GSM_CARD='org.freedesktop.ModemManager.Modem.Gsm.Card' - -if len(sys.argv) != 3: - print "Usage: <modem path> <pin>" - os._exit(1) -if not len(sys.argv[2]) in range(4,9): - print "PIN must be between 4 or 8 characters inclusive" - os._exit(1) -if not sys.argv[2].isdigit(): - print "PIN must be numeric" - os._exit(1) - -bus = dbus.SystemBus() -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath) -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) - -props = dbus.Interface(proxy, dbus_interface=DBUS_INTERFACE_PROPS) -req = props.Get(MM_DBUS_INTERFACE_MODEM, "UnlockRequired") -if req == "": - print "SIM unlocked" - os._exit(0) - -print "Unlock Required: %s" % req -if req != "sim-pin": - print "Only sim-pin unlock supported for now" - os._exit(1) - -# Unlock the SIM -print "Unlocking with PIN" -card = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_GSM_CARD) -try: - card.SendPin(sys.argv[2]) -except Exception, e: - print "Unlock failed: %s" % e - os._exit(1) - -# Check to make sure it actually got unlocked -req = props.Get(MM_DBUS_INTERFACE_MODEM, "UnlockRequired") -if req != "": - print "Unlock not successful: %s" % req - os._exit(1) - -print "Unlock successful" -os._exit(0) - diff --git a/test/sms-get.py b/test/sms-get.py deleted file mode 100755 index 981fb5d6..00000000 --- a/test/sms-get.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/python -# -# 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) 2009 Novell, Inc. -# Copyright (C) 2009 - 2012 Red Hat, Inc. -# - -# An example on how to read SMS messages using ModemManager - -import sys -import dbus -import os - -MM_DBUS_SERVICE='org.freedesktop.ModemManager' -MM_DBUS_PATH='/org/freedesktop/ModemManager' -MM_DBUS_INTERFACE_MODEM='org.freedesktop.ModemManager.Modem' -MM_DBUS_INTERFACE_MODEM_SMS='org.freedesktop.ModemManager.Modem.Gsm.SMS' - -arglen = len(sys.argv) -if arglen != 2 and arglen != 3: - print "Usage: %s <modem path> [message #]" % sys.argv[0] - sys.exit(1) - -msgnum = None -if len(sys.argv) == 3: - msgnum = int(sys.argv[2]) - -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath) - -# Create the modem properties proxy -bus = dbus.SystemBus() -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) -modem = dbus.Interface(proxy, dbus_interface="org.freedesktop.DBus.Properties") - -# Make sure the modem is enabled first -if modem.Get(MM_DBUS_INTERFACE_MODEM, "Enabled") == False: - print "Modem is not enabled" - sys.exit(1) - -# Create the SMS interface proxy -sms = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_MODEM_SMS) - -msgs = sms.List() -i = 0 -for m in msgs: - print "-------------------------------------------------------------------" - smsc = "" - try: - smsc = m["smsc"] - except KeyError: - pass - - print "%d: From: %s Time: %s SMSC: %s" % (m["index"], m["number"], m["timestamp"], smsc) - if len(m["text"]): - print " %s\n" % m["text"] - elif len(m["data"]): - print " Coding: %d" % m["data-coding-scheme"] - z = 1 - s = "" - for c in m["data"]: - s += "%02X " % c - if not z % 16: - print " %s" % s - s = "" - z += 1 - if len(s): - print " %s" % s - i += 1 - diff --git a/test/sms-send.py b/test/sms-send.py deleted file mode 100755 index 5977c20a..00000000 --- a/test/sms-send.py +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/python -# -# 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) 2009 Novell, Inc. -# - -# An example on how to send an SMS message using ModemManager - -import sys -import dbus -import os - -arglen = len(sys.argv) -if arglen != 4 and arglen != 6 and arglen != 8: - print "Usage: %s --number <number> [--smsc <smsc>] [--validity <minutes>] <message>" % sys.argv[0] - sys.exit(1) - -number = None -validity = None -smsc = None -message = None -x = 1 -while x < arglen - 1: - if sys.argv[x] == "--number": - x += 1 - number = sys.argv[x].strip() - elif sys.argv[x] == "--validity": - x += 1 - validity = int(sys.argv[x]) - elif sys.argv[x] == "--smsc": - x += 1 - smsc = sys.argv[x].strip() - else: - raise ValueError("Unknown option '%s'" % sys.argv[x]) - x += 1 - -try: - lang = os.getenv("LANG") - idx = lang.find(".") - if idx != -1: - lang = lang[idx + 1:] -except KeyError: - lang = "utf-8" -message = unicode(sys.argv[arglen - 1], "utf-8") - - -bus = dbus.SystemBus() - -manager_proxy = bus.get_object('org.freedesktop.ModemManager', '/org/freedesktop/ModemManager') -manager_iface = dbus.Interface(manager_proxy, dbus_interface='org.freedesktop.ModemManager') -modems = manager_iface.EnumerateDevices() -if len(modems) == 0: - print "No modems found" - sys.exit(1) - -proxy = bus.get_object('org.freedesktop.ModemManager', modems[0]) -modem = dbus.Interface(proxy, dbus_interface='org.freedesktop.ModemManager.Modem') -modem.Enable(True) - -msg_dict = dbus.Dictionary( - { - dbus.String('number') : dbus.String(number), - dbus.String('text') : dbus.String(message) - }, - signature=dbus.Signature("sv") -) - -if smsc: - msg_dict[dbus.String('smsc')] = dbus.String(smsc) - -if validity: - msg_dict[dbus.String('validity')] = dbus.UInt32(validity) - -sms_iface = dbus.Interface(proxy, dbus_interface='org.freedesktop.ModemManager.Modem.Gsm.SMS') -try: - indexes = sms_iface.Send(msg_dict) - print "Message index: %d" % indexes[0] -except Exception, e: - print "Sending message failed: %s" % e - diff --git a/test/ussd.py b/test/ussd.py deleted file mode 100755 index 73b8f8ec..00000000 --- a/test/ussd.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/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) 2010 Guido Guenther <agx@sigxcpu.org> -# -# Usage: ./test/ussd.py /org/freedesktop/ModemManager/Modems/0 '*130#' - -import sys, dbus, re - -MM_DBUS_SERVICE='org.freedesktop.ModemManager' -MM_DBUS_INTERFACE_USSD='org.freedesktop.ModemManager.Modem.Gsm.Ussd' - -if len(sys.argv) != 3: - print "Usage: %s dbus_object [<ussd>|cancel]" % sys.argv[0] - sys.exit(1) -else: - arg = sys.argv[2] - -bus = dbus.SystemBus() -objpath = sys.argv[1] -if objpath[:1] != '/': - objpath = "/org/freedesktop/ModemManager/Modems/" + str(objpath) -proxy = bus.get_object(MM_DBUS_SERVICE, objpath) - -modem = dbus.Interface(proxy, dbus_interface=MM_DBUS_INTERFACE_USSD) - -# For testing purposes treat all "common" USSD sequences as initiate and the -# rest (except for cancel) as response. See GSM 02.90. -initiate_re = re.compile('[*#]{1,3}1[0-9][0-9].*#') - -if initiate_re.match(arg): - ret = modem.Initiate(arg) -elif arg == "cancel": - ret = modem.Cancel() -else: - ret = modem.Respond(arg) -print ret - |