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

Daniel Willmann daniel at totalueberwachung.de
Mon Feb 2 18:51:41 UTC 2009


The following commit has been merged in the master branch:
commit 898dff053f32a0a78a93b17b79514693e904391f
Author: Daniel Willmann <daniel at totalueberwachung.de>
Date:   Fri Dec 19 01:06:58 2008 +0100

    ogsmd: Add support for sms-submit-reports and return timestamps
    
    When sending an SMS an sms-submit-report is returned which includes a
    timestamp. This is the time when the Short Message Service Center
    received the short message.
    The DBus calls for sending SMS now also return a timestamp in string
    format (WARNING, API breakage!)

diff --git a/framework/subsystems/ogsmd/device.py b/framework/subsystems/ogsmd/device.py
index d13dd89..e53ffb5 100644
--- a/framework/subsystems/ogsmd/device.py
+++ b/framework/subsystems/ogsmd/device.py
@@ -334,7 +334,7 @@ class Device( resource.Resource ):
     def StoreMessage( self, number, contents, properties, dbus_ok, dbus_error ):
         mediator.SimStoreMessage( self, dbus_ok, dbus_error, number=number, contents=contents, properties=properties )
 
-    @dbus.service.method( DBUS_INTERFACE_SIM, "i", "i",
+    @dbus.service.method( DBUS_INTERFACE_SIM, "i", "is",
                           async_callbacks=( "dbus_ok", "dbus_error" ) )
     @resource.checkedmethod
     def SendStoredMessage( self, index, dbus_ok, dbus_error ):
@@ -357,7 +357,7 @@ class Device( resource.Resource ):
     #
     # dbus org.freesmartphone.SMS
     #
-    @dbus.service.method( DBUS_INTERFACE_SMS, "ssa{sv}", "i",
+    @dbus.service.method( DBUS_INTERFACE_SMS, "ssa{sv}", "is",
                           async_callbacks=( "dbus_ok", "dbus_error" ) )
     @resource.checkedmethod
     def SendMessage( self, number, contents, properties, dbus_ok, dbus_error ):
diff --git a/framework/subsystems/ogsmd/gsm/sms.py b/framework/subsystems/ogsmd/gsm/sms.py
index 3bf0c0d..59c7f21 100644
--- a/framework/subsystems/ogsmd/gsm/sms.py
+++ b/framework/subsystems/ogsmd/gsm/sms.py
@@ -321,6 +321,8 @@ class SMS(object):
             self.mtimap = TP_MTI_INCOMING
         elif TP_MTI_OUTGOING.has_key(smstype):
             self.mtimap = TP_MTI_OUTGOING
+        else:
+            raise "invalid SMS type", smstype
 
         self.pdu_mti = self.mtimap[smstype]
 
@@ -329,7 +331,7 @@ class SMS(object):
     def _getProperties( self ):
         map = {}
         map["type"] = self.type
-        if self.type == "sms-deliver":
+        if self.type == "sms-deliver" or self.type == "sms-submit-report":
             # FIXME Return correct time with timezoneinfo
             map["timestamp"] = self.scts[0].ctime() + " %+05i" % (self.scts[1]*100)
         if 0 in self.udh:
diff --git a/framework/subsystems/ogsmd/modems/abstract/mediator.py b/framework/subsystems/ogsmd/modems/abstract/mediator.py
index 476d5d0..5c99b04 100644
--- a/framework/subsystems/ogsmd/modems/abstract/mediator.py
+++ b/framework/subsystems/ogsmd/modems/abstract/mediator.py
@@ -935,12 +935,13 @@ class SimSendStoredMessage( SimMediator ):
         if response[-1] != "OK":
             SimMediator.responseFromChannel( self, request, response )
         else:
+            timestamp = ""
             result = safesplit( self._rightHandSide(response[0]), ',' )
             mr = result[0]
             if len(result) == 2:
-                # TODO: Handle ackpdu
-                pass
-            self._ok( int(mr) )
+                ackpdu =  ogsmd.gsm.sms.SMS.decode( result[1].strip('"'), "sms-submit-report" )
+                timestamp = ackpdu.properties["timestamp"]
+            self._ok( int(mr), timestamp )
 
 #=========================================================================#
 class SimDeleteMessage( SimMediator ):
@@ -971,12 +972,13 @@ class SmsSendMessage( SmsMediator ):
         if response[-1] != "OK":
             SimMediator.responseFromChannel( self, request, response )
         else:
+            timestamp = ""
             result = safesplit( self._rightHandSide(response[0]), ',' )
             mr = result[0]
             if len(result) == 2:
-                # TODO: Handle ackpdu
-                pass
-            self._ok( int(mr) )
+                ackpdu =  ogsmd.gsm.sms.SMS.decode( result[1].strip('"'), "sms-submit-report" )
+                timestamp = ackpdu.properties["timestamp"]
+            self._ok( int(mr), timestamp )
 
 #
 # Network Mediators

-- 
FSO frameworkd Debian packaging



More information about the pkg-fso-commits mailing list