4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Ja-young Gu <jygu@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #ifndef __TCORE_CO_CALL_H__
22 #define __TCORE_CO_CALL_H__
24 #include <core_object.h>
28 #define MAX_CALL_NUMBER_LEN 83
29 #define MAX_CALL_NAME_LEN 83
31 enum tcore_call_type {
32 TCORE_CALL_TYPE_VOICE,
33 TCORE_CALL_TYPE_VIDEO,
35 TCORE_CALL_TYPE_STDOTASP,
36 TCORE_CALL_TYPE_NONSTDOTASP,
39 enum tcore_call_direction {
40 TCORE_CALL_DIRECTION_NONE,
41 TCORE_CALL_DIRECTION_OUTGOING,
42 TCORE_CALL_DIRECTION_INCOMING,
45 enum tcore_call_status {
46 TCORE_CALL_STATUS_IDLE,
47 TCORE_CALL_STATUS_ACTIVE,
48 TCORE_CALL_STATUS_HELD,
49 TCORE_CALL_STATUS_DIALING,
50 TCORE_CALL_STATUS_ALERT,
51 TCORE_CALL_STATUS_INCOMING,
52 TCORE_CALL_STATUS_WAITING,
55 enum tcore_call_no_cli_cause {
56 TCORE_CALL_NO_CLI_CAUSE_NONE = -1,
57 TCORE_CALL_NO_CLI_CAUSE_UNAVAILABLE,
58 TCORE_CALL_NO_CLI_CAUSE_USER_REJECTED,
59 TCORE_CALL_NO_CLI_CAUSE_OTHERS,
60 TCORE_CALL_NO_CLI_CAUSE_PAY_PHONE
63 enum tcore_call_cli_mode {
64 TCORE_CALL_CLI_MODE_PRESENT,
65 TCORE_CALL_CLI_MODE_RESTRICT,
66 TCORE_CALL_CLI_MODE_UNAVAILABLE,
67 TCORE_CALL_CLI_MODE_DEFAULT,
70 enum tcore_call_cna_mode {
71 TCORE_CALL_CNA_MODE_DEFAULT,
72 TCORE_CALL_CNA_MODE_PRESENT,
73 TCORE_CALL_CNA_MODE_RESTRICT,
76 enum tcore_call_answer_type {
77 TCORE_CALL_ANSWER_ACCEPT,
78 TCORE_CALL_ANSWER_REJECT,
79 TCORE_CALL_ANSWER_REPLACE,
80 TCORE_CALL_ANSWER_HOLD_AND_ACCEPT,
83 enum tcore_call_end_type {
84 TCORE_CALL_END_DEFAULT,
86 TCORE_CALL_END_ALL_ACTIVE,
87 TCORE_CALL_END_ALL_HELD,
90 typedef struct call_object CallObject;
92 struct tcore_call_operations {
93 TReturn (*dial)(CoreObject *o, UserRequest *ur);
94 TReturn (*answer)(CoreObject *o, UserRequest *ur);
95 TReturn (*end)(CoreObject *o, UserRequest *ur);
96 TReturn (*hold)(CoreObject *o, UserRequest *ur);
97 TReturn (*active)(CoreObject *o, UserRequest *ur);
98 TReturn (*swap)(CoreObject *o, UserRequest *ur);
99 TReturn (*join)(CoreObject *o, UserRequest *ur);
100 TReturn (*split)(CoreObject *o, UserRequest *ur);
101 TReturn (*deflect)(CoreObject* o, UserRequest *ur);
102 TReturn (*transfer)(CoreObject* o, UserRequest *ur);
103 TReturn (*start_cont_dtmf)(CoreObject *o, UserRequest *ur);
104 TReturn (*stop_cont_dtmf)(CoreObject *o, UserRequest *ur);
105 TReturn (*send_burst_dtmf)(CoreObject *o, UserRequest *ur);
106 TReturn (*set_sound_path)(CoreObject *o, UserRequest *ur);
107 TReturn (*set_sound_volume_level)(CoreObject *o, UserRequest *ur);
108 TReturn (*get_sound_volume_level)(CoreObject *o, UserRequest *ur);
109 TReturn (*set_sound_mute_status)(CoreObject *o, UserRequest *ur);
110 TReturn (*get_sound_mute_status)(CoreObject *o, UserRequest *ur);
111 TReturn (*set_sound_recording)(CoreObject *o, UserRequest *ur);
112 TReturn (*set_sound_equalization)(CoreObject *o, UserRequest *ur);
113 TReturn (*set_sound_noise_reduction)(CoreObject *o, UserRequest *ur);
114 TReturn (*set_sound_clock_status)(CoreObject *o, UserRequest *ur);
115 TReturn (*set_active_line)(CoreObject *o, UserRequest *ur);
116 TReturn (*get_active_line)(CoreObject *o, UserRequest *ur);
117 TReturn (*activate_ccbs)(CoreObject *o, UserRequest *ur);
118 TReturn (*set_preferred_voice_subscription)(CoreObject *o, UserRequest *ur);
119 TReturn (*get_preferred_voice_subscription)(CoreObject *o, UserRequest *ur);
120 TReturn (*set_privacy_mode)(CoreObject *o, UserRequest *ur);
121 TReturn (*get_privacy_mode)(CoreObject *o, UserRequest *ur);
124 struct tcore_call_information_operations {
125 void (*mo_call_col)(CoreObject *o, char* number);
126 void (*mo_call_waiting)(CoreObject *o);
127 void (*mo_call_cug)(CoreObject *o, int cug_index);
128 void (*mo_call_forwarded)(CoreObject *o);
129 void (*mo_call_barred_incoming)(CoreObject *o);
130 void (*mo_call_barred_outgoing)(CoreObject *o);
131 void (*mo_call_deflected)(CoreObject *o);
132 void (*mo_call_clir_suppression_reject)(CoreObject *o);
133 void (*mo_call_cfu)(CoreObject *o);
134 void (*mo_call_cfc)(CoreObject *o);
135 void (*mt_call_cli)(CoreObject *o, enum tcore_call_cli_mode mode, char *number);
136 void (*mt_call_cna)(CoreObject *o, enum tcore_call_cna_mode mode, char *name, int dcs);
137 void (*mt_call_forwarded_call)(CoreObject *o, char* number);
138 void (*mt_call_cug_call)(CoreObject *o, int cug_index, char* number);
139 void (*mt_call_deflected_call)(CoreObject *o, char* number);
140 void (*mt_call_transfered)(CoreObject *o, char* number);
141 void (*call_held)(CoreObject *o, char* number);
142 void (*call_active)(CoreObject *o, char* number);
143 void (*call_joined)(CoreObject *o, char* number);
144 void (*call_released_on_hold)(CoreObject *o, char* number);
145 void (*call_transfer_alert)(CoreObject *o, char* number);
146 void (*call_transfered)(CoreObject *o, char* number);
147 void (*call_cf_check_message)(CoreObject *o, char* number);
150 typedef void(*ConfirmCallback)(TcorePending *p, int data_len, const void *data, void *user_data);
152 struct tcore_call_control_operations {
153 TReturn (*answer_hold_and_accept)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
154 TReturn (*answer_replace)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
155 TReturn (*answer_reject)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
156 TReturn (*end_specific)( CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data );
157 TReturn (*end_all_active)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
158 TReturn (*end_all_held)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
159 TReturn (*active)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
160 TReturn (*hold)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
161 TReturn (*swap)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
162 TReturn (*join)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
163 TReturn (*split)( CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data );
164 TReturn (*transfer)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
165 TReturn (*deflect)( CoreObject* o, UserRequest* ur, const char* number, ConfirmCallback cb, void* user_data );
169 CoreObject* tcore_call_new(TcorePlugin *p, const char *name, struct tcore_call_operations *ops, TcoreHal *hal);
170 void tcore_call_free( CoreObject *o);
172 void tcore_call_set_ops(CoreObject *o, struct tcore_call_operations *ops);
175 CallObject* tcore_call_object_new( CoreObject *o, int id );
176 gboolean tcore_call_object_free( CoreObject *o, CallObject *co );
178 int tcore_call_object_total_length( CoreObject *o );
179 CallObject* tcore_call_object_current_on_mt_processing( CoreObject *o );
180 CallObject* tcore_call_object_current_on_mo_processing( CoreObject *o );
181 CallObject* tcore_call_object_find_by_id( CoreObject *o, int id );
182 CallObject* tcore_call_object_find_by_number( CoreObject *o, char *num );
183 GSList* tcore_call_object_find_by_status( CoreObject *o, enum tcore_call_status cs );
185 int tcore_call_object_get_id( CallObject *co );
187 gboolean tcore_call_object_set_type( CallObject *co, enum tcore_call_type ct );
188 enum tcore_call_type tcore_call_object_get_type( CallObject *co );
190 gboolean tcore_call_object_set_direction( CallObject *co, enum tcore_call_direction cd );
191 enum tcore_call_direction tcore_call_object_get_direction( CallObject *co );
193 gboolean tcore_call_object_set_status( CallObject *co, enum tcore_call_status cs );
194 enum tcore_call_status tcore_call_object_get_status( CallObject *co );
196 gboolean tcore_call_object_set_cli_info(struct call_object *co,
197 enum tcore_call_cli_mode mode, enum tcore_call_no_cli_cause cause,
198 char *num, int num_len);
199 enum tcore_call_cli_mode tcore_call_object_get_cli_mode( CallObject *co );
200 enum tcore_call_no_cli_cause tcore_call_object_get_no_cli_cause(struct call_object *co);
201 int tcore_call_object_get_number( CallObject *co, char *num );
203 gboolean tcore_call_object_set_cna_info( CallObject *co, enum tcore_call_cna_mode mode, char *name, int dcs );
204 enum tcore_call_cna_mode tcore_call_object_get_cna_mode( CallObject *co );
205 int tcore_call_object_get_name( CallObject *co, char *name );
207 gboolean tcore_call_object_set_multiparty_state ( CallObject *co, gboolean is );
208 gboolean tcore_call_object_get_multiparty_state ( CallObject *co );
210 gboolean tcore_call_object_set_active_line( CallObject *co, unsigned int line );
211 int tcore_call_object_get_active_line( CallObject *co );
215 gboolean tcore_call_control_new( CoreObject *o, struct tcore_call_control_operations *ops );
216 void tcore_call_control_free( CoreObject *o );
218 TReturn tcore_call_control_answer_hold_and_accept( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
219 TReturn tcore_call_control_answer_replace( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
220 TReturn tcore_call_control_answer_reject( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
222 TReturn tcore_call_control_end_specific( CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data );
223 TReturn tcore_call_control_end_all_active( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
224 TReturn tcore_call_control_end_all_held( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
226 TReturn tcore_call_control_active( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
227 TReturn tcore_call_control_hold( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
228 TReturn tcore_call_control_swap( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
229 TReturn tcore_call_control_join( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
230 TReturn tcore_call_control_split( CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data );
231 TReturn tcore_call_control_transfer( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
232 TReturn tcore_call_control_deflect( CoreObject* o, UserRequest* ur, const char* number, ConfirmCallback cb, void* user_data );
234 void tcore_call_control_set_operations( CoreObject* o, struct tcore_call_control_operations *ops );
237 void tcore_call_information_mo_col( CoreObject *o, char* number );
238 void tcore_call_information_mo_waiting( CoreObject *o );
239 void tcore_call_information_mo_cug( CoreObject *o, int cug_index );
240 void tcore_call_information_mo_forwarded( CoreObject *o );
241 void tcore_call_information_mo_barred_incoming( CoreObject *o );
242 void tcore_call_information_mo_barred_outgoing( CoreObject *o );
243 void tcore_call_information_mo_deflected( CoreObject *o );
244 void tcore_call_information_mo_clir_suppression_reject( CoreObject *o );
245 void tcore_call_information_mo_cfu( CoreObject *o );
246 void tcore_call_information_mo_cfc( CoreObject *o );
248 void tcore_call_information_mt_cli( CoreObject *o, enum tcore_call_cli_mode mode, char* number );
249 void tcore_call_information_mt_cna( CoreObject *o, enum tcore_call_cna_mode mode, char* name, int dcs );
250 void tcore_call_information_mt_forwarded_call( CoreObject *o, char* number );
251 void tcore_call_information_mt_cug_call( CoreObject *o, int cug_index, char* number );
252 void tcore_call_information_mt_deflected_call( CoreObject *o, char* number );
253 void tcore_call_information_mt_transfered( CoreObject *o, char* number );
255 void tcore_call_information_held( CoreObject *o, char* number );
256 void tcore_call_information_active( CoreObject *o, char* number );
257 void tcore_call_information_joined( CoreObject *o, char* number );
258 void tcore_call_information_released_on_hold( CoreObject *o, char* number );
259 void tcore_call_information_transfer_alert( CoreObject *o, char* number );
260 void tcore_call_information_transfered( CoreObject *o, char* number );
261 void tcore_call_information_cf_check_ss_message( CoreObject *o, char* number );
263 void tcore_call_information_set_operations( CoreObject *o, struct tcore_call_information_operations *ops );