Revert r48365 as requested by Mike.
[framework/uifw/edbus.git] / src / lib / hal / E_Hal.h
1 #ifndef E_HAL_H
2 #define E_HAL_H
3 #include <E_DBus.h>
4 #include <eina_stringshare.h>
5
6 #ifdef EAPI
7 #undef EAPI
8 #endif
9 #ifdef _MSC_VER
10 # ifdef BUILDING_DLL
11 #  define EAPI __declspec(dllexport)
12 # else
13 #  define EAPI __declspec(dllimport)
14 # endif
15 #else
16 # ifdef __GNUC__
17 #  if __GNUC__ >= 4
18 #   define EAPI __attribute__ ((visibility("default")))
19 #  else
20 #   define EAPI
21 #  endif
22 # else
23 #  define EAPI
24 # endif
25 #endif
26
27 #define E_HAL_SENDER "org.freedesktop.Hal"
28 #define E_HAL_MANAGER_PATH "/org/freedesktop/Hal/Manager"
29 #define E_HAL_MANAGER_INTERFACE "org.freedesktop.Hal.Manager"
30 #define E_HAL_DEVICE_INTERFACE "org.freedesktop.Hal.Device"
31 #define E_HAL_DEVICE_VOLUME_INTERFACE "org.freedesktop.Hal.Device.Volume"
32
33 /* message return types */
34
35 typedef struct E_Hal_Property E_Hal_Property;
36 typedef struct E_Hal_Properties E_Hal_Properties;
37
38 struct E_Hal_String_List_Return
39 {
40   Eina_List *strings; /* list of const char * */
41 };
42
43 struct E_Hal_Bool_Return
44 {
45   char boolean;
46 };
47
48 struct E_Hal_UDI_Return
49 {
50   const char *udi;
51 };
52
53 struct E_Hal_Capability
54 {
55   const char *udi;
56   const char *capability;
57 };
58
59 typedef enum
60 {
61   E_HAL_PROPERTY_TYPE_STRING,
62   E_HAL_PROPERTY_TYPE_INT,
63   E_HAL_PROPERTY_TYPE_UINT64,
64   E_HAL_PROPERTY_TYPE_BOOL,
65   E_HAL_PROPERTY_TYPE_DOUBLE,
66   E_HAL_PROPERTY_TYPE_STRLIST
67 } E_Hal_Property_Type;
68
69 struct E_Hal_Property
70 {
71   E_Hal_Property_Type type;
72   union 
73   {
74     const char *s;
75     int i;
76     dbus_bool_t b;
77     double d;
78     dbus_uint64_t u64;
79     Eina_List *strlist;
80   } val;
81 };
82
83 struct E_Hal_Properties
84 {
85   Eina_Hash *properties;
86 };
87
88 typedef struct E_Hal_Properties E_Hal_Device_Get_All_Properties_Return;
89 typedef struct E_Hal_Property E_Hal_Device_Get_Property_Return;
90 typedef struct E_Hal_Bool_Return E_Hal_Device_Query_Capability_Return;
91 typedef struct E_Hal_String_List_Return E_Hal_String_List_Return;
92 typedef struct E_Hal_String_List_Return E_Hal_Manager_Get_All_Devices_Return;
93 typedef struct E_Hal_Bool_Return E_Hal_Manager_Device_Exists_Return;
94 typedef struct E_Hal_String_List_Return E_Hal_Manager_Find_Device_String_Match_Return;
95 typedef struct E_Hal_String_List_Return E_Hal_Manager_Find_Device_By_Capability_Return;
96
97
98 typedef struct E_Hal_UDI_Return E_Hal_Manager_Device_Added;
99 typedef struct E_Hal_UDI_Return E_Hal_Manager_Device_Removed;
100 typedef struct E_Hal_Capability E_Hal_Manager_New_Capability;
101
102 #ifdef __cplusplus
103 extern "C" {
104 #endif
105
106    EAPI int e_hal_init(void);
107    EAPI int e_hal_shutdown(void);
108
109 /* org.freedesktop.Hal.Device */
110    EAPI DBusPendingCall *e_hal_device_get_property(E_DBus_Connection *conn, const char *udi, const char *property, E_DBus_Callback_Func cb_func, void *data);
111    EAPI DBusPendingCall *e_hal_device_get_all_properties(E_DBus_Connection *conn, const char *udi, E_DBus_Callback_Func cb_func, void *data);
112    EAPI DBusPendingCall *e_hal_device_query_capability(E_DBus_Connection *conn, const char *udi, const char *capability, E_DBus_Callback_Func cb_func, void *data);
113
114 /* org.freedesktop.Hal.Manager */
115    EAPI DBusPendingCall *e_hal_manager_get_all_devices(E_DBus_Connection *conn, E_DBus_Callback_Func cb_func, void *data);
116    EAPI DBusPendingCall *e_hal_manager_device_exists(E_DBus_Connection *conn, const char *udi, E_DBus_Callback_Func cb_func, void *data);
117    EAPI DBusPendingCall *e_hal_manager_find_device_string_match(E_DBus_Connection *conn, const char *key, const char *value, E_DBus_Callback_Func cb_func, void *data);
118    EAPI DBusPendingCall *e_hal_manager_find_device_by_capability(E_DBus_Connection *conn, const char *capability, E_DBus_Callback_Func cb_func, void *data);
119
120 /* utility functions */
121    EAPI void           e_hal_property_free(E_Hal_Property *prop);
122    EAPI char          *e_hal_property_string_get(E_Hal_Properties *properties, const char *key, int *err);
123    EAPI char           e_hal_property_bool_get(E_Hal_Properties *properties, const char *key, int *err);
124    EAPI int            e_hal_property_int_get(E_Hal_Properties *properties, const char *key, int *err);
125    EAPI dbus_uint64_t  e_hal_property_uint64_get(E_Hal_Properties *properties, const char *key, int *err);
126    EAPI double         e_hal_property_double_get(E_Hal_Properties *properties, const char *key, int *err);
127    EAPI Eina_List     *e_hal_property_strlist_get(E_Hal_Properties *properties, const char *key, int *err);
128
129 /* (un)mount */
130    EAPI DBusPendingCall *e_hal_device_volume_mount(E_DBus_Connection *conn, const char *udi, const char *mount_point, const char *fstype, Eina_List *options, E_DBus_Callback_Func cb_func, void *data);
131    EAPI DBusPendingCall *e_hal_device_volume_unmount(E_DBus_Connection *conn, const char *udi, Eina_List *options, E_DBus_Callback_Func cb_func, void *data);
132    EAPI DBusPendingCall *e_hal_device_volume_eject(E_DBus_Connection *conn, const char *udi, Eina_List *options, E_DBus_Callback_Func cb_func, void *data);
133
134 #ifdef __cplusplus
135 }
136 #endif
137
138 #endif