tizen 2.3 release
[framework/telephony/libslp-tapi.git] / src / common.h
1 /*
2  * libslp-tapi
3  *
4  * Copyright (c) 2014 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Ja-young Gu <jygu@samsung.com>
7  *
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
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  */
20
21 #ifndef _COMMON_H_
22 #define _COMMON_H_
23
24 #include <stdio.h>
25 #include <glib.h>
26 #include <gio/gio.h>
27
28 __BEGIN_DECLS
29
30 #define TAPI_SHORT_TIMEOUT    (5 * 1000) /* Unlimit: G_MAXINT */
31 #define TAPI_DEFAULT_TIMEOUT    (60 * 1000) /* Unlimit: G_MAXINT */
32 #define TAPI_UNRESTRICTED_TIMEOUT    (180 * 1000)
33
34 #define MAKE_RESP_CB_DATA(data,handle,cb,user_data)  \
35         if (!handle) { return TAPI_API_INVALID_INPUT; } \
36         data = g_new0(struct tapi_resp_data, 1); \
37         data->handle = handle; \
38         data->cb_fn = cb; \
39         data->user_data = user_data
40
41 #define CHECK_ERROR(error) \
42         if (error) { \
43                 warn("dbus error = %d (%s)", error->code, error->message); \
44                 if (error->code == G_IO_ERROR_CANCELLED \
45                                 && error->domain == G_IO_ERROR) { \
46                         /* Do not invoke callback in case of deinit TapiHandle */ \
47                 } else if (strstr(error->message, "No access rights")) { \
48                         err("Access denied"); \
49                         if (evt_cb_data->cb_fn) \
50                                 evt_cb_data->cb_fn(evt_cb_data->handle, TAPI_ERROR_ACCESS_DENIED, NULL, evt_cb_data->user_data); \
51                 } else if (strstr(error->message, "Operation not supported")) { \
52                         err("Operation not supported"); \
53                         if (evt_cb_data->cb_fn) \
54                                 evt_cb_data->cb_fn(evt_cb_data->handle, TAPI_ERROR_OPERATION_NOT_SUPPORTED, NULL, evt_cb_data->user_data); \
55                 } else { \
56                         if (evt_cb_data->cb_fn) \
57                                 evt_cb_data->cb_fn(evt_cb_data->handle, TAPI_ERROR_OPERATION_FAILED, NULL, evt_cb_data->user_data); \
58                 } \
59                 g_error_free(error); \
60                 g_free(evt_cb_data); \
61                 return; \
62         }
63
64 #define CALLBACK_CALL(data) \
65         if (evt_cb_data->cb_fn) { \
66                 evt_cb_data->cb_fn (handle, noti_id, (data), evt_cb_data->user_data); \
67         }
68
69 struct tapi_handle {
70         gpointer dbus_connection;
71         char *path;
72         char *cp_name;
73         GHashTable *evt_list;
74         char cookie[20];
75         GCancellable *ca;
76
77         GHashTable *cache_property;
78         guint prop_callback_evt_id;
79 };
80
81 struct tapi_resp_data {
82         tapi_response_cb cb_fn;
83         void* user_data;
84         struct tapi_handle *handle;
85 };
86
87 struct tapi_evt_cb {
88         int evt_id;
89         tapi_notification_cb cb_fn;
90         void* user_data;
91         struct tapi_handle *handle;
92 };
93
94 struct signal_map {
95         const char *signal_name;
96         void (*callback)(TapiHandle *handle, GVariant *param, char *noti_id,
97                         struct tapi_evt_cb *evt_cb_data);
98 };
99
100 void _process_network_event(const gchar *sig, GVariant *param,
101         TapiHandle *handle, char *noti_id, struct tapi_evt_cb *evt_cb_data);
102
103 __END_DECLS
104
105 #endif /* _TAPI_COMMON_H_ */
106
107 /**
108  *  @}
109  */