2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Contact: Sung Joon Won <sungjoon.won@samsung.com>
6 * Licensed under the Apache License, Version 2.0 (the License);
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 #ifndef __CALL_MANAGER_COMMON_H__
20 #define __CALL_MANAGER_COMMON_H__
25 #include <system_info.h>
27 #ifndef CM_CLIENT_LOG_TAG
28 #define CM_CLIENT_LOG_TAG "CALL_MGR_CLIENT"
31 #define TELEPHONY_FEATURE "http://tizen.org/feature/network.telephony"
33 #define info(fmt,args...) { __dlog_print(LOG_ID_MAIN, DLOG_INFO, CM_CLIENT_LOG_TAG, "<LIB> "fmt "\n", ##args); }
34 #define dbg(fmt,args...) { __dlog_print(LOG_ID_MAIN, DLOG_DEBUG, CM_CLIENT_LOG_TAG, "<LIB:%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
35 #define warn(fmt,args...) { __dlog_print(LOG_ID_MAIN, DLOG_WARN, CM_CLIENT_LOG_TAG, "<LIB:%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
36 #define err(fmt,args...) { __dlog_print(LOG_ID_MAIN, DLOG_ERROR, CM_CLIENT_LOG_TAG, "<LIB:%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
37 #define fatal(fmt,args...) { __dlog_print(LOG_ID_MAIN, DLOG_FATAL, CM_CLIENT_LOG_TAG, "<LIB:%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
39 #define sec_err(fmt, arg...) {SECURE_LOGE(CM_CLIENT_LOG_TAG, fmt"\n", ##arg); }
40 #define sec_warn(fmt, arg...) {SECURE_LOGW(CM_CLIENT_LOG_TAG, fmt"\n", ##arg); }
41 #define sec_dbg(fmt, arg...) {SECURE_LOGD(CM_CLIENT_LOG_TAG, fmt"\n", ##arg); }
43 #define CHECK_SUPPORTED_FEATURE(feature_name) { \
44 bool telephony_supported = FALSE; \
45 if (!system_info_get_platform_bool(feature_name, &telephony_supported)) { \
46 if (telephony_supported == FALSE) { \
47 LOGE("telephony feature is disabled"); \
48 return CM_ERROR_NOT_SUPPORTED; \
51 LOGE("Error - Feature getting from System Info"); \
52 return CM_ERROR_OPERATION_FAILED; \
56 #define CM_RETURN_IF_FAIL(scalar_exp) {\
59 err("CM_RETURN_IF_FAIL: Failed: Returning from here."); \
64 #define CM_RETURN_VAL_IF_FAIL(scalar_exp, ret) { \
67 err("CM_RETURN_VAL_IF_FAIL: Failed: Returning [%d]", ret); \
72 /* Call-mgr DBus interface*/
73 #define DBUS_CALL_MANAGER "org.tizen.callmgr"
74 #define DBUS_CALL_MANAGER_PATH "/org/tizen/callmgr"
75 #define DBUS_CALL_MANAGER_DEFAULT_INTERFACE DBUS_CALL_MANAGER
77 /* DeviceD DBus interface*/
78 #define DBUS_DEVICED "org.tizen.system.deviced"
79 #define DBUS_DEVICED_OBJECT_PATH "/Org/Tizen/System/DeviceD"
80 #define DBUS_DEVICED_INTERFACE DBUS_DEVICED
81 #define DBUS_DEVICED_PATH_DISPLAY DBUS_DEVICED_OBJECT_PATH"/Display"
82 #define DBUS_DEVICED_INTERFACE_DISPLAY DBUS_DEVICED_INTERFACE".display"
85 #define DBUS_CALL_MANAGER_METHOD_TEST "Test"
86 #define DBUS_CALL_MANAGER_METHOD_DIAL_CALL "DialCall"
87 #define DBUS_CALL_MANAGER_METHOD_SWAP_CALL "SwapCall"
88 #define DBUS_CALL_MANAGER_METHOD_HOLD_CALL "HoldCall"
89 #define DBUS_CALL_MANAGER_METHOD_UNHOLD_CALL "UnholdCall"
90 #define DBUS_CALL_MANAGER_METHOD_END_CALL "EndCall"
91 #define DBUS_CALL_MANAGER_METHOD_REJECT_CALL "RejectCall"
92 #define DBUS_CALL_MANAGER_METHOD_JOIN_CALL "JoinCall"
93 #define DBUS_CALL_MANAGER_METHOD_SPLIT_CALL "SplitCall"
94 #define DBUS_CALL_MANAGER_METHOD_TRANSFER_CALL "TransferCall"
95 #define DBUS_CALL_MANAGER_METHOD_ANSWER_CALL "AnswerCall"
96 #define DBUS_CALL_MANAGER_METHOD_GET_CALL_LIST "GetCallList"
97 #define DBUS_CALL_MANAGER_METHOD_GET_CONF_CALL_LIST "GetConfCallList"
98 #define DBUS_CALL_MANAGER_METHOD_GET_ALL_CALL_DATA "GetAllCallData"
99 #define DBUS_CALL_MANAGER_METHOD_SEND_DTMF_RESP "SendDtmfResp"
100 #define DBUS_CALL_MANAGER_METHOD_START_DTMF "StartDtmf"
101 #define DBUS_CALL_MANAGER_METHOD_STOP_DTMF "StopDtmf"
102 #define DBUS_CALL_MANAGER_METHOD_BURST_DTMF "BurstDtmf"
103 #define DBUS_CALL_MANAGER_METHOD_SPK_ON "SpkOn"
104 #define DBUS_CALL_MANAGER_METHOD_SPK_OFF "SpkOff"
105 #define DBUS_CALL_MANAGER_METHOD_BLUETOOTH_ON "BluetoothOn"
106 #define DBUS_CALL_MANAGER_METHOD_BLUETOOTH_OFF "BluetoothOff"
107 #define DBUS_CALL_MANAGER_METHOD_SET_EXTRA_VOL "SetExtraVol"
108 #define DBUS_CALL_MANAGER_METHOD_SET_NOISE_REDUCTION "SetNoiseReduction"
109 #define DBUS_CALL_MANAGER_METHOD_SET_MUTE_STATE "SetMuteState"
110 #define DBUS_CALL_MANAGER_METHOD_GET_AUDIO_STATE "GetAudioState"
111 #define DBUS_CALL_MANAGER_METHOD_STOP_ALERT "StopAlert"
112 #define DBUS_CALL_MANAGER_METHOD_START_ALERT "StartAlert"
113 #define DBUS_CALL_MANAGER_METHOD_ACTIVATE_UI "ActivateUi"
114 #define DBUS_CALL_MANAGER_METHOD_GET_CALL_STATUS "GetCallStatus"
115 #define DBUS_CALL_MANAGER_METHOD_SET_WATCH_NAME "SetWatchName"
116 #define DBUS_DEVICED_METHOD_SET_LCDTIMEOUT "setlcdtimeout"
117 #define DBUS_DEVICED_METHOD_UPDATE_LCDTIMEOUT_BY_TOUCH "UpdateLCDTimeoutByTouch"
118 #define DBUS_CALL_MANAGER_METHOD_START_VOICE_RECORD "StartVoiceRecord"
119 #define DBUS_CALL_MANAGER_METHOD_STOP_VOICE_RECORD "StopVoiceRecord"
120 #define DBUS_CALL_MANAGER_METHOD_GET_MUTE_STATUS "GetMuteStatus"
121 #define DBUS_CALL_MANAGER_METHOD_GET_ANSWERING_MACHINE_STATUS "GetAnsweringMachineStatus"
124 #define DBUS_CALL_MANAGER_SIGNAL_CALL_STATUS "CallStatus"
125 #define DBUS_CALL_MANAGER_SIGNAL_CALL_EVENT "CallEvent"
126 #define DBUS_CALL_MANAGER_SIGNAL_DIAL_STATUS "DialStatus"
127 #define DBUS_CALL_MANAGER_SIGNAL_DTMF_INDI "DtmfIndi"
128 #define DBUS_CALL_MANAGER_SIGNAL_AUDIO_STATE "AudioState"
129 #define DBUS_CALL_MANAGER_SIGNAL_GO_FOREGROUND "GoForeground"
130 #define DBUS_CALL_MANAGER_SIGNAL_VOICE_RECORD_STATUS "VoiceRecordStatus"
131 #define DBUS_CALL_MANAGER_SIGNAL_MUTE_STATUS "MuteStatus"
134 #define CM_DEFAULT_TIMEOUT (5 * 1000)
137 GDBusConnection *dbus_conn;
140 GHashTable *evt_list;
143 struct __cm_call_data {
144 unsigned int call_id; /**< Unique call id*/
145 cm_call_direction_e call_direction; /**< 0 : MO, 1 : MT*/
146 char *call_number; /**< call number */
147 char *calling_name; /**< calling name */
148 cm_call_type_e call_type; /**< Specifies type of call (voice, data, emergency) */
149 cm_call_state_e call_state; /**< Current Call state */
150 int member_count; /**< 1: Single call, more than 1: Conference call. It reflects call member count */
151 gboolean is_ecc; /**< is emergency*/
152 gboolean is_voicemail_number; /**<is voicemail number*/
153 cm_call_domain_e call_domain; /**< Current Call domain */
154 int person_id; /**< Contact Index */
155 long start_time; /**<Call start time */
156 cm_name_mode_e name_mode; /**<Name Mode */
159 struct __cm_call_event_data {
160 unsigned int call_id;
161 cm_multi_sim_slot_type_e sim_slot;
162 cm_call_end_cause_type_e end_cause;
164 cm_call_data_t *incom; /* Incoming CallData, Important : Application should free this after use */
165 cm_call_data_t *active_dial; /* Active or Dial CallData, Important : Application should free this after use */
166 cm_call_data_t *held; /* Held CallData, Important : Application should free this after use */
169 struct __cm_conf_call_data {
170 unsigned int call_id; /**< Unique call id*/
171 char *call_number; /**< call number */
172 int person_id; /**< Contact Index */
173 cm_name_mode_e name_mode; /**<Name Mode */
176 #define MAKE_CALL_STATE_ASYNC_DATA(data,cb,ud) \
177 data = g_try_new0 (struct __cm_async_data, 1); \
178 if (!data) { return -1; } \
180 data->user_data = ud \
182 struct __cm_async_data {
189 #endif //__CALL_MANAGER_COMMON_H__