Review Request: Adds preliminary ModemManager support to solid

Lamarque Souza lamarque at gmail.com
Tue Jun 8 02:57:38 CEST 2010


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/3769/
-----------------------------------------------------------

(Updated 2010-06-08 00:46:42.627430)


Review request for Network Management and KNetworkManager.


Changes
-------

Changed patch to work as a real solid backend (apart from network manager 
backend), changed enums to camel names, implemented more MM interfaces from 
specification. Added methods getModemCardIface and getModemNetworkIface to 
GsmNetworkInterface class (from NetworkManager backend) to make it easier to 
use the backend when some programa already uses NM backend, like Plasma 
Network Management.


Summary (updated)
-------

This patch adds preliminary ModemManager support to solid. The dbus methods 
can be tested in command line with:

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager 
/org/freedesktop/ModemManager org.freedesktop.ModemManager.EnumerateDevices

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager 
/org/freedesktop/ModemManager/Modems/<modem number> 
org.freedesktop.ModemManager.Modem.Gsm.Network.GetSignalQuality

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager 
/org/freedesktop/ModemManager/Modems/<modem number> 
org.freedesktop.ModemManager.Modem.Gsm.Network.GetRegistrationInfo

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager 
/org/freedesktop/ModemManager/Modems/<modem number> 
org.freedesktop.DBus.Properties.GetAll string:<interface name>

<modem number> is returned by the first method (EnumerateDevices).
<interface name> is either of

org.freedesktop.ModemManager (do not use /Modems/<modem number> with this one)
org.freedesktop.DBus.Properties (do not use /Modems/<modem number> with this 
one)
org.freedesktop.ModemManager.Modem
org.freedesktop.ModemManager.Modem.Simple
org.freedesktop.ModemManager.Modem.Location
org.freedesktop.ModemManager.Modem.Cdma
org.freedesktop.ModemManager.Modem.Gsm
org.freedesktop.ModemManager.Modem.Gsm.Card
org.freedesktop.ModemManager.Modem.Gsm.Contacts
org.freedesktop.ModemManager.Modem.Gsm.Network
org.freedesktop.ModemManager.Modem.Gsm.SMS
org.freedesktop.ModemManager.Modem.Gsm.Hso
org.freedesktop.ModemManager.Modem.Gsm.Ussd

There are still some problems with this patch that and I need advice as to the 
best way to solve them:

1. [FIXED] It only works for one 3G modem. NetworkManager and ModemManager 
have their own list of devices, I need to match the NetworkManager device id 
to the ModemManager to that I can use 
/org/freedesktop/ModemManager/Modems/<modem number> for more than one modem. 
For now the implementation uses the first modem found.

2. [FIXED] The ModemManager object is in NMGsmNetworkInterfacePrivate class. 
Maybe there is a better place to put it so other device types (CDMA, serial) 
could make use of ModemManager.

3. The patch has only been tested with my Sony Ericsson MD300 modem.

4. When I hook up a second 3G modem (my cell phone actually) in my notebook 
ModemManager disconnects the first modem from Internet. This is not a KDE 
problem, just to warn everyone that tries this patch.

ModemManager dbus specification is in here 
http://projects.gnome.org/NetworkManager/developers/mm-spec-04.html in case 
someone wants to help me implement the other methods. ModemManager-0.3 does 
not implement all methods/signal from that specification. I am doing tests 
with git NetworkManager and ModemManager as of May 16, 2010. To verify which 
interfaces ModemManager and your modem supports do:

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager 
/org/freedesktop/ModemManager org.freedesktop.DBus.Introspectable.Introspect

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager 
/org/freedesktop/ModemManager/Modems/<modem number> 
org.freedesktop.DBus.Introspectable.Introspect

Current implemenation status is

org.freedesktop.ModemManager
        - fully implemented
        - still needs testing: signals DeviceAdded and DeviceRemoved

org.freedesktop.DBus.Properties
        - fully implemented and tested

org.freedesktop.ModemManager.Modem
        - fully implemented, needs more testing
        - modem MD300 does not supports: method GetIP4Config

org.freedesktop.ModemManager.Modem.Simple
        - fully implemented, needs more testing

org.freedesktop.ModemManager.Modem.Location
        - modem MD300 does not support this interface (it is not listed when 
calling org.freedesktop.DBus.Introspectable.Introspect)

org.freedesktop.ModemManager.Modem.Cdma
        - to be implemented
        - modem MD300 does not support this interface

org.freedesktop.ModemManager.Modem.Gsm
        - fully implemented and tested

org.freedesktop.ModemManager.Modem.Gsm.Card
        - fully implemented, needs more testing

org.freedesktop.ModemManager.Modem.Gsm.Contacts
        - to be implemented
        - modem MD300 does not support this interface

org.freedesktop.ModemManager.Modem.Gsm.Network
        - fully implemented
        - to be tested: methods Register and SetApn
        - still not working (returns error): method scan
        - modem MD300 does not support: method GetBand and probably method 
SetBand too
                                                                                                                                                                                                               
org.freedesktop.ModemManager.Modem.Gsm.SMS
        - to be implemented                                                                                                                                                                     
        - modem MD300 does not support method List and probably all other 
methods in this interface.                                                                                                                                   
                                                                                                                                                                                                               
org.freedesktop.ModemManager.Modem.Gsm.Hso                                                                                                                                                                     
        - to be implemented
        - modem MD300 does not support this interface                                                                                                                                                               
                                                                                                                                                                                                               
