summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAki Niemi <aki.niemi@nokia.com>2010-09-03 13:12:38 +0300
committerDenis Kenzior <denkenz@gmail.com>2010-09-03 09:10:09 -0500
commit35cfb432d45dc37cc8bfcc00de8492db6a3ec328 (patch)
tree1dead19952b9bb3392a366485e10185944de3d57 /src
parent414b22391cacd0f0d4cf0fdd8d897d528470cb63 (diff)
downloadofono-35cfb432d45dc37cc8bfcc00de8492db6a3ec328.tar.bz2
Fix adding 8bit reference number
Diffstat (limited to 'src')
-rw-r--r--src/sms.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/sms.c b/src/sms.c
index 72985637..088119d1 100644
--- a/src/sms.c
+++ b/src/sms.c
@@ -522,7 +522,7 @@ static gboolean tx_next(gpointer user_data)
}
static void set_ref_and_to(GSList *msg_list, guint16 ref, int offset,
- const char *to)
+ gboolean use_16bit, const char *to)
{
GSList *l;
struct sms *sms;
@@ -530,12 +530,17 @@ static void set_ref_and_to(GSList *msg_list, guint16 ref, int offset,
for (l = msg_list; l; l = l->next) {
sms = l->data;
- if (offset != 0) {
+ sms_address_from_string(&sms->submit.daddr, to);
+
+ if (offset == 0)
+ continue;
+
+ if (use_16bit) {
sms->submit.ud[offset] = (ref & 0xf0) >> 8;
- sms->submit.ud[offset+1] = (ref & 0x0f);
+ sms->submit.ud[offset+1] = ref & 0x0f;
+ } else {
+ sms->submit.ud[offset] = ref & 0x0f;
}
-
- sms_address_from_string(&sms->submit.daddr, to);
}
}
@@ -621,7 +626,7 @@ static DBusMessage *sms_send_message(DBusConnection *conn, DBusMessage *msg,
if (!msg_list)
return __ofono_error_invalid_format(msg);
- set_ref_and_to(msg_list, sms->ref, ref_offset, to);
+ set_ref_and_to(msg_list, sms->ref, ref_offset, TRUE, to);
DBG("ref: %d, offset: %d", sms->ref, ref_offset);
if (ref_offset != 0) {