r3420 - in trunk/src/target/OM-2007.2/applications/openmoko-dialer2: . src/phone-kit

chris at sita.openmoko.org chris at sita.openmoko.org
Wed Nov 14 11:36:41 CET 2007


Author: chris
Date: 2007-11-14 11:36:40 +0100 (Wed, 14 Nov 2007)
New Revision: 3420

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/dialer-main.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms-dbus.xml
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms.h
Log:
        * src/phone-kit/dialer-main.c: (main):
        Register MokoDialerSMS object

        * src/phone-kit/moko-dialer-sms-dbus.xml:
        Remove 'ascii' parameter, autodetect instead

        * src/phone-kit/moko-dialer-sms.c: (gsmd_eventhandler),
        (moko_dialer_sms_init), (moko_dialer_sms_get_default),
        (moko_dialer_sms_send):
        * src/phone-kit/moko-dialer-sms.h:
        Add SMS sending code


Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-11-14 10:33:29 UTC (rev 3419)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-11-14 10:36:40 UTC (rev 3420)
@@ -1,3 +1,17 @@
+2007-11-14  Chris Lord  <chris at openedhand.com>
+
+	* src/phone-kit/dialer-main.c: (main):
+	Register MokoDialerSMS object
+
+	* src/phone-kit/moko-dialer-sms-dbus.xml:
+	Remove 'ascii' parameter, autodetect instead
+
+	* src/phone-kit/moko-dialer-sms.c: (gsmd_eventhandler),
+	(moko_dialer_sms_init), (moko_dialer_sms_get_default),
+	(moko_dialer_sms_send):
+	* src/phone-kit/moko-dialer-sms.h:
+	Add SMS sending code
+
 2007-11-13  Chris Lord  <chris at openedhand.com>
 
 	* configure.ac:

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/dialer-main.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/dialer-main.c	2007-11-14 10:33:29 UTC (rev 3419)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/dialer-main.c	2007-11-14 10:36:40 UTC (rev 3420)
@@ -23,9 +23,11 @@
 #include <moko-stock.h>
 
 #include "moko-dialer.h"
+#include "moko-dialer-sms.h"
 
 #define DIALER_NAMESPACE "org.openmoko.Dialer"
 #define DIALER_OBJECT "/org/openmoko/Dialer"
+#define SMS_OBJECT "/org/openmoko/Dialer/SMS"
 
 static gchar *number = NULL;
 
@@ -55,6 +57,7 @@
 main (int argc, char **argv)
 {
   MokoDialer *dialer;
+  MokoDialerSMS *sms;
   DBusGConnection *connection;
   DBusGProxy *proxy;
   GError *error = NULL;
@@ -107,13 +110,17 @@
   gtk_init (&argc, &argv);
   moko_stock_register ();
 
-   /* Create the MokoDialer object */
+   /* Create the MokoDialer/MokoDialerSMS objects */
   dialer = moko_dialer_get_default ();
+  sms = moko_dialer_sms_get_default ();
 
-  /* Add the object onto the bus */
+  /* Add the objects onto the bus */
   dbus_g_connection_register_g_object (connection, 
                                        DIALER_OBJECT,
                                        G_OBJECT (dialer));
+  dbus_g_connection_register_g_object (connection, 
+                                       SMS_OBJECT,
+                                       G_OBJECT (sms));
 
   /* application object */
   g_set_application_name ("OpenMoko Dialer");

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms-dbus.xml
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms-dbus.xml	2007-11-14 10:33:29 UTC (rev 3419)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms-dbus.xml	2007-11-14 10:36:40 UTC (rev 3420)
@@ -1,11 +1,10 @@
 <?xml version="1.0"?>
-<node name="/org/openmoko/Dialer">
-<interface name="org.openmoko.Dialer.SMS">
+<node name="/org/openmoko/Dialer/SMS">
+<interface name="org.openmoko.Dialer">
 <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="moko_dialer_sms"/>
   <method name="Send">
     <arg type="s" name="number" />
     <arg type="s" name="message" />
-    <arg type="b" name="ascii" />
   </method>
 
   <signal name="Sending">

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms.c	2007-11-14 10:33:29 UTC (rev 3419)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms.c	2007-11-14 10:36:40 UTC (rev 3420)
@@ -3,10 +3,12 @@
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-bindings.h>
 #include <libgsmd/libgsmd.h>
+#include <libgsmd/event.h>
 #include <libgsmd/misc.h>
 #include <libgsmd/sms.h>
 #include <libjana/jana.h>
 #include <libjana-ecal/jana-ecal.h>
+#include <string.h>
 
 #include "moko-dialer-sms-glue.h"
 
@@ -101,13 +103,12 @@
 		G_TYPE_NONE, 1, G_TYPE_STRING);
 }
 
