3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
21 #include <glib-object.h>
22 #include <glib/gprintf.h>
23 #include <vconf-keys.h>
26 #include <tapi_common.h>
29 #include <sync_agent.h>
32 #define EXPORT_API __attribute__ ((visibility("default")))
35 #ifndef OMADM_AGENT_LOG
37 #define LOG_TAG "PLUGIN_PM_SYSNOTI_TELEPHONY"
40 static TapiHandle *tel_handler = NULL;
42 static int (*registered_telephony_incoming_cb) (int data_id, void *user_data);
43 static int (*registered_telephony_end_cb) (int data_id, void *user_data);
45 int _register_telephony_noti_event();
46 int _unregister_telephony_noti_event();
47 static void __tel_alert_status_noti_cb(TapiHandle * handle, const char *noti_id, void *data, void *user_data);
49 EXPORT_API void sync_agent_plugin_init_service_noti(void *data)
53 retm_if((data) == NULL, "data is NULL!!");
55 sync_agent_pm_register_data_s *reg_data = (sync_agent_pm_register_data_s *) data;
56 if (reg_data == NULL) {
57 _DEBUG_INFO("data is NULL !!");
63 tel_handler = tel_init(NULL);
64 if (tel_handler == NULL) {
65 _DEBUG_INFO("tel_init() failed !!");
69 int ret = _register_telephony_noti_event();
71 _DEBUG_INFO("register_notiNetworkEvent() failed !!");
73 _DEBUG_INFO("register_notiNetworkEvent() success !!");
77 if (reg_data != NULL) {
78 if (reg_data->pkg_name != NULL)
79 free(reg_data->pkg_name);
81 if (reg_data->additional_data != NULL)
82 free(reg_data->additional_data);
86 _DEBUG_INFO("free sync_agent_pm_register_data_s !!");
92 EXPORT_API sync_agent_pm_return_e sync_agent_plugin_unregister_service_noti(void)
96 sync_agent_pm_return_e ret = SYNC_AGENT_PM_SUCCESS;
98 int err = _unregister_telephony_noti_event();
100 _DEBUG_INFO("__unregister_telephony_noti_event() failed !!");
101 return SYNC_AGENT_PM_FAIL;
103 _DEBUG_INFO("__unregister_telephony_noti_event() success !!");
111 EXPORT_API sync_agent_pm_return_e sync_agent_plugin_add_service_data(void *add_data, int *added_data_id)
115 sync_agent_pm_return_e ret = SYNC_AGENT_PM_SUCCESS;
117 _DEBUG_INFO("not support this feature !!");
124 EXPORT_API sync_agent_pm_return_e sync_agent_plugin_remove_service_data(int remove_data_id)
128 sync_agent_pm_return_e ret = SYNC_AGENT_PM_SUCCESS;
130 _DEBUG_INFO("not support this feature !!");
137 EXPORT_API sync_agent_pm_return_e sync_agent_plugin_get_service_data(int get_data_id, void **service_data)
141 sync_agent_pm_return_e ret = SYNC_AGENT_PM_SUCCESS;
143 _DEBUG_INFO("not support this feature !!");
150 //void set_user_callback(int callback_counts, ...)
151 EXPORT_API void sync_agent_plugin_set_user_callback(int callback_counts, va_list list)
157 // va_start(list, callback_counts);
159 _DEBUG_INFO("callback_counts : %d", callback_counts);
160 for (; i < callback_counts; i++) {
163 registered_telephony_incoming_cb = va_arg(list, sync_agent_user_callback_cb_plugin);
164 _DEBUG_INFO("set user callback ( for Telephony Incoming ) !!");
167 registered_telephony_end_cb = va_arg(list, sync_agent_user_callback_cb_plugin);
168 _DEBUG_INFO("set user callback ( for Telephony End ) !!");
180 int _register_telephony_noti_event()
187 api_err = tel_register_noti_event(tel_handler, TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE, __tel_alert_status_noti_cb, NULL); /* Tapi BS patch */
189 _DEBUG_TRACE("tel_register_noti_event( TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE ) failed ( err_code : %d ) !!", api_err);
192 _DEBUG_TRACE("tel_register_noti_event( TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE ) success !!");
195 api_err = tel_register_noti_event(tel_handler, TAPI_NOTI_VOICE_CALL_STATUS_IDLE, __tel_alert_status_noti_cb, NULL); /* Tapi BS patch */
197 _DEBUG_TRACE("tel_register_noti_event( TAPI_NOTI_VOICE_CALL_STATUS_IDLE ) failed ( err_code : %d ) !!", api_err);
200 _DEBUG_TRACE("tel_register_noti_event( TAPI_NOTI_VOICE_CALL_STATUS_IDLE ) success !!");
203 api_err = tel_register_noti_event(tel_handler, TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE, __tel_alert_status_noti_cb, NULL); /* Tapi BS patch */
205 _DEBUG_TRACE("tel_register_noti_event( TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE ) failed ( err_code : %d ) !!", api_err);
208 _DEBUG_TRACE("tel_register_noti_event( TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE ) success !!");
211 api_err = tel_register_noti_event(tel_handler, TAPI_NOTI_VIDEO_CALL_STATUS_IDLE, __tel_alert_status_noti_cb, NULL); /* Tapi BS patch */
213 _DEBUG_TRACE("tel_register_noti_event( TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE ) failed ( err_code : %d ) !!", api_err);
216 _DEBUG_TRACE("tel_register_noti_event( TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE ) success !!");
224 int _unregister_telephony_noti_event()
231 err = tel_deregister_noti_event(tel_handler, TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE);
233 _DEBUG_TRACE("tel_deregister_noti_event( TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE ) failed ( err_code : %d ) !!", err);
236 _DEBUG_TRACE("tel_deregister_noti_event( TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE ) success !!");
239 err = tel_deregister_noti_event(tel_handler, TAPI_NOTI_VOICE_CALL_STATUS_IDLE);
241 _DEBUG_TRACE("tel_deregister_noti_event( TAPI_NOTI_VOICE_CALL_STATUS_IDLE ) failed ( err_code : %d ) !!", err);
244 _DEBUG_TRACE("tel_deregister_noti_event( TAPI_NOTI_VOICE_CALL_STATUS_IDLE ) success !!");
247 err = tel_deregister_noti_event(tel_handler, TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE);
249 _DEBUG_TRACE("tel_deregister_noti_event( TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE ) failed ( err_code : %d ) !!", err);
252 _DEBUG_TRACE("tel_deregister_noti_event( TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE ) success !!");
255 err = tel_deregister_noti_event(tel_handler, TAPI_NOTI_VIDEO_CALL_STATUS_IDLE);
257 _DEBUG_TRACE("tel_deregister_noti_event( TAPI_NOTI_VIDEO_CALL_STATUS_IDLE ) failed ( err_code : %d ) !!", err);
260 _DEBUG_TRACE("tel_deregister_noti_event( TAPI_NOTI_VIDEO_CALL_STATUS_IDLE ) success !!");
268 static void __tel_alert_status_noti_cb(TapiHandle * handle, const char *noti_id, void *data, void *user_data)
272 retm_if((noti_id) == NULL, "noti_id is NULL!!");
274 _DEBUG_VERBOSE("NOTI_ID : %s", noti_id);
276 if (!strcmp(TAPI_NOTI_VOICE_CALL_STATUS_IDLE, noti_id) || !strcmp(TAPI_NOTI_VIDEO_CALL_STATUS_IDLE, noti_id)) {
277 if (registered_telephony_end_cb != NULL) {
278 registered_telephony_end_cb(0, (void *)user_data);
280 _DEBUG_VERBOSE("not registered registered_telephony_end_cb !!");
286 if (!strcmp(TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE, noti_id) || !strcmp(TAPI_NOTI_VIDEO_CALL_STATUS_ACTIVE, noti_id)) {
287 if (registered_telephony_incoming_cb != NULL) {
288 registered_telephony_incoming_cb(0, (void *)user_data);
290 _DEBUG_VERBOSE("not registered registered_telephony_incoming_cb !!");