Add new network APIs & extend network type 60/56260/2
authorWootak Jung <wootak.jung@samsung.com>
Wed, 6 Jan 2016 01:50:53 +0000 (10:50 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Wed, 6 Jan 2016 04:39:27 +0000 (13:39 +0900)
- telephony_network_get_selection_mode
- telephony_network_get_tac
- telephony_network_get_system_id
- telephony_network_get_network_id
- telephony_network_get_base_station_id
- telephony_network_get_base_station_latitude
- telephony_network_get_base_station_longitude

Change-Id: Ia5517cec78e60c8924f05b9b0b814337bd2f3515

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

index b6958f8c41ea30f09d608fe7688a495f38144e75..92b596f016fcdbb9542b847f339251cab30e1195 100644 (file)
@@ -39,67 +39,69 @@ extern "C"
  * @details #TELEPHONY_NETWORK_RSSI_6 indicates the highest strength.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
-typedef enum
-{
-    TELEPHONY_NETWORK_RSSI_0, /**< Strength 0 */
-    TELEPHONY_NETWORK_RSSI_1, /**< Strength 1 */
-    TELEPHONY_NETWORK_RSSI_2, /**< Strength 2 */
-    TELEPHONY_NETWORK_RSSI_3, /**< Strength 3 */
-    TELEPHONY_NETWORK_RSSI_4, /**< Strength 4 */
-    TELEPHONY_NETWORK_RSSI_5, /**< Strength 5 */
-    TELEPHONY_NETWORK_RSSI_6, /**< Strength 6 */
+typedef enum {
+       TELEPHONY_NETWORK_RSSI_0, /**< Strength 0 */
+       TELEPHONY_NETWORK_RSSI_1, /**< Strength 1 */
+       TELEPHONY_NETWORK_RSSI_2, /**< Strength 2 */
+       TELEPHONY_NETWORK_RSSI_3, /**< Strength 3 */
+       TELEPHONY_NETWORK_RSSI_4, /**< Strength 4 */
+       TELEPHONY_NETWORK_RSSI_5, /**< Strength 5 */
+       TELEPHONY_NETWORK_RSSI_6, /**< Strength 6 */
 } telephony_network_rssi_e;
 
-
 /**
  * @brief Enumeration for Network Type.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
-typedef enum
-{
-    TELEPHONY_NETWORK_TYPE_UNKNOWN, /**< Unknown */
-    TELEPHONY_NETWORK_TYPE_GSM,     /**< 2G GSM network type */
-    TELEPHONY_NETWORK_TYPE_GPRS,    /**< 2.5G GPRS network type */
-    TELEPHONY_NETWORK_TYPE_EDGE,    /**< 2.5G EDGE network type */
-    TELEPHONY_NETWORK_TYPE_UMTS,    /**< 3G UMTS network type */
-    TELEPHONY_NETWORK_TYPE_HSDPA,   /**< HSDPA network type */
-    TELEPHONY_NETWORK_TYPE_LTE,     /**< LTE network type */
+typedef enum {
+       TELEPHONY_NETWORK_TYPE_UNKNOWN,         /**< Unknown */
+       TELEPHONY_NETWORK_TYPE_GSM,             /**< 2G GSM network type */
+       TELEPHONY_NETWORK_TYPE_GPRS,            /**< 2.5G GPRS network type */
+       TELEPHONY_NETWORK_TYPE_EDGE,            /**< 2.5G EDGE network type */
+       TELEPHONY_NETWORK_TYPE_UMTS,            /**< 3G UMTS network type */
+       TELEPHONY_NETWORK_TYPE_HSDPA,           /**< HSDPA network type */
+       TELEPHONY_NETWORK_TYPE_LTE,             /**< LTE network type */
+       TELEPHONY_NETWORK_TYPE_IS95A,           /**< IS95A network type (@b Since: 3.0) */
+       TELEPHONY_NETWORK_TYPE_IS95B,           /**< IS95B network type (@b Since: 3.0) */
+       TELEPHONY_NETWORK_TYPE_CDMA_1X,         /**< CDMA 1x network type (@b Since: 3.0) */
+       TELEPHONY_NETWORK_TYPE_EVDO_REV_0,      /**< EVDO revision 0 network type (@b Since: 3.0) */
+       TELEPHONY_NETWORK_TYPE_EVDO_REV_A,      /**< EVDO revision A network type (@b Since: 3.0) */
+       TELEPHONY_NETWORK_TYPE_EVDO_REV_B,      /**< EVDO revision B network type (@b Since: 3.0) */
+       TELEPHONY_NETWORK_TYPE_EVDV,            /**< EVDV network type (@b Since: 3.0) */
+       TELEPHONY_NETWORK_TYPE_EHRPD,           /**< EHRPD network type (@b Since: 3.0) */
 } telephony_network_type_e;
 
 /**
  * @brief Enumeration for PS Type.
  * @since_tizen 2.4
  */
-typedef enum
-{
-    TELEPHONY_NETWORK_PS_TYPE_UNKNOWN, /**< Unknown */
-    TELEPHONY_NETWORK_PS_TYPE_HSDPA,    /**< HSDPA ps type */
-    TELEPHONY_NETWORK_PS_TYPE_HSUPA,    /**< HSUPA ps type */
-    TELEPHONY_NETWORK_PS_TYPE_HSPA,      /**< HSPA ps type */
-    TELEPHONY_NETWORK_PS_TYPE_HSPAP,   /**< HSPAP ps type */
+typedef enum {
+       TELEPHONY_NETWORK_PS_TYPE_UNKNOWN,      /**< Unknown */
+       TELEPHONY_NETWORK_PS_TYPE_HSDPA,        /**< HSDPA ps type */
+       TELEPHONY_NETWORK_PS_TYPE_HSUPA,        /**< HSUPA ps type */
+       TELEPHONY_NETWORK_PS_TYPE_HSPA,         /**< HSPA ps type */
+       TELEPHONY_NETWORK_PS_TYPE_HSPAP,        /**< HSPAP ps type */
 } telephony_network_ps_type_e;
 
 /**
  * @brief Enumeration for Network Service State.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  */
-typedef enum
-{
-    TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE,     /**< In service */
-    TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE, /**< Out of service */
-    TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY, /**< Only emergency call is allowed */
+typedef enum {
+       TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE,     /**< In service */
+       TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE, /**< Out of service */
+       TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY, /**< Only emergency call is allowed */
 } telephony_network_service_state_e;
 
 /**
  * @brief Enumeration for Network Name Priority.
  * @since_tizen 2.4
  */
-typedef enum
-{
-    TELEPHONY_NETWORK_NAME_OPTION_UNKNOWN, /**< Unknown */
-    TELEPHONY_NETWORK_NAME_OPTION_SPN,     /**< Network name displayed by SPN */
-    TELEPHONY_NETWORK_NAME_OPTION_NETWORK, /**< Network name displayed by Network */
-    TELEPHONY_NETWORK_NAME_OPTION_ANY,    /**< Network name displayed by SPN or Network */
+typedef enum {
+       TELEPHONY_NETWORK_NAME_OPTION_UNKNOWN,  /**< Unknown */
+       TELEPHONY_NETWORK_NAME_OPTION_SPN,      /**< Network name displayed by SPN */
+       TELEPHONY_NETWORK_NAME_OPTION_NETWORK,  /**< Network name displayed by Network */
+       TELEPHONY_NETWORK_NAME_OPTION_ANY,      /**< Network name displayed by SPN or Network */
 } telephony_network_name_option_e;
 
 /**
@@ -107,9 +109,9 @@ typedef enum
  * @since_tizen 2.4
  */
 typedef enum {
-       TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN = -1,  /**< Unknown status */
-       TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_SIM1 = 0,      /**< SIM 1 */
-       TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_SIM2           /**< SIM 2 */
+       TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN = -1,       /**< Unknown status */
+       TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_SIM1 = 0,           /**< SIM 1 */
+       TELEPHONY_NETWORK_DEFAULT_DATA_SUBS_SIM2                /**< SIM 2 */
 } telephony_network_default_data_subs_e;
 
 /**
@@ -117,13 +119,22 @@ typedef enum {
  * @since_tizen 2.4
  */
 typedef enum {
-       TELEPHONY_NETWORK_DEFAULT_SUBS_UNKNOWN = -1,  /**<  Unknown status **/
-       TELEPHONY_NETWORK_DEFAULT_SUBS_SIM1 = 0, /**< SIM 1 network **/
-       TELEPHONY_NETWORK_DEFAULT_SUBS_SIM2 /**<  SIM 2 network **/
+       TELEPHONY_NETWORK_DEFAULT_SUBS_UNKNOWN = -1,    /**< Unknown status */
+       TELEPHONY_NETWORK_DEFAULT_SUBS_SIM1 = 0,        /**< SIM 1 network */
+       TELEPHONY_NETWORK_DEFAULT_SUBS_SIM2             /**< SIM 2 network */
 } telephony_network_default_subs_e;
 
 /**
- * @brief Gets the LAC (Location Area Code) of the current network.
+ * @brief Enumeration for network selection mode.
+ * @since_tizen 3.0
+ */
+typedef enum {
+       TELEPHONY_NETWORK_SELECTION_MODE_AUTOMATIC,     /**< Automatic mode */
+       TELEPHONY_NETWORK_SELECTION_MODE_MANUAL         /**< Manual mode */
+} telephony_network_selection_mode_e;
+
+/**
+ * @brief Gets the LAC (Location Area Code) of the current location.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @privlevel public
@@ -148,7 +159,7 @@ typedef enum {
 int telephony_network_get_lac(telephony_h handle, int *lac);
 
 /**
- * @brief Gets the cell ID.
+ * @brief Gets the cell ID of the current location.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @privlevel public
@@ -199,7 +210,7 @@ int telephony_network_get_cell_id(telephony_h handle, int *cell_id);
 int telephony_network_get_rssi(telephony_h handle, telephony_network_rssi_e *rssi);
 
 /**
- * @brief Gets the roaming state.
+ * @brief Gets the roaming state of the current registered network.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @privlevel public
@@ -331,7 +342,7 @@ int telephony_network_get_network_name(telephony_h handle, char **network_name);
  * @see telephony_network_get_service_state()
  */
 int telephony_network_get_type(telephony_h handle,
-    telephony_network_type_e *network_type);
+       telephony_network_type_e *network_type);
 
 /**
  * @brief Gets the packet service type of the current registered network.
@@ -382,7 +393,7 @@ int telephony_network_get_ps_type(telephony_h handle, telephony_network_ps_type_
  * @see telephony_network_get_service_state()
  */
 int telephony_network_get_network_name_option(telephony_h handle,
-    telephony_network_name_option_e *network_name_option);
+       telephony_network_name_option_e *network_name_option);
 
 /**
  * @brief Gets the current network state of the telephony service.
@@ -406,7 +417,7 @@ int telephony_network_get_network_name_option(telephony_h handle,
  * @retval #TELEPHONY_ERROR_OPERATION_FAILED  Operation failed
  */
 int telephony_network_get_service_state(telephony_h handle,
-    telephony_network_service_state_e *network_service_state);
+       telephony_network_service_state_e *network_service_state);
 
 /**
  * @brief Gets the current default subscription for data service (Packet Switched).
@@ -454,6 +465,178 @@ int telephony_network_get_default_data_subscription(telephony_h handle,
 int telephony_network_get_default_subscription(telephony_h handle,
        telephony_network_default_subs_e *default_sub);
 
+/**
+ * @brief Gets the network selection mode.
+ *
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/telephony
+ *
+ * @param[in] handle The handle from telephony_init()
+ * @param[out] mode The network selection mode
+ *
+ * @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_network_get_selection_mode(telephony_h handle,
+       telephony_network_selection_mode_e *mode);
+
+/**
+ * @brief Gets the TAC (Tracking Area Code) of the current location. (for LTE network)
+ *
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/telephony
+ *
+ * @param[in] handle The handle from telephony_init()
+ * @param[out] tac The Tracking Area Code
+ *
+ * @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
+ *
+ * @pre The Network service state must be #TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE.
+ *
+ * @see telephony_network_get_service_state()
+ */
+int telephony_network_get_tac(telephony_h handle, int *tac);
+
+/**
+ * @brief Gets the system ID of the current location. (for CDMA network)
+ *
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/telephony
+ *
+ * @param[in] handle The handle from telephony_init()
+ * @param[out] sid The system ID
+ *
+ * @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
+ *
+ * @pre The Network service state must be #TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE.
+ *
+ * @see telephony_network_get_service_state()
+ */
+int telephony_network_get_system_id(telephony_h handle, int *sid);
+
+/**
+ * @brief Gets the network ID of the current location. (for CDMA network)
+ *
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/telephony
+ *
+ * @param[in] handle The handle from telephony_init()
+ * @param[out] nid The network ID
+ *
+ * @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
+ *
+ * @pre The Network service state must be #TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE.
+ *
+ * @see telephony_network_get_service_state()
+ */
+int telephony_network_get_network_id(telephony_h handle, int *nid);
+
+/**
+ * @brief Gets the base station ID of the current location. (for CDMA network)
+ *
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/telephony
+ *
+ * @param[in] handle The handle from telephony_init()
+ * @param[out] bs_id The base station ID
+ *
+ * @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
+ *
+ * @pre The Network service state must be #TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE.
+ *
+ * @see telephony_network_get_service_state()
+ */
+int telephony_network_get_base_station_id(telephony_h handle, int *bs_id);
+
+/**
+ * @brief Gets the base station latitude of the current location. (for CDMA network)
+ *
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/telephony
+ *
+ * @param[in] handle The handle from telephony_init()
+ * @param[out] bs_latitude The base station latitude
+ *
+ * @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
+ *
+ * @pre The Network service state must be #TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE.
+ *
+ * @see telephony_network_get_service_state()
+ */
+int telephony_network_get_base_station_latitude(telephony_h handle, int *bs_latitude);
+
+/**
+ * @brief Gets the base station longitude of the current location. (for CDMA network)
+ *
+ * @since_tizen 3.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/telephony
+ *
+ * @param[in] handle The handle from telephony_init()
+ * @param[out] bs_longitude The base station longitude
+ *
+ * @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
+ *
+ * @pre The Network service state must be #TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE.
+ *
+ * @see telephony_network_get_service_state()
+ */
+int telephony_network_get_base_station_longitude(telephony_h handle, int *bs_longitude);
+
 /**
  * @}
  */
@@ -462,4 +645,4 @@ int telephony_network_get_default_subscription(telephony_h handle,
 }
 #endif
 
-#endif // __CAPI_TELEPHONY_NETWORK_INFO_H__
+#endif /* __CAPI_TELEPHONY_NETWORK_INFO_H__ */
index 1bafad5d4cbe8536e3896e5da8e9816bde7b3e19..0918975e1577218d49abb7c3413f59e90ab49b9d 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-telephony
 Summary:    Telephony Core API
-Version:    0.1.50
+Version:    0.1.51
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0
index 951741754e3f7cd46b8a76477f0499956a5f31c2..d7db2f6c8b90f2b13438c4c64bfa70a4f368a2a5 100644 (file)
 #include <sys/types.h>
 #include <unistd.h>
 
+static int __get_serving_network(TapiHandle *tapi_h, TelNetworkServing_t *data)
+{
+       int ret;
+       int act;
+
+       ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_ACT, &act);
+       if (ret == TAPI_API_SUCCESS) {
+               ret = TELEPHONY_ERROR_NONE;
+               data->info.cdma_info.system_id = -1;
+               data->info.cdma_info.network_id = -1;
+               data->info.cdma_info.base_station_id = -1;
+               data->info.cdma_info.base_station_latitude = 0x7FFFFFFF;
+               data->info.cdma_info.base_station_longitude = 0x7FFFFFFF;
+
+               if (act >= TAPI_NETWORK_SYSTEM_IS95A && act <= TAPI_NETWORK_SYSTEM_EHRPD) {
+                       GError *error = NULL;
+                       GVariant *dbus_result;
+
+                       dbus_result = g_dbus_connection_call_sync(tapi_h->dbus_connection,
+                               DBUS_TELEPHONY_SERVICE, tapi_h->path, DBUS_TELEPHONY_NETWORK_INTERFACE,
+                               "GetServingNetwork", NULL, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+
+                       if (dbus_result) {
+                               GVariantIter *iter;
+                               int tapi_result;
+
+                               g_variant_get(dbus_result, "(a{sv}i)", &iter, &tapi_result);
+                               if (tapi_result == 0) {
+                                       const gchar *key = NULL;
+                                       GVariant *value = NULL;
+                                       while (g_variant_iter_loop(iter, "{sv}", &key, &value)) {
+                                               if (!g_strcmp0(key, "c_serving")) {
+                                                       g_variant_get(value, "(iuuuiiuu)",
+                                                               &data->info.cdma_info.carrier,
+                                                               &data->info.cdma_info.system_id,
+                                                               &data->info.cdma_info.network_id,
+                                                               &data->info.cdma_info.base_station_id,
+                                                               &data->info.cdma_info.base_station_latitude,
+                                                               &data->info.cdma_info.base_station_longitude,
+                                                               &data->info.cdma_info.registration_zone,
+                                                               &data->info.cdma_info.pilot_offset);
+                                               }
+                                       }
+                                       ret = TELEPHONY_ERROR_NONE;
+                               } else {
+                                       ret = TELEPHONY_ERROR_OPERATION_FAILED;
+                               }
+                               g_variant_iter_free(iter);
+                       }
+                       g_variant_unref(dbus_result);
+               }
+       } else if (ret == TAPI_API_ACCESS_DENIED) {
+               ret = TELEPHONY_ERROR_PERMISSION_DENIED;
+       } else {
+               ret = TELEPHONY_ERROR_OPERATION_FAILED;
+       }
+
+       return ret;
+}
+
 int telephony_network_get_lac(telephony_h handle, int *lac)
 {
        int ret;
@@ -289,7 +349,7 @@ int telephony_network_get_network_name_option(telephony_h handle, telephony_netw
 int telephony_network_get_type(telephony_h handle, telephony_network_type_e *network_type)
 {
        int ret;
-       int service_type = 0;
+       int act;
        TapiHandle *tapi_h;
 
        CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
@@ -298,25 +358,54 @@ int telephony_network_get_type(telephony_h handle, telephony_network_type_e *net
        CHECK_INPUT_PARAMETER(tapi_h);
        CHECK_INPUT_PARAMETER(network_type);
 
-       ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_SERVICE_TYPE, &service_type);
+       ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_ACT, &act);
        if (ret == TAPI_API_SUCCESS) {
-               switch (service_type) {
-               case TAPI_NETWORK_SERVICE_TYPE_2G:
+               switch (act) {
+               case TAPI_NETWORK_SYSTEM_GSM:
+               case TAPI_NETWORK_SYSTEM_PCS1900:
                        *network_type = TELEPHONY_NETWORK_TYPE_GSM;
                        break;
-               case TAPI_NETWORK_SERVICE_TYPE_2_5G:
+               case TAPI_NETWORK_SYSTEM_GPRS:
                        *network_type = TELEPHONY_NETWORK_TYPE_GPRS;
                        break;
-               case TAPI_NETWORK_SERVICE_TYPE_2_5G_EDGE:
+               case TAPI_NETWORK_SYSTEM_EGPRS:
                        *network_type = TELEPHONY_NETWORK_TYPE_EDGE;
                        break;
-               case TAPI_NETWORK_SERVICE_TYPE_3G:
+               case TAPI_NETWORK_SYSTEM_UMTS:
+               case TAPI_NETWORK_SYSTEM_GSM_AND_UMTS:
                        *network_type = TELEPHONY_NETWORK_TYPE_UMTS;
                        break;
-               case TAPI_NETWORK_SERVICE_TYPE_HSDPA:
+               case TAPI_NETWORK_SYSTEM_HSDPA:
                        *network_type = TELEPHONY_NETWORK_TYPE_HSDPA;
                        break;
-               case TAPI_NETWORK_SERVICE_TYPE_LTE:
+               case TAPI_NETWORK_SYSTEM_IS95A:
+                       *network_type = TELEPHONY_NETWORK_TYPE_IS95A;
+                       break;
+               case TAPI_NETWORK_SYSTEM_IS95B:
+                       *network_type = TELEPHONY_NETWORK_TYPE_IS95B;
+                       break;
+               case TAPI_NETWORK_SYSTEM_CDMA_1X:
+                       *network_type = TELEPHONY_NETWORK_TYPE_CDMA_1X;
+                       break;
+               case TAPI_NETWORK_SYSTEM_EVDO_REV_0:
+               case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_0_HYBRID:
+                       *network_type = TELEPHONY_NETWORK_TYPE_EVDO_REV_0;
+                       break;
+               case TAPI_NETWORK_SYSTEM_EVDO_REV_A:
+               case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_A_HYBRID:
+                       *network_type = TELEPHONY_NETWORK_TYPE_EVDO_REV_A;
+                       break;
+               case TAPI_NETWORK_SYSTEM_EVDO_REV_B:
+               case TAPI_NETWORK_SYSTEM_1X_EVDO_REV_B_HYBRID:
+                       *network_type = TELEPHONY_NETWORK_TYPE_EVDO_REV_B;
+                       break;
+               case TAPI_NETWORK_SYSTEM_EVDV:
+                       *network_type = TELEPHONY_NETWORK_TYPE_EVDV;
+                       break;
+               case TAPI_NETWORK_SYSTEM_EHRPD:
+                       *network_type = TELEPHONY_NETWORK_TYPE_EHRPD;
+                       break;
+               case TAPI_NETWORK_SYSTEM_LTE:
                        *network_type = TELEPHONY_NETWORK_TYPE_LTE;
                        break;
                default:
@@ -502,3 +591,209 @@ int telephony_network_get_default_subscription(telephony_h handle,
        return ret;
 }
 
+int telephony_network_get_selection_mode(telephony_h handle, telephony_network_selection_mode_e *mode)
+{
+       int ret = TELEPHONY_ERROR_OPERATION_FAILED;
+       TapiHandle *tapi_h;
+       GError *error = NULL;
+       GVariant *dbus_result;
+
+       CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
+       CHECK_INPUT_PARAMETER(handle);
+       tapi_h = ((telephony_data *)handle)->tapi_h;
+       CHECK_INPUT_PARAMETER(tapi_h);
+       CHECK_INPUT_PARAMETER(mode);
+
+       dbus_result = g_dbus_connection_call_sync(tapi_h->dbus_connection,
+               DBUS_TELEPHONY_SERVICE, tapi_h->path, DBUS_TELEPHONY_NETWORK_INTERFACE,
+               "GetSelectionMode", NULL, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+
+       if (dbus_result) {
+               int tapi_mode;
+               int tapi_result;
+               g_variant_get(dbus_result, "(ii)", &tapi_mode, &tapi_result);
+               if (tapi_result == 0) {
+                       if (tapi_mode == TAPI_NETWORK_SELECTIONMODE_AUTOMATIC)
+                               *mode = TELEPHONY_NETWORK_SELECTION_MODE_AUTOMATIC;
+                       else
+                               *mode = TELEPHONY_NETWORK_SELECTION_MODE_MANUAL;
+                       ret = TELEPHONY_ERROR_NONE;
+               }
+               g_variant_unref(dbus_result);
+       } else {
+               LOGE("g_dbus_connection_call_sync() failed. (%s)", error->message);
+               if (strstr(error->message, "AccessDenied")) {
+                       LOGE("PERMISSION_DENIED");
+                       ret = TELEPHONY_ERROR_PERMISSION_DENIED;
+               }
+               g_error_free(error);
+       }
+
+       return ret;
+}
+
+int telephony_network_get_tac(telephony_h handle, int *tac)
+{
+       int ret;
+       TapiHandle *tapi_h;
+
+       CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
+       CHECK_INPUT_PARAMETER(handle);
+       tapi_h = ((telephony_data *)handle)->tapi_h;
+       CHECK_INPUT_PARAMETER(tapi_h);
+       CHECK_INPUT_PARAMETER(tac);
+
+       ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_TAC, tac);
+       if (ret == TAPI_API_SUCCESS) {
+               LOGI("tac:[%d]", *tac);
+               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;
+}
+
+int telephony_network_get_system_id(telephony_h handle, int *sid)
+{
+       int ret;
+       TapiHandle *tapi_h;
+       TelNetworkServing_t data = {0,};
+
+       CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
+       CHECK_INPUT_PARAMETER(handle);
+       tapi_h = ((telephony_data *)handle)->tapi_h;
+       CHECK_INPUT_PARAMETER(tapi_h);
+       CHECK_INPUT_PARAMETER(sid);
+
+       ret = __get_serving_network(tapi_h, &data);
+       if (ret == TAPI_API_SUCCESS) {
+               *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;
+}
+
+int telephony_network_get_network_id(telephony_h handle, int *nid)
+{
+       int ret;
+       TapiHandle *tapi_h;
+       TelNetworkServing_t data = {0,};
+
+       CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
+       CHECK_INPUT_PARAMETER(handle);
+       tapi_h = ((telephony_data *)handle)->tapi_h;
+       CHECK_INPUT_PARAMETER(tapi_h);
+       CHECK_INPUT_PARAMETER(nid);
+
+       ret = __get_serving_network(tapi_h, &data);
+       if (ret == TAPI_API_SUCCESS) {
+               *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;
+}
+
+int telephony_network_get_base_station_id(telephony_h handle, int *bs_id)
+{
+       int ret;
+       TapiHandle *tapi_h;
+       TelNetworkServing_t data = {0,};
+
+       CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
+       CHECK_INPUT_PARAMETER(handle);
+       tapi_h = ((telephony_data *)handle)->tapi_h;
+       CHECK_INPUT_PARAMETER(tapi_h);
+       CHECK_INPUT_PARAMETER(bs_id);
+
+       ret = __get_serving_network(tapi_h, &data);
+       if (ret == TAPI_API_SUCCESS) {
+               *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;
+}
+
+int telephony_network_get_base_station_latitude(telephony_h handle, int *bs_latitude)
+{
+       int ret;
+       TapiHandle *tapi_h;
+       TelNetworkServing_t data = {0,};
+
+       CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
+       CHECK_INPUT_PARAMETER(handle);
+       tapi_h = ((telephony_data *)handle)->tapi_h;
+       CHECK_INPUT_PARAMETER(tapi_h);
+       CHECK_INPUT_PARAMETER(bs_latitude);
+
+       ret = __get_serving_network(tapi_h, &data);
+       if (ret == TAPI_API_SUCCESS) {
+               *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;
+}
+
+int telephony_network_get_base_station_longitude(telephony_h handle, int *bs_longitude)
+{
+       int ret;
+       TapiHandle *tapi_h;
+       TelNetworkServing_t data = {0,};
+
+       CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
+       CHECK_INPUT_PARAMETER(handle);
+       tapi_h = ((telephony_data *)handle)->tapi_h;
+       CHECK_INPUT_PARAMETER(tapi_h);
+       CHECK_INPUT_PARAMETER(bs_longitude);
+
+       ret = __get_serving_network(tapi_h, &data);
+       if (ret == TAPI_API_SUCCESS) {
+               *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 e03f80b7701945e3c3de3794019c7ece626cece8..c0e546027f80295ae40a5b68b672e6abf721a73d 100644 (file)
@@ -342,6 +342,9 @@ int main()
        telephony_network_default_subs_e default_sub = 0;
        telephony_network_name_option_e network_name_option = 0;
        telephony_network_ps_type_e ps_type = 0;
+       telephony_network_selection_mode_e sel_mode;
+       int tac;
+       int nid, sid, bs_id, bs_latitude, bs_longitude;
 
        /* Call value */
        telephony_call_state_e call_state = 0;
@@ -545,6 +548,49 @@ int main()
        else
                LOGI("Default subscription is [%s]", _mapping_default_sub(default_sub));
 
+       ret_value = telephony_network_get_selection_mode(handle_list.handle[0], &sel_mode);
+       if (ret_value != TELEPHONY_ERROR_NONE)
+               LOGE("telephony_network_get_selection_mode() failed!!! [%d]", ret_value);
+       else
+               LOGI("Network selection mode is [%s]",
+                       sel_mode == TELEPHONY_NETWORK_SELECTION_MODE_AUTOMATIC ? "Automatic" : "Manual");
+
+       ret_value = telephony_network_get_tac(handle_list.handle[0], &tac);
+       if (ret_value != TELEPHONY_ERROR_NONE)
+               LOGE("telephony_network_get_tac() failed!!! [%d]", ret_value);
+       else
+               LOGI("Tracking Area Code is [%d]", tac);
+
+       ret_value = telephony_network_get_system_id(handle_list.handle[0], &sid);
+       if (ret_value != TELEPHONY_ERROR_NONE)
+               LOGE("telephony_network_get_system_id() failed!!! [%d]", ret_value);
+       else
+               LOGI("System ID is [%d]", sid);
+
+       ret_value = telephony_network_get_network_id(handle_list.handle[0], &nid);
+       if (ret_value != TELEPHONY_ERROR_NONE)
+               LOGE("telephony_network_get_network_id() failed!!! [%d]", ret_value);
+       else
+               LOGI("Network ID is [%d]", nid);
+
+       ret_value = telephony_network_get_base_station_id(handle_list.handle[0], &bs_id);
+       if (ret_value != TELEPHONY_ERROR_NONE)
+               LOGE("telephony_network_get_base_station_id() failed!!! [%d]", ret_value);
+       else
+               LOGI("Base station ID is [%d]", bs_id);
+
+       ret_value = telephony_network_get_base_station_latitude(handle_list.handle[0], &bs_latitude);
+       if (ret_value != TELEPHONY_ERROR_NONE)
+               LOGE("telephony_network_get_base_station_latitude() failed!!! [%d]", ret_value);
+       else
+               LOGI("Base station latitude is [%d]", bs_latitude);
+
+       ret_value = telephony_network_get_base_station_longitude(handle_list.handle[0], &bs_longitude);
+       if (ret_value != TELEPHONY_ERROR_NONE)
+               LOGE("telephony_network_get_base_station_longitude() failed!!! [%d]", ret_value);
+       else
+               LOGI("Base station longitude is [%d]", bs_longitude);
+
        /* Call API */
        ret_value = telephony_call_get_voice_call_state(handle_list.handle[0], &call_state);
        if (ret_value != TELEPHONY_ERROR_NONE)