4 * Copyright(C) 2008 Ixonos Plc
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Boston, MA 02111.
28 #include "freesmartphone-internal.h"
29 #include "freesmartphone-sms.h"
30 #include "freesmartphone-sms-binding.h"
31 #include "fso-marshallers.h"
33 #define FSO_MESSAGE_SENT_SIGNAL_NAME "MessageSent"
34 #define FSO_CALL_INCOMING_MESSAGE_SIGNAL_NAME "IncomingMessage"
38 * @brief Initializes SMS interface, it is called automatically
41 * @param fs pointer to freesmartphone struct
43 void fso_gsm_sms_init(FreeSmartphone
*fs
)
45 g_debug("%s", __func__
);
48 dbus_g_object_register_marshaller (fso_marshaller_VOID__BOOLEAN_STRING
,
56 void fso_gsm_sms_send_message_reply(DBusGProxy
*proxy
,
60 g_debug("%s", __func__
);
61 ReplyData
*reply
= (ReplyData
*)userdata
;
62 FSGSMSMSReply reply_cb
= (FSGSMSMSReply
)reply
->cb
;
63 gpointer data
= reply
->data
;
64 fso_reply_data_free(reply
);
65 reply_cb(error
, data
);
70 gboolean
fso_gsm_sms_send_message(FreeSmartphone
*fs
,
73 const gboolean want_report
,
77 g_return_val_if_fail(fs
, FALSE
);
78 g_debug("%s : '%s' to %s", __func__
, message
, number
);
81 ReplyData
*replydata
= fso_prepare_method(fs
,
88 DBusGProxy
*proxy
= fso_get_proxy(fs
,FSO_SMS
);
90 org_freesmartphone_GSM_SMS_send_message_async (proxy
,
94 &fso_gsm_sms_send_message_reply
,
102 void fso_gsm_sms_message_sent_handler(DBusGProxy
*proxy
,
107 g_debug("%s", __func__
);
108 FreeSmartphone
*fs
= (FreeSmartphone
*)data
;
109 g_return_if_fail(fs
);
112 list
= fso_get_signal_handler(fs
,FSO_SIGNAL_MESSAGE_SENT
);
114 ReplyData
*rd
= (ReplyData
*)list
->data
;
115 FSGSMSMSMessageSent status_cb
= (FSGSMSMSMessageSent
)rd
->cb
;
116 status_cb (success
,reason
,rd
->data
);
117 list
= g_list_next(list
);
121 gboolean
fso_gsm_sms_message_sent_signal(FreeSmartphone
*fs
,
122 FSGSMSMSMessageSent cb
,
125 g_return_val_if_fail(fs
, FALSE
);
126 g_debug("%s", __func__
);
128 ReplyData
*replydata
= fso_prepare_method(fs
,
135 DBusGProxy
*proxy
= fso_get_proxy(fs
,FSO_SMS
);
137 if ( fso_append_data_to_signal_handler(fs
,
138 FSO_SIGNAL_MESSAGE_SENT
,
140 dbus_g_proxy_add_signal(proxy
,
141 FSO_MESSAGE_SENT_SIGNAL_NAME
,
145 dbus_g_proxy_connect_signal (proxy
, FSO_MESSAGE_SENT_SIGNAL_NAME
,
146 G_CALLBACK(fso_gsm_sms_message_sent_handler
),
154 gboolean
fso_gsm_sms_message_sent_signal_remove(FreeSmartphone
*fs
,
155 FSGSMSMSMessageSent cb
,
158 g_return_val_if_fail(fs
, FALSE
);
159 g_debug("%s", __func__
);
161 return fso_signal_remove(fs
,
163 FSO_MESSAGE_SENT_SIGNAL_NAME
,
164 FSO_SIGNAL_MESSAGE_SENT
,
165 G_CALLBACK(fso_gsm_sms_message_sent_handler
),
174 void fso_gsm_sms_incoming_message_handler(DBusGProxy
*proxy
,
178 g_debug("%s", __func__
);
179 FreeSmartphone
*fs
= (FreeSmartphone
*)data
;
180 g_return_if_fail(fs
);
183 list
= fso_get_signal_handler(fs
,FSO_SIGNAL_CALL_INCOMING_MESSAGE
);
185 ReplyData
*rd
= (ReplyData
*)list
->data
;
186 FSGSMSMSIncomingMessage status_cb
= (FSGSMSMSIncomingMessage
)rd
->cb
;
187 status_cb (index
,rd
->data
);
188 list
= g_list_next(list
);
192 gboolean
fso_gsm_sms_incoming_message_signal(FreeSmartphone
*fs
,
193 FSGSMSMSIncomingMessage cb
,
196 g_return_val_if_fail(fs
, FALSE
);
197 g_debug("%s", __func__
);
199 ReplyData
*replydata
= fso_prepare_method(fs
,
206 DBusGProxy
*proxy
= fso_get_proxy(fs
,FSO_SMS
);
208 if ( fso_append_data_to_signal_handler(fs
,
209 FSO_SIGNAL_CALL_INCOMING_MESSAGE
,
211 dbus_g_proxy_add_signal(proxy
,
212 FSO_CALL_INCOMING_MESSAGE_SIGNAL_NAME
,
215 dbus_g_proxy_connect_signal (proxy
, FSO_CALL_INCOMING_MESSAGE_SIGNAL_NAME
,
216 G_CALLBACK(fso_gsm_sms_incoming_message_handler
),
223 gboolean
fso_gsm_sms_incoming_message_signal_remove(FreeSmartphone
*fs
,
224 FSGSMSMSIncomingMessage cb
,
227 g_return_val_if_fail(fs
, FALSE
);
228 g_debug("%s", __func__
);
230 return fso_signal_remove(fs
,
232 FSO_CALL_INCOMING_MESSAGE_SIGNAL_NAME
,
233 FSO_SIGNAL_CALL_INCOMING_MESSAGE
,
234 G_CALLBACK(fso_gsm_sms_incoming_message_handler
),