Imported Upstream version 1.37
[platform/upstream/connman.git] / include / dbus.h
1 /*
2  *
3  *  Connection Manager
4  *
5  *  Copyright (C) 2007-2012  Intel Corporation. All rights reserved.
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License version 2 as
9  *  published by the Free Software Foundation.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with this program; if not, write to the Free Software
18  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  */
21
22 #ifndef __CONNMAN_DBUS_H
23 #define __CONNMAN_DBUS_H
24
25 #include <dbus/dbus.h>
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 #define CONNMAN_SERVICE                 "net.connman"
32 #define CONNMAN_PATH                    "/net/connman"
33
34 #define CONNMAN_ERROR_INTERFACE         CONNMAN_SERVICE ".Error"
35 #define CONNMAN_AGENT_INTERFACE         CONNMAN_SERVICE ".Agent"
36 #define CONNMAN_COUNTER_INTERFACE       CONNMAN_SERVICE ".Counter"
37
38 #define CONNMAN_MANAGER_INTERFACE       CONNMAN_SERVICE ".Manager"
39 #define CONNMAN_MANAGER_PATH            "/"
40
41 #define CONNMAN_CLOCK_INTERFACE         CONNMAN_SERVICE ".Clock"
42 #define CONNMAN_TASK_INTERFACE          CONNMAN_SERVICE ".Task"
43 #define CONNMAN_SERVICE_INTERFACE       CONNMAN_SERVICE ".Service"
44 #define CONNMAN_TECHNOLOGY_INTERFACE    CONNMAN_SERVICE ".Technology"
45 #define CONNMAN_SESSION_INTERFACE       CONNMAN_SERVICE ".Session"
46 #define CONNMAN_NOTIFICATION_INTERFACE  CONNMAN_SERVICE ".Notification"
47 #define CONNMAN_PEER_INTERFACE          CONNMAN_SERVICE ".Peer"
48
49 #define CONNMAN_PRIVILEGE_MODIFY        1
50 #define CONNMAN_PRIVILEGE_SECRET        2
51
52 typedef void (* connman_dbus_append_cb_t) (DBusMessageIter *iter,
53                                                         void *user_data);
54
55 DBusConnection *connman_dbus_get_connection(void);
56
57 void connman_dbus_property_append_basic(DBusMessageIter *iter,
58                                         const char *key, int type, void *val);
59 void connman_dbus_property_append_dict(DBusMessageIter *iter, const char *key,
60                         connman_dbus_append_cb_t function, void *user_data);
61 void connman_dbus_property_append_array(DBusMessageIter *iter,
62                                                 const char *key, int type,
63                         connman_dbus_append_cb_t function, void *user_data);
64 void connman_dbus_property_append_fixed_array(DBusMessageIter *iter,
65                                 const char *key, int type, void *val, int len);
66
67 dbus_bool_t connman_dbus_property_changed_basic(const char *path,
68                                 const char *interface, const char *key,
69                                                         int type, void *val);
70 dbus_bool_t connman_dbus_property_changed_dict(const char *path,
71                                 const char *interface, const char *key,
72                         connman_dbus_append_cb_t function, void *user_data);
73 dbus_bool_t connman_dbus_property_changed_array(const char *path,
74                         const char *interface, const char *key, int type,
75                         connman_dbus_append_cb_t function, void *user_data);
76
77 dbus_bool_t connman_dbus_setting_changed_basic(const char *owner,
78                                 const char *path, const char *key,
79                                 int type, void *val);
80 dbus_bool_t connman_dbus_setting_changed_dict(const char *owner,
81                                 const char *path, const char *key,
82                                 connman_dbus_append_cb_t function,
83                                 void *user_data);
84 dbus_bool_t connman_dbus_setting_changed_array(const char *owner,
85                                 const char *path, const char *key, int type,
86                                 connman_dbus_append_cb_t function,
87                                 void *user_data);
88
89 static inline void connman_dbus_dict_open(DBusMessageIter *iter,
90                                                         DBusMessageIter *dict)
91 {
92         dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
93                         DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
94                         DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
95                         DBUS_DICT_ENTRY_END_CHAR_AS_STRING, dict);
96 }
97
98 static inline void connman_dbus_dict_open_variant(DBusMessageIter *iter,
99                                                         DBusMessageIter *dict)
100 {
101         dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
102                         DBUS_TYPE_ARRAY_AS_STRING
103                         DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
104                         DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
105                         DBUS_DICT_ENTRY_END_CHAR_AS_STRING, dict);
106 }
107
108 static inline void connman_dbus_array_open(DBusMessageIter *iter,
109                                                         DBusMessageIter *dict)
110 {
111         dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
112                         DBUS_TYPE_ARRAY_AS_STRING
113                         DBUS_TYPE_STRING_AS_STRING,
114                         dict);
115 }
116
117 static inline void connman_dbus_dict_close(DBusMessageIter *iter,
118                                                         DBusMessageIter *dict)
119 {
120         dbus_message_iter_close_container(iter, dict);
121 }
122
123 static inline void connman_dbus_dict_append_basic(DBusMessageIter *dict,
124                                         const char *key, int type, void *val)
125 {
126         DBusMessageIter entry;
127
128         dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
129                                                                 NULL, &entry);
130         connman_dbus_property_append_basic(&entry, key, type, val);
131         dbus_message_iter_close_container(dict, &entry);
132 }
133
134 static inline void connman_dbus_dict_append_dict(DBusMessageIter *dict,
135                         const char *key, connman_dbus_append_cb_t function,
136                                                         void *user_data)
137 {
138         DBusMessageIter entry;
139
140         dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
141                                                                 NULL, &entry);
142         connman_dbus_property_append_dict(&entry, key, function, user_data);
143         dbus_message_iter_close_container(dict, &entry);
144 }
145
146 static inline void connman_dbus_dict_append_array(DBusMessageIter *dict,
147                 const char *key, int type, connman_dbus_append_cb_t function,
148                                                         void *user_data)
149 {
150         DBusMessageIter entry;
151
152         dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
153                                                                 NULL, &entry);
154         connman_dbus_property_append_array(&entry, key,
155                                                 type, function, user_data);
156         dbus_message_iter_close_container(dict, &entry);
157 }
158
159 static inline void connman_dbus_dict_append_fixed_array(DBusMessageIter *dict,
160                                 const char *key, int type, void *val, int len)
161 {
162         DBusMessageIter entry;
163
164         dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
165                                                                 NULL, &entry);
166         connman_dbus_property_append_fixed_array(&entry, key, type, val, len);
167         dbus_message_iter_close_container(dict, &entry);
168 }
169
170 dbus_bool_t connman_dbus_validate_ident(const char *ident);
171 char *connman_dbus_encode_string(const char *value);
172
173 typedef void (* connman_dbus_get_connection_unix_user_cb_t) (unsigned int uid,
174                                                 void *user_data, int err);
175
176 int connman_dbus_get_connection_unix_user(DBusConnection *connection,
177                                const char *bus_name,
178                                connman_dbus_get_connection_unix_user_cb_t func,
179                                void *user_data);
180
181 typedef void (* connman_dbus_get_context_cb_t) (const unsigned char *context,
182                                                 void *user_data, int err);
183
184 int connman_dbus_get_selinux_context(DBusConnection *connection,
185                                const char *service,
186                                connman_dbus_get_context_cb_t func,
187                                void *user_data);
188
189 void connman_dbus_reply_pending(DBusMessage *pending,
190                                         int error, const char *path);
191
192 #ifdef __cplusplus
193 }
194 #endif
195
196 #endif /* __CONNMAN_DBUS_H */