API int phone_number_blocking_rule_create(phone_number_blocking_rule_h *rule)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
int ret;
RETV_IF(NULL == rule, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
ret = phn_record_create(rule);
API int phone_number_blocking_rule_destroy(phone_number_blocking_rule_h rule)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
RETV_IF(NULL == rule, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
return phn_record_destroy(rule);
}
API int phone_number_blocking_rule_get_number(phone_number_blocking_rule_h rule, char** number)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
RETV_IF(NULL == rule, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
return phn_record_get_str(rule, PHN_PROPERTY_BLOCKING_RULE_NUMBER, number);
API int phone_number_blocking_rule_get_match_type(phone_number_blocking_rule_h rule, phone_number_blocking_rule_match_type_e *match_type)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
RETV_IF(NULL == rule, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == match_type, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
return phn_record_get_int(rule, PHN_PROPERTY_BLOCKING_RULE_MATCH_TYPE, (int*)match_type);
API int phone_number_blocking_rule_set_number(phone_number_blocking_rule_h rule, const char* number)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
RETV_IF(NULL == rule, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
return phn_record_set_str(rule, PHN_PROPERTY_BLOCKING_RULE_NUMBER, number);
API int phone_number_blocking_rule_set_match_type(phone_number_blocking_rule_h rule, phone_number_blocking_rule_match_type_e match_type)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
RETV_IF(NULL == rule, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF((match_type < PHONE_NUMBER_MATCH_TYPE_EXACTLY || PHONE_NUMBER_MATCH_TYPE_ENDS_WITH < match_type),
PHONE_NUMBER_ERROR_INVALID_PARAMETER);
#include "phnc-dbus.h"
#include "phnc.h"
-#define PHN_FEATURE_TELEPHONY "http://tizen.org/feature/network.telephony"
-
-#define PHN_FEATURE_TELEPHONY_NOT_CHECKED -1
-#define PHN_FEATURE_TELEPHONY_NOT_SUPPORTED 0
-#define PHN_FEATURE_TELEPHONY_SUPPORTED 1
-
-static int _phn_is_support_telephony_feature()
-{
- int err;
- bool is_support;
- static int _phn_telephony_feature_support = PHN_FEATURE_TELEPHONY_NOT_CHECKED;
-
- if (PHN_FEATURE_TELEPHONY_NOT_CHECKED != _phn_telephony_feature_support)
- return _phn_telephony_feature_support;
-
- err = system_info_get_platform_bool(PHN_FEATURE_TELEPHONY, &is_support);
- if (SYSTEM_INFO_ERROR_NONE != err) {
- /* LCOV_EXCL_START */
- DBG("Error system_info_get_platform_bool : %d", err);
- return PHONE_NUMBER_ERROR_SYSTEM;
- /* LCOV_EXCL_STOP */
- }
-
- _phn_telephony_feature_support =
- is_support ? PHN_FEATURE_TELEPHONY_SUPPORTED : PHN_FEATURE_TELEPHONY_NOT_SUPPORTED;
-
- return _phn_telephony_feature_support;
-}
-
#define PHNC_SYSTEM_SLICE "system.slice"
int phnc_get_uid(void)
API int phone_number_connect(void)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
return phnc_dbus_connect();
}
API int phone_number_disconnect(void)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
return phnc_dbus_disconnect();
}
API int phone_number_get_location_from_number(const char *number,
phone_number_region_e region, phone_number_lang_e lang, char **location)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
RETV_IF(NULL == number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
API int phone_number_get_formatted_number(const char *number,
phone_number_region_e region, char **formatted_number)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
RETV_IF(NULL == number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
API int phone_number_get_normalized_number(const char *number, char **normalized_number)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
int ret = 0;
-
- ret = _phn_is_support_telephony_feature();
- RETV_IF(PHONE_NUMBER_ERROR_SYSTEM == ret, PHONE_NUMBER_ERROR_SYSTEM);
- RETV_IF(PHN_FEATURE_TELEPHONY_NOT_SUPPORTED == ret, PHONE_NUMBER_ERROR_NOT_SUPPORTED);
-
RETV_IF(NULL == number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF('\0' == *number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == normalized_number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
API int phone_number_add_blocking_rule(phone_number_blocking_rule_h rule)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
RETV_IF(NULL == rule, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
- return phnc_dbus_add_blocking_rule
-(rule);
+ return phnc_dbus_add_blocking_rule(rule);
}
API int phone_number_remove_blocking_rule(phone_number_blocking_rule_h rule)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
RETV_IF(NULL == rule, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
int id = 0;
API int phone_number_get_blocking_rules(int offset, int limit, phone_number_blocking_rule_h **rules, int *length)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
RETV_IF(offset < 0, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF(limit < 0, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
API int phone_number_get_blocking_rules_related(const char *number, phone_number_blocking_rule_h **rules, int *length)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
RETV_IF(number == NULL, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF(NULL == rules, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
API int phone_number_check_blocking(const char *number, bool* is_blocked)
{
+ CHECK_FEATURE_SUPPORTED(TELEPHONY_FEATURE);
FN_CALL;
RETV_IF(NULL == number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
RETV_IF('\0' == *number, PHONE_NUMBER_ERROR_INVALID_PARAMETER);
#define LOG_TAG "PHN_UTILS"
#include <dlog.h>
+#include <system_info.h>
#ifdef PHN_DAEMON_LOG
} \
} while (0)
+#define TELEPHONY_FEATURE "http://tizen.org/feature/network.telephony"
+#define CHECK_FEATURE_SUPPORTED(feature_name) \
+ do { \
+ bool is_supported = false; \
+ if (!system_info_get_platform_bool(feature_name, &is_supported)) { \
+ if (is_supported == false) { \
+ LOGE("[%s] feature is disabled", feature_name); \
+ return PHONE_NUMBER_ERROR_NOT_SUPPORTED; \
+ } \
+ } else { \
+ LOGE("Error - Feature getting from System Info"); \
+ return PHONE_NUMBER_ERROR_SYSTEM; \
+ } \
+ } while (0)
+
#endif /* __PHONENUMBER_UTILS_LOG_H__ */
*
* @section CAPI_TELEPHONY_INFORMATION_SIM_FEATURE Related Features
* This API is related with the following feature:\n
- * - http://tizen.org/feature/network.telephony
+ * - http://tizen.org/feature/network.telephony\n
* It is recommended to design feature related codes in your application for reliability.\n
* You can check if a device supports the related features for this API by using @ref CAPI_SYSTEM_SYSTEM_INFO_MODULE, thereby controlling the procedure of your application.\n
* To ensure your application is only running on the device with specific features, please define the features in your manifest file using the manifest editor in the SDK.\n
* @return @c 0 on success,
* otherwise a negative error value
* @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
* @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @see phone_number_disconnect()
*/
* @return @c 0 on success,
* otherwise a negative error value
* @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
* @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @see phone_number_connect()
*/
* @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied
* @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
* @retval #PHONE_NUMBER_ERROR_NO_DATA Requested data does not exist
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @pre phone_number_connect() should be called to open a connection to the phonenumber-utils service. (Since 3.0)
* @post phone_number_disconnect() should be called to close a connection to the phonenumber-utils service. (Since 3.0)
*/
* @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied
* @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
* @retval #PHONE_NUMBER_ERROR_NO_DATA Requested data does not exist
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @pre phone_number_connect() should be called to open a connection to the phonenumber-utils service. (Since 3.0)
* @post phone_number_disconnect() should be called to close a connection to the phonenumber-utils service. (Since 3.0)
*/
* otherwise a negative error value
* @retval #PHONE_NUMBER_ERROR_NONE Successful
* @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
* @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
* @retval #PHONE_NUMBER_ERROR_NO_DATA Requested data does not exist
* @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @pre phone_number_connect() should be called to open a connection to the phonenumber-utils service. (Since 3.0)
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
- * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
- * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
- * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
+ * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
+ * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @pre phone_number_connect() should be called to open a connection to the phonenumber-utils service.
* @post phone_number_disconnect() should be called to close a connection to the phonenumber-utils service.
* @see phone_number_remove_blocking_rule()
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
- * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
- * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
- * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
+ * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
+ * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @pre phone_number_connect() should be called to open a connection to the phonenumber-utils service.
* @post phone_number_disconnect() should be called to close a connection to the phonenumber-utils service.
* @see phone_number_add_blocking_rule()
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
- * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
- * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
- * @retval #PHONE_NUMBER_ERROR_NO_DATA Data does not exist
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
+ * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
+ * @retval #PHONE_NUMBER_ERROR_NO_DATA Data does not exist
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @pre phone_number_connect() should be called to open a connection to the phonenumber-utils service.
* @post phone_number_disconnect() should be called to close a connection to the phonenumber-utils service.
*/
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
- * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
- * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
- * @retval #PHONE_NUMBER_ERROR_NO_DATA Data does not exist
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
+ * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
+ * @retval #PHONE_NUMBER_ERROR_NO_DATA Data does not exist
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @pre phone_number_connect() should be called to open a connection to the phonenumber-utils service.
* @post phone_number_disconnect() should be called to close a connection to the phonenumber-utils service.
*/
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
- * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
- * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_DB_FAILED Database operation failure
+ * @retval #PHONE_NUMBER_ERROR_PERMISSION_DENIED Permission denied. This application does not have the privilege to call this method.
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_IPC Unknown IPC error
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
* @pre phone_number_connect() should be called to open a connection to the phonenumber-utils service.
* @post phone_number_disconnect() should be called to close a connection to the phonenumber-utils service.
*/
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
*
* @pre phone_number_connect() should be called to initialize.
*
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
*
* @see phone_number_blocking_rule_create()
*/
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
*
* @see phone_number_blocking_rule_set_number()
*/
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
*
* @see phone_number_blocking_rule_set_match_type()
*/
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
*
* @see phone_number_blocking_rule_get_number()
*/
*
* @return @c 0 on success,
* otherwise a negative error value
- * @retval #PHONE_NUMBER_ERROR_NONE Successful
- * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NONE Successful
+ * @retval #PHONE_NUMBER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #PHONE_NUMBER_ERROR_NOT_SUPPORTED Not supported
+ * @retval #PHONE_NUMBER_ERROR_SYSTEM Internal error
*
* @see phone_number_blocking_rule_get_match_type()
*/