pResp = g_slist_nth_data(tokens, 0);
if (pResp) {
dbg("0: %s", pResp);
- saveMsgInfo.index = (atoi(pResp) - 1); /* IMC index starts from 1 */
+ saveMsgInfo.index = atoi(pResp);
saveMsgInfo.result = SMS_SENDSMS_SUCCESS;
} else {
dbg("No Tokens");
dbg("lines: [%p]", at_response->lines);
g_slist_foreach(at_response->lines, print_glib_list_elem, NULL); //for debug log
- if (at_response->success > 0) {
- dbg("Response OK");
- if (at_response->lines) {
- //fetch first line
- gslist_line = (char *)at_response->lines->data;
+ if (at_response->success <= 0) {
+ err("Response NOK");
+ return;
+ }
- dbg("gslist_line: [%s]", gslist_line);
+ dbg("Response OK");
+ if (at_response->lines == NULL) {
+ err("No lines");
+ return;
+ }
- tokens = tcore_at_tok_new(gslist_line);
- dbg("Number of tokens: [%d]", g_slist_length(tokens));
- g_slist_foreach(tokens, print_glib_list_elem, NULL); //for debug log
+ //fetch first line
+ gslist_line = (char *)at_response->lines->data;
+ if (gslist_line == NULL) {
+ err("Error response data");
+ return;
+ }
- line_token = g_slist_nth_data(tokens, 2); //Third Token: Length
- if (line_token != NULL) {
- pdu_len = atoi(line_token);
- dbg("Length: [%d]", pdu_len);
- }
+ dbg("gslist_line: [%s]", gslist_line);
- //fetch second line
- gslist_line = (char *)at_response->lines->next->data;
+ tokens = tcore_at_tok_new(gslist_line);
+ dbg("Number of tokens: [%d]", g_slist_length(tokens));
+ g_slist_foreach(tokens, print_glib_list_elem, NULL); //for debug log
- dbg("gslist_line: [%s]", gslist_line);
+ line_token = g_slist_nth_data(tokens, 2); //Third Token: Length
+ if (line_token == NULL) {
+ err("Error response data");
+ tcore_at_tok_free(tokens);
+ return;
+ }
- //free the consumed token
- tcore_at_tok_free(tokens);
+ pdu_len = atoi(line_token);
+ dbg("Length: [%d]", pdu_len);
+ tcore_at_tok_free(tokens);
- tokens = tcore_at_tok_new(gslist_line);
- dbg("Number of tokens: [%d]", g_slist_length(tokens));
- g_slist_foreach(tokens, print_glib_list_elem, NULL); //for debug log
+ //fetch second line
+ if (at_response->lines->next == NULL) {
+ err("Error response data");
+ return;
+ }
+ gslist_line = (char *)at_response->lines->next->data;
+ if (gslist_line == NULL) {
+ err("Error response data");
+ return;
+ }
- hex_pdu = g_slist_nth_data(tokens, 0); //Fetch SMS PDU
+ dbg("gslist_line: [%s]", gslist_line);
- //free the consumed token
- tcore_at_tok_free(tokens);
- } else {
- dbg("No lines");
- }
- } else {
- err("Response NOK");
- }
+ tokens = tcore_at_tok_new(gslist_line);
+ dbg("Number of tokens: [%d]", g_slist_length(tokens));
+ g_slist_foreach(tokens, print_glib_list_elem, NULL); //for debug log
+
+ hex_pdu = g_slist_nth_data(tokens, 0); //Fetch SMS PDU
/* Convert to Bytes */
bytePDU = (unsigned char *)util_hexStringToBytes(hex_pdu);
+ if (bytePDU == NULL) {
+ tcore_at_tok_free(tokens);
+ return;
+ }
sca_length = bytePDU[0];
-
dbg("SCA length = %d", sca_length);
gsmMsgInfo.msgInfo.msgLength = pdu_len;
rtn = tcore_server_send_notification(tcore_plugin_ref_server(tcore_object_ref_plugin(tcore_pending_ref_core_object(pending))), tcore_pending_ref_core_object(pending), TNOTI_SMS_INCOM_MSG, sizeof(struct tnoti_sms_umts_msg), &gsmMsgInfo);
g_free(bytePDU);
-
- dbg("Exit");
- return;
+ tcore_at_tok_free(tokens);
}
static void on_response_read_msg(TcorePending *pending, int data_len, const void *data, void *user_data)
util_byte_to_hex((const char *)&msg_status, (char *)encoded_data, 1);
//Update EF-SMS with just status byte overwritten, rest 175 bytes are same as received in read information
- cmd_str = g_strdup_printf("AT+CRSM=220,28476,%d, 4, %d, \"%s\"", (req_msg_status->index+1), PDU_LEN_MAX, encoded_data);
+ cmd_str = g_strdup_printf("AT+CRSM=220,28476,%d, 4, %d, \"%s\"", req_msg_status->index, PDU_LEN_MAX, encoded_data);
atreq = tcore_at_request_new((const char *)cmd_str, "+CRSM", TCORE_AT_SINGLELINE);
pending = tcore_pending_new(tcore_pending_ref_core_object(pending), 0);
if (NULL == cmd_str || NULL == atreq || NULL == pending) {
if (delete_msg->index == -1) {
cmd_str = g_strdup_printf("AT+CMGD=0,4"); // Delete All Messages
} else {
- cmd_str = g_strdup_printf("AT+CMGD=%d,0", delete_msg->index + 1); // Delete specified index
+ cmd_str = g_strdup_printf("AT+CMGD=%d,0", delete_msg->index); // Delete specified index
}
pending = tcore_pending_new(obj, 0);
}
msg_status = tcore_user_request_ref_data(ur, NULL);
- cmd_str = g_strdup_printf("AT+CRSM=178,28476,%d,4,%d", (msg_status->index+1), PDU_LEN_MAX);
+ cmd_str = g_strdup_printf("AT+CRSM=178,28476,%d,4,%d", msg_status->index, PDU_LEN_MAX);
atreq = tcore_at_request_new((const char *)cmd_str, "+CRSM", TCORE_AT_SINGLELINE);
pending = tcore_pending_new(obj, 0);
if (NULL == cmd_str || NULL == atreq || NULL == pending) {