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