-MokoDialerSMS *static_self;
-
 static int 
 gsmd_eventhandler (struct lgsm_handle *lh, int evt_type,
 		   struct gsmd_evt_auxdata *aux)
 {
-	MokoDialerSMSPrivate *priv = SMS_PRIVATE (static_self);
+	MokoDialerSMSPrivate *priv = SMS_PRIVATE (
+		moko_dialer_sms_get_default ());
 	
 	switch (evt_type) {
 	    case GSMD_EVT_IN_SMS : /* Incoming SMS */
@@ -194,7 +195,6 @@
 	if (!first_init)
 		g_error ("MokoDialerSMS already created in this process");
 	first_init = FALSE;
-	static_self = self;
 	
 	/* Get the note store */
 	priv->note_store = jana_ecal_store_new (JANA_COMPONENT_NOTE);
@@ -216,10 +216,70 @@
 	return g_object_new (MOKO_DIALER_TYPE_SMS, NULL);
 }
 
+MokoDialerSMS*
+moko_dialer_sms_get_default (void)
+{
+	static MokoDialerSMS *sms = NULL;
+
+	if (sms) return sms;
+
+	sms = moko_dialer_sms_new ();
+
+	return sms;
+}
+
 gboolean
-moko_dialer_sms_send (MokoDialerSMS *sms, const gchar *number,
-		      const gchar *message, gboolean ascii, GError **error)
+moko_dialer_sms_send (MokoDialerSMS *self, const gchar *number,
+		      const gchar *message, GError **error)
 {
+	MokoDialerSMSPrivate *priv;
+	struct lgsm_sms sms;
+	gint msg_length, c;
+	gboolean ascii;
+	
+	g_assert (self && number && message);
+
+	priv = SMS_PRIVATE (self);
+	
+	/* TODO: Delivery report */
+	sms.ask_ds = 0;
+	
+	/* Set destination number */
+	if (strlen (number) > GSMD_ADDR_MAXLEN + 1) {
+		*error = g_error_new (PHONE_KIT_SMS_ERROR,
+			PK_SMS_ERROR_NO_TOOLONG, "Number too long");
+		return FALSE;
+	} else {
+		strcpy (sms.addr, number);
+	}
+	
+	/* Set message */
+	/* Check if the text is ascii (and pack in 7 bits if so) */
+	ascii = TRUE;
+	for (c = 0; message[c] != '\0'; c++) {
+		if (((guint8)message[c]) > 0x7F) {
+			ascii = FALSE;
+			break;
+		}
+	}
+	msg_length = strlen (message);
+	if ((ascii && (msg_length > 160)) || (msg_length > 140)) {
+			*error = g_error_new (PHONE_KIT_SMS_ERROR,
+				PK_SMS_ERROR_MSG_TOOLONG, "Message too long");
+			return FALSE;
+	}
+	if (ascii) {
+		packing_7bit_character (message, &sms);
+	} else {
+		sms.alpha = ALPHABET_8BIT;
+		sms.length = strlen (message);
+		strcpy ((gchar *)sms.data, message);
+	}
+	
+	/* Send message */
+	lgsm_sms_send (priv->handle, &sms);
+	
+	return TRUE;
 }
 
 void

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms.h	2007-11-14 10:33:29 UTC (rev 3419)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-dialer-sms.h	2007-11-14 10:36:40 UTC (rev 3420)
@@ -27,6 +27,13 @@
 	(G_TYPE_INSTANCE_GET_CLASS ((obj), \
 	MOKO_DIALER_TYPE_SMS, MokoDialerSMSClass))
 
+#define PHONE_KIT_SMS_ERROR g_quark_from_static_string("phone-kit-sms")
+
+typedef enum {
+	PK_SMS_ERROR_NO_TOOLONG,
+	PK_SMS_ERROR_MSG_TOOLONG
+} PhoneKitSMSError;
+
 typedef struct {
 	GObject parent;
 } MokoDialerSMS;
@@ -43,9 +50,10 @@
 
 MokoDialerSMS * moko_dialer_sms_new (void);
 
+MokoDialerSMS * moko_dialer_sms_get_default (void);
+
 gboolean moko_dialer_sms_send (MokoDialerSMS *sms, const gchar *number,
-			       const gchar *message, gboolean ascii,
-			       GError **error);
+			       const gchar *message, GError **error);
 
 void moko_dialer_sms_sending (MokoDialerSMS *sms);
 void moko_dialer_sms_sent (MokoDialerSMS *sms);





More information about the commitlog mailing list