e_nms_connection_get_settings()
[framework/uifw/edbus.git] / src / lib / nm / E_Nm.h
1 #ifndef E_NM_H
2 #define E_NM_H
3
4 #include <E_DBus.h>
5 #include <Ecore_Data.h>
6
7 /*
8  * TODO:
9  * - Return objects instead of object paths.
10  */
11
12 #ifdef EAPI
13 #undef EAPI
14 #endif
15 #ifdef _MSC_VER
16 # ifdef BUILDING_DLL
17 #  define EAPI __declspec(dllexport)
18 # else
19 #  define EAPI __declspec(dllimport)
20 # endif
21 #else
22 # ifdef __GNUC__
23 #  if __GNUC__ >= 4
24 #   define EAPI __attribute__ ((visibility("default")))
25 #  else
26 #   define EAPI
27 #  endif
28 # else
29 #  define EAPI
30 # endif
31 #endif
32
33 #define E_NM_DEVICE_TYPE_WIRED 1
34 #define E_NM_DEVICE_TYPE_WIRELESS 2
35
36 typedef enum E_NM_State E_NM_State;
37 enum E_NM_State
38 {
39   E_NM_STATE_UNKNOWN = 0,
40   E_NM_STATE_ASLEEP = 1,
41   E_NM_STATE_CONNECTING = 2,
42   E_NM_STATE_CONNECTED = 3,
43   E_NM_STATE_DISCONNECTED = 4
44 };
45
46 typedef enum E_NM_802_11_Ap_Flags E_NM_802_11_Ap_Flags;
47 enum E_NM_802_11_Ap_Flags
48 {
49   E_NM_802_11_AP_FLAGS_NONE = 0x0,
50   E_NM_802_11_AP_FLAGS_PRIVACY = 0x1
51 };
52
53 typedef enum E_NM_802_11_Ap_Sec E_NM_802_11_Ap_Sec;
54 enum E_NM_802_11_Ap_Sec
55 {
56   E_NM_802_11_AP_SEC_NONE = 0x0,
57   E_NM_802_11_AP_SEC_PAIR_WEP40 = 0x1,
58   E_NM_802_11_AP_SEC_PAIR_WEP104 = 0x2,
59   E_NM_802_11_AP_SEC_PAIR_TKIP = 0x4,
60   E_NM_802_11_AP_SEC_PAIR_CCMP = 0x8,
61   E_NM_802_11_AP_SEC_GROUP_WEP40 = 0x10,
62   E_NM_802_11_AP_SEC_GROUP_WEP104 = 0x20,
63   E_NM_802_11_AP_SEC_GROUP_TKIP = 0x40,
64   E_NM_802_11_AP_SEC_GROUP_CCMP = 0x80,
65   E_NM_802_11_AP_SEC_KEY_MGMT_PSK = 0x100,
66   E_NM_802_11_AP_SEC_KEY_MGMT_802_1X = 0x200
67 };
68
69 typedef enum E_NM_Device_Cap E_NM_Device_Cap;
70 enum E_NM_Device_Cap
71 {
72   E_NM_DEVICE_CAP_NONE = 0x0,
73   E_NM_DEVICE_CAP_NM_SUPPORTED = 0x1,
74   E_NM_DEVICE_CAP_CARRIER_DETECT = 0x2
75 };
76
77 typedef enum E_NM_Device_State E_NM_Device_State;
78 enum E_NM_Device_State
79 {
80   E_NM_DEVICE_STATE_UNKNOWN = 0,
81   E_NM_DEVICE_STATE_UNMANAGED = 1,
82   E_NM_DEVICE_STATE_UNAVAILABLE = 2,
83   E_NM_DEVICE_STATE_DISCONNECTED = 3,
84   E_NM_DEVICE_STATE_PREPARE = 4,
85   E_NM_DEVICE_STATE_CONFIG = 5,
86   E_NM_DEVICE_STATE_NEED_AUTH = 6,
87   E_NM_DEVICE_STATE_IP_CONFIG = 7,
88   E_NM_DEVICE_STATE_ACTIVATED = 8,
89   E_NM_DEVICE_STATE_FAILED = 9
90 };
91
92 typedef enum E_NM_Device_State_Reason E_NM_Device_State_Reason;
93 enum E_NM_Device_State_Reason
94 {
95   E_NM_DEVICE_STATE_REASON_UNKNOWN = 0,
96   E_NM_DEVICE_STATE_REASON_NONE = 1,
97   E_NM_DEVICE_STATE_REASON_NOW_MANAGED = 2,
98   E_NM_DEVICE_STATE_REASON_NOW_UNMANAGED = 3,
99   E_NM_DEVICE_STATE_REASON_CONFIG_FAILED = 4,
100   E_NM_DEVICE_STATE_REASON_CONFIG_UNAVAILABLE = 5,
101   E_NM_DEVICE_STATE_REASON_CONFIG_EXPIRED = 6,
102   E_NM_DEVICE_STATE_REASON_NO_SECRETS = 7,
103   E_NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT = 8,
104   E_NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED = 9,
105   E_NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED = 10,
106   E_NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT = 11,
107   E_NM_DEVICE_STATE_REASON_PPP_START_FAILED = 12,
108   E_NM_DEVICE_STATE_REASON_PPP_DISCONNECT = 13,
109   E_NM_DEVICE_STATE_REASON_PPP_FAILED = 14,
110   E_NM_DEVICE_STATE_REASON_DHCP_START_FAILED = 15,
111   E_NM_DEVICE_STATE_REASON_DHCP_ERROR = 16,
112   E_NM_DEVICE_STATE_REASON_DHCP_FAILED = 17,
113   E_NM_DEVICE_STATE_REASON_SHARED_START_FAILED = 18,
114   E_NM_DEVICE_STATE_REASON_SHARED_FAILED = 19,
115   E_NM_DEVICE_STATE_REASON_AUTOIP_START_FAILED = 20,
116   E_NM_DEVICE_STATE_REASON_AUTOIP_ERROR = 21,
117   E_NM_DEVICE_STATE_REASON_AUTOIP_FAILED = 22,
118   E_NM_DEVICE_STATE_REASON_MODEM_BUSY = 23,
119   E_NM_DEVICE_STATE_REASON_MODEM_NO_DIAL_TONE = 24,
120   E_NM_DEVICE_STATE_REASON_MODEM_NO_CARRIER = 25,
121   E_NM_DEVICE_STATE_REASON_MODEM_DIAL_TIMEOUT = 26,
122   E_NM_DEVICE_STATE_REASON_MODEM_DIAL_FAILED = 27,
123   E_NM_DEVICE_STATE_REASON_MODEM_INIT_FAILED = 28,
124   E_NM_DEVICE_STATE_REASON_GSM_APN_FAILED = 29,
125   E_NM_DEVICE_STATE_REASON_GSM_REGISTRATION_NOT_SEARCHING = 30,
126   E_NM_DEVICE_STATE_REASON_GSM_REGISTRATION_DENIED = 31,
127   E_NM_DEVICE_STATE_REASON_GSM_REGISTRATION_TIMEOUT = 32,
128   E_NM_DEVICE_STATE_REASON_GSM_REGISTRATION_FAILED = 33,
129   E_NM_DEVICE_STATE_REASON_GSM_PIN_CHECK_FAILED = 34,
130   E_NM_DEVICE_STATE_REASON_FIRMWARE_MISSING = 35,
131   E_NM_DEVICE_STATE_REASON_REMOVED = 36,
132   E_NM_DEVICE_STATE_REASON_SLEEPING = 37,
133   E_NM_DEVICE_STATE_REASON_CONNECTION_REMOVED = 38,
134   E_NM_DEVICE_STATE_REASON_USER_REQUESTED = 39
135 };
136
137 typedef enum E_NM_802_11_Mode E_NM_802_11_Mode;
138 enum E_NM_802_11_Mode
139 {
140   E_NM_802_11_MODE_UNKNOWN = 0,
141   E_NM_802_11_MODE_ADHOC = 1,
142   E_NM_802_11_MODE_INFRA = 2
143 };
144
145 typedef enum E_NM_802_11_Device_Cap E_NM_802_11_Device_Cap;
146 enum E_NM_802_11_Device_Cap
147 {
148   E_NM_802_11_DEVICE_CAP_NONE = 0x0,
149   E_NM_802_11_DEVICE_CAP_CIPHER_WEP40 = 0x1,
150   E_NM_802_11_DEVICE_CAP_CIPHER_WEP104 = 0x2,
151   E_NM_802_11_DEVICE_CAP_CIPHER_TKIP = 0x4,
152   E_NM_802_11_DEVICE_CAP_CIPHER_CCMP = 0x8,
153   E_NM_802_11_DEVICE_CAP_WPA = 0x10,
154   E_NM_802_11_DEVICE_CAP_RSN = 0x20
155 };
156
157 typedef enum E_NMS_Context E_NMS_Context;
158 enum E_NMS_Context
159 {
160   E_NMS_CONTEXT_USER,
161   E_NMS_CONTEXT_SYSTEM,
162 };
163
164 typedef enum E_NM_Active_Connection_State E_NM_Active_Connection_State;
165 enum E_NM_Active_Connection_State
166 {
167   E_NM_ACTIVE_CONNECTION_STATE_UNKNOWN = 0,
168   E_NM_ACTIVE_CONNECTION_STATE_ACTIVATING = 1,
169   E_NM_ACTIVE_CONNECTION_STATE_ACTIVATED = 2
170 };
171
172 typedef struct E_NM E_NM;
173 struct E_NM
174 {
175   int         wireless_enabled; /* writeable*/
176   int         wireless_hardware_enabled;
177   Ecore_List *active_connections;
178   E_NM_State  state;
179 };
180
181 typedef struct E_NM_Access_Point E_NM_Access_Point;
182 struct E_NM_Access_Point
183 {
184   E_NM_802_11_Ap_Flags  flags;
185   E_NM_802_11_Ap_Sec    wpa_flags;
186   E_NM_802_11_Ap_Sec    rsn_flags;
187   Ecore_List           *ssid; /* unsigned char */
188   unsigned int          frequency;
189   char                 *hw_address;
190   E_NM_802_11_Mode      mode;
191   unsigned int          max_bitrate;
192   unsigned char         strength;
193 };
194
195 typedef struct E_NM_Device E_NM_Device;
196 struct E_NM_Device
197 {
198   char              *udi; /* object_path */
199   char              *interface;
200   char              *driver;
201   E_NM_Device_Cap    capabilities;
202   unsigned int       ip4_address;
203   E_NM_Device_State  state;
204   char              *ip4_config; /* object_path */
205   char              *dhcp4_config; /* object_path */
206   int                managed;
207   unsigned int       device_type;
208   union
209   {
210     struct {
211       char         *hw_address;
212       unsigned int  speed;
213       int           carrier;
214     } wired;
215     struct {
216       char                   *hw_address;
217       E_NM_802_11_Mode        mode;
218       unsigned int            bitrate;
219       char                   *active_access_point; /* object_path */
220       E_NM_802_11_Device_Cap  wireless_capabilities;
221     } wireless;
222     /* TODO: cdma */
223     /* TODO: gsm */
224     /* TODO: serial */
225   };
226 };
227
228 typedef struct E_NM_IP4_Config E_NM_IP4_Config;
229 struct E_NM_IP4_Config
230 {
231   Ecore_List *addresses;  /* list unsigned int */
232   Ecore_List *nameservers;/* unsigned int */
233   Ecore_List *domains;    /* char* */
234   Ecore_List *routes;     /* list unsigned int */
235 };
236
237 /* TODO typedef struct E_NM_DHCP4_Config E_NM_DHCP4_Config; */
238
239 typedef struct E_NMS E_NMS;
240 /* No properties */
241
242 typedef struct E_NMS_Connection E_NMS_Connection;
243 /* No properties */
244
245 typedef struct E_NM_Active_Connection E_NM_Active_Connection;
246 struct E_NM_Active_Connection
247 {
248   char                         *service_name;
249   char                         *connection; /* object_path */
250   char                         *specific_object; /* object_path */
251   Ecore_List                   *devices; /* object_path */
252   E_NM_Active_Connection_State  state;
253   int                           def; /* default */
254 };
255
256 /* TODO typedef struct E_NM_VPN_Connection E_NM_VPN_Connection */
257 /* TODO typedef struct E_NM_VPN_Plugin E_NM_VPN_Plugin */
258
259 typedef struct E_NM_Property E_NM_Property;
260 struct E_NM_Property
261 {
262   union
263   {
264     unsigned char       y;
265     unsigned int        u;
266     char               *s;
267     unsigned long long  t;
268     int                 b;
269     Ecore_List         *a;
270   };
271   char type;
272 };
273
274 #ifdef __cplusplus
275 extern "C" {
276 #endif
277
278    /* org.freedesktop.NetworkManager api */
279    EAPI int   e_nm_get(int (*cb_func)(void *data, E_NM *nm), void *data);
280    EAPI void  e_nm_free(E_NM *nm);
281    EAPI void  e_nm_dump(E_NM *nm);
282
283    /* TODO: e_nm_wireless_enabled_set */
284    EAPI int   e_nm_get_devices(E_NM *nm, int (*cb_func)(void *data, Ecore_List *list), void *data);
285    /* TODO: e_nm_activate_connection */
286    /* TODO: e_nm_deactivate_connection */
287    EAPI int   e_nm_sleep(E_NM *nm, int sleep);
288
289    EAPI void  e_nm_data_set(E_NM *nm, void *data);
290    EAPI void *e_nm_data_get(E_NM *nm);
291    EAPI void  e_nm_callback_state_changed_set(E_NM *nm, int (*cb_func)(E_NM *nm, E_NM_State state));
292    EAPI void  e_nm_callback_properties_changed_set(E_NM *nm, int (*cb_func)(E_NM *nm));
293    EAPI void  e_nm_callback_device_added_set(E_NM *nm, int (*cb_func)(E_NM *nm, const char *device));
294    EAPI void  e_nm_callback_device_removed_set(E_NM *nm, int (*cb_func)(E_NM *nm, const char *device));
295
296    /* org.freedesktop.NetworkManager.AccessPoint api */
297    EAPI int   e_nm_access_point_get(E_NM *nm, const char *access_point,
298                                     int (*cb_func)(void *data, E_NM_Access_Point *ap),
299                                     void *data);
300    EAPI void  e_nm_access_point_free(E_NM_Access_Point *access_point);
301    EAPI void  e_nm_access_point_dump(E_NM_Access_Point *access_point);
302
303    EAPI void  e_nm_access_point_data_set(E_NM_Access_Point *access_point, void *data);
304    EAPI void *e_nm_access_point_data_get(E_NM_Access_Point *access_point);
305    EAPI void  e_nm_access_point_callback_properties_changed_set(E_NM_Access_Point *access_point, int (*cb_func)(E_NM_Access_Point *access_point));
306
307    /* org.freedesktop.NetworkManager.Device(.*) api */
308    EAPI int   e_nm_device_get(E_NM *nm, const char *device,
309                               int (*cb_func)(void *data, E_NM_Device *dev),
310                               void *data);
311    EAPI void  e_nm_device_free(E_NM_Device *device);
312    EAPI void  e_nm_device_dump(E_NM_Device *device);
313
314    /* TODO: e_nm_device_wireless_get_access_points */
315
316    EAPI void  e_nm_device_data_set(E_NM_Device *device, void *data);
317    EAPI void *e_nm_device_data_get(E_NM_Device *device);
318    EAPI void  e_nm_device_callback_state_changed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, E_NM_State new_state, E_NM_State old_state, E_NM_Device_State_Reason reason));
319    EAPI void  e_nm_device_callback_properties_changed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device));
320    /* TODO: e_nm_device_wireless_callback_access_point_added_set */
321    /* TODO: e_nm_device_wireless_callback_access_point_removed_set */
322
323    /* org.freedesktop.NetworkManager.IP4Config api */
324    EAPI int   e_nm_ip4_config_get(E_NM *nm, const char *config,
325                                   int (*cb_func)(void *data, E_NM_IP4_Config *config),
326                                   void *data);
327    EAPI void  e_nm_ip4_config_free(E_NM_IP4_Config *config);
328    EAPI void  e_nm_ip4_config_dump(E_NM_IP4_Config *config);
329
330    /* TODO: org.freedesktop.NetworkManager.DHCP4Config api */
331
332    /* org.freedesktop.NetworkManagerSettings api */
333    EAPI int   e_nms_get(E_NM *nm, int (*cb_func)(void *data, E_NMS *nms), void *data);
334    EAPI void  e_nms_free(E_NMS *nms);
335    EAPI void  e_nms_dump(E_NMS *nms);
336    EAPI int   e_nms_list_connections(E_NMS *nms,
337                         int (*cb_func)(void *data, Ecore_List *list),
338                         void *data);
339
340    EAPI void  e_nms_callback_new_connection_set(E_NMS *nms, int (*cb_func)(E_NMS *nms, E_NMS_Context context, const char *connection));
341
342    /* org.freedesktop.NetworkManagerSettings.Connection(.*) api */
343    EAPI int   e_nms_connection_get(E_NMS *nms, E_NMS_Context context, const char *connection, int (*cb_func)(void *data, E_NMS_Connection *conn), void *data);
344    EAPI void  e_nms_connection_free(E_NMS_Connection *conn);
345    EAPI void  e_nms_connection_dump(E_NMS_Connection *conn);
346
347    /* TODO: e_nms_connection_update */
348    /* TODO: e_nms_connection_delete */
349    EAPI int  e_nms_connection_get_settings(E_NMS_Connection *conn, int (*cb_func)(void *data, Ecore_Hash *settings), void *data);
350    /* TODO: e_nms_connection_secrets_get_secrets */
351
352    /* TODO: e_nms_connection_callback_updated_set */
353    /* TODO: e_nms_connection_callback_removed_set */
354
355    /* TODO: org.freedesktop.NetworkManager.Connection.Active api */
356    EAPI int   e_nm_active_connection_get(E_NM *nm, const char *conn, int (*cb_func)(void *data, E_NM_Active_Connection *conn), void *data);
357    EAPI void  e_nm_active_connection_free(E_NM_Active_Connection *conn);
358    EAPI void  e_nm_active_connection_dump(E_NM_Active_Connection *conn);
359
360    EAPI void  e_nm_active_connection_callback_properties_changed_set(E_NM_Active_Connection *conn, int (*cb_func)(E_NM_Active_Connection *conn));
361
362    /* TODO: org.freedesktop.NetworkManager.VPN.Connection api */
363    /* TODO: org.freedesktop.NetworkManager.VPN.Plugin api */
364
365 #ifdef __cplusplus
366 }
367 #endif
368
369 #endif