#ifndef LIBHAL_H
#define LIBHAL_H
#include <dbus/dbus.h>
#if defined(__cplusplus)
extern "C" {
#if 0
}
#endif
#endif
#if defined(__GNUC__)
#define LIBHAL_DEPRECATED __attribute__ ((deprecated))
#else
#define LIBHAL_DEPRECATED
#endif
#define LIBHAL_FREE_DBUS_ERROR(_dbus_error_) \
do { \
if (dbus_error_is_set(_dbus_error_)) \
dbus_error_free (_dbus_error_); \
} while (0)
#define LIBHAL_CHECK_LIBHALCONTEXT(_ctx_, _ret_) \
do { \
if (_ctx_ == NULL) { \
fprintf (stderr, \
"%s %d : LibHalContext *ctx is NULL\n", \
__FILE__, __LINE__); \
return _ret_; \
} \
} while(0)
typedef enum {
LIBHAL_PROPERTY_TYPE_INVALID = DBUS_TYPE_INVALID,
LIBHAL_PROPERTY_TYPE_INT32 = DBUS_TYPE_INT32,
LIBHAL_PROPERTY_TYPE_UINT64 = DBUS_TYPE_UINT64,
LIBHAL_PROPERTY_TYPE_DOUBLE = DBUS_TYPE_DOUBLE,
LIBHAL_PROPERTY_TYPE_BOOLEAN = DBUS_TYPE_BOOLEAN,
LIBHAL_PROPERTY_TYPE_ARRAY = DBUS_TYPE_ARRAY,
LIBHAL_PROPERTY_TYPE_STRING = DBUS_TYPE_STRING,
LIBHAL_PROPERTY_TYPE_STRLIST = ((int) (DBUS_TYPE_STRING<<8)+('l'))
} LibHalPropertyType;
typedef struct LibHalContext_s LibHalContext;
typedef void (*LibHalIntegrateDBusIntoMainLoop) (LibHalContext *ctx,
DBusConnection *dbus_connection);
typedef void (*LibHalDeviceAdded) (LibHalContext *ctx,
const char *udi);
typedef void (*LibHalDeviceRemoved) (LibHalContext *ctx,
const char *udi);
typedef void (*LibHalDeviceNewCapability) (LibHalContext *ctx,
const char *udi,
const char *capability);
typedef void (*LibHalDeviceLostCapability) (LibHalContext *ctx,
const char *udi,
const char *capability);
typedef void (*LibHalDevicePropertyModified) (LibHalContext *ctx,
const char *udi,
const char *key,
dbus_bool_t is_removed,
dbus_bool_t is_added);
typedef void (*LibHalDeviceCondition) (LibHalContext *ctx,
const char *udi,
const char *condition_name,
const char *condition_detail);
LibHalContext *libhal_ctx_new (void);
dbus_bool_t libhal_ctx_set_cache (LibHalContext *ctx, dbus_bool_t use_cache);
dbus_bool_t libhal_ctx_set_dbus_connection (LibHalContext *ctx, DBusConnection *conn);
DBusConnection *libhal_ctx_get_dbus_connection (LibHalContext *ctx);
dbus_bool_t libhal_ctx_set_user_data (LibHalContext *ctx, void *user_data);
void* libhal_ctx_get_user_data (LibHalContext *ctx);
dbus_bool_t libhal_ctx_set_device_added (LibHalContext *ctx, LibHalDeviceAdded callback);
dbus_bool_t libhal_ctx_set_device_removed (LibHalContext *ctx, LibHalDeviceRemoved callback);
dbus_bool_t libhal_ctx_set_device_new_capability (LibHalContext *ctx, LibHalDeviceNewCapability callback);
dbus_bool_t libhal_ctx_set_device_lost_capability (LibHalContext *ctx, LibHalDeviceLostCapability callback);
dbus_bool_t libhal_ctx_set_device_property_modified (LibHalContext *ctx, LibHalDevicePropertyModified callback);
dbus_bool_t libhal_ctx_set_device_condition (LibHalContext *ctx, LibHalDeviceCondition callback);
dbus_bool_t libhal_ctx_init (LibHalContext *ctx, DBusError *error);
dbus_bool_t libhal_ctx_shutdown (LibHalContext *ctx, DBusError *error);
dbus_bool_t libhal_ctx_free (LibHalContext *ctx);
LibHalContext *libhal_ctx_init_direct (DBusError *error);
char **libhal_get_all_devices (LibHalContext *ctx, int *num_devices, DBusError *error);
dbus_bool_t libhal_device_exists (LibHalContext *ctx, const char *udi, DBusError *error);
dbus_bool_t libhal_device_print (LibHalContext *ctx, const char *udi, DBusError *error);
dbus_bool_t libhal_device_property_exists (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
char *libhal_device_get_property_string (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
dbus_int32_t libhal_device_get_property_int (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
dbus_uint64_t libhal_device_get_property_uint64 (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
double libhal_device_get_property_double (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
dbus_bool_t libhal_device_get_property_bool (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
char **libhal_device_get_property_strlist (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
dbus_bool_t libhal_device_set_property_string (LibHalContext *ctx,
const char *udi,
const char *key,
const char *value,
DBusError *error);
dbus_bool_t libhal_device_set_property_int (LibHalContext *ctx,
const char *udi,
const char *key,
dbus_int32_t value,
DBusError *error);
dbus_bool_t libhal_device_set_property_uint64 (LibHalContext *ctx,
const char *udi,
const char *key,
dbus_uint64_t value,
DBusError *error);
dbus_bool_t libhal_device_set_property_double (LibHalContext *ctx,
const char *udi,
const char *key,
double value,
DBusError *error);
dbus_bool_t libhal_device_set_property_bool (LibHalContext *ctx,
const char *udi,
const char *key,
dbus_bool_t value,
DBusError *error);
dbus_bool_t libhal_device_property_strlist_append (LibHalContext *ctx,
const char *udi,
const char *key,
const char *value,
DBusError *error);
dbus_bool_t libhal_device_property_strlist_prepend (LibHalContext *ctx,
const char *udi,
const char *key,
const char *value,
DBusError *error);
dbus_bool_t libhal_device_property_strlist_remove_index (LibHalContext *ctx,
const char *udi,
const char *key,
unsigned int idx,
DBusError *error);
dbus_bool_t libhal_device_property_strlist_remove (LibHalContext *ctx,
const char *udi,
const char *key,
const char *value,
DBusError *error);
dbus_bool_t libhal_device_remove_property (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
LibHalPropertyType libhal_device_get_property_type (LibHalContext *ctx,
const char *udi,
const char *key,
DBusError *error);
struct LibHalChangeSet_s;
typedef struct LibHalChangeSet_s LibHalChangeSet;
LibHalChangeSet *libhal_device_new_changeset (const char *udi);
dbus_bool_t libhal_changeset_set_property_string (LibHalChangeSet *changeset,
const char *key,
const char *value);
dbus_bool_t libhal_changeset_set_property_int (LibHalChangeSet *changeset,
const char *key,
dbus_int32_t value);
dbus_bool_t libhal_changeset_set_property_uint64 (LibHalChangeSet *changeset,
const char *key,
dbus_uint64_t value);
dbus_bool_t libhal_changeset_set_property_double (LibHalChangeSet *changeset,
const char *key,
double value);
dbus_bool_t libhal_changeset_set_property_bool (LibHalChangeSet *changeset,
const char *key,
dbus_bool_t value);
dbus_bool_t libhal_changeset_set_property_strlist (LibHalChangeSet *changeset,
const char *key,
const char **value);
dbus_bool_t libhal_device_commit_changeset (LibHalContext *ctx,
LibHalChangeSet *changeset,
DBusError *error);
void libhal_device_free_changeset (LibHalChangeSet *changeset);
struct LibHalProperty_s;
typedef struct LibHalProperty_s LibHalProperty;
struct LibHalPropertySet_s;
typedef struct LibHalPropertySet_s LibHalPropertySet;
LibHalPropertySet *libhal_device_get_all_properties (LibHalContext *ctx,
const char *udi,
DBusError *error);
void libhal_free_property_set (LibHalPropertySet *set);
unsigned int libhal_property_set_get_num_elems (LibHalPropertySet *set);
LibHalPropertyType libhal_ps_get_type (const LibHalPropertySet *set, const char *key);
const char *libhal_ps_get_string (const LibHalPropertySet *set, const char *key);
dbus_int32_t libhal_ps_get_int32 (const LibHalPropertySet *set, const char *key);
dbus_uint64_t libhal_ps_get_uint64 (const LibHalPropertySet *set, const char *key);
double libhal_ps_get_double (const LibHalPropertySet *set, const char *key);
dbus_bool_t libhal_ps_get_bool (const LibHalPropertySet *set, const char *key);
const char * const *libhal_ps_get_strlist (const LibHalPropertySet *set, const char *key);
struct LibHalPropertySetIterator_s {
LibHalPropertySet *set;
unsigned int idx;
LibHalProperty *cur_prop;
void *reservered0;
void *reservered1;
};
typedef struct LibHalPropertySetIterator_s LibHalPropertySetIterator;
void libhal_psi_init (LibHalPropertySetIterator *iter, LibHalPropertySet *set);
dbus_bool_t libhal_psi_has_more (LibHalPropertySetIterator *iter);
void libhal_psi_next (LibHalPropertySetIterator *iter);
LibHalPropertyType libhal_psi_get_type (LibHalPropertySetIterator *iter);
char *libhal_psi_get_key (LibHalPropertySetIterator *iter);
char *libhal_psi_get_string (LibHalPropertySetIterator *iter);
dbus_int32_t libhal_psi_get_int (LibHalPropertySetIterator *iter);
dbus_uint64_t libhal_psi_get_uint64 (LibHalPropertySetIterator *iter);
double libhal_psi_get_double (LibHalPropertySetIterator *iter);
dbus_bool_t libhal_psi_get_bool (LibHalPropertySetIterator *iter);
char **libhal_psi_get_strlist (LibHalPropertySetIterator *iter);
unsigned int libhal_string_array_length (char **str_array);
void libhal_free_string_array (char **str_array);
void libhal_free_string (char *str);
char *libhal_new_device (LibHalContext *ctx, DBusError *error);
dbus_bool_t libhal_device_commit_to_gdl (LibHalContext *ctx,
const char *temp_udi,
const char *udi,
DBusError *error);
dbus_bool_t libhal_remove_device (LibHalContext *ctx,
const char *udi,
DBusError *error);
dbus_bool_t libhal_merge_properties (LibHalContext *ctx,
const char *target_udi,
const char *source_udi,
DBusError *error);
dbus_bool_t libhal_device_matches (LibHalContext *ctx,
const char *udi1,
const char *udi2,
const char *property_namespace,
DBusError *error);
char **libhal_manager_find_device_string_match (LibHalContext *ctx,
const char *key,
const char *value,
int *num_devices,
DBusError *error);
dbus_bool_t libhal_device_add_capability (LibHalContext *ctx,
const char *udi,
const char *capability,
DBusError *error);
dbus_bool_t libhal_device_query_capability (LibHalContext *ctx,
const char *udi,
const char *capability,
DBusError *error);
char **libhal_find_device_by_capability (LibHalContext *ctx,
const char *capability,
int *num_devices,
DBusError *error);
dbus_bool_t libhal_device_property_watch_all (LibHalContext *ctx,
DBusError *error);
dbus_bool_t libhal_device_add_property_watch (LibHalContext *ctx,
const char *udi,
DBusError *error);
dbus_bool_t libhal_device_remove_property_watch (LibHalContext *ctx,
const char *udi,
DBusError *error);
dbus_bool_t libhal_device_lock (LibHalContext *ctx,
const char *udi,
const char *reason_to_lock,
char **reason_why_locked,
DBusError *error);
dbus_bool_t libhal_device_unlock (LibHalContext *ctx,
const char *udi,
DBusError *error);
dbus_bool_t libhal_device_rescan (LibHalContext *ctx,
const char *udi,
DBusError *error);
dbus_bool_t libhal_device_reprobe (LibHalContext *ctx,
const char *udi,
DBusError *error);
dbus_bool_t libhal_device_emit_condition (LibHalContext *ctx,
const char *udi,
const char *condition_name,
const char *condition_details,
DBusError *error);
dbus_bool_t libhal_device_claim_interface (LibHalContext *ctx,
const char *udi,
const char *interface_name,
const char *introspection_xml,
DBusError *error);
dbus_bool_t libhal_device_addon_is_ready (LibHalContext *ctx, const char *udi, DBusError *error);
#if defined(__cplusplus)
}
#endif
#endif