[pkg-fso-commits] [SCM] FSO frameworkd Debian packaging branch, debian, updated. upstream/0.9.5.5-717-g0f98819

Michael 'Mickey' Lauer mickey at vanille-media.de
Sat Aug 6 08:19:43 UTC 2011


The following commit has been merged in the debian branch:
commit 5c842b68baa9e3d7e1c9130eb3a0f5a7a9fdc57d
Author: Antonio Ospite <ospite at studenti.unina.it>
Date:   Thu Apr 15 18:21:34 2010 +0200

    This allows BP init to complete successfully on EZX phones without
    having to rely on ezxd.
    
    Signed-off-by: Antonio Ospite <ospite at studenti.unina.it>

diff --git a/framework/subsystems/ogsmd/modems/freescale_neptune/modem.py b/framework/subsystems/ogsmd/modems/freescale_neptune/modem.py
index e6b4fd3..11a3dbf 100644
--- a/framework/subsystems/ogsmd/modems/freescale_neptune/modem.py
+++ b/framework/subsystems/ogsmd/modems/freescale_neptune/modem.py
@@ -28,8 +28,23 @@ from .unsolicited import UnsolicitedResponseDelegate
 from ogsmd.gsm.decor import logged
 from ogsmd.gsm.channel import AtCommandChannel
 
+import logging
+logger = logging.getLogger( MODULE_NAME )
+
 import types
 
+import os
+import sys
+import errno
+import fcntl
+import termios
+import array
+import time
+import subprocess
+
+muxfds = []
+initDone = False
+
 #=========================================================================#
 class FreescaleNeptune( AbstractModem ):
 #=========================================================================#
@@ -64,22 +79,27 @@ class FreescaleNeptune( AbstractModem ):
     def __init__( self, *args, **kwargs ):
         AbstractModem.__init__( self, *args, **kwargs )
 
+        global initDone
+        if not initDone:
+            ret = self._freescale_neptune_modemOn()
+            if not ret:
+                return False
+            initDone = True
+
         # /dev/mux0
-        self._channels[ "CallAndNetwork" ] = CallAndNetworkChannel( self.pathfactory, "/dev/mux0", modem=self )
+        self._channels[ "CallAndNetwork" ] = CallAndNetworkChannel( self.pathfactory, "/dev/mux1", modem=self )
         # /dev/mux2
-        self._channels[ "Sms" ] = SmsChannel( self.pathfactory, "/dev/mux2", modem=self )
+        self._channels[ "Sms" ] = SmsChannel( self.pathfactory, "/dev/mux3", modem=self )
         # /dev/mux4
         self._channels[ "Sim" ] = SimChannel( self.pathfactory, "/dev/mux4", modem=self )
         # /dev/mux6
-        self._channels[ "Misc" ] = MiscChannel( self.pathfactory, "/dev/mux6", modem=self )
+        self._channels[ "Misc" ] = MiscChannel( self.pathfactory, "/dev/mux5", modem=self )
 
         # configure channels
         self._channels["CallAndNetwork"].setDelegate( UnsolicitedResponseDelegate( self._object, mediator ) )
         self._channels["Sms"].setDelegate( UnsolicitedResponseDelegate( self._object, mediator ) )
         self._channels["Sim"].setDelegate( UnsolicitedResponseDelegate( self._object, mediator ) )
 
-        self._initDone = None
-
     def numberToPhonebookTuple( self, nstring ):
         """
         Modem violating GSM 07.07 here. It always includes the '+' for international numbers,
@@ -104,11 +124,55 @@ class FreescaleNeptune( AbstractModem ):
         else:
             return self._channels["Misc"]
 
-    def pathfactory( self, name ):
-        """
-        Overridden for internal purposes. Shut down OpenEZX lowlevel initialization daemon.
-        """
-        if self._initDone is None:
-            self._initDone = True
-            killall( EZXD_PROCESS_NAME )
+    def pathfactory(self, name):
         return name
+
+    def _freescale_neptune_modemOn(self):
+        global muxfds
+        logger.debug("********************** Modem init **********************")
+        subprocess.check_call(['modprobe', 'ohci-hcd'])
+        time.sleep(2)
+        subprocess.check_call(['modprobe', 'moto-usb-ipc'])
+        subprocess.check_call(['modprobe', 'ts27010mux'])
+
+        N_TS2710 = 19
+        dlci_lines = [0, 1, 2, 3, 4, 5, 6, 7, 8]
+        devpath  = "/dev/ttyIPC0"
+        counter = 10
+
+        # Loop when opening /dev/ttyIPC0 to have some tolerance
+        ipc = None
+        while True:
+            logger.debug("Trying to open %s..." % devpath)
+            counter -= 1
+            try:
+                ipc = os.open(devpath, os.O_RDWR)
+            except OSError as e:
+                if e.errno == errno.ENODEV:
+                    continue
+
+            if ipc or counter == 0:
+                break
+
+        if not ipc:
+            logger.error("Error opening %s" % devpath)
+            return False
+
+        logger.debug("Setting ldisc")
+        line = array.array('i', [N_TS2710])
+        ret = fcntl.ioctl(ipc, termios.TIOCSETD, line, 1)
+        if ret != 0:
+            logger.error("ioctl error %s" % devpath)
+            return False
+
+        for dlci in dlci_lines:
+            devpath = "/dev/mux%d" % dlci
+            try:
+                fd = os.open(devpath, os.O_RDWR | os.O_NOCTTY)
+            except OSError as e:
+                logger.error("%s: %s" % (devpath, e.strerror))
+                return False
+
+            logger.debug("Opened %s" % devpath)
+            muxfds.append(fd)
+        return True

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list