lib/hal/E_Hal.h
Go to the documentation of this file.
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 /* message return types */
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; /* list of const char * */
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 /* org.freedesktop.Hal.Device */
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 /* org.freedesktop.Hal.Manager */
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 /* utility functions */
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 /* (un)mount */
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