From: Pasi Miettinen <[email protected]>

---
 drivers/atmodem/sms.c |   26 +++++++++++++++++++-------
 1 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/drivers/atmodem/sms.c b/drivers/atmodem/sms.c
index 27de77b..a1c885b 100644
--- a/drivers/atmodem/sms.c
+++ b/drivers/atmodem/sms.c
@@ -283,16 +283,28 @@ static void at_cds_notify(GAtResult *result, gpointer 
user_data)
 {
        struct ofono_sms *sms = user_data;
        struct sms_data *data = ofono_sms_get_data(sms);
-       int pdulen;
-       const char *pdu;
+       long pdu_len;
+       int tpdu_len;
+       const char *hexpdu;
+       unsigned char pdu[176];
        char buf[256];
 
-       if (!at_parse_pdu_common(result, "+CDS:", &pdu, &pdulen)) {
+       if (!at_parse_pdu_common(result, "+CDS:", &hexpdu, &tpdu_len)) {
                ofono_error("Unable to parse CDS notification");
                return;
        }
 
-       DBG("Got new Status-Report PDU via CDS: %s, %d", pdu, pdulen);
+       /*Is this necessary?*/
+       if (strlen(hexpdu) > sizeof(pdu) * 2) {
+               ofono_error("Bad PDU length in CMT notification");
+               return;
+       }
+
+       DBG("Got new Status-Report PDU via CDS: %s, %d", hexpdu, tpdu_len);
+
+       /*Decode pdu and notify about new SMS status report*/
+       decode_hex_own_buf(hexpdu, -1, &pdu_len, 0, pdu);
+       ofono_sms_status_report_notify(sms, pdu, pdu_len, tpdu_len);
 
        /* We must acknowledge the PDU using CNMA */
        if (data->cnma_ack_pdu)
@@ -545,13 +557,13 @@ static void at_cmgl_cb(gboolean ok, GAtResult *result, 
gpointer user_data)
 static void at_cmgl_cpms_cb(gboolean ok, GAtResult *result, gpointer user_data)
 {
 
-       DBG("PASS AT+CMGL=4!!!");
-       return;
-
        struct cpms_request *req = user_data;
        struct ofono_sms *sms = req->sms;
        struct sms_data *data = ofono_sms_get_data(sms);
 
+       DBG("PASS AT+CMGL=4!!!");
+       return;
+
        if (!ok) {
                ofono_error("Initial CPMS request failed");
                at_cmgl_done(sms);
-- 
1.6.0.4

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to