Add new modem APIs 53/56553/3
authorWootak Jung <wootak.jung@samsung.com>
Mon, 11 Jan 2016 07:11:15 +0000 (16:11 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Tue, 12 Jan 2016 00:10:10 +0000 (09:10 +0900)
- telephony_modem_get_meid
- telephony_modem_get_esn

Change-Id: I194a3495c59413a26208a5ec8b5647b0e8afac65

include/telephony_modem.h
packaging/capi-telephony.spec
src/telephony_modem.c
src/telephony_network.c
test/test_all_api.c

index 7e8d15c5cd08c33dfba9b00eb681648b9c069f19..659fff7410add98034ca1b033747fa48421c26d7 100644 (file)
@@ -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__ */
index dfcc156696e5025335d9e32ed8d9cc7030e10eaf..368d37ba091f8cd30716b2d18caa9f1a7c9dbedd 100644 (file)
@@ -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
index b2c0e5b5a965ba9b0c13c77ee78757375e156d6e..1d3616d59f3baa1753e817e4aa7fa053d6b8058b 100644 (file)
 #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;
+}
index 402342c9065c7e89b44d9edd7fda84e9e0eeb601..2701d060bc1f98c5015bfa0b31882dc1f7f38b37 100644 (file)
@@ -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;
index c0e546027f80295ae40a5b68b672e6abf721a73d..bf2901195b5e09e5ae997666329dc021cb6d099d 100644 (file)
@@ -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);