summaryrefslogtreecommitdiffstats
path: root/src/smsutil.c
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/smsutil.c
parent8bad7e540a8fe86814b391f177a71b9eb2e44b0e (diff)
downloadofono-8bc04ba93a067222316cddb23bf68b5b206a37e0.tar.bz2
Refactor: Break out semi-octet decoder
Refactor decode_scts to use this function
Diffstat (limited to 'src/smsutil.c')
-rw-r--r--src/smsutil.c17
1 files changed, 11 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);