tizen 2.4 release
[framework/telephony/libcall-manager.git] / include / call-manager-common.h
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Contact: Sung Joon Won <sungjoon.won@samsung.com>
5  *
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
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  */
18
19 #ifndef __CALL_MANAGER_COMMON_H__
20 #define __CALL_MANAGER_COMMON_H__
21
22 #include <glib.h>
23 #include <gio/gio.h>
24 #include <dlog.h>
25 #include <system_info.h>
26
27 #ifndef CM_CLIENT_LOG_TAG
28 #define CM_CLIENT_LOG_TAG "CALL_MGR_CLIENT"
29 #endif
30
31 #define TELEPHONY_FEATURE       "http://tizen.org/feature/network.telephony"
32
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); }
38
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); }
42
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; \
49                 } \
50         } else { \
51                 LOGE("Error - Feature getting from System Info"); \
52                 return CM_ERROR_OPERATION_FAILED; \
53         } \
54 }
55
56 #define CM_RETURN_IF_FAIL(scalar_exp) {\
57         if (!scalar_exp) \
58         { \
59                 err("CM_RETURN_IF_FAIL: Failed: Returning from here."); \
60                 return; \
61         } \
62 }
63
64 #define CM_RETURN_VAL_IF_FAIL(scalar_exp, ret) { \
65         if (!scalar_exp) \
66         { \
67                 err("CM_RETURN_VAL_IF_FAIL: Failed: Returning [%d]", ret); \
68                 return ret; \
69         } \
70 }
71
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
76
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"
83
84 /*Method*/
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"
122
123 /*Signal*/
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"
132
133
134 #define CM_DEFAULT_TIMEOUT    (5 * 1000)
135
136 struct __cm_client {
137         GDBusConnection *dbus_conn;
138         GCancellable *ca;
139 //      gchar *name;
140         GHashTable *evt_list;
141 };
142
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 */
157 };
158
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;
163
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 */
167 };
168
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 */
174 };
175
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; } \
179         data->cb_fn = cb; \
180         data->user_data = ud \
181
182 struct __cm_async_data {
183         void *cb_fn;
184         void* user_data;
185         cm_client_h handle;
186         guint id;
187 };
188
189 #endif  //__CALL_MANAGER_COMMON_H__
190