From: Wootak Jung Date: Wed, 2 Sep 2015 05:32:43 +0000 (+0900) Subject: Sync from SPIN branch X-Git-Tag: submit/tizen/20150903.021205^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Ftizen_3.0.m1_mobile;p=platform%2Fcore%2Fapi%2Ftelephony.git Sync from SPIN branch Change-Id: I3a4148efa742dd3ac3feb032f49b20f5125e4189 --- diff --git a/include/telephony_common.h b/include/telephony_common.h index 8c3f9c9..2693509 100644 --- a/include/telephony_common.h +++ b/include/telephony_common.h @@ -200,6 +200,82 @@ int telephony_init(telephony_handle_list_s *list); */ int telephony_deinit(telephony_handle_list_s *list); +/** + * @brief Enumeration for the telephony state. + * @since_tizen 2.4 + */ +typedef enum { + TELEPHONY_STATE_NOT_READY, /**< Telephony state is not ready */ + TELEPHONY_STATE_READY, /**< Telephony state is ready */ +} telephony_state_e; + +/** + * @brief Called for the telephony state changes. + * @since_tizen 2.4 + */ +typedef void (*telephony_state_changed_cb)(telephony_state_e state, void *user_data); + +/** + * @brief Acquires the telephony state value + * + * @since_tizen 2.4 + * + * @param[out] state The state value of telephony. + * + * @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_NOT_SUPPORTED Not supported + * @retval #TELEPHONY_ERROR_OPERATION_FAILED Operation failed + * + * @see telephony_set_state_changed_cb() + * @see telephony_unset_state_changed_cb() + */ +int telephony_get_state(telephony_state_e *state); + +/** + * @brief Sets a callback function to be invoked when the telephony state changes. + * + * @since_tizen 2.4 + * + * @param[in] callback The callback to be invoked when the telephony state changes + * @param[in] user_data The user data passed to the callback function + * + * @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_NOT_SUPPORTED Not supported + * @retval #TELEPHONY_ERROR_OPERATION_FAILED Operation failed + * + * @post telephony_state_changed_cb() will be invoked. + * + * @see telephony_unset_state_changed_cb() + */ +int telephony_set_state_changed_cb(telephony_state_changed_cb callback, void *user_data); + +/** + * @brief Unsets a telephony state callback function. + * + * @since_tizen 2.4 + * + * @param[in] callback The callback to unset when the telephony state changes + * + * @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_NOT_SUPPORTED Not supported + * @retval #TELEPHONY_ERROR_OPERATION_FAILED Operation failed + * + * @see telephony_set_state_changed_cb() + */ +int telephony_unset_state_changed_cb(telephony_state_changed_cb callback); + /** * @} */ diff --git a/include/telephony_sim.h b/include/telephony_sim.h index f9481fe..994c755 100644 --- a/include/telephony_sim.h +++ b/include/telephony_sim.h @@ -279,7 +279,7 @@ int telephony_sim_get_application_list(telephony_h handle, unsigned int *app_lis */ int telephony_sim_get_subscriber_number(telephony_h handle, char **subscriber_number); -/* +/** * @brief Gets the Subscriber ID. * @details This function gets subscriber ID encoded. * diff --git a/packaging/capi-telephony.spec b/packaging/capi-telephony.spec index 79a89dc..53ae1a5 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.47 +Version: 0.1.48 Release: 1 Group: System/Libraries License: Apache-2.0 diff --git a/src/telephony_common.c b/src/telephony_common.c index 2b0a4a3..a63e5dc 100644 --- a/src/telephony_common.c +++ b/src/telephony_common.c @@ -495,3 +495,48 @@ int telephony_deinit(telephony_handle_list_s *list) return TELEPHONY_ERROR_NONE; } + +int telephony_get_state(telephony_state_e *state) +{ + int res = 0; + int value = 0; + + CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE); + CHECK_INPUT_PARAMETER(state); + + res = tel_get_ready_state(&value); + if (res != TAPI_API_SUCCESS) + return TELEPHONY_ERROR_OPERATION_FAILED; + + *state = value; + + return TELEPHONY_ERROR_NONE; +} + +int telephony_set_state_changed_cb(telephony_state_changed_cb callback, void *user_data) +{ + int res = 0; + + CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE); + CHECK_INPUT_PARAMETER(callback); + + res = tel_register_ready_state_cb((tapi_state_cb)callback, user_data); + if (res != TAPI_API_SUCCESS) + return TELEPHONY_ERROR_OPERATION_FAILED; + + return TELEPHONY_ERROR_NONE; +} + +int telephony_unset_state_changed_cb(telephony_state_changed_cb callback) +{ + int res = 0; + + CHECK_TELEPHONY_SUPPORTED(TELEPHONY_FEATURE); + CHECK_INPUT_PARAMETER(callback); + + res = tel_deregister_ready_state_cb((tapi_state_cb)callback); + if (res != TAPI_API_SUCCESS) + return TELEPHONY_ERROR_OPERATION_FAILED; + + return TELEPHONY_ERROR_NONE; +} diff --git a/test/test_all_api.c b/test/test_all_api.c index 6ca4375..c5b454d 100644 --- a/test/test_all_api.c +++ b/test/test_all_api.c @@ -293,12 +293,18 @@ static void call_noti_cb(telephony_h handle, telephony_noti_e noti_id, void *dat direction == TELEPHONY_CALL_DIRECTION_MO ? "MO" : "MT", conf_status ? "TRUE" : "FALSE"); free(number); + number = NULL; } telephony_call_release_call_list(count, &call_list); } } +static void on_telephony_state_changed_cb(telephony_state_e state, void *user_data) +{ + LOGI("telephony state value : [%d]", state); +} + int main() { int ret_value, i; @@ -339,6 +345,9 @@ int main() char *imei = NULL; telephony_modem_power_status_e power_status = 0; + /* Ready */ + telephony_state_e ready_state = 0; + /* Initialize handle */ ret_value = telephony_init(&handle_list); if (ret_value != TELEPHONY_ERROR_NONE) { @@ -546,6 +555,7 @@ int main() LOGI("handle_id[%d] number[%s] type[%d] status[%d] direction[%d] conf_status[%d]", handle_id, number, type, status, direction, conf_status); free(number); + number = NULL; } telephony_call_release_call_list(count, &call_list); } @@ -582,6 +592,18 @@ int main() LOGE("Set noti failed!!!"); } + ret_value = telephony_get_state(&ready_state); + if (ret_value != TELEPHONY_ERROR_NONE) + LOGI("telephony_get_state() failed!!!"); + else + LOGI("telephony_get_state() succeed ! : %s", ready_state ? "TRUE" : "FALSE"); + + ret_value = telephony_set_state_changed_cb(on_telephony_state_changed_cb, NULL); + if (ret_value != TELEPHONY_ERROR_NONE) + LOGI("telephony_set_state_changed_cb() failed!!!"); + else + LOGI("telephony_set_state_changed_cb() succeed!!"); + LOGI("If telephony status is changed, then callback function will be called"); event_loop = g_main_loop_new(NULL, FALSE); g_main_loop_run(event_loop); @@ -606,5 +628,11 @@ int main() if (ret_value != TELEPHONY_ERROR_NONE) LOGE("Deinitialize failed!!!"); + ret_value = telephony_unset_state_changed_cb(on_telephony_state_changed_cb); + if (ret_value != TELEPHONY_ERROR_NONE) + LOGE("telephony_unset_state_changed_cb() failed!!!"); + else + LOGD("telephony_unset_state_changed_cb() succeed!!"); + return 0; }