2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <tapi_common.h>
23 #include <TapiUtility.h>
24 #include <TelNetwork.h>
25 #include "telephony_network.h"
26 #include "telephony_common.h"
27 #include "telephony_private.h"
29 #include <sys/types.h>
35 #define LOG_TAG "CAPI_TELEPHONY"
37 #define CHECK_INPUT_PARAMETER(arg) \
39 LOGE("INVALID_PARAMETER"); \
40 return TELEPHONY_ERROR_INVALID_PARAMETER; \
43 int telephony_network_get_lac(telephony_h handle, int *lac)
48 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
49 CHECK_INPUT_PARAMETER(handle);
50 tapi_h = ((telephony_data *)handle)->tapi_h;
51 CHECK_INPUT_PARAMETER(tapi_h);
52 CHECK_INPUT_PARAMETER(lac);
54 ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_LAC, lac);
55 if (ret == TAPI_API_SUCCESS) {
56 LOGI("lac:[%d]", *lac);
57 ret = TELEPHONY_ERROR_NONE;
58 } else if (ret == TAPI_API_ACCESS_DENIED) {
59 LOGE("PERMISSION_DENIED");
60 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
62 LOGE("OPERATION_FAILED");
63 ret = TELEPHONY_ERROR_OPERATION_FAILED;
69 int telephony_network_get_cell_id(telephony_h handle, int *cell_id)
74 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
75 CHECK_INPUT_PARAMETER(handle);
76 tapi_h = ((telephony_data *)handle)->tapi_h;
77 CHECK_INPUT_PARAMETER(tapi_h);
78 CHECK_INPUT_PARAMETER(cell_id);
80 ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_CELLID, cell_id);
81 if (ret == TAPI_API_SUCCESS) {
82 LOGI("cell_id:[%d]", *cell_id);
83 ret = TELEPHONY_ERROR_NONE;
84 } else if (ret == TAPI_API_ACCESS_DENIED) {
85 LOGE("PERMISSION_DENIED");
86 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
88 LOGE("OPERATION_FAILED");
89 ret = TELEPHONY_ERROR_OPERATION_FAILED;
95 int telephony_network_get_rssi(telephony_h handle, telephony_network_rssi_e *rssi)
100 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
101 CHECK_INPUT_PARAMETER(handle);
102 tapi_h = ((telephony_data *)handle)->tapi_h;
103 CHECK_INPUT_PARAMETER(tapi_h);
104 CHECK_INPUT_PARAMETER(rssi);
106 ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL, (int *)rssi);
107 if (ret == TAPI_API_SUCCESS) {
108 LOGI("rssi:[%d]", *rssi);
109 ret = TELEPHONY_ERROR_NONE;
110 } else if (ret == TAPI_API_ACCESS_DENIED) {
111 LOGE("PERMISSION_DENIED");
112 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
114 LOGE("OPERATION_FAILED");
115 ret = TELEPHONY_ERROR_OPERATION_FAILED;
121 int telephony_network_get_roaming_status(telephony_h handle, bool *status)
127 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
128 CHECK_INPUT_PARAMETER(handle);
129 tapi_h = ((telephony_data *)handle)->tapi_h;
130 CHECK_INPUT_PARAMETER(tapi_h);
131 CHECK_INPUT_PARAMETER(status);
133 ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_ROAMING_STATUS, &temp);
134 if (ret == TAPI_API_SUCCESS) {
139 LOGI("status:[%d]", *status);
140 ret = TELEPHONY_ERROR_NONE;
141 } else if (ret == TAPI_API_ACCESS_DENIED) {
142 LOGE("PERMISSION_DENIED");
143 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
145 LOGE("OPERATION_FAILED");
146 ret = TELEPHONY_ERROR_OPERATION_FAILED;
152 int telephony_network_get_mcc(telephony_h handle, char **mcc)
155 char *plmn_str = NULL;
159 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
160 CHECK_INPUT_PARAMETER(handle);
161 tapi_h = ((telephony_data *)handle)->tapi_h;
162 CHECK_INPUT_PARAMETER(tapi_h);
163 CHECK_INPUT_PARAMETER(mcc);
165 ret = tel_get_property_string(tapi_h, TAPI_PROP_NETWORK_PLMN, &plmn_str);
166 if (ret == TAPI_API_SUCCESS) {
167 *mcc = malloc (sizeof(char) * (mcc_length + 1));
169 LOGE("OUT_OF_MEMORY");
170 ret = TELEPHONY_ERROR_OUT_OF_MEMORY;
172 memset (*mcc, 0x00, mcc_length + 1);
173 strncpy (*mcc, plmn_str, mcc_length);
176 LOGI("mcc:[%s]", *mcc);
177 ret = TELEPHONY_ERROR_NONE;
179 } else if (ret == TAPI_API_ACCESS_DENIED) {
180 LOGE("PERMISSION_DENIED");
181 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
183 LOGE("OPERATION_FAILED");
184 ret = TELEPHONY_ERROR_OPERATION_FAILED;
190 int telephony_network_get_mnc(telephony_h handle, char **mnc)
193 char *plmn_str = NULL;
197 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
198 CHECK_INPUT_PARAMETER(handle);
199 tapi_h = ((telephony_data *)handle)->tapi_h;
200 CHECK_INPUT_PARAMETER(tapi_h);
201 CHECK_INPUT_PARAMETER(mnc);
203 ret = tel_get_property_string(tapi_h, TAPI_PROP_NETWORK_PLMN, &plmn_str);
204 if (ret == TAPI_API_SUCCESS) {
205 plmn_length = strlen(plmn_str);
206 LOGI("plmn:[%s], length:[%d]", plmn_str, plmn_length);
208 *mnc = malloc (sizeof(char) * (plmn_length -3 + 1));
210 LOGE("OUT_OF_MEMORY");
211 ret = TELEPHONY_ERROR_OUT_OF_MEMORY;
213 memset (*mnc, 0x00, (plmn_length -3 + 1));
214 strncpy (*mnc, plmn_str + 3, (plmn_length -3 + 1));
217 LOGI("mnc:[%s]", *mnc);
218 ret = TELEPHONY_ERROR_NONE;
220 } else if (ret == TAPI_API_ACCESS_DENIED) {
221 LOGE("PERMISSION_DENIED");
222 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
224 LOGE("OPERATION_FAILED");
225 ret = TELEPHONY_ERROR_OPERATION_FAILED;
231 int telephony_network_get_network_name(telephony_h handle, char **network_name)
236 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
237 CHECK_INPUT_PARAMETER(handle);
238 tapi_h = ((telephony_data *)handle)->tapi_h;
239 CHECK_INPUT_PARAMETER(tapi_h);
240 CHECK_INPUT_PARAMETER(network_name);
242 ret = tel_get_property_string(tapi_h, TAPI_PROP_NETWORK_NETWORK_NAME, network_name);
243 if (ret == TAPI_API_SUCCESS) {
244 LOGI("network_name:[%s]", *network_name);
245 ret = TELEPHONY_ERROR_NONE;
246 } else if (ret == TAPI_API_ACCESS_DENIED) {
247 LOGE("PERMISSION_DENIED");
248 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
250 LOGE("OPERATION_FAILED");
251 ret = TELEPHONY_ERROR_OPERATION_FAILED;
257 int telephony_network_get_type(telephony_h handle, telephony_network_type_e *network_type)
260 int service_type = 0;
263 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
264 CHECK_INPUT_PARAMETER(handle);
265 tapi_h = ((telephony_data *)handle)->tapi_h;
266 CHECK_INPUT_PARAMETER(tapi_h);
267 CHECK_INPUT_PARAMETER(network_type);
269 ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_SERVICE_TYPE, &service_type);
270 if (ret == TAPI_API_SUCCESS) {
271 switch (service_type) {
272 case TAPI_NETWORK_SERVICE_TYPE_2G:
273 *network_type = TELEPHONY_NETWORK_TYPE_GSM;
275 case TAPI_NETWORK_SERVICE_TYPE_2_5G:
276 *network_type = TELEPHONY_NETWORK_TYPE_GPRS;
278 case TAPI_NETWORK_SERVICE_TYPE_2_5G_EDGE:
279 *network_type = TELEPHONY_NETWORK_TYPE_EDGE;
281 case TAPI_NETWORK_SERVICE_TYPE_3G:
282 *network_type = TELEPHONY_NETWORK_TYPE_UMTS;
284 case TAPI_NETWORK_SERVICE_TYPE_HSDPA:
285 *network_type = TELEPHONY_NETWORK_TYPE_HSDPA;
287 case TAPI_NETWORK_SERVICE_TYPE_LTE:
288 *network_type = TELEPHONY_NETWORK_TYPE_LTE;
291 *network_type = TELEPHONY_NETWORK_TYPE_UNKNOWN;
295 LOGI("network_type:[%d]", *network_type);
296 ret = TELEPHONY_ERROR_NONE;
297 } else if (ret == TAPI_API_ACCESS_DENIED) {
298 LOGE("PERMISSION_DENIED");
299 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
301 LOGE("OPERATION_FAILED");
302 ret = TELEPHONY_ERROR_OPERATION_FAILED;
308 int telephony_network_get_service_state(telephony_h handle, telephony_network_service_state_e *network_service_state)
311 int service_type = 0;
314 CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE);
315 CHECK_INPUT_PARAMETER(handle);
316 tapi_h = ((telephony_data *)handle)->tapi_h;
317 CHECK_INPUT_PARAMETER(tapi_h);
318 CHECK_INPUT_PARAMETER(network_service_state);
320 ret = tel_get_property_int(tapi_h, TAPI_PROP_NETWORK_SERVICE_TYPE, &service_type);
321 if (ret == TAPI_API_SUCCESS) {
322 switch (service_type) {
323 case TAPI_NETWORK_SERVICE_TYPE_UNKNOWN:
324 case TAPI_NETWORK_SERVICE_TYPE_NO_SERVICE:
325 case TAPI_NETWORK_SERVICE_TYPE_SEARCH:
326 *network_service_state = TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE;
328 case TAPI_NETWORK_SERVICE_TYPE_EMERGENCY:
329 *network_service_state = TELEPHONY_NETWORK_SERVICE_STATE_EMERGENCY_ONLY;
332 *network_service_state = TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE;
335 LOGI("network_service_state:[%d]", *network_service_state);
336 ret = TELEPHONY_ERROR_NONE;
337 } else if (ret == TAPI_API_ACCESS_DENIED) {
338 LOGE("PERMISSION_DENIED");
339 ret = TELEPHONY_ERROR_PERMISSION_DENIED;
341 LOGE("OPERATION_FAILED");
342 ret = TELEPHONY_ERROR_OPERATION_FAILED;