January 2009 Archives

Zhone Patch Updated

Posted on 20/01/2009 by Peter Strapp

I've made a few changes to my zhone patch.

Added features:

  • Send USSD requests - You can now request network messages. This works by looking for phone numbers that start with a '*'. Let me know if you find a more precise way of recognising a USSD number.
  • Recieve USSD messages - Displays operator messages e.g. current balance
  • Re-lock phone - This complements the 'unlock screen on incoming calls' patch by re-locking the phone if you miss a call.
  • SMS not sent warning - Alerts to the fact that an SMS can't be sent when your SIM card is full (Before you had no way of knowing whether the message had been sent).
  • SIM card full warning - Displays a message when your sim card is full.

The patch can be downloaded here: Latest zhone patch.

Zhone Patch

Posted on 13/01/2009 by Peter Strapp

Below are a couple of small patches that I apply to Zhone, the freesmartphone.org framework testing app. The first locks the phone if you miss a call (To prevent accidental use whilst in your pocket). The second patch alerts you to the fact that an SMS can't be sent when your SIM card is full (Before you had no way of knowing whether the message had been sent). It also displays a message when your sim card is full. You can download the patch here.

--- zhone       2009-01-13 15:01:54.000000000 +0000
+++ zhone       2009-01-13 19:59:46.000000000 +0000
@@ -249,6 +249,8 @@

     def update_status(self, status):
         self.part_text_set( "label_description", status )
+        if status == "release" and self.status == "incoming":
+            self.main.groups["lock"].activate()
         if status == "outgoing":
             self.part_text_set( "label_left", u"" )
             self.part_text_set( "label_right", u"cancel" )
@@ -368,7 +370,9 @@
             self.busy = True

     def cbStoreError( self, e ):
-        logger.warning( "error while storing message" )
+        logger.warning( "error while storing message - %s" % e.get_dbus_name() )
+        if e.get_dbus_name() == "org.freesmartphone.GSM.SIM.MemoryFull":
+            self.main.groups["error"].activate( "Failed to send message - SIM Memory Full", [("OK")] )

     def cbSend1( self, selected, cb_data ):
         self.main.groups["text_edit"].setup(
@@ -480,6 +484,10 @@
                         textblock_escape( message[3] ).replace( '\n', '<br>' )
                     )
                 )
+            if dbus_object.gsm_device_obj:   
+                messagebookInfo = dbus_object.gsm_sim_iface.GetMessagebookInfo()
+                if messagebookInfo["used"] == messagebookInfo["last"]:
+                    self.main.groups["error"].activate( "Warning: SIM Memory Full", [("OK")] )

     def cbMessagebookError( self, e ):
         logger.warning( "error while retrieving messagebook" )
@@ -1951,9 +1958,10 @@
     def on_edje_signal_button_pressed( self, emission, source ):
         id = int( source.split( "_", 1 )[1] )
         self.deactivate()
-        self.cb( self.part_text_get( "label_%i" % id ), self.cb_data )
+        if self.cb_data is not None:
+            self.cb( self.part_text_get( "label_%i" % id ), self.cb_data )

-    def activate( self, description, buttons, cb_data, cb ):
+    def activate( self, description, buttons, cb_data = None, cb = None ):
         self.buttons = buttons
         self.cb_data = cb_data
         self.cb = cb