From: Wootak Jung Date: Mon, 11 Jan 2016 07:11:15 +0000 (+0900) Subject: Add new modem APIs X-Git-Tag: submit/tizen/20160303.013045~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d303f78ac34e56e5976d5479d659bfc0bdaf1ecd;p=platform%2Fcore%2Fapi%2Ftelephony.git Add new modem APIs - telephony_modem_get_meid - telephony_modem_get_esn Change-Id: I194a3495c59413a26208a5ec8b5647b0e8afac65 --- diff --git a/include/telephony_modem.h b/include/telephony_modem.h index 7e8d15c..659fff7 100644 --- a/include/telephony_modem.h +++ b/include/telephony_modem.h @@ -37,13 +37,12 @@ extern "C" { * @brief Enumeration for Modem Power Status. * @since_tizen 2.4 */ -typedef enum -{ - TELEPHONY_MODEM_POWER_STATUS_UNKNOWN = -1, /**< Unknown*/ - TELEPHONY_MODEM_POWER_STATUS_ON, /**< Modem power ON */ - TELEPHONY_MODEM_POWER_STATUS_OFF, /**< Modem power OFF */ - TELEPHONY_MODEM_POWER_STATUS_RESET, /**< Modem power RESET */ - TELEPHONY_MODEM_POWER_STATUS_LOW, /**< Modem power LOW */ +typedef enum { + TELEPHONY_MODEM_POWER_STATUS_UNKNOWN = -1, /**< Unknown */ + TELEPHONY_MODEM_POWER_STATUS_ON, /**< Modem power ON */ + TELEPHONY_MODEM_POWER_STATUS_OFF, /**< Modem power OFF */ + TELEPHONY_MODEM_POWER_STATUS_RESET, /**< Modem power RESET */ + TELEPHONY_MODEM_POWER_STATUS_LOW, /**< Modem power LOW */ } telephony_modem_power_status_e; /** @@ -93,6 +92,52 @@ int telephony_modem_get_imei(telephony_h handle, char **imei); int telephony_modem_get_power_status(telephony_h handle, telephony_modem_power_status_e *status); +/** + * @brief Gets the MEID (Mobile Equipment Identifier) of a mobile phone. (for CDMA) + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/telephony + * + * @remarks You must release @c meid using free() on success case. + * + * @param[in] handle The handle from telephony_init() + * @param[out] meid The Mobile Equipment Identifier + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #TELEPHONY_ERROR_NONE Successful + * @retval #TELEPHONY_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #TELEPHONY_ERROR_PERMISSION_DENIED Permission denied + * @retval #TELEPHONY_ERROR_NOT_SUPPORTED Not supported + * @retval #TELEPHONY_ERROR_OPERATION_FAILED Operation failed + */ +int telephony_modem_get_meid(telephony_h handle, char **meid); + +/** + * @brief Gets the ESN (Electronic Serial Number) of a mobile phone. (for CDMA) + * + * @since_tizen 3.0 + * @privlevel public + * @privilege %http://tizen.org/privilege/telephony + * + * @remarks You must release @c esn using free() on success case. + * + * @param[in] handle The handle from telephony_init() + * @param[out] esn The Electronic Serial Number + * + * @return @c 0 on success, + * otherwise a negative error value + * + * @retval #TELEPHONY_ERROR_NONE Successful + * @retval #TELEPHONY_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #TELEPHONY_ERROR_PERMISSION_DENIED Permission denied + * @retval #TELEPHONY_ERROR_NOT_SUPPORTED Not supported + * @retval #TELEPHONY_ERROR_OPERATION_FAILED Operation failed + */ +int telephony_modem_get_esn(telephony_h handle, char **esn); + /** * @} */ @@ -101,4 +146,4 @@ int telephony_modem_get_power_status(telephony_h handle, } #endif -#endif // __CAPI_TELEPHONY_MODEM_H__ +#endif /* __CAPI_TELEPHONY_MODEM_H__ */ diff --git a/packaging/capi-telephony.spec b/packaging/capi-telephony.spec index dfcc156..368d37b 100644 --- a/packaging/capi-telephony.spec +++ b/packaging/capi-telephony.spec @@ -1,6 +1,6 @@ Name: capi-telephony Summary: Telephony Core API -Version: 0.1.52 +Version: 0.1.53 Release: 1 Group: System/Libraries License: Apache-2.0 diff --git a/src/telephony_modem.c b/src/telephony_modem.c index b2c0e5b..1d3616d 100644 --- a/src/telephony_modem.c +++ b/src/telephony_modem.c @@ -27,6 +27,50 @@ #include "telephony_modem.h" #include "telephony_private.h" +static int __get_serial_number(TapiHandle *tapi_h, TelMiscSNInformation *data) +{ + int ret = TELEPHONY_ERROR_OPERATION_FAILED; + GVariant *gv = NULL; + GError *gerr = NULL; + + gv = g_dbus_connection_call_sync(tapi_h->dbus_connection, + DBUS_TELEPHONY_SERVICE, tapi_h->path, DBUS_TELEPHONY_MODEM_INTERFACE, + "GetSerialNumber", NULL, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &gerr); + + if (gv) { + int tapi_result; + char *tapi_esn = NULL, *tapi_meid = NULL, *tapi_imei = NULL, *tapi_imeisv = NULL; + g_variant_get(gv, "(issss)", + &tapi_result, &tapi_esn, &tapi_meid, &tapi_imei, &tapi_imeisv); + if (tapi_result == 0) { + ret = TELEPHONY_ERROR_NONE; + g_strlcpy((gchar *)data->szEsn, tapi_esn, TAPI_MISC_ME_SN_LEN_MAX); + g_strlcpy((gchar *)data->szMeid, tapi_meid, TAPI_MISC_ME_SN_LEN_MAX); + + g_free(tapi_esn); + g_free(tapi_meid); + g_free(tapi_imei); + g_free(tapi_imeisv); + } else { + LOGE("OPERATION_FAILED"); + ret = TELEPHONY_ERROR_OPERATION_FAILED; + } + g_variant_unref(gv); + } else { + LOGE("g_dbus_conn failed. error (%s)", gerr->message); + if (strstr(gerr->message, "AccessDenied")) { + LOGE("PERMISSION_DENIED"); + ret = TELEPHONY_ERROR_PERMISSION_DENIED; + } else { + LOGE("OPERATION_FAILED"); + ret = TELEPHONY_ERROR_OPERATION_FAILED; + } + g_error_free(gerr); + } + + return ret; +} + int telephony_modem_get_imei(telephony_h handle, char **imei) { GVariant *gv = NULL; @@ -115,3 +159,51 @@ int telephony_modem_get_power_status(telephony_h handle, return TELEPHONY_ERROR_NONE; } + +int telephony_modem_get_meid(telephony_h handle, char **meid) +{ + int ret; + TapiHandle *tapi_h; + TelMiscSNInformation data; + + CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE); + CHECK_INPUT_PARAMETER(handle); + tapi_h = ((telephony_data *)handle)->tapi_h; + CHECK_INPUT_PARAMETER(tapi_h); + CHECK_INPUT_PARAMETER(meid); + + ret = __get_serial_number(tapi_h, &data); + if (ret == TELEPHONY_ERROR_NONE) { + if (strlen((gchar *)data.szMeid) != 0) + *meid = strdup((gchar *)data.szMeid); + else + *meid = NULL; + LOGI("MEID:[%s]", *meid); + } + + return ret; +} + +int telephony_modem_get_esn(telephony_h handle, char **esn) +{ + int ret; + TapiHandle *tapi_h; + TelMiscSNInformation data; + + CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE); + CHECK_INPUT_PARAMETER(handle); + tapi_h = ((telephony_data *)handle)->tapi_h; + CHECK_INPUT_PARAMETER(tapi_h); + CHECK_INPUT_PARAMETER(esn); + + ret = __get_serial_number(tapi_h, &data); + if (ret == TELEPHONY_ERROR_NONE) { + if (strlen((gchar *)data.szEsn) != 0) + *esn = strdup((gchar *)data.szEsn); + else + *esn = NULL; + LOGI("ESN:[%s]", *esn); + } + + return ret; +} diff --git a/src/telephony_network.c b/src/telephony_network.c index 402342c..2701d06 100644 --- a/src/telephony_network.c +++ b/src/telephony_network.c @@ -72,6 +72,7 @@ static int __get_serving_network(TapiHandle *tapi_h, TelNetworkServing_t *data) } ret = TELEPHONY_ERROR_NONE; } else { + LOGE("OPERATION_FAILED"); ret = TELEPHONY_ERROR_OPERATION_FAILED; } g_variant_iter_free(iter); @@ -79,8 +80,10 @@ static int __get_serving_network(TapiHandle *tapi_h, TelNetworkServing_t *data) g_variant_unref(dbus_result); } } else if (ret == TAPI_API_ACCESS_DENIED) { + LOGE("PERMISSION_DENIED"); ret = TELEPHONY_ERROR_PERMISSION_DENIED; } else { + LOGE("OPERATION_FAILED"); ret = TELEPHONY_ERROR_OPERATION_FAILED; } @@ -668,16 +671,9 @@ int telephony_network_get_system_id(telephony_h handle, int *sid) CHECK_INPUT_PARAMETER(sid); ret = __get_serving_network(tapi_h, &data); - if (ret == TAPI_API_SUCCESS) { + if (ret == TELEPHONY_ERROR_NONE) { *sid = data.info.cdma_info.system_id; LOGI("sid:[%d]", *sid); - ret = TELEPHONY_ERROR_NONE; - } else if (ret == TAPI_API_ACCESS_DENIED) { - LOGE("PERMISSION_DENIED"); - ret = TELEPHONY_ERROR_PERMISSION_DENIED; - } else { - LOGE("OPERATION_FAILED"); - ret = TELEPHONY_ERROR_OPERATION_FAILED; } return ret; @@ -696,16 +692,9 @@ int telephony_network_get_network_id(telephony_h handle, int *nid) CHECK_INPUT_PARAMETER(nid); ret = __get_serving_network(tapi_h, &data); - if (ret == TAPI_API_SUCCESS) { + if (ret == TELEPHONY_ERROR_NONE) { *nid = data.info.cdma_info.network_id; LOGI("nid:[%d]", *nid); - ret = TELEPHONY_ERROR_NONE; - } else if (ret == TAPI_API_ACCESS_DENIED) { - LOGE("PERMISSION_DENIED"); - ret = TELEPHONY_ERROR_PERMISSION_DENIED; - } else { - LOGE("OPERATION_FAILED"); - ret = TELEPHONY_ERROR_OPERATION_FAILED; } return ret; @@ -724,16 +713,9 @@ int telephony_network_get_base_station_id(telephony_h handle, int *bs_id) CHECK_INPUT_PARAMETER(bs_id); ret = __get_serving_network(tapi_h, &data); - if (ret == TAPI_API_SUCCESS) { + if (ret == TELEPHONY_ERROR_NONE) { *bs_id = data.info.cdma_info.base_station_id; LOGI("bs_id:[%d]", *bs_id); - ret = TELEPHONY_ERROR_NONE; - } else if (ret == TAPI_API_ACCESS_DENIED) { - LOGE("PERMISSION_DENIED"); - ret = TELEPHONY_ERROR_PERMISSION_DENIED; - } else { - LOGE("OPERATION_FAILED"); - ret = TELEPHONY_ERROR_OPERATION_FAILED; } return ret; @@ -752,16 +734,9 @@ int telephony_network_get_base_station_latitude(telephony_h handle, int *bs_lati CHECK_INPUT_PARAMETER(bs_latitude); ret = __get_serving_network(tapi_h, &data); - if (ret == TAPI_API_SUCCESS) { + if (ret == TELEPHONY_ERROR_NONE) { *bs_latitude = data.info.cdma_info.base_station_latitude; LOGI("bs_latitude:[%d]", *bs_latitude); - ret = TELEPHONY_ERROR_NONE; - } else if (ret == TAPI_API_ACCESS_DENIED) { - LOGE("PERMISSION_DENIED"); - ret = TELEPHONY_ERROR_PERMISSION_DENIED; - } else { - LOGE("OPERATION_FAILED"); - ret = TELEPHONY_ERROR_OPERATION_FAILED; } return ret; @@ -780,16 +755,9 @@ int telephony_network_get_base_station_longitude(telephony_h handle, int *bs_lon CHECK_INPUT_PARAMETER(bs_longitude); ret = __get_serving_network(tapi_h, &data); - if (ret == TAPI_API_SUCCESS) { + if (ret == TELEPHONY_ERROR_NONE) { *bs_longitude = data.info.cdma_info.base_station_longitude; LOGI("bs_longitude:[%d]", *bs_longitude); - ret = TELEPHONY_ERROR_NONE; - } else if (ret == TAPI_API_ACCESS_DENIED) { - LOGE("PERMISSION_DENIED"); - ret = TELEPHONY_ERROR_PERMISSION_DENIED; - } else { - LOGE("OPERATION_FAILED"); - ret = TELEPHONY_ERROR_OPERATION_FAILED; } return ret; diff --git a/test/test_all_api.c b/test/test_all_api.c index c0e5460..bf29011 100644 --- a/test/test_all_api.c +++ b/test/test_all_api.c @@ -354,6 +354,8 @@ int main() /* Modem value */ char *imei = NULL; + char *meid = NULL; + char *esn = NULL; telephony_modem_power_status_e power_status = 0; /* Ready */ @@ -651,6 +653,22 @@ int main() else LOGI("Modem power status is [%d] (0=on,1=off,2=rst,3=low)", power_status); + ret_value = telephony_modem_get_meid(handle_list.handle[0], &meid); + if (ret_value != TELEPHONY_ERROR_NONE) { + LOGE("telephony_modem_get_meid() failed!!! [%d]", ret_value); + } else { + LOGI("MEID is [%s]", meid); + free(meid); + } + + ret_value = telephony_modem_get_esn(handle_list.handle[0], &esn); + if (ret_value != TELEPHONY_ERROR_NONE) { + LOGE("telephony_modem_get_esn() failed!!! [%d]", ret_value); + } else { + LOGI("ESN is [%s]", esn); + free(esn); + } + /* set_noti_cb */ for (i = 0; i < (sizeof(sim_noti_tbl) / sizeof(int)); i++) { ret_value = telephony_set_noti_cb(handle_list.handle[0], sim_noti_tbl[i], sim_noti_cb, NULL);