org.freedesktop.ModemManager.Modem.Gsm.Ussd                                                                                                                                                                    
        - to be implemented
        - modem MD300 does not support this interface

MM interfaces are organized as follow:

class ModemManager
org.freedesktop.ModemManager

class ModemInterface
org.freedesktop.ModemManager.Modem
org.freedesktop.ModemManager.Modem.Simple
org.freedesktop.ModemManager.Modem.Gsm (this interface includes only enums and 
flags)

class ModemGsmCardInterface inherits from ModemInterface
org.freedesktop.ModemManager.Modem.Gsm.Card

class ModemGsmNetworkInterface inherits from ModemInterface
org.freedesktop.ModemManager.Modem.Gsm.Network


Diffs (updated)
-----

  /trunk/KDE/kdebase/workspace/libs/solid/control/CMakeLists.txt 1065512 
  /trunk/KDE/kdebase/workspace/libs/solid/control/backends/fakenet/fakeaccesspoint.h 
1003789 
  /trunk/KDE/kdebase/workspace/libs/solid/control/backends/fakenet/fakeaccesspoint.cpp 
1003789 
  /trunk/KDE/kdebase/workspace/libs/solid/control/backends/fakenet/fakenetworkinterface.h 
997238 
  /trunk/KDE/kdebase/workspace/libs/solid/control/backends/fakenet/fakenetworkinterface.cpp 
879758 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/CMakeLists.txt 
1032044 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modemgsmcardinterface.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modemgsmcardinterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modemgsmnetworkinterface.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modemgsmnetworkinterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modeminterface.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modeminterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modemmanager.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modemmanager.cpp PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modemmanagerinterface.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/modemmanagerinterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/networkgsminterface.h 
879758 
  /trunk/KDE/kdebase/workspace/libs/solid/control/ifaces/networkinterface.h 
997238 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemgsmcardinterface.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemgsmcardinterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemgsmcardinterface_p.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemgsmnetworkinterface.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemgsmnetworkinterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemgsmnetworkinterface_p.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemgsmnetworkminterface_p.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modeminterface.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modeminterface.cpp PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modeminterface_p.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemmanager.h PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemmanager.cpp PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemmanager_p.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemmanagerinterface.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemmanagerinterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/modemmanagerinterface_p.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/libs/solid/control/networkgsminterface.h 879758 
  /trunk/KDE/kdebase/workspace/libs/solid/control/networkgsminterface.cpp 
879758 
  /trunk/KDE/kdebase/workspace/libs/solid/control/networkinterface.h 1003381 
  /trunk/KDE/kdebase/workspace/libs/solid/control/networkinterface.cpp 997238 
  /trunk/KDE/kdebase/workspace/libs/solid/control/solidmodemmanager.desktop 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/CMakeLists.txt 1133877 
  /trunk/KDE/kdebase/workspace/solid/kcm/kcmsolid.h 1032044 
  /trunk/KDE/kdebase/workspace/solid/kcm/kcmsolid.cpp 1056589 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/CMakeLists.txt PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/CMakeLists.txt PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/do-hand-edits PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/generic-types.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/generic-types.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/hand-edits.diff 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/introspection/all.xml 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/introspection/mm-
manager-client.xml PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/introspection/mm-
modem-gsm-card.xml PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/introspection/mm-
modem-gsm-network.xml PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/introspection/mm-
modem-simple.xml PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/introspection/mm-
modem.xml PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-manager-
clientinterface.h PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-manager-
clientinterface.cpp PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-modem-gsm-
cardinterface.h PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-modem-gsm-
cardinterface.cpp PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-modem-gsm-
networkinterface.h PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-modem-gsm-
networkinterface.cpp PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-modem-simple.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-modem-simple.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-modem.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/dbus/mm-modem.cpp PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/manager.h PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/manager.cpp PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/manager_p.h PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modemgsmcardinterface.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modemgsmcardinterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modemgsmcardinterface_p.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modemgsmnetworkinterface.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modemgsmnetworkinterface.cpp 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modemgsmnetworkinterface_p.h 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modeminterface.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modeminterface.cpp PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/modeminterface_p.h PRE-
CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/module.cpp PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/modemmanager-0.4/solid_modemmanager04.desktop 
PRE-CREATION 
  /trunk/KDE/kdebase/workspace/solid/networkmanager-0.7/accesspoint.h 1003789 
  /trunk/KDE/kdebase/workspace/solid/networkmanager-0.7/manager.h 1086340 
  /trunk/KDE/kdebase/workspace/solid/networkmanager-0.7/networkgsminterface.h 
872780 
  /trunk/KDE/kdebase/workspace/solid/networkmanager-0.7/networkgsminterface.cpp 
872780 
  /trunk/KDE/kdebase/workspace/solid/networkmanager-0.7/networkinterface.h 
997238 
  /trunk/KDE/kdebase/workspace/solid/networkmanager-0.7/networkinterface.cpp 
1073632 
  /trunk/KDE/kdebase/workspace/solid/networkmanager-0.7/networkinterface_p.h 
818485 
  /trunk/KDE/kdebase/workspace/solid/wicd/networkinterface.h 997238 

Diff: http://reviewboard.kde.org/r/3769/diff


Testing
-------


Thanks,

Lamarque



More information about the kde-networkmanager mailing list