lib/ukit/E_Ukit.h
Go to the documentation of this file.
00001 #ifndef E_UKIT_H
00002 #define E_UKIT_H
00003 
00004 #include <Eina.h>
00005 #include <E_DBus.h>
00006 
00013 #define E_UDISKS_BUS "org.freedesktop.UDisks"
00014 #define E_UDISKS_PATH "/org/freedesktop/UDisks"
00015 #define E_UDISKS_INTERFACE "org.freedesktop.UDisks.Device"
00016 
00017 #define E_UPOWER_BUS "org.freedesktop.UPower"
00018 #define E_UPOWER_PATH "/org/freedesktop/UPower"
00019 #define E_UPOWER_INTERFACE "org.freedesktop.UPower.Device"
00020 
00021 /* message return types */
00022 
00023 typedef struct E_Ukit_Property E_Ukit_Property;
00024 typedef struct E_Ukit_Properties E_Ukit_Properties;
00025 
00026 struct E_Ukit_String_List_Return
00027 {
00028    Eina_List *strings; /* list of const char * */
00029 };
00030 
00031 struct E_Ukit_Bool_Return
00032 {
00033    Eina_Bool boolean;
00034 };
00035 
00036 struct E_Ukit_UDI_Return
00037 {
00038    const char *udi;
00039 };
00040 
00041 struct E_Ukit_Capability
00042 {
00043    const char *udi;
00044    const char *capability;
00045 };
00046 
00047 typedef enum
00048 {
00049    E_UKIT_PROPERTY_TYPE_STRING,
00050    E_UKIT_PROPERTY_TYPE_INT,
00051    E_UKIT_PROPERTY_TYPE_UINT32,
00052    E_UKIT_PROPERTY_TYPE_UINT64,
00053    E_UKIT_PROPERTY_TYPE_INT64,
00054    E_UKIT_PROPERTY_TYPE_BOOL,
00055    E_UKIT_PROPERTY_TYPE_DOUBLE,
00056    E_UKIT_PROPERTY_TYPE_STRLIST
00057 } E_Ukit_Property_Type;
00058 
00059 struct E_Ukit_Property
00060 {
00061    E_Ukit_Property_Type type;
00062    union 
00063      {
00064         const char *s;
00065         int i;
00066         Eina_Bool b;
00067         double d;
00068         uint32_t u;
00069         uint64_t t;
00070         int64_t x;
00071         Eina_List *strlist;
00072      } val;
00073 };
00074 
00075 struct E_Ukit_Properties
00076 {
00077    Eina_Hash *properties;
00078 };
00079 
00080 typedef enum
00081 {
00082    E_UPOWER_BATTERY_UNKNOWN,
00083    E_UPOWER_BATTERY_LION,
00084    E_UPOWER_BATTERY_LPOLYMER,
00085    E_UPOWER_BATTERY_LIRONPHOS,
00086    E_UPOWER_BATTERY_LEAD,
00087    E_UPOWER_BATTERY_NICAD,
00088    E_UPOWER_BATTERY_METALHYDRYDE
00089 } E_UPower_Battery_Type;
00090 
00091 typedef enum
00092 {
00093    E_UPOWER_STATE_UNKNOWN,
00094    E_UPOWER_STATE_CHARGING,
00095    E_UPOWER_STATE_DISCHARGING,
00096    E_UPOWER_STATE_EMPTY,
00097    E_UPOWER_STATE_FULL,
00098    E_UPOWER_STATE_PENDINGCHARGE,
00099    E_UPOWER_STATE_PENDINGDISCHARGE
00100 } E_Upower_State;
00101 
00102 typedef enum
00103 {
00104    E_UPOWER_SOURCE_UNKNOWN,
00105    E_UPOWER_SOURCE_AC,
00106    E_UPOWER_SOURCE_BATTERY,
00107    E_UPOWER_SOURCE_UPS,
00108    E_UPOWER_SOURCE_MONITOR,
00109    E_UPOWER_SOURCE_MOUSE,
00110    E_UPOWER_SOURCE_KEYBOARD,
00111    E_UPOWER_SOURCE_PDA,
00112    E_UPOWER_SOURCE_PHONE
00113 } E_Upower_Source;
00114    
00115 
00116 typedef struct E_Ukit_Properties E_Ukit_Get_All_Properties_Return;
00117 typedef struct E_Ukit_Property E_Ukit_Get_Property_Return;
00118 typedef struct E_Ukit_String_List_Return E_Ukit_String_List_Return;
00119 typedef struct E_Ukit_String_List_Return E_Ukit_Get_All_Devices_Return;
00120 
00121 typedef struct E_Ukit_UDI_Return E_Ukit_Device_Added;
00122 typedef struct E_Ukit_UDI_Return E_Ukit_Device_Removed;
00123 typedef struct E_Ukit_Capability E_Ukit_New_Capability;
00124 
00125 #ifdef __cplusplus
00126 extern "C" {
00127 #endif
00128 
00129    EAPI int e_ukit_init(void);
00130    EAPI int e_ukit_shutdown(void);
00131 
00132    EAPI DBusPendingCall *e_udisks_get_property(E_DBus_Connection *conn, const char *udi, const char *property, E_DBus_Callback_Func cb_func, void *data);
00133    EAPI DBusPendingCall *e_udisks_get_all_properties(E_DBus_Connection *conn, const char *udi, E_DBus_Callback_Func cb_func, void *data);
00134    EAPI DBusPendingCall *e_udisks_get_all_devices(E_DBus_Connection *conn, E_DBus_Callback_Func cb_func, void *data);
00135 
00136    EAPI DBusPendingCall *e_upower_get_property(E_DBus_Connection *conn, const char *udi, const char *property, E_DBus_Callback_Func cb_func, void *data);
00137    EAPI DBusPendingCall *e_upower_get_all_properties(E_DBus_Connection *conn, const char *udi, E_DBus_Callback_Func cb_func, void *data);
00138    EAPI DBusPendingCall *e_upower_get_all_devices(E_DBus_Connection *conn, E_DBus_Callback_Func cb_func, void *data);
00139 
00140    EAPI DBusPendingCall * e_upower_suspend_allowed(E_DBus_Connection *conn, E_DBus_Callback_Func cb_func, void *data);
00141    EAPI DBusPendingCall * e_upower_suspend(E_DBus_Connection *conn, E_DBus_Callback_Func cb_func, void *data);
00142    EAPI DBusPendingCall * e_upower_hibernate(E_DBus_Connection *conn, E_DBus_Callback_Func cb_func, void *data);
00143    EAPI DBusPendingCall * e_upower_hibernate_allowed(E_DBus_Connection *conn, E_DBus_Callback_Func cb_func, void *data);
00144 
00145 /* utility functions */
00146    EAPI void                e_ukit_property_free(E_Ukit_Property *prop);
00147    EAPI const char         *e_ukit_property_string_get(E_Ukit_Properties *properties, const char *key, int *err);
00148    EAPI Eina_Bool           e_ukit_property_bool_get(E_Ukit_Properties *properties, const char *key, int *err);
00149    EAPI int                 e_ukit_property_int_get(E_Ukit_Properties *properties, const char *key, int *err);
00150    EAPI uint32_t            e_ukit_property_uint32_get(E_Ukit_Properties *properties, const char *key, int *err);
00151    EAPI uint64_t            e_ukit_property_uint64_get(E_Ukit_Properties *properties, const char *key, int *err);
00152    EAPI int64_t             e_ukit_property_int64_get(E_Ukit_Properties *properties, const char *key, int *err);
00153    EAPI double              e_ukit_property_double_get(E_Ukit_Properties *properties, const char *key, int *err);
00154    EAPI const Eina_List    *e_ukit_property_strlist_get(E_Ukit_Properties *properties, const char *key, int *err);
00155 
00156 /* (un)mount */
00157    EAPI DBusPendingCall *e_udisks_volume_mount(E_DBus_Connection *conn, const char *udi, const char *fstype, Eina_List *options);
00158    EAPI DBusPendingCall *e_udisks_volume_unmount(E_DBus_Connection *conn, const char *udi, Eina_List *options);
00159    EAPI DBusPendingCall *e_udisks_volume_eject(E_DBus_Connection *conn, const char *udi, Eina_List *options);
00160 
00161 #ifdef __cplusplus
00162 }
00163 #endif
00164 
00169 #endif