(ret == TEL_RETURN_SUCCESS ? "SUCCESS" : "FAIL"));
}
+static TelNetworkResult
+__imc_network_convert_cme_error_tel_network_result(const TcoreAtResponse *at_resp)
+{
+ TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE;
+ const gchar *line;
+ GSList *tokens = NULL;
+
+ dbg("Entry");
+
+ if (!at_resp || !at_resp->lines) {
+ err("Invalid response data");
+ return result;
+ }
+
+ line = (const gchar *)at_resp->lines->data;
+ tokens = tcore_at_tok_new(line);
+ if (g_slist_length(tokens) > 0) {
+ gchar *resp_str;
+ gint cme_err;
+
+ resp_str = g_slist_nth_data(tokens, 0);
+ if (!resp_str) {
+ err("Invalid CME Error data");
+ tcore_at_tok_free(tokens);
+ return result;
+ }
+ cme_err = atoi(resp_str);
+ dbg("CME error[%d]", cme_err);
+
+ switch (cme_err) {
+ case 3:
+ result = TEL_NETWORK_RESULT_OPERATION_NOT_PERMITTED;
+ break;
+
+ case 4:
+ result = TEL_NETWORK_RESULT_OPERATION_NOT_SUPPORTED;
+ break;
+
+ case 20:
+ result = TEL_NETWORK_RESULT_MEMORY_FAILURE;
+ break;
+
+ case 30:
+ case 31:
+ result = TEL_NETWORK_RESULT_FAILURE;
+ break;
+
+ case 50:
+ result = TEL_NETWORK_RESULT_INVALID_PARAMETER;
+ break;
+
+ default:
+ result = TEL_NETWORK_RESULT_FAILURE;
+ }
+ }
+ tcore_at_tok_free(tokens);
+
+ return result;
+}
+
static void __on_response_imc_network_fetch_nw_name_internal(CoreObject *co,
gint result, const void *response, void *user_data)
{
nol = g_slist_length(at_resp->lines);
if (nol > 3) {
err("Invalid response message");
+ imc_destroy_resp_cb_data(resp_cb_data);
return;
}
CustomData *custom_data;
ImcRespCbData *resp_cb_data = user_data;
- TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE; //TODO - CME Error mapping required.
+ TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE;
TelNetworkPlmnList plmn_list = {0, };
guint num_network_avail = 0;
guint count;
result = TEL_NETWORK_RESULT_SUCCESS;
} else {
err("RESPONSE NOK");
- if (at_resp->lines)
- err("CME Error[%s]",(char *)at_resp->lines->data);
+ result = __imc_network_convert_cme_error_tel_network_result(at_resp);
}
END:
TelNetworkSelectionMode selection_mode = -1;
GSList *tokens = NULL;
- TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE; //TODO - CME Error mapping required.
+ TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE;
dbg("Enter");
tcore_check_return_assert(co != NULL);
} else {
err("RESPONSE NOK");
+ result = __imc_network_convert_cme_error_tel_network_result(at_resp);
}
END:
const TcoreAtResponse *at_resp = data;
CoreObject *co = tcore_pending_ref_core_object(p);
ImcRespCbData *resp_cb_data = user_data;
- TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE; //TODO - CME Error mapping required.
+ TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE;
dbg("Enter");
tcore_check_return_assert(co != NULL);
result = TEL_NETWORK_RESULT_SUCCESS;
} else {
err("RESPONSE NOK");
- if (at_resp->lines)
- err("CME Error[%s]",(char *)at_resp->lines->data);
+ result = __imc_network_convert_cme_error_tel_network_result(at_resp);
}
/* Invoke callback */
const TcoreAtResponse *at_resp = data;
CoreObject *co = tcore_pending_ref_core_object(p);
ImcRespCbData *resp_cb_data = user_data;
- TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE; //TODO - CME Error mapping required.
+ TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE;
TelNetworkMode mode = -1;
GSList *tokens = NULL;
net_mode = atoi(tcore_at_tok_nth(tokens, 0));
dbg("mode = %d", net_mode);
- switch(net_mode) {
+ switch (net_mode) {
case 0:
mode = TEL_NETWORK_MODE_2G;
break;
result = TEL_NETWORK_RESULT_SUCCESS;
} else {
err("RESPONSE NOK");
+ result = __imc_network_convert_cme_error_tel_network_result(at_resp);
}
END:
/* Invoke callback */
ImcRespCbData *resp_cb_data = user_data;
TelNetworkPreferredPlmnList plmn_list = {0,};
guint count = 0, total_lines = 0;
- TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE; //TODO - CME Error mapping required.
+ TelNetworkResult result = TEL_NETWORK_RESULT_FAILURE;
dbg("Enter");
tcore_check_return_assert(co != NULL);
plmn_list.count = count;
} else {
err("RESPONSE NOK");
- if (at_resp->lines)
- err("CME Error[%s]",(char *)at_resp->lines->data);
+ result = __imc_network_convert_cme_error_tel_network_result(at_resp);
}
END:
gint act;
dbg("entry");
- switch(sel_manual->act) {
+ switch (sel_manual->act) {
case TEL_NETWORK_ACT_GSM:
case TEL_NETWORK_ACT_GPRS:
case TEL_NETWORK_ACT_EGPRS:
TelReturn ret = TEL_RETURN_INVALID_PARAMETER;
dbg("entry");
- switch(pref_plmn->act) {
+ switch (pref_plmn->act) {
case TEL_NETWORK_ACT_GSM:
case TEL_NETWORK_ACT_GPRS:
case TEL_NETWORK_ACT_EGPRS:
int act;
gchar *at_cmd;
- switch(mode) {
+ switch (mode) {
case TEL_NETWORK_MODE_AUTO:
act = 1;
break;