--- /dev/null
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <tet_api.h>
+#include <sim.h>
+#include <stdlib.h>
+
+enum {
+ POSITIVE_TC_IDX = 0x01,
+ NEGATIVE_TC_IDX,
+};
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_telephony_sim_get_icc_id_n(void);
+static void utc_telephony_sim_get_icc_id_p(void);
+static void utc_telephony_sim_get_mcc_n(void);
+static void utc_telephony_sim_get_mcc_p(void);
+static void utc_telephony_sim_get_mnc_n(void);
+static void utc_telephony_sim_get_mnc_p(void);
+static void utc_telephony_sim_get_msin_n(void);
+static void utc_telephony_sim_get_msin_p(void);
+static void utc_telephony_sim_get_spn_n(void);
+static void utc_telephony_sim_get_spn_p(void);
+static void utc_telephony_sim_get_cphs_operator_name_n(void);
+static void utc_telephony_sim_get_cphs_operator_name_p(void);
+static void utc_telephony_sim_get_state_n(void);
+static void utc_telephony_sim_get_state_p(void);
+static void utc_telephony_sim_get_subscriber_number_n(void);
+static void utc_telephony_sim_get_subscriber_number_p(void);
+static void utc_telephony_sim_set_state_changed_cb_p(void);
+static void utc_telephony_sim_set_state_changed_cb_n(void);
+static void utc_telephony_sim_unset_state_changed_cb_p(void);
+
+
+
+struct tet_testlist tet_testlist[] = {
+ { utc_telephony_sim_get_icc_id_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_get_icc_id_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_get_mcc_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_get_mcc_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_get_mnc_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_get_mnc_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_get_msin_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_get_msin_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_get_spn_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_get_spn_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_get_cphs_operator_name_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_get_cphs_operator_name_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_get_state_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_get_state_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_get_subscriber_number_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_get_subscriber_number_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_set_state_changed_cb_p, POSITIVE_TC_IDX },
+ { utc_telephony_sim_set_state_changed_cb_n, NEGATIVE_TC_IDX },
+ { utc_telephony_sim_unset_state_changed_cb_p, POSITIVE_TC_IDX },
+ { NULL, 0 },
+};
+
+
+static void startup(void)
+{
+ /* start of TC */
+ tet_printf("\n TC start");
+}
+
+
+static void cleanup(void)
+{
+ /* end of TC */
+ tet_printf("\n TC end");
+}
+
+/**
+ * @brief Callback function
+ */
+void sim_state_changed(sim_state_e state, void* user_data)
+{
+
+}
+
+/**
+ * @brief Negative test case of sim_get_icc_id()
+ */
+static void utc_telephony_sim_get_icc_id_n(void)
+{
+ int ret = SIM_ERROR_NONE;
+
+ // Invalid parameter test
+ ret = sim_get_icc_id(NULL);
+ dts_check_eq("sim_get_icc_id", ret, SIM_ERROR_INVALID_PARAMETER, "Must return SIM_ERROR_INVALID_PARAMETER in case of invalid parameter");
+}
+
+
+/**
+ * @brief Positive test case of sim_get_icc_id()
+ */
+static void utc_telephony_sim_get_icc_id_p(void)
+{
+ char* icc_id = NULL;
+ int ret = SIM_ERROR_NONE;
+
+ // Normal operation test
+ ret = sim_get_icc_id(&icc_id);
+ if( icc_id != NULL )
+ free(icc_id);
+ dts_check_eq("sim_get_icc_id", ret, SIM_ERROR_NONE, "Failed to get ICC ID");
+}
+
+
+/**
+ * @brief Negative test case of sim_get_mcc()
+ */
+static void utc_telephony_sim_get_mcc_n(void)
+{
+ int ret = SIM_ERROR_NONE;
+
+ // Invalid parameter test
+ ret = sim_get_mcc(NULL);
+ dts_check_eq("sim_get_mcc", ret, SIM_ERROR_INVALID_PARAMETER, "Must return SIM_ERROR_INVALID_PARAMETER in case of invalid parameter");
+}
+
+
+/**
+ * @brief Positive test case of sim_get_mcc()
+ */
+static void utc_telephony_sim_get_mcc_p(void)
+{
+ char* mcc = NULL;
+ int ret = SIM_ERROR_NONE;
+
+ // Normal operation test
+ ret = sim_get_mcc(&mcc);
+ if( ret == SIM_ERROR_NONE )
+ free(mcc);
+ dts_check_eq("sim_get_mcc", ret, SIM_ERROR_NONE, "Failed to get MCC");
+}
+
+
+/**
+ * @brief Negative test case of sim_get_mnc()
+ */
+static void utc_telephony_sim_get_mnc_n(void)
+{
+ int ret = SIM_ERROR_NONE;
+
+ // Invalid parameter test
+ ret = sim_get_mnc(NULL);
+ dts_check_eq("sim_get_mnc", ret, SIM_ERROR_INVALID_PARAMETER, "Must return SIM_ERROR_INVALID_PARAMETER in case of invalid parameter");
+}
+
+
+/**
+ * @brief Positive test case of sim_get_mnc()
+ */
+static void utc_telephony_sim_get_mnc_p(void)
+{
+ char* mnc = NULL;
+ int ret = SIM_ERROR_NONE;
+
+ // Normal operation test
+ ret = sim_get_mnc(&mnc);
+ if( ret == SIM_ERROR_NONE )
+ free(mnc);
+ dts_check_eq("sim_get_mnc", ret, SIM_ERROR_NONE, "Failed to get MNC");
+}
+
+
+/**
+ * @brief Negative test case of sim_get_msin()
+ */
+static void utc_telephony_sim_get_msin_n(void)
+{
+ int ret = SIM_ERROR_NONE;
+
+ // Invalid parameter test
+ ret = sim_get_msin(NULL);
+ dts_check_eq("sim_get_msin", ret, SIM_ERROR_INVALID_PARAMETER, "Must return SIM_ERROR_INVALID_PARAMETER in case of invalid parameter");
+}
+
+
+/**
+ * @brief Positive test case of sim_get_msin()
+ */
+static void utc_telephony_sim_get_msin_p(void)
+{
+ char* msin = NULL;
+ int ret = SIM_ERROR_NONE;
+
+ // Normal operation test
+ ret = sim_get_msin(&msin);
+ if( ret == SIM_ERROR_NONE )
+ free(msin);
+ dts_check_eq("sim_get_msin", ret, SIM_ERROR_NONE, "Failed to get MSIN");
+}
+
+
+/**
+ * @brief Negative test case of sim_get_spn()
+ */
+static void utc_telephony_sim_get_spn_n(void)
+{
+ int ret = SIM_ERROR_NONE;
+
+ // Invalid parameter test
+ ret = sim_get_spn(NULL);
+ dts_check_eq("sim_get_spn", ret, SIM_ERROR_INVALID_PARAMETER, "Must return SIM_ERROR_INVALID_PARAMETER in case of invalid parameter");
+}
+
+
+/**
+ * @brief Positive test case of sim_get_spn()
+ */
+static void utc_telephony_sim_get_spn_p(void)
+{
+ char* spn = NULL;
+ int ret = SIM_ERROR_NONE;
+
+ // Normal operation test
+ ret = sim_get_spn(&spn);
+ if( ret == SIM_ERROR_NONE )
+ free(spn);
+ dts_check_eq("sim_get_spn", ret, SIM_ERROR_NONE, "Failed to get SPN");
+}
+
+
+/**
+ * @brief Negative test case of sim_get_cphs_operator_name()
+ */
+static void utc_telephony_sim_get_cphs_operator_name_n(void)
+{
+ int ret = SIM_ERROR_NONE;
+
+ // Invalid parameter test
+ ret = sim_get_cphs_operator_name(NULL, NULL);
+ dts_check_eq("sim_get_cphs_operator_name", ret, SIM_ERROR_INVALID_PARAMETER, "Must return SIM_ERROR_INVALID_PARAMETER in case of invalid parameter");
+}
+
+
+/**
+ * @brief Positive test case of sim_get_cphs_operator_name()
+ */
+static void utc_telephony_sim_get_cphs_operator_name_p(void)
+{
+ char* full_name = NULL;
+ char* short_name = NULL;
+ int ret = SIM_ERROR_NONE;
+
+ // Normal operation test
+ ret = sim_get_cphs_operator_name(&full_name, &short_name);
+ if( ret == SIM_ERROR_NONE ) {
+ free(full_name);
+ free(short_name);
+ }
+ dts_check_eq("sim_get_cphs_operator_name", ret, SIM_ERROR_NONE, "Failed to get CPHS full/short operator name");
+}
+
+
+/**
+ * @brief Negative test case of sim_get_state()
+ */
+static void utc_telephony_sim_get_state_n(void)
+{
+ int ret = SIM_ERROR_NONE;
+
+ // Invalid parameter test
+ ret = sim_get_state(NULL);
+ dts_check_eq("sim_get_state", ret, SIM_ERROR_INVALID_PARAMETER, "Must return SIM_ERROR_INVALID_PARAMETER in case of invalid parameter");
+}
+
+
+/**
+ * @brief Positive test case of sim_get_state()
+ */
+static void utc_telephony_sim_get_state_p(void)
+{
+ sim_state_e sim_status;
+ int ret = SIM_ERROR_NONE;
+
+ // Normal operation test
+ ret = sim_get_state(&sim_status);
+ dts_check_eq("sim_get_state", ret, SIM_ERROR_NONE, "Failed to get the current status of SIM");
+}
+
+
+/**
+ * @brief Negative test case of sim_get_subscriber_number()
+ */
+static void utc_telephony_sim_get_subscriber_number_n(void)
+{
+ int ret = SIM_ERROR_NONE;
+
+ // Invalid parameter test
+ ret = sim_get_subscriber_number(NULL);
+ dts_check_eq("sim_get_subscriber_number", ret, SIM_ERROR_INVALID_PARAMETER, "Must return SIM_ERROR_INVALID_PARAMETER in case of invalid parameter");
+}
+
+
+/**
+ * @brief Positive test case of sim_get_subscriber_number()
+ */
+static void utc_telephony_sim_get_subscriber_number_p(void)
+{
+ char* subscriber_number = NULL;
+ int ret = SIM_ERROR_NONE;
+
+ // Normal operation test
+ ret = sim_get_subscriber_number(&subscriber_number);
+ if( ret == SIM_ERROR_NONE )
+ {
+ free(subscriber_number);
+ dts_pass("sim_get_subscriber_number", "Succeeded to get subscriber number.");
+ }
+ else
+ {
+ dts_fail("sim_get_subscriber_number", "Failed to get subscriber number.");
+ }
+}
+
+
+static void utc_telephony_sim_set_state_changed_cb_p(void)
+{
+ sim_error_e ret = sim_set_state_changed_cb(sim_state_changed, NULL);
+ dts_check_eq("sim_set_state_changed_cb", ret, SIM_ERROR_NONE,
+ "sim_set_state_changed_cb failed.");
+}
+
+static void utc_telephony_sim_set_state_changed_cb_n(void)
+{
+ sim_error_e ret = sim_set_state_changed_cb(NULL, NULL);
+ dts_check_eq("sim_set_state_changed_cb", ret, SIM_ERROR_INVALID_PARAMETER,
+ "SIM_ERROR_INVALID_PARAMETER must be returned when parameter is NULL.");
+}
+
+static void utc_telephony_sim_unset_state_changed_cb_p(void)
+{
+ sim_error_e ret = sim_unset_state_changed_cb();
+ dts_check_eq("sim_unset_state_changed_cb", ret, SIM_ERROR_NONE,
+ "sim_unset_state_changed_cb failed.");
+}
+
+
* limitations under the License.
*/
-
#include <sim.h>
-#include <TapiCommon.h>
+#include <tapi_common.h>
+#include <TapiUtility.h>
#include <ITapiSim.h>
-#include <vconf.h>
-#include <vconf-keys.h>
+
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <dlog.h>
+
#include <glib.h>
+#include <glib-object.h>
+#include <gio/gio.h>
#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define LOG_TAG "TIZEN_N_SIM"
-typedef struct sim_cb_data
-{
+struct tapi_handle {
+ gpointer dbus_connection;
+ char *path;
+ char *cp_name;
+ GHashTable *evt_list;
+ char cookie[20];
+};
+
+typedef struct sim_cb_data {
sim_state_e previous_state;
- const void* cb;
+ struct tapi_handle *th;
+ void* cb;
void* user_data;
} sim_cb_data;
-// Whether vconf_notifiy_key_chnaged is registered or not
-static bool init_is_registered = false;
-static bool chv_is_registered = false;
-static bool slot_is_registered = false;
-
-// Callback function data
-static sim_cb_data sim_state_cb = {SIM_STATE_UNKNOWN, NULL, NULL};
-
-// Callback function adapter
-static void __sim_state_changed_cb_adapter(keynode_t *node, void* user_data);
+static struct tapi_handle *ghandle = NULL;
// Internal Macros
#define SIM_CHECK_INPUT_PARAMETER(arg) \
return SIM_ERROR_INVALID_PARAMETER; \
}
-#define SIM_INIT() \
- if( tel_init() != TAPI_API_SUCCESS ) \
- { \
+#define SIM_INIT(th) \
+ th = tel_init(NULL); \
+ if (!th) { \
LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED); \
return SIM_ERROR_OPERATION_FAILED; \
}
+#define SIM_MAKE_CB(ccb,th,callback,user_data) \
+ ccb = (sim_cb_data*) calloc(sizeof(sim_cb_data), 1);\
+ ccb->th = th; \
+ ccb->cb = (void*) callback;\
+ ccb->user_data = user_data
+
+static sim_error_e _convert_access_rt_to_sim_error(TelSimAccessResult_t access_rt)
+{
+ sim_error_e error = SIM_ERROR_NONE;
+ switch (access_rt) {
+ case TAPI_SIM_ACCESS_SUCCESS:
+ error = SIM_ERROR_NONE;
+ break;
+ case TAPI_SIM_ACCESS_FILE_NOT_FOUND:
+ case TAPI_SIM_ACCESS_ACCESS_CONDITION_NOT_SATISFIED:
+ error = SIM_ERROR_NOT_AVAILABLE;
+ break;
+ case TAPI_SIM_ACCESS_CARD_ERROR:
+ case TAPI_SIM_ACCESS_FAILED:
+ default:
+ error = SIM_ERROR_OPERATION_FAILED;
+ break;
+ }
+ return error;
+}
int sim_get_icc_id(char** icc_id)
{
- TelSimIccIdInfo_t icc_data;
int error_code = SIM_ERROR_NONE;
int card_changed = 0;
TelSimCardStatus_t sim_card_state = 0x00;
+ struct tapi_handle *th = NULL;
+ GError *gerr = NULL;
+ GVariant *sync_gv = NULL;
+ gchar *iccid = NULL;
+ TelSimAccessResult_t result = TAPI_SIM_ACCESS_SUCCESS;
SIM_CHECK_INPUT_PARAMETER(icc_id);
- SIM_INIT();
-
- if( tel_get_sim_init_info(&sim_card_state, &card_changed) != 0
- || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED )
- {
- LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
- error_code = SIM_ERROR_NOT_AVAILABLE;
- }
-
- else
- {
- if( tel_get_sim_iccid(&icc_data) != 0 )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- error_code = SIM_ERROR_OPERATION_FAILED;
- }
- else
- {
- *icc_id = strndup(icc_data.icc_num, icc_data.icc_length);
- if( *icc_id == NULL )
- {
- LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
- error_code = SIM_ERROR_OUT_OF_MEMORY;
- }
+ SIM_INIT(th);
+
+ if (tel_get_sim_init_info(th, &sim_card_state, &card_changed) != 0 || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED) {
+ LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
+ error_code = SIM_ERROR_NOT_AVAILABLE;
+ } else {
+ sync_gv = g_dbus_connection_call_sync(th->dbus_connection, DBUS_TELEPHONY_SERVICE, th->path,
+ DBUS_TELEPHONY_SIM_INTERFACE, "GetICCID", NULL, NULL, G_DBUS_CALL_FLAGS_NONE, -1,
+ NULL, &gerr);
+
+ if (sync_gv) {
+ g_variant_get(sync_gv, "(is)", &result, &iccid);
+ if (result == TAPI_SIM_ACCESS_SUCCESS) {
+ if (iccid != NULL && strlen(iccid) != 0) {
+ *icc_id = (char*) malloc(strlen(iccid) + 1);
+ if (*icc_id == NULL) {
+ LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
+ error_code = SIM_ERROR_OUT_OF_MEMORY;
+ } else {
+ snprintf(*icc_id, strlen(iccid) + 1, "%s", iccid);
+ }
+ } else {
+ *icc_id = NULL;
+ }
+ } else {
+ error_code = _convert_access_rt_to_sim_error(result);
+ }
+ } else {
+ LOGE("g_dbus_conn failed. error (%s)", gerr->message);
+ g_error_free(gerr);
+ error_code = SIM_ERROR_OPERATION_FAILED;
}
}
-
- tel_deinit();
+ tel_deinit(th);
return error_code;
}
-
int sim_get_mcc(char** mcc)
{
TelSimImsiInfo_t sim_imsi_info;
int error_code = SIM_ERROR_NONE;
int card_changed = 0;
TelSimCardStatus_t sim_card_state = 0x00;
+ struct tapi_handle *th = NULL;
SIM_CHECK_INPUT_PARAMETER(mcc);
- SIM_INIT();
-
- if( tel_get_sim_init_info(&sim_card_state, &card_changed) != 0
- || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED )
- {
- LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
- error_code = SIM_ERROR_NOT_AVAILABLE;
- }
- else
- {
- if( tel_get_sim_imsi(&sim_imsi_info) != 0 )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- error_code = SIM_ERROR_OPERATION_FAILED;
- }
- else
- {
- *mcc = (char*)malloc(sizeof(char) * (TAPI_SIM_MCC_CODE_LEN+1));
- if( *mcc == NULL )
- {
+ SIM_INIT(th);
+
+ if (tel_get_sim_init_info(th, &sim_card_state, &card_changed) != 0 || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED) {
+ LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
+ error_code = SIM_ERROR_NOT_AVAILABLE;
+ } else {
+ if (tel_get_sim_imsi(th, &sim_imsi_info) != 0) {
+ LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
+ error_code = SIM_ERROR_OPERATION_FAILED;
+ } else {
+ *mcc = (char*) malloc(sizeof(char) * (3 + 1));
+ if (*mcc == NULL) {
LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
- error_code = SIM_ERROR_OUT_OF_MEMORY;
- }
- else
- {
- strncpy(*mcc, sim_imsi_info.szMcc, TAPI_SIM_MCC_CODE_LEN+1);
+ error_code = SIM_ERROR_OUT_OF_MEMORY;
+ } else {
+ snprintf(*mcc, strlen(sim_imsi_info.szMcc) + 1, "%s", sim_imsi_info.szMcc);
}
}
}
-
- tel_deinit();
+ tel_deinit(th);
return error_code;
}
-
int sim_get_mnc(char** mnc)
{
TelSimImsiInfo_t sim_imsi_info;
int error_code = SIM_ERROR_NONE;
int card_changed = 0;
- TelSimCardStatus_t sim_card_state = 0x00;
+ TelSimCardStatus_t sim_card_state = 0x00;
+ struct tapi_handle *th = NULL;
SIM_CHECK_INPUT_PARAMETER(mnc);
- SIM_INIT();
+ SIM_INIT(th);
- if( tel_get_sim_init_info(&sim_card_state, &card_changed) != 0
- || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED )
- {
- LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
- error_code = SIM_ERROR_NOT_AVAILABLE;
- }
- else
- {
- if( tel_get_sim_imsi(&sim_imsi_info) != 0 )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- error_code = SIM_ERROR_OPERATION_FAILED;
- }
- else
- {
- *mnc = (char*)malloc(sizeof(char) * (TAPI_SIM_MNC_CODE_LEN+1));
- if( *mnc == NULL )
- {
+ if (tel_get_sim_init_info(th, &sim_card_state, &card_changed) != 0
+ || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED) {
+ LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
+ error_code = SIM_ERROR_NOT_AVAILABLE;
+ } else {
+ if (tel_get_sim_imsi(th, &sim_imsi_info) != 0) {
+ LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
+ error_code = SIM_ERROR_OPERATION_FAILED;
+ } else {
+ *mnc = (char*) malloc(sizeof(char) * (3 + 1));
+ if (*mnc == NULL) {
LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
error_code = SIM_ERROR_OUT_OF_MEMORY;
- }
- else
- {
- strncpy(*mnc, sim_imsi_info.szMnc, TAPI_SIM_MNC_CODE_LEN+1);
+ } else {
+ snprintf(*mnc, strlen(sim_imsi_info.szMnc) + 1, "%s", sim_imsi_info.szMnc);
}
}
}
- tel_deinit();
+ tel_deinit(th);
return SIM_ERROR_NONE;
}
-
int sim_get_msin(char** msin)
{
TelSimImsiInfo_t sim_imsi_info;
int error_code = SIM_ERROR_NONE;
int card_changed = 0;
TelSimCardStatus_t sim_card_state = 0x00;
+ struct tapi_handle *th = NULL;
SIM_CHECK_INPUT_PARAMETER(msin);
- SIM_INIT();
+ SIM_INIT(th);
- if( tel_get_sim_init_info(&sim_card_state, &card_changed) != 0
- || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED )
- {
+ if (tel_get_sim_init_info(th, &sim_card_state, &card_changed) != 0 || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED) {
LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
error_code = SIM_ERROR_NOT_AVAILABLE;
- }
- else
- {
- if( tel_get_sim_imsi(&sim_imsi_info) != 0 )
- {
+ } else {
+ if (tel_get_sim_imsi(th, &sim_imsi_info) != 0) {
LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
error_code = SIM_ERROR_OPERATION_FAILED;
- }
- else
- {
- *msin = (char*)malloc(sizeof(char) * (TAPI_SIM_MSIN_CODE_LEN+1));
- if( *msin == NULL )
- {
+ } else {
+ *msin = (char*) malloc(sizeof(char) * (10 + 1));
+ if (*msin == NULL) {
LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
error_code = SIM_ERROR_OUT_OF_MEMORY;
- }
- else
- {
- strncpy(*msin, sim_imsi_info.szMsin, TAPI_SIM_MSIN_CODE_LEN+1);
+ } else {
+ snprintf(*msin, strlen(sim_imsi_info.szMsin) + 1, "%s", sim_imsi_info.szMsin);
}
}
}
-
- tel_deinit();
+ tel_deinit(th);
return error_code;
}
-
int sim_get_spn(char** spn)
{
int error_code = SIM_ERROR_NONE;
int card_changed = 0;
- TelSimCardStatus_t sim_card_state = 0x00;
- char* service_provider_name = NULL;
+ TelSimCardStatus_t sim_card_state = 0x00;
+ struct tapi_handle *th = NULL;
+ GError *gerr = NULL;
+ GVariant *sync_gv = NULL;
+ TelSimAccessResult_t result = TAPI_SIM_ACCESS_SUCCESS;
+ gchar *spn_str = NULL;
+ guchar dc = 0;
SIM_CHECK_INPUT_PARAMETER(spn);
- SIM_INIT();
+ SIM_INIT(th);
- error_code = tel_get_sim_init_info(&sim_card_state, &card_changed);
- if( error_code != 0 || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED )
- {
- LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
- error_code = SIM_ERROR_NOT_AVAILABLE;
- }
- else
- {
- service_provider_name = vconf_get_str(VCONFKEY_TELEPHONY_SPN_NAME);
- if( service_provider_name == NULL )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
+ if (tel_get_sim_init_info(th, &sim_card_state, &card_changed) != 0
+ || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED) {
+ LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
+ error_code = SIM_ERROR_NOT_AVAILABLE;
+ } else {
+ sync_gv = g_dbus_connection_call_sync(th->dbus_connection, DBUS_TELEPHONY_SERVICE, th->path,
+ DBUS_TELEPHONY_SIM_INTERFACE, "GetSpn", NULL, NULL, G_DBUS_CALL_FLAGS_NONE, -1,
+ NULL, &gerr);
+
+ if (sync_gv) {
+ g_variant_get(sync_gv, "(iys)", &result, &dc, &spn_str);
+ if (result == TAPI_SIM_ACCESS_SUCCESS) {
+ if (spn_str != NULL && strlen(spn_str) != 0) {
+ *spn = (char*) malloc(strlen(spn_str) + 1);
+ if (*spn == NULL) {
+ LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
+ error_code = SIM_ERROR_OUT_OF_MEMORY;
+ } else {
+ snprintf(*spn, strlen(spn_str) + 1, "%s", spn_str);
+ }
+ } else {
+ *spn = NULL;
+ }
+ } else {
+ error_code = _convert_access_rt_to_sim_error(result);
+ }
+ } else {
+ LOGE("g_dbus_conn failed. error (%s)", gerr->message);
+ g_error_free(gerr);
error_code = SIM_ERROR_OPERATION_FAILED;
}
- else if( strlen(service_provider_name) == 0 )
- {
- LOGI("[%s] spn has no value", __FUNCTION__);
- free(service_provider_name);
- *spn = NULL;
- }
- else
- {
- *spn = service_provider_name;
- }
}
-
- tel_deinit();
+ tel_deinit(th);
return error_code;
}
-
int sim_get_cphs_operator_name(char** full_name, char** short_name)
{
- TelSimCphsLocalInfo_t cphs_info;
int error_code = SIM_ERROR_NONE;
int card_changed = 0;
TelSimCardStatus_t sim_card_state = 0x00;
+ struct tapi_handle *th = NULL;
+ GError *gerr = NULL;
+ GVariant *sync_gv = NULL;
+ TelSimAccessResult_t result = TAPI_SIM_ACCESS_SUCCESS;
+ gchar *full_str = NULL;
+ gchar *short_str = NULL;
SIM_CHECK_INPUT_PARAMETER(full_name);
SIM_CHECK_INPUT_PARAMETER(short_name);
- SIM_INIT();
+ SIM_INIT(th);
- if( tel_get_sim_init_info(&sim_card_state, &card_changed) != 0
- || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED )
- {
+ if (tel_get_sim_init_info(th, &sim_card_state, &card_changed) != 0
+ || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED) {
LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
error_code = SIM_ERROR_NOT_AVAILABLE;
- }
- else
- {
- if( tel_get_sim_cphs_info(&cphs_info) != 0 )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- error_code = SIM_ERROR_OPERATION_FAILED;
- }
- else
- {
- if(cphs_info.opname.NameLength)
- {
- *full_name = strndup((const char*)cphs_info.opname.OperatorName, cphs_info.opname.NameLength);
- if(*full_name == NULL)
- {
- LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
- error_code = SIM_ERROR_OUT_OF_MEMORY;
+ } else {
+ sync_gv = g_dbus_connection_call_sync(th->dbus_connection, DBUS_TELEPHONY_SERVICE, th->path,
+ DBUS_TELEPHONY_SIM_INTERFACE, "GetCphsNetName", NULL, NULL, G_DBUS_CALL_FLAGS_NONE,
+ -1, NULL, &gerr);
+
+ if (sync_gv) {
+ g_variant_get(sync_gv, "(iss)", &result, &full_str, &short_str);
+ if (result == TAPI_SIM_ACCESS_SUCCESS) {
+ if (full_str != NULL && strlen(full_str) != 0) {
+ *full_name = (char*) malloc(strlen(full_str) + 1);
+ if (*full_name == NULL) {
+ LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
+ error_code = SIM_ERROR_OUT_OF_MEMORY;
+ } else {
+ snprintf(*full_name, strlen(full_str) + 1, "%s", full_str);
+ }
+ } else {
+ *full_name = NULL;
}
- }
- else
- {
- *full_name = NULL;
- }
- if(cphs_info.opshortform.ShortNameLength)
- {
- *short_name = strndup((const char*)cphs_info.opshortform.OperatorShortName, cphs_info.opshortform.ShortNameLength);
- if(*short_name == NULL)
- {
- LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
- error_code = SIM_ERROR_OUT_OF_MEMORY;
+ if (short_str != NULL && strlen(short_str) != 0) {
+ *short_name = (char*) malloc(strlen(short_str) + 1);
+ if (*short_name == NULL) {
+ LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
+ error_code = SIM_ERROR_OUT_OF_MEMORY;
+ } else {
+ snprintf(*short_name, strlen(short_str) + 1, "%s", short_str);
+ }
+ } else {
+ *short_name = NULL;
}
+ } else {
+ error_code = _convert_access_rt_to_sim_error(result);
}
- else
- {
- *short_name = NULL;
- }
+ } else {
+ LOGE("g_dbus_conn failed. error (%s)", gerr->message);
+ g_error_free(gerr);
+ error_code = SIM_ERROR_OPERATION_FAILED;
}
}
-
- tel_deinit();
+ tel_deinit(th);
return error_code;
}
int card_changed = 0;
TelSimCardStatus_t sim_card_state = 0x00;
int error_code = SIM_ERROR_NONE;
+ struct tapi_handle *th = NULL;
SIM_CHECK_INPUT_PARAMETER(sim_state);
- SIM_INIT();
+ SIM_INIT(th);
- if( tel_get_sim_init_info(&sim_card_state, &card_changed) != 0 )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
+ if (tel_get_sim_init_info(th, &sim_card_state, &card_changed) != 0) {
+ LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
error_code = SIM_ERROR_OPERATION_FAILED;
- }
- else
- {
- switch(sim_card_state)
- {
+ } else {
+ switch (sim_card_state) {
case TAPI_SIM_STATUS_CARD_ERROR:
*sim_state = SIM_STATE_UNAVAILABLE;
break;
break;
case TAPI_SIM_STATUS_SIM_PUK_REQUIRED:
*sim_state = SIM_STATE_LOCKED;
- break;
+ break;
case TAPI_SIM_STATUS_CARD_BLOCKED:
*sim_state = SIM_STATE_UNAVAILABLE;
- break;
+ break;
case TAPI_SIM_STATUS_SIM_NCK_REQUIRED:
*sim_state = SIM_STATE_LOCKED;
- break;
+ break;
case TAPI_SIM_STATUS_SIM_NSCK_REQUIRED:
*sim_state = SIM_STATE_LOCKED;
- break;
+ break;
case TAPI_SIM_STATUS_SIM_SPCK_REQUIRED:
*sim_state = SIM_STATE_LOCKED;
- break;
+ break;
case TAPI_SIM_STATUS_SIM_CCK_REQUIRED:
*sim_state = SIM_STATE_LOCKED;
- break;
+ break;
case TAPI_SIM_STATUS_CARD_REMOVED:
*sim_state = SIM_STATE_UNAVAILABLE;
- break;
+ break;
case TAPI_SIM_STATUS_SIM_LOCK_REQUIRED:
*sim_state = SIM_STATE_LOCKED;
break;
default:
*sim_state = SIM_STATE_UNAVAILABLE;
- break;
+ break;
}
}
- tel_deinit();
+ tel_deinit(th);
return error_code;
}
-
int sim_get_subscriber_number(char** subscriber_number)
{
int error_code = SIM_ERROR_NONE;
int card_changed = 0;
- TelSimCardStatus_t sim_card_state = 0x00;
- char* subscriber_number_p = NULL;
+ TelSimCardStatus_t sim_card_state = 0x00;
+ struct tapi_handle *th = NULL;
+ GError *gerr = NULL;
+ GVariant *sync_gv = NULL;
+ GVariant *value = NULL;
+ GVariantIter *iter = NULL;
+ GVariantIter *iter_row = NULL;
+ const gchar *key = NULL;
+ const gchar *str_value = NULL;
+ TelSimAccessResult_t result = TAPI_SIM_ACCESS_SUCCESS;
+ TelSimMsisdnList_t list;
+ int i = 0;
SIM_CHECK_INPUT_PARAMETER(subscriber_number);
- SIM_INIT();
+ SIM_INIT(th);
- error_code = tel_get_sim_init_info(&sim_card_state, &card_changed);
- if( error_code != 0 || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED )
- {
- LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
- error_code = SIM_ERROR_NOT_AVAILABLE;
- }
- else
- {
- subscriber_number_p = vconf_get_str(VCONFKEY_TELEPHONY_SUBSCRIBER_NUMBER);
- if( subscriber_number_p == NULL )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
+ if (tel_get_sim_init_info(th, &sim_card_state, &card_changed) != 0 || sim_card_state != TAPI_SIM_STATUS_SIM_INIT_COMPLETED) {
+ LOGE("[%s] NOT_AVAILABLE(0x%08x)", __FUNCTION__, SIM_ERROR_NOT_AVAILABLE);
+ error_code = SIM_ERROR_NOT_AVAILABLE;
+ } else {
+ sync_gv = g_dbus_connection_call_sync(th->dbus_connection, DBUS_TELEPHONY_SERVICE, th->path,
+ DBUS_TELEPHONY_SIM_INTERFACE, "GetMSISDN", NULL, NULL, G_DBUS_CALL_FLAGS_NONE, -1,
+ NULL, &gerr);
+
+ if (sync_gv) {
+ memset(&list, 0, sizeof(TelSimMsisdnList_t));
+ g_variant_get(sync_gv, "(iaa{sv})", &result, &iter);
+ list.count = g_variant_iter_n_children(iter);
+
+ if (result == TAPI_SIM_ACCESS_SUCCESS) {
+ i = 0;
+ while (g_variant_iter_next(iter, "a{sv}", &iter_row)) {
+ while (g_variant_iter_loop(iter_row, "{sv}", &key, &value)) {
+ if (!g_strcmp0(key, "name")) {
+ str_value = g_variant_get_string(value, NULL);
+ snprintf(list.list[i].name, strlen(str_value) + 1, "%s", str_value);
+ }
+ if (!g_strcmp0(key, "number")) {
+ str_value = g_variant_get_string(value, NULL);
+ snprintf(list.list[i].num, strlen(str_value) + 1, "%s", str_value);
+ }
+ }
+ i++;
+ g_variant_iter_free(iter_row);
+ }
+ g_variant_iter_free(iter);
+
+ if (list.list[0].num != NULL && strlen(list.list[0].num) != 0) {
+ *subscriber_number = (char*) malloc(strlen(list.list[0].num) + 1);
+ if (*subscriber_number == NULL) {
+ LOGE("[%s] OUT_OF_MEMORY(0x%08x)", __FUNCTION__, SIM_ERROR_OUT_OF_MEMORY);
+ error_code = SIM_ERROR_OUT_OF_MEMORY;
+ } else {
+ snprintf(*subscriber_number, strlen(list.list[0].num) + 1, "%s",
+ list.list[0].num);
+ }
+ } else {
+ *subscriber_number = NULL;
+ }
+
+ } else {
+ error_code = _convert_access_rt_to_sim_error(result);
+ }
+ } else {
+ LOGE("g_dbus_conn failed. error (%s)", gerr->message);
+ g_error_free(gerr);
error_code = SIM_ERROR_OPERATION_FAILED;
}
- else if( strlen(subscriber_number_p) == 0 )
- {
- LOGI("[%s] subscriber number has no value", __FUNCTION__);
- free(subscriber_number_p);
- *subscriber_number = NULL;
- }
- else
- {
- *subscriber_number = subscriber_number_p;
- }
}
-
- tel_deinit();
+ tel_deinit(th);
return error_code;
}
-int sim_set_state_changed_cb(sim_state_changed_cb sim_cb, void* user_data)
+static void on_noti_sim_status(struct tapi_handle *handle, const char *noti_id, void *data,
+ void *user_data)
{
+ TelSimCardStatus_t *status = data;
+ sim_cb_data *ccb = user_data;
sim_state_e state = SIM_STATE_UNKNOWN;
-
- SIM_CHECK_INPUT_PARAMETER(sim_cb);
-
- if( sim_get_state(&state) != SIM_ERROR_NONE )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to get current state of SIM", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- return SIM_ERROR_OPERATION_FAILED;
+ sim_state_changed_cb cb;
+ LOGE("event(%s) receive with status[%d]", TAPI_NOTI_SIM_STATUS, *status);
+
+ switch (*status) {
+ case TAPI_SIM_STATUS_CARD_ERROR:
+ state = SIM_STATE_UNAVAILABLE;
+ break;
+ case TAPI_SIM_STATUS_CARD_NOT_PRESENT:
+ state = SIM_STATE_UNAVAILABLE;
+ break;
+ case TAPI_SIM_STATUS_SIM_INITIALIZING:
+ state = SIM_STATE_UNKNOWN;
+ break;
+ case TAPI_SIM_STATUS_SIM_INIT_COMPLETED:
+ state = SIM_STATE_AVAILABLE;
+ break;
+ case TAPI_SIM_STATUS_SIM_PIN_REQUIRED:
+ state = SIM_STATE_LOCKED;
+ break;
+ case TAPI_SIM_STATUS_SIM_PUK_REQUIRED:
+ state = SIM_STATE_LOCKED;
+ break;
+ case TAPI_SIM_STATUS_CARD_BLOCKED:
+ state = SIM_STATE_UNAVAILABLE;
+ break;
+ case TAPI_SIM_STATUS_SIM_NCK_REQUIRED:
+ state = SIM_STATE_LOCKED;
+ break;
+ case TAPI_SIM_STATUS_SIM_NSCK_REQUIRED:
+ state = SIM_STATE_LOCKED;
+ break;
+ case TAPI_SIM_STATUS_SIM_SPCK_REQUIRED:
+ state = SIM_STATE_LOCKED;
+ break;
+ case TAPI_SIM_STATUS_SIM_CCK_REQUIRED:
+ state = SIM_STATE_LOCKED;
+ break;
+ case TAPI_SIM_STATUS_CARD_REMOVED:
+ state = SIM_STATE_UNAVAILABLE;
+ break;
+ case TAPI_SIM_STATUS_SIM_LOCK_REQUIRED:
+ state = SIM_STATE_LOCKED;
+ break;
+ default:
+ state = SIM_STATE_UNAVAILABLE;
+ break;
}
-
- if( init_is_registered == false)
- {
- if( vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_INIT, (vconf_callback_fn)__sim_state_changed_cb_adapter, NULL) != 0 )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback of sim initialization",
- __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- return SIM_ERROR_OPERATION_FAILED;
- }
- init_is_registered = true;
- }
-
- if( chv_is_registered == false )
- {
- if( vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_CHV, (vconf_callback_fn)__sim_state_changed_cb_adapter, NULL) != 0)
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback of several lock verification",
- __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- return SIM_ERROR_OPERATION_FAILED;
- }
- chv_is_registered = true;
- }
-
- if( slot_is_registered == false )
- {
- if(vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT, (vconf_callback_fn)__sim_state_changed_cb_adapter, NULL) != 0)
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to register callback of sim slot",
- __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- return SIM_ERROR_OPERATION_FAILED;
- }
- slot_is_registered = true;
+ if (!ccb->cb) {
+ LOGE("[%s] callback is null", __FUNCTION__);
+ return;
}
-
- sim_state_cb.previous_state = state;
- sim_state_cb.cb = sim_cb;
- sim_state_cb.user_data = user_data;
-
- return SIM_ERROR_NONE;
+ cb = ccb->cb;
+ cb(state, ccb->user_data);
}
-int sim_unset_state_changed_cb()
+int sim_set_state_changed_cb(sim_state_changed_cb sim_cb, void* user_data)
{
- if( init_is_registered == true)
- {
- if( vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_INIT, (vconf_callback_fn)__sim_state_changed_cb_adapter) != 0 )
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback of sim initialization",
- __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- return SIM_ERROR_OPERATION_FAILED;
- }
- init_is_registered = false;
- }
+ int error_code = SIM_ERROR_NONE;
+ int ret;
+ sim_cb_data *ccb = NULL;
- if( chv_is_registered == true )
- {
- if( vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_CHV, (vconf_callback_fn)__sim_state_changed_cb_adapter) != 0)
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback of several lock verification",
- __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- return SIM_ERROR_OPERATION_FAILED;
- }
- chv_is_registered = false;
- }
+ SIM_CHECK_INPUT_PARAMETER(sim_cb);
- if( slot_is_registered == true )
- {
- if( vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT, (vconf_callback_fn)__sim_state_changed_cb_adapter) != 0)
- {
- LOGE("[%s] OPERATION_FAILED(0x%08x) : fail to unregister callback of sim slot",
- __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
- return SIM_ERROR_OPERATION_FAILED;
- }
- slot_is_registered = false;
+ ghandle = tel_init(NULL);
+ if (!ghandle) {
+ LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
+ return SIM_ERROR_OPERATION_FAILED;
}
- sim_state_cb.previous_state = SIM_STATE_UNKNOWN;
- sim_state_cb.cb = NULL;
- sim_state_cb.user_data = NULL;
+ ccb = (sim_cb_data*) calloc(sizeof(sim_cb_data), 1);
+ ccb->th = ghandle;
+ ccb->cb = (void*) sim_cb;
+ ccb->user_data = user_data;
- return SIM_ERROR_NONE;
+ ret = tel_register_noti_event(ghandle, TAPI_NOTI_SIM_STATUS, on_noti_sim_status, ccb);
+ if (ret != TAPI_API_SUCCESS) error_code = SIM_ERROR_OPERATION_FAILED;
+ return error_code;
}
-static void __sim_state_changed_cb_adapter(keynode_t *node, void* user_data)
+int sim_unset_state_changed_cb()
{
- sim_state_e sim_state = SIM_STATE_UNKNOWN;
-
- if( sim_state_cb.cb == NULL )
- {
- return;
- }
+ int error_code = SIM_ERROR_NONE;
+ int ret;
- if( sim_get_state(&sim_state) == SIM_ERROR_NONE )
- {
- if( sim_state != sim_state_cb.previous_state )
- {
- ((sim_state_changed_cb)(sim_state_cb.cb))(sim_state, sim_state_cb.user_data);
- sim_state_cb.previous_state = sim_state;
+ if (ghandle == NULL) {
+ ghandle = tel_init(NULL);
+ if (!ghandle) {
+ LOGE("[%s] OPERATION_FAILED(0x%08x)", __FUNCTION__, SIM_ERROR_OPERATION_FAILED);
+ return SIM_ERROR_OPERATION_FAILED;
}
}
+ ret = tel_deregister_noti_event(ghandle, TAPI_NOTI_SIM_STATUS);
+ if (ret != TAPI_API_SUCCESS) error_code = SIM_ERROR_OPERATION_FAILED;
+ return error_code;
}
-
-
-
-
-