Fix sms +CMT urc.
Change-Id: If958e4831e93b0484e209e29f9ea357539f0fd03
diff --git a/mbtk/mbtk_rild_v2/src/main.c b/mbtk/mbtk_rild_v2/src/main.c
index 0b70641..881c12b 100755
--- a/mbtk/mbtk_rild_v2/src/main.c
+++ b/mbtk/mbtk_rild_v2/src/main.c
@@ -685,11 +685,10 @@
// +CMT: ,23
// 0891683108200855F6240D91688189911196F10000221130717445230331D90C
-static void urc_sms_state_change_process(const char *s, const char *sms_pdu)
+static void urc_sms_state_change_process(const char *s, bool is_pdu)
{
- if(sms_pdu) {
- LOGD("PDU : %s", sms_pdu);
- mbtk_ril_sms_state_info_t sms_info;
+ static mbtk_ril_sms_state_info_t sms_info;
+ if(!is_pdu) {
memset(&sms_info, 0, sizeof(mbtk_ril_sms_state_info_t));
char* tmp_s = memdup(s,strlen(s) + 1);
char *line = tmp_s;
@@ -707,11 +706,12 @@
goto CMT_EXIT;
}
sms_info.pdu_len = (uint16)atoi(tmp_str);
- memcpy(sms_info.pdu, sms_pdu, strlen(sms_pdu));
-
- urc_msg_distribute(false, RIL_MSG_ID_IND_SMS_STATE_CHANGE, &sms_info, sizeof(mbtk_ril_sms_state_info_t));
CMT_EXIT:
free(tmp_s);
+ } else {
+ LOGD("PDU : %s", s);
+ memcpy(sms_info.pdu, s, strlen(s));
+ urc_msg_distribute(false, RIL_MSG_ID_IND_SMS_STATE_CHANGE, &sms_info, sizeof(mbtk_ril_sms_state_info_t));
}
}
@@ -1730,7 +1730,7 @@
// Get PDU data.
if(cmt_found) {
cmt_found = FALSE;
- urc_sms_state_change_process(s, sms_pdu);
+ urc_sms_state_change_process(s, true);
} else if (strStartsWith(s, "MBTK_AT_READY")) { // AT ready.
} else if(strStartsWith(s, "CONNECT") || strStartsWith(s, "+CGEV:")) {
@@ -1788,7 +1788,7 @@
else if(strStartsWith(s, "+CMT:"))
{
cmt_found = TRUE;
- urc_sms_state_change_process(s, sms_pdu);
+ urc_sms_state_change_process(s, false);
}
else if(strStartsWith(s, "*ECALLDATA:"))
{