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