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