[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, master, updated. milestone4-368-g700ab82

Michael 'Mickey' Lauer mickey at vanille-media.de
Mon Feb 2 18:51:28 UTC 2009


The following commit has been merged in the master branch:
commit 9e3fd27960b1aaa22136910f92c39c8958ca2449
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date:   Sun Nov 30 12:40:30 2008 +0100

    ogsmd: refactor modem creation logic into modem factory method

diff --git a/framework/subsystems/ogsmd/device.py b/framework/subsystems/ogsmd/device.py
index e07b119..00511cb 100644
--- a/framework/subsystems/ogsmd/device.py
+++ b/framework/subsystems/ogsmd/device.py
@@ -14,7 +14,7 @@ MODULE_NAME = "ogsmd.device"
 __version__ = "0.9.5"
 
 from framework import resource
-from modems import allModems
+from modems import modemFactory, allModems
 
 import dbus
 import dbus.service
@@ -70,42 +70,15 @@ class Device( resource.Resource ):
         """
         Enable (inherited from Resource)
         """
-        if self.modemtype not in allModems():
+
+        Modem, mediator = modemFactory( self.modemtype )
+        if Modem is None:
             estring = "Modem %s not in available modems: %s" % ( self.modemtype, allModems() )
             logger.error( estring )
             on_error( resource.ResourceError( estring ) )
-            return
-
-        if self.modemtype == "singleline":
-            from modems.singleline.modem import SingleLine as Modem
-            global mediator
-            import modems.singleline.mediator as mediator
-        elif self.modemtype == "muxed4line":
-            from modems.muxed4line.modem import Muxed4Line as Modem
-            global mediator
-            import modems.muxed4line.mediator as mediator
-        elif self.modemtype == "ti_calypso":
-            from modems.ti_calypso.modem import TiCalypso as Modem
-            global mediator
-            import modems.ti_calypso.mediator as mediator
-        elif self.modemtype == "freescale_neptune":
-            from modems.freescale_neptune.modem import FreescaleNeptune as Modem
-            global mediator
-            import modems.freescale_neptune.mediator as mediator
-        elif self.modemtype == "sierra":
-            from modems.sierra.modem import Sierra as Modem
-            global mediator
-            import modems.sierra.mediator as mediator
-        elif self.modemtype == "option":
-            from modems.option.modem import Option as Modem
-            global mediator
-            import modems.option.mediator as mediator
         else:
-            assert False, "must never reach this"
-            sys.exit( -1 )
-
-        self.modem = Modem( self, self.bus )
-        self.modem.open( on_ok, on_error )
+            self.modem = Modem( self, self.bus )
+            self.modem.open( on_ok, on_error )
 
     def _disable( self, on_ok, on_error ):
         """
diff --git a/framework/subsystems/ogsmd/modems/__init__.py b/framework/subsystems/ogsmd/modems/__init__.py
index 77c692b..f841c64 100644
--- a/framework/subsystems/ogsmd/modems/__init__.py
+++ b/framework/subsystems/ogsmd/modems/__init__.py
@@ -9,18 +9,55 @@ GPLv2 or later
 Package: ogsmd.modems
 """
 
-import os
+import sys
 
 import logging
 logger = logging.getLogger( "ogsmd.modems" )
 
+theModem = None
+theMediator = None
+
 modemmap = { \
     "freescale_neptune": "FreescaleNeptune",
     "muxed4line":        "Muxed4Line",
     "option":            "Option",
     "sierra":            "Sierra",
-    "singleline":         "SingleLine",
+    "singleline":        "SingleLine",
     "ti_calypso":        "TiCalypso",
     }
 
 allModems = modemmap.keys
+
+def modemFactory( modemtype ):
+    logger.debug( "requested to build modem '%s'" % modemtype )
+    if modemtype not in modemmap:
+        return None, None
+
+    if modemtype == "singleline":
+        from singleline.modem import SingleLine as Modem
+        import singleline.mediator as mediator
+    elif modemtype == "muxed4line":
+        from muxed4line.modem import Muxed4Line as Modem
+        import muxed4line.mediator as mediator
+    elif modemtype == "ti_calypso":
+        from ti_calypso.modem import TiCalypso as Modem
+        import ti_calypso.mediator as mediator
+    elif modemtype == "freescale_neptune":
+        from freescale_neptune.modem import FreescaleNeptune as Modem
+        import freescale_neptune.mediator as mediator
+    elif modemtype == "sierra":
+        from sierra.modem import Sierra as Modem
+        import sierra.mediator as mediator
+    elif modemtype == "option":
+        from option.modem import Option as Modem
+        import option.mediator as mediator
+    else:
+        assert False, "must never reach this"
+        sys.exit( -1 )
+
+    global theMediator
+    global theModem
+    theModem = Modem
+    theMediator = mediator
+
+    return theModem, theMediator

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list