[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:43 UTC 2009


The following commit has been merged in the master branch:
commit a06be62ed80d1097e0093096e273a8c555318948
Author: Michael 'Mickey' Lauer <mickey at vanille-media.de>
Date:   Sat Dec 20 14:56:27 2008 +0100

    ogsmd: move numberToPhonebookTuple from gsm.const into modems.abstract.modem
    We need to be able to override it per-modem (Freescale Neptune *cough*)

diff --git a/framework/subsystems/ogsmd/gsm/const.py b/framework/subsystems/ogsmd/gsm/const.py
index c1273a8..3141c65 100644
--- a/framework/subsystems/ogsmd/gsm/const.py
+++ b/framework/subsystems/ogsmd/gsm/const.py
@@ -1032,7 +1032,7 @@ def phonebookTupleToNumber( nstring, ntype ):
     if ntype not in ( 129, 145 ):
         logger.warning( "Out-of-spec GSM number type seen: %s. Please report." % ntype )
 
-    if ntype == 145: # should not include '+', but sometimes it does
+    if ntype == 145: # should not include '+' then, but on some modems, it does
         if nstring[0] == '+':
             return nstring
         else:
@@ -1041,21 +1041,6 @@ def phonebookTupleToNumber( nstring, ntype ):
         return nstring
 
 #=========================================================================#
-def numberToPhonebookTuple( nstring ):
-#=========================================================================#
-    """
-    Returns a phonebook tuple depending on a number.
-    """
-
-    if type( nstring ) != types.StringType():
-        nstring = nstring.encode( "iso-8859-1" ) # as set via +CSCS
-
-    if nstring[0] == '+':
-        return nstring[1:], 145
-    else:
-        return nstring, 129
-
-#=========================================================================#
 def unicodeToString( uni ):
 #=========================================================================#
     """
@@ -1199,8 +1184,6 @@ if __name__ == "__main__":
     print "OK"
     assert phonebookTupleToNumber( "123456789", 129 ) == "123456789"
     assert phonebookTupleToNumber( "123456789", 145 ) == "+123456789"
-    assert numberToPhonebookTuple( "123456789" ) == ( "123456789", 129 )
-    assert numberToPhonebookTuple( "+123456789" ) == (  "123456789", 145 )
     print "OK"
     assert textToUnicode( "B\xf6rse" ) != "<??? undecodable ???>"
     assert unicodeToString( u"\xc3\xa4" ) != "<??? unencodable ???>"
diff --git a/framework/subsystems/ogsmd/modems/abstract/mediator.py b/framework/subsystems/ogsmd/modems/abstract/mediator.py
index 5c99b04..52476b9 100644
--- a/framework/subsystems/ogsmd/modems/abstract/mediator.py
+++ b/framework/subsystems/ogsmd/modems/abstract/mediator.py
@@ -761,7 +761,7 @@ class SimStoreEntry( SimMediator ):
         except KeyError:
             self._error( error.InvalidParameter( "valid categories are %s" % const.PHONEBOOK_CATEGORY.keys() ) )
         else:
-            number, ntype = const.numberToPhonebookTuple( self.number )
+            number, ntype = currentModem().numberToPhonebookTuple( self.number )
             name = convert.UnicodeToucs2hex( self.name.strip('"') )
             self._commchannel.enqueue( '+CPBS="%s";+CPBW=%d,"%s",%d,"%s"' % ( self.pbcategory, self.index, number, ntype, name ), self.responseFromChannel, self.errorFromChannel, timeout=currentModem().timeout("SIMACCESS") )
 
@@ -1170,7 +1170,7 @@ class NetworkEnableCallForwarding( NetworkMediator ):
         except KeyError:
             self._error( error.InvalidParameter( "valid classes are %s" % const.CALL_FORWARDING_CLASS.keys() ) )
 
-        number, ntype = const.numberToPhonebookTuple( self.number )
+        number, ntype = currentModem().numberToPhonebookTuple( self.number )
 
         if self.reason == "no reply" and self.timeout > 0:
             self._commchannel.enqueue( """+CCFC=%d,3,"%s",%d,%d,,,%d""" % ( reason, number, ntype, class_, self.timeout ), self.responseFromChannel, self.errorFromChannel, timeout=currentModem().timeout("NETWORK") )
@@ -1249,7 +1249,7 @@ class CallEmergency( CallMediator ):
 class CallTransfer( CallMediator ):
 #=========================================================================#
     def trigger( self ):
-        number, ntype = const.numberToPhonebookTuple( self.number )
+        number, ntype = currentModem().numberToPhonebookTuple( self.number )
         self._commchannel.enqueue( '+CTFR="%s",%d' % ( number, ntype ), self.responseFromChannel, self.errorFromChannel )
 
 #=========================================================================#
diff --git a/framework/subsystems/ogsmd/modems/abstract/modem.py b/framework/subsystems/ogsmd/modems/abstract/modem.py
index cf6116b..842c75c 100644
--- a/framework/subsystems/ogsmd/modems/abstract/modem.py
+++ b/framework/subsystems/ogsmd/modems/abstract/modem.py
@@ -102,8 +102,24 @@ class AbstractModem( object ):
         self._data[key] = value
 
     def timeout( self, category ):
+        """
+        Returns a timeout.
+        """
         return self._timeouts.get( category, FALLBACK_TIMEOUT )
 
+    def numberToPhonebookTuple( self, nstring ):
+        """
+        Returns a phonebook tuple.
+        """
+        if type( nstring ) != types.StringType():
+            # even though we set +CSCS="UCS2" (modem charset), the name is always encoded in text format, not PDU.
+            nstring = nstring.encode( "iso-8859-1" )
+
+        if nstring[0] == '+':
+            return nstring[1:], 145
+        else:
+            return nstring, 129
+
     def channel( self, category ):
         """
         Returns the communication channel for certain command category.

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list