00001 #ifndef E_HAL_H
00002 #define E_HAL_H
00003
00004 #include <Eina.h>
00005 #include <E_DBus.h>
00006
00013 #define E_HAL_SENDER "org.freedesktop.Hal"
00014 #define E_HAL_MANAGER_PATH "/org/freedesktop/Hal/Manager"
00015 #define E_HAL_MANAGER_INTERFACE "org.freedesktop.Hal.Manager"
00016 #define E_HAL_DEVICE_INTERFACE "org.freedesktop.Hal.Device"
00017 #define E_HAL_DEVICE_VOLUME_INTERFACE "org.freedesktop.Hal.Device.Volume"
00018
00019
00020
00021 typedef struct E_Hal_Property E_Hal_Property;
00022 typedef struct E_Hal_Properties E_Hal_Properties;
00023
00024 struct E_Hal_String_List_Return
00025 {
00026 Eina_List *strings;
00027 };
00028
00029 struct E_Hal_Bool_Return
00030 {
00031 Eina_Bool boolean;
00032 };
00033
00034 struct E_Hal_UDI_Return
00035 {
00036 const char *udi;
00037 };
00038
00039 struct E_Hal_Capability
00040 {
00041 const char *udi;
00042 const char *capability;
00043 };
00044
00045 typedef enum
00046 {
00047 E_HAL_PROPERTY_TYPE_STRING,
00048 E_HAL_PROPERTY_TYPE_INT,
00049 E_HAL_PROPERTY_TYPE_UINT64,
00050 E_HAL_PROPERTY_TYPE_BOOL,
00051 E_HAL_PROPERTY_TYPE_DOUBLE,
00052 E_HAL_PROPERTY_TYPE_STRLIST
00053 } E_Hal_Property_Type;
00054
00055 struct E_Hal_Property
00056 {
00057 E_Hal_Property_Type type;
00058 union
00059 {
00060 const char *s;
00061 int i;
00062 dbus_bool_t b;
00063 double d;
00064 dbus_uint64_t u64;
00065 Eina_List *strlist;
00066 } val;
00067 };
00068
00069 struct E_Hal_Properties
00070 {
00071 Eina_Hash *properties;
00072 };
00073
00074 typedef struct E_Hal_Properties E_Hal_Device_Get_All_Properties_Return;
00075 typedef struct E_Hal_Property E_Hal_Device_Get_Property_Return;
00076 typedef struct E_Hal_Bool_Return E_Hal_Device_Query_Capability_Return;
00077 typedef struct E_Hal_String_List_Return E_Hal_String_List_Return;
00078 typedef struct E_Hal_String_List_Return E_Hal_Manager_Get_All_Devices_Return;
00079 typedef struct E_Hal_Bool_Return E_Hal_Manager_Device_Exists_Return;
00080 typedef struct E_Hal_String_List_Return E_Hal_Manager_Find_Device_String_Match_Return;
00081 typedef struct E_Hal_String_List_Return E_Hal_Manager_Find_Device_By_Capability_Return;
00082
00083
00084 typedef struct E_Hal_UDI_Return E_Hal_Manager_Device_Added;
00085 typedef struct E_Hal_UDI_Return E_Hal_Manager_Device_Removed;
00086 typedef struct E_Hal_Capability E_Hal_Manager_New_Capability;
00087
00088 #ifdef __cplusplus
00089 extern "C" {
00090 #endif
00091
00092 EAPI int e_hal_init(void);
00093 EAPI int e_hal_shutdown(void);
00094
00095
00096 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);
00097 EAPI DBusPendingCall *e_hal_device_get_all_properties(E_DBus_Connection *conn, const char *udi, E_DBus_Callback_Func cb_func, void *data);
00098 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);
00099
00100
00101 EAPI DBusPendingCall *e_hal_manager_get_all_devices(E_DBus_Connection *conn, E_DBus_Callback_Func cb_func, void *data);
00102 EAPI DBusPendingCall *e_hal_manager_device_exists(E_DBus_Connection *conn, const char *udi, E_DBus_Callback_Func cb_func, void *data);
00103 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);
00104 EAPI DBusPendingCall *e_hal_manager_find_device_by_capability(E_DBus_Connection *conn, const char *capability, E_DBus_Callback_Func cb_func, void *data);
00105
00106
00107 EAPI void e_hal_property_free(E_Hal_Property *prop);
00108 EAPI const char *e_hal_property_string_get(E_Hal_Properties *properties, const char *key, int *err);
00109 EAPI Eina_Bool e_hal_property_bool_get(E_Hal_Properties *properties, const char *key, int *err);
00110 EAPI int e_hal_property_int_get(E_Hal_Properties *properties, const char *key, int *err);
00111 EAPI uint64_t e_hal_property_uint64_get(E_Hal_Properties *properties, const char *key, int *err);
00112 EAPI double e_hal_property_double_get(E_Hal_Properties *properties, const char *key, int *err);
00113 EAPI const Eina_List *e_hal_property_strlist_get(E_Hal_Properties *properties, const char *key, int *err);
00114
00115
00116 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);
00117 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);
00118 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);
00119
00120 #ifdef __cplusplus
00121 }
00122 #endif
00123
00128 #endif