ret = tcore_at_prepare_and_send_request(co,
"AT+XUICC?", "+XUICC:",
TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT,
NULL,
__on_response_imc_sim_get_sim_type, resp_cb_data,
- on_send_imc_request, NULL,
- 0, NULL, NULL);
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Get SIM Type");
return ret;
ret = tcore_at_prepare_and_send_request(co,
"AT+XSIMSTATE?", "+XSIMSTATE:",
TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT,
NULL,
__on_response_imc_sim_get_sim_status, resp_cb_data,
- on_send_imc_request, NULL,
- 0, NULL, NULL);
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Get SIM Status");
return TRUE;
resp_cb_data->cb(co, (gint)sim_result, &file_meta->files.data.iccid, resp_cb_data->cb_data);
break;
+ case TEL_SIM_EF_SPDI: {
+ guint i;
+ dbg("spdi count[%d]", file_meta->files.data.spdi.count);
+
+ if (resp_cb_data->cb)
+ resp_cb_data->cb(co, (gint)sim_result, &file_meta->files.data, resp_cb_data->cb_data);
+
+ /* Free resources */
+ for (i = 0; i < file_meta->files.data.spdi.count; i++)
+ tcore_free(file_meta->files.data.spdi.list[i].plmn);
+
+ tcore_free(file_meta->files.data.spdi.list);
+ }
+ break;
+
case TEL_SIM_EF_SST:
case TEL_SIM_EF_SPN:
- case TEL_SIM_EF_SPDI:
case TEL_SIM_EF_OPLMN_ACT:
case TEL_SIM_EF_CPHS_CPHS_INFO:
case TEL_SIM_EF_CPHS_CALL_FORWARD_FLAGS:
break;
case TEL_SIM_EF_LP:
+ case TEL_SIM_EF_USIM_LI:
if (sim_result == TEL_SIM_RESULT_SUCCESS) {
dbg("[SIM DATA] exist EFLP/LI(0x6F05)");
__imc_sim_read_binary(co, resp_cb_data);
dbg("Exit");
}
-static TelReturn __imc_sim_update_file(CoreObject *co, ImcRespCbData *resp_cb_data, int cmd, TelSimFileId ef,
- int p1, int p2, int p3, char *encoded_data)
+static TelReturn __imc_sim_update_file(CoreObject *co,
+ ImcRespCbData *resp_cb_data, int cmd, TelSimFileId ef,
+ int p1, int p2, int p3, char *encoded_data)
{
char *cmd_str = NULL;
TelReturn ret = TEL_RETURN_FAILURE;
- ImcSimMetaInfo *file_meta = (ImcSimMetaInfo *)IMC_GET_DATA_FROM_RESP_CB_DATA(resp_cb_data);
+ ImcSimMetaInfo *file_meta =
+ (ImcSimMetaInfo *)IMC_GET_DATA_FROM_RESP_CB_DATA(resp_cb_data);
dbg("Entry File-id:[0x%02x]", file_meta->file_id);
- cmd_str = g_strdup_printf("AT+CRSM=%d,%d,%d,%d,%d,\"%s\"", cmd, ef, p1, p2, p3, encoded_data);
-
- ret = tcore_at_prepare_and_send_request(co, cmd_str, "+CRSM:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT, NULL,
- __on_response_imc_sim_update_file, resp_cb_data,
- on_send_imc_request, NULL, 0, NULL, NULL);
+ cmd_str = g_strdup_printf("AT+CRSM=%d,%d,%d,%d,%d,\"%s\"",
+ cmd, ef, p1, p2, p3, encoded_data);
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, "+CRSM:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ __on_response_imc_sim_update_file, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Update SIM File");
tcore_free(encoded_data);
at_cmd = g_strdup_printf("AT+CRSM=%d, %d, %d, %d, %d",
IMC_SIM_ACCESS_READ_RECORD, file_meta->file_id, p1, p2, p3);
- ret = tcore_at_prepare_and_send_request(co, at_cmd, "+CRSM:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT, NULL,
- __on_response_imc_sim_read_data, resp_cb_data,
- on_send_imc_request, NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ at_cmd, "+CRSM:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ __on_response_imc_sim_read_data, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Get File Record");
dbg("ret:[%d]", ret);
at_cmd = g_strdup_printf("AT+CRSM=%d, %d, %d, %d, %d",
IMC_SIM_ACCESS_READ_BINARY, file_meta->file_id, p1, p2, p3);
- ret = tcore_at_prepare_and_send_request(co, at_cmd, "+CRSM:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT, NULL,
- __on_response_imc_sim_read_data, resp_cb_data,
- on_send_imc_request, NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ at_cmd, "+CRSM:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ __on_response_imc_sim_read_data, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Get File Data");
dbg("ret:[%d]", ret);
IMC_SIM_ACCESS_GET_RESPONSE, file_meta->file_id);
ret = tcore_at_prepare_and_send_request(co,
- at_cmd, "+CRSM:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT, NULL,
- __on_response_imc_sim_get_response, resp_cb_data,
- on_send_imc_request, NULL,
- 0, NULL, NULL);
+ at_cmd, "+CRSM:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ __on_response_imc_sim_get_response, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Get File Info");
g_free(at_cmd);
}
cmd_str = g_strdup_printf("AT+XPINCNT=%d", lock_type);
- ret = tcore_at_prepare_and_send_request(co, cmd_str, NULL,
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT,
- NULL,
- __on_response_imc_sim_get_retry_count,
- resp_cb_data,
- on_send_imc_request,
- NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, NULL,
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ __on_response_imc_sim_get_retry_count, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Get Retry Count");
+
g_free(cmd_str);
return ret;
}
dbg("Entry");
IMC_SIM_READ_FILE(co, cb, cb_data, TEL_SIM_EF_LP, ret);
-
return ret;
}
ImcSimMetaInfo file_meta = {0, };
TelSimCardType card_type = TEL_SIM_CARD_TYPE_UNKNOWN;
ImcRespCbData *resp_cb_data = NULL;
- char *tmp = NULL;
- int tmp_len = 0;
char *encoded_data = NULL;
int encoded_data_len = 0;
int p1 = 0;
if (TEL_SIM_CARD_TYPE_GSM == card_type) {
dbg("2G");
- tcore_sim_encode_lp(language, &tmp, &tmp_len);
+
+ tcore_sim_encode_lp(language, &encoded_data, &encoded_data_len);
} else if (TEL_SIM_CARD_TYPE_USIM == card_type) {
+ gchar *tmp;
dbg("3G");
- tcore_sim_encode_li(language, &tmp, &tmp_len);
+
+ if (tcore_sim_encode_li(language, &tmp, &encoded_data_len)) {
+ encoded_data = g_strdup_printf("%02x%02x", tmp[0], tmp[1]);
+ g_free(tmp);
+ }
+ else {
+ err("Failed to encode Language [%d]", language);
+ return TEL_RETURN_FAILURE;
+ }
} else {
err("Invalid card_type:[%d]", card_type);
return TEL_RETURN_OPERATION_NOT_SUPPORTED;
}
- if (!tmp_len) {
+
+ if (!encoded_data_len) {
err("Failed to encode Language [%d]", language);
return TEL_RETURN_FAILURE;
}
- dbg("Encoded Language [%s]", tmp);
-
- encoded_data_len = 2 * tmp_len;
- encoded_data = (char *)tcore_malloc0(encoded_data_len + 1);
- tcore_util_byte_to_hex(tmp, encoded_data, tmp_len);
- tcore_free(tmp);
+ dbg("Encoded Language [%s] len[%d]", encoded_data, encoded_data_len);
p1 = 0;
p2 = 0;
p3 = encoded_data_len;
- dbg("encoded_data - [%s], encoded_data_len - %d", encoded_data, encoded_data_len);
- resp_cb_data = imc_create_resp_cb_data(cb, cb_data, &file_meta, sizeof(ImcSimMetaInfo));
+ resp_cb_data = imc_create_resp_cb_data(cb, cb_data,
+ &file_meta, sizeof(ImcSimMetaInfo));
- return __imc_sim_update_file(co, resp_cb_data, IMC_SIM_ACCESS_UPDATE_BINARY,
- TEL_SIM_EF_LP, p1, p2, p3, encoded_data);
+ return __imc_sim_update_file(co, resp_cb_data,
+ IMC_SIM_ACCESS_UPDATE_BINARY, TEL_SIM_EF_LP,
+ p1, p2, p3, encoded_data);
}
static TelReturn imc_sim_get_callforwarding_info (CoreObject *co,
resp_cb_data = imc_create_resp_cb_data(cb, cb_data, (void *)&request->auth_type, sizeof(TelSimAuthenticationType));
- ret = tcore_at_prepare_and_send_request(co, cmd_str, "+XAUTH:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT, NULL,
- on_response_imc_sim_req_authentication, resp_cb_data,
- on_send_imc_request, NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, "+XAUTH:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ on_response_imc_sim_req_authentication, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim request authentication");
+
EXIT:
g_free(cmd_str);
tcore_free(convert_rand);
resp_cb_data = imc_create_resp_cb_data(cb, cb_data,
&sec_op, sizeof(sec_op));
- ret = tcore_at_prepare_and_send_request(co, cmd_str, NULL,
- TCORE_AT_COMMAND_TYPE_NO_RESULT,
- TCORE_PENDING_PRIORITY_DEFAULT,
- NULL,
- on_response_imc_sim_verify_pins,
- resp_cb_data,
- on_send_imc_request,
- NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, NULL,
+ TCORE_AT_COMMAND_TYPE_NO_RESULT,
+ NULL,
+ on_response_imc_sim_verify_pins, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Verify Pins");
+
g_free(cmd_str);
return ret;
}
resp_cb_data = imc_create_resp_cb_data(cb, cb_data,
&sec_op, sizeof(sec_op));
- ret = tcore_at_prepare_and_send_request(co, cmd_str, NULL,
- TCORE_AT_COMMAND_TYPE_NO_RESULT,
- TCORE_PENDING_PRIORITY_DEFAULT,
- NULL,
- on_response_imc_sim_verify_puks,
- resp_cb_data,
- on_send_imc_request,
- NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, NULL,
+ TCORE_AT_COMMAND_TYPE_NO_RESULT,
+ NULL,
+ on_response_imc_sim_verify_puks, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Verify Puks");
+
g_free(cmd_str);
return ret;
}
resp_cb_data = imc_create_resp_cb_data(cb, cb_data,
&sec_op, sizeof(sec_op));
- ret = tcore_at_prepare_and_send_request(co, cmd_str, NULL,
- TCORE_AT_COMMAND_TYPE_NO_RESULT,
- TCORE_PENDING_PRIORITY_DEFAULT,
- NULL,
- on_response_imc_sim_change_pins,
- resp_cb_data,
- on_send_imc_request,
- NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, NULL,
+ TCORE_AT_COMMAND_TYPE_NO_RESULT,
+ NULL,
+ on_response_imc_sim_change_pins, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Change Pins");
+
g_free(cmd_str);
return ret;
}
resp_cb_data = imc_create_resp_cb_data(cb, cb_data,
&sec_op, sizeof(sec_op));
- ret = tcore_at_prepare_and_send_request(co, cmd_str, "+CLCK:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT,
- NULL,
- on_response_imc_sim_disable_facility,
- resp_cb_data,
- on_send_imc_request,
- NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, "+CLCK:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ on_response_imc_sim_disable_facility, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Disable Facility");
+
g_free(cmd_str);
return ret;
}
resp_cb_data = imc_create_resp_cb_data(cb, cb_data,
&sec_op, sizeof(sec_op));
- ret = tcore_at_prepare_and_send_request(co, cmd_str, "+CLCK:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT,
- NULL,
- on_response_imc_sim_enable_facility,
- resp_cb_data,
- on_send_imc_request,
- NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, "+CLCK:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ on_response_imc_sim_enable_facility, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Disable Facility");
+
g_free(cmd_str);
return ret;
}
resp_cb_data = imc_create_resp_cb_data(cb, cb_data,
&sec_op, sizeof(sec_op));
- ret = tcore_at_prepare_and_send_request(co, cmd_str, "+CLCK:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT,
- NULL,
- on_response_imc_sim_get_facility,
- resp_cb_data,
- on_send_imc_request,
- NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, "+CLCK:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ on_response_imc_sim_get_facility, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Get Facility");
+
g_free(cmd_str);
return ret;
}
cmd_str = g_strdup_printf("AT+XPINCNT=%d", lockType);
- ret = tcore_at_prepare_and_send_request(co, cmd_str, "+XPINCNT:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT,
- NULL,
- on_response_imc_sim_get_lock_info,
- resp_cb_data,
- on_send_imc_request,
- NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, "+XPINCNT:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ on_response_imc_sim_get_lock_info, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Get Lock Info");
+
g_free(cmd_str);
return ret;
}
cmd_str = g_strdup_printf("AT+CSIM=%d,\"%s\"", strlen((const char *)apdu), apdu);
- ret = tcore_at_prepare_and_send_request(co, cmd_str, "+CSIM:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT, NULL,
- on_response_imc_sim_req_apdu, resp_cb_data,
- on_send_imc_request, NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, "+CSIM:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ on_response_imc_sim_req_apdu, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Request APDU");
g_free(cmd_str);
cmd_str = g_strdup_printf("AT+XGATR");
- ret = tcore_at_prepare_and_send_request(co, cmd_str, "+XGATR:",
- TCORE_AT_COMMAND_TYPE_SINGLELINE,
- TCORE_PENDING_PRIORITY_DEFAULT, NULL,
- on_response_imc_sim_req_atr, resp_cb_data,
- on_send_imc_request, NULL, 0, NULL, NULL);
-
+ ret = tcore_at_prepare_and_send_request(co,
+ cmd_str, "+XGATR:",
+ TCORE_AT_COMMAND_TYPE_SINGLELINE,
+ NULL,
+ on_response_imc_sim_req_atr, resp_cb_data,
+ on_send_imc_request, NULL);
IMC_CHECK_REQUEST_RET(ret, resp_cb_data, "Sim Request ATR");
g_free(cmd_str);