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