summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYang Gu <yang.gu@intel.com>2010-04-02 14:20:31 +0800
committerDenis Kenzior <denkenz@gmail.com>2010-04-02 10:58:53 -0500
commit8bc04ba93a067222316cddb23bf68b5b206a37e0 (patch)
tree7f710a19cad6904df5245265390da60b11bddd28 /src
parent8bad7e540a8fe86814b391f177a71b9eb2e44b0e (diff)
downloadofono-8bc04ba93a067222316cddb23bf68b5b206a37e0.tar.bz2
Refactor: Break out semi-octet decoder
Refactor decode_scts to use this function
Diffstat (limited to 'src')
-rw-r--r--src/smsutil.c17
-rw-r--r--src/smsutil.h2
2 files changed, 13 insertions, 6 deletions
diff --git a/src/smsutil.c b/src/smsutil.c
index baa7ebe6..64cd6fbc 100644
--- a/src/smsutil.c
+++ b/src/smsutil.c
@@ -372,6 +372,11 @@ static gboolean encode_scts(const struct sms_scts *in, unsigned char *pdu,
return TRUE;
}
+guint8 sms_decode_semi_octet(guint8 in)
+{
+ return (in & 0x0f) * 10 + (in >> 4);
+}
+
static gboolean decode_scts(const unsigned char *pdu, int len,
int *offset, struct sms_scts *out)
{
@@ -381,22 +386,22 @@ static gboolean decode_scts(const unsigned char *pdu, int len,
return FALSE;
next_octet(pdu, len, offset, &oct);
- out->year = (oct & 0x0f) * 10 + ((oct & 0xf0) >> 4);
+ out->year = sms_decode_semi_octet(oct);
next_octet(pdu, len, offset, &oct);
- out->month = (oct & 0x0f) * 10 + ((oct & 0xf0) >> 4);
+ out->month = sms_decode_semi_octet(oct);
next_octet(pdu, len, offset, &oct);
- out->day = (oct & 0x0f) * 10 + ((oct & 0xf0) >> 4);
+ out->day = sms_decode_semi_octet(oct);
next_octet(pdu, len, offset, &oct);
- out->hour = (oct & 0x0f) * 10 + ((oct & 0xf0) >> 4);
+ out->hour = sms_decode_semi_octet(oct);
next_octet(pdu, len, offset, &oct);
- out->minute = (oct & 0x0f) * 10 + ((oct & 0xf0) >> 4);
+ out->minute = sms_decode_semi_octet(oct);
next_octet(pdu, len, offset, &oct);
- out->second = (oct & 0x0f) * 10 + ((oct & 0xf0) >> 4);
+ out->second = sms_decode_semi_octet(oct);
next_octet(pdu, len, offset, &oct);
diff --git a/src/smsutil.h b/src/smsutil.h
index c28a6daf..fd80c8fc 100644
--- a/src/smsutil.h
+++ b/src/smsutil.h
@@ -422,6 +422,8 @@ gboolean sms_decode_address_field(const unsigned char *pdu, int len,
gboolean sms_encode_address_field(const struct sms_address *in, gboolean sc,
unsigned char *pdu, int *offset);
+guint8 sms_decode_semi_octet(guint8 in);
+
int sms_udl_in_bytes(guint8 ud_len, guint8 dcs);
time_t sms_scts_to_time(const struct sms_scts *scts, struct tm *remote);