18c2aff776a775d34a4c9893a4c72e0434d68e36artem/***************************************************************************
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * CVSID: $Id$
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * libhal.h : HAL daemon C convenience library headers
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright (C) 2003 David Zeuthen, <david@fubar.dk>
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem * Copyright (C) 2007 Codethink Ltd. Author Rob Taylor <rob.taylor@codethink.co.uk>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Licensed under the Academic Free License version 2.1
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is free software; you can redistribute it and/or modify
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * it under the terms of the GNU General Public License as published by
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the Free Software Foundation; either version 2 of the License, or
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * (at your option) any later version.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This program is distributed in the hope that it will be useful,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * but WITHOUT ANY WARRANTY; without even the implied warranty of
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * GNU General Public License for more details.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * You should have received a copy of the GNU General Public License
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * along with this program; if not, write to the Free Software
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem **************************************************************************/
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#ifndef LIBHAL_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define LIBHAL_H
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <dbus/dbus.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#if defined(__cplusplus)
18c2aff776a775d34a4c9893a4c72e0434d68e36artemextern "C" {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#if 0
18c2aff776a775d34a4c9893a4c72e0434d68e36artem} /* shut up emacs indenting */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#if defined(__GNUC__)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define LIBHAL_DEPRECATED __attribute__ ((deprecated))
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#else
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define LIBHAL_DEPRECATED
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define LIBHAL_FREE_DBUS_ERROR(_dbus_error_) \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem do { \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (dbus_error_is_set(_dbus_error_)) \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_error_free (_dbus_error_); \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } while (0)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LIBHAL_CHECK_LIBHALCONTEXT:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @_ctx_: the context
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @_ret_: what to use for return value if context is invalid
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Handy macro for checking whether a context is valid.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define LIBHAL_CHECK_LIBHALCONTEXT(_ctx_, _ret_) \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem do { \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (_ctx_ == NULL) { \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem fprintf (stderr, \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "%s %d : LibHalContext *ctx is NULL\n", \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem __FILE__, __LINE__); \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return _ret_; \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } \
18c2aff776a775d34a4c9893a4c72e0434d68e36artem } while(0)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalPropertyType:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Possible types for properties on hal device objects
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef enum {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /** Used to report error condition */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBHAL_PROPERTY_TYPE_INVALID = DBUS_TYPE_INVALID,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /** Type for 32-bit signed integer property */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBHAL_PROPERTY_TYPE_INT32 = DBUS_TYPE_INT32,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /** Type for 64-bit unsigned integer property */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBHAL_PROPERTY_TYPE_UINT64 = DBUS_TYPE_UINT64,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /** Type for double precision floating point property */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBHAL_PROPERTY_TYPE_DOUBLE = DBUS_TYPE_DOUBLE,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /** Type for boolean property */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBHAL_PROPERTY_TYPE_BOOLEAN = DBUS_TYPE_BOOLEAN,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /** Type for UTF-8 string property */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBHAL_PROPERTY_TYPE_STRING = DBUS_TYPE_STRING,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /** Type for list of UTF-8 strings property */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LIBHAL_PROPERTY_TYPE_STRLIST = ((int) (DBUS_TYPE_STRING<<8)+('l'))
18c2aff776a775d34a4c9893a4c72e0434d68e36artem} LibHalPropertyType;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct LibHalContext_s LibHalContext;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalIntegrateDBusIntoMainLoop:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ctx: context for connection to hald
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @dbus_connection: DBus connection to use in ctx
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Type for function in application code that integrates a
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * DBusConnection object into its own mainloop.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef void (*LibHalIntegrateDBusIntoMainLoop) (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusConnection *dbus_connection);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalDeviceAdded:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ctx: context for connection to hald
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @udi: the Unique Device Id
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Type for callback when a device is added.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef void (*LibHalDeviceAdded) (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalDeviceRemoved:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ctx: context for connection to hald
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @udi: the Unique Device Id
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Type for callback when a device is removed.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef void (*LibHalDeviceRemoved) (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalDeviceNewCapability:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ctx: context for connection to hald
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @udi: the Unique Device Id
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @capability: capability of the device
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Type for callback when a device gains a new capability.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef void (*LibHalDeviceNewCapability) (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *capability);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalDeviceLostCapability:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ctx: context for connection to hald
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @udi: the Unique Device Id
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @capability: capability of the device
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Type for callback when a device loses a capability.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef void (*LibHalDeviceLostCapability) (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *capability);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalDevicePropertyModified:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ctx: context for connection to hald
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @udi: the Unique Device Id
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @key: name of the property that has changed
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @is_removed: whether or not property was removed
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @is_added: whether or not property was added
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Type for callback when a property of a device changes.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef void (*LibHalDevicePropertyModified) (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t is_removed,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t is_added);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalDeviceCondition:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @ctx: context for connection to hald
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @udi: the Unique Device Id
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @condition_name: name of the condition, e.g. ProcessorOverheating. Consult the HAL spec for details
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * @condition_detail: detail of condition
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Type for callback when a non-continuous condition occurs on a device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef void (*LibHalDeviceCondition) (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *condition_name,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *condition_detail);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Create a new context for a connection with hald */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibHalContext *libhal_ctx_new (void);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Enable or disable caching */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_cache (LibHalContext *ctx, dbus_bool_t use_cache);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set DBus connection to use to talk to hald. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_dbus_connection (LibHalContext *ctx, DBusConnection *conn);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get DBus connection to use to talk to hald. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemDBusConnection *libhal_ctx_get_dbus_connection (LibHalContext *ctx);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set user data for the context */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_user_data (LibHalContext *ctx, void *user_data);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get user data for the context */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid* libhal_ctx_get_user_data (LibHalContext *ctx);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set the callback for when a device is added */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_device_added (LibHalContext *ctx, LibHalDeviceAdded callback);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set the callback for when a device is removed */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_device_removed (LibHalContext *ctx, LibHalDeviceRemoved callback);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set the callback for when a device gains a new capability */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_device_new_capability (LibHalContext *ctx, LibHalDeviceNewCapability callback);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set the callback for when a device loses a capability */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_device_lost_capability (LibHalContext *ctx, LibHalDeviceLostCapability callback);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set the callback for when a property is modified on a device */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_device_property_modified (LibHalContext *ctx, LibHalDevicePropertyModified callback);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set the callback for when a device emits a condition */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_set_device_condition (LibHalContext *ctx, LibHalDeviceCondition callback);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Initialize the connection to hald */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_init (LibHalContext *ctx, DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Shut down a connection to hald */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_shutdown (LibHalContext *ctx, DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Free a LibHalContext resource */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_ctx_free (LibHalContext *ctx);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Create an already initialized connection to hald */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibHalContext *libhal_ctx_init_direct (DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get all devices in the Global Device List (GDL). */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar **libhal_get_all_devices (LibHalContext *ctx, int *num_devices, DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Determine if a device exists. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_exists (LibHalContext *ctx, const char *udi, DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Print a device to stdout; useful for debugging. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_print (LibHalContext *ctx, const char *udi, DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Determine if a property on a device exists. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_property_exists (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type string. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *libhal_device_get_property_string (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type signed integer. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_int32_t libhal_device_get_property_int (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type unsigned integer. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_uint64_t libhal_device_get_property_uint64 (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type double. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdouble libhal_device_get_property_double (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type bool. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_get_property_bool (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type string list. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar **libhal_device_get_property_strlist (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set a property of type string. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_set_property_string (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set a property of type signed integer. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_set_property_int (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_int32_t value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set a property of type unsigned integer. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_set_property_uint64 (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_uint64_t value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set a property of type double. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_set_property_double (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem double value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Set a property of type bool. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_set_property_bool (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Append to a property of type strlist. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_property_strlist_append (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Prepend to a property of type strlist. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_property_strlist_prepend (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Remove a specified string from a property of type strlist. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_property_strlist_remove_index (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem unsigned int idx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Remove a specified string from a property of type strlist. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_property_strlist_remove (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Remove a property. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_remove_property (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Query a property type of a device. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibHalPropertyType libhal_device_get_property_type (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstruct LibHalChangeSet_s;
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct LibHalChangeSet_s LibHalChangeSet;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibHalChangeSet *libhal_device_new_changeset (const char *udi);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_changeset_set_property_string (LibHalChangeSet *changeset,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_changeset_set_property_int (LibHalChangeSet *changeset,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_int32_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_changeset_set_property_uint64 (LibHalChangeSet *changeset,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_uint64_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_changeset_set_property_double (LibHalChangeSet *changeset,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem double value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_changeset_set_property_bool (LibHalChangeSet *changeset,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem dbus_bool_t value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_changeset_set_property_strlist (LibHalChangeSet *changeset,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char **value);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_commit_changeset (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LibHalChangeSet *changeset,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid libhal_device_free_changeset (LibHalChangeSet *changeset);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstruct LibHalProperty_s;
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct LibHalProperty_s LibHalProperty;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstruct LibHalPropertySet_s;
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct LibHalPropertySet_s LibHalPropertySet;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Retrieve all the properties on a device. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibHalPropertySet *libhal_device_get_all_properties (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Free a property set earlier obtained with libhal_device_get_all_properties(). */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid libhal_free_property_set (LibHalPropertySet *set);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the number of properties in a property set. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemunsigned int libhal_property_set_get_num_elems (LibHalPropertySet *set);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem/* Get type of property. */
44faeccf479dbc70538c261f148f9ad6a8b5ed31artemLibHalPropertyType libhal_ps_get_type (const LibHalPropertySet *set, const char *key);
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem/* Get the value of a property of type string. */
44faeccf479dbc70538c261f148f9ad6a8b5ed31artemconst char *libhal_ps_get_string (const LibHalPropertySet *set, const char *key);
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem/* Get the value of a property of type signed integer. */
44faeccf479dbc70538c261f148f9ad6a8b5ed31artemdbus_int32_t libhal_ps_get_int32 (const LibHalPropertySet *set, const char *key);
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem/* Get the value of a property of type unsigned integer. */
44faeccf479dbc70538c261f148f9ad6a8b5ed31artemdbus_uint64_t libhal_ps_get_uint64 (const LibHalPropertySet *set, const char *key);
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem/* Get the value of a property of type double. */
44faeccf479dbc70538c261f148f9ad6a8b5ed31artemdouble libhal_ps_get_double (const LibHalPropertySet *set, const char *key);
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem/* Get the value of a property of type bool. */
44faeccf479dbc70538c261f148f9ad6a8b5ed31artemdbus_bool_t libhal_ps_get_bool (const LibHalPropertySet *set, const char *key);
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem/* Get the value of a property of type string list. */
44faeccf479dbc70538c261f148f9ad6a8b5ed31artemconst char * const *libhal_ps_get_strlist (const LibHalPropertySet *set, const char *key);
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem
44faeccf479dbc70538c261f148f9ad6a8b5ed31artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/**
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * LibHalPropertySetIterator:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Iterator for inspecting all properties. Do not access any members;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * use the libhal_psi_* family of functions instead.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstruct LibHalPropertySetIterator_s {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LibHalPropertySet *set; /**< Property set we are iterating over */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem unsigned int idx; /**< Index into current element */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem LibHalProperty *cur_prop; /**< Current property being visited */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void *reservered0; /**< Reserved for future use */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void *reservered1; /**< Reserved for future use */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem};
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemtypedef struct LibHalPropertySetIterator_s LibHalPropertySetIterator;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Initialize a property set iterator. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid libhal_psi_init (LibHalPropertySetIterator *iter, LibHalPropertySet *set);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Determine whether there are more properties to iterate over */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_psi_has_more (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Advance iterator to next property. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid libhal_psi_next (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get type of property. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemLibHalPropertyType libhal_psi_get_type (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the key of a property. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *libhal_psi_get_key (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type string. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *libhal_psi_get_string (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type signed integer. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_int32_t libhal_psi_get_int (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type unsigned integer. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_uint64_t libhal_psi_get_uint64 (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type double. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdouble libhal_psi_get_double (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type bool. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_psi_get_bool (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the value of a property of type string list. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar **libhal_psi_get_strlist (LibHalPropertySetIterator *iter);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Get the length of an array of strings */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemunsigned int libhal_string_array_length (char **str_array);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Frees a NULL-terminated array of strings. If passed NULL, does nothing. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid libhal_free_string_array (char **str_array);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Frees a nul-terminated string */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid libhal_free_string (char *str);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Create a new device object which will be hidden from applications
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * until the CommitToGdl(), ie. libhal_device_commit_to_gdl(), method is called.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *libhal_new_device (LibHalContext *ctx, DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* When a hidden device has been built using the NewDevice method, ie.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * libhal_new_device(), and the org.freedesktop.Hal.Device interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * this function will commit it to the global device list.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_commit_to_gdl (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *temp_udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* This method can be invoked when a device is removed. The HAL daemon
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * will shut down the device. Note that the device may still be in the device
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * list if the Persistent property is set to true.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_remove_device (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Merge properties from one device to another. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_merge_properties (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *target_udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *source_udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Check a set of properties for two devices matches. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_matches (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi1,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi2,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *property_namespace,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Find a device in the GDL where a single string property matches a
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * given value.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar **libhal_manager_find_device_string_match (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *key,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *value,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem int *num_devices,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Assign a capability to a device. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_add_capability (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *capability,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Check if a device has a capability. The result is undefined if the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * device doesn't exist.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_query_capability (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *capability,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Find devices with a given capability. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar **libhal_find_device_by_capability (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *capability,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem int *num_devices,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Watch all devices, ie. the device_property_changed callback is
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * invoked when the properties on any device changes.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_property_watch_all (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Add a watch on a device, so the device_property_changed callback is
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * invoked when the properties on the given device changes.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_add_property_watch (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Remove a watch on a device */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_remove_property_watch (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Take an advisory lock on the device. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_lock (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *reason_to_lock,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char **reason_why_locked,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Release an advisory lock on the device. */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_unlock (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_rescan (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_reprobe (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Emit a condition from a device (for hald helpers only) */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_emit_condition (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *condition_name,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *condition_details,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* Claim an interface for a device (for hald helpers only) */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_claim_interface (LibHalContext *ctx,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *udi,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *interface_name,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem const char *introspection_xml,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* hald waits for all addons to call this function before announcing the addon (for hald helpers only) */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemdbus_bool_t libhal_device_addon_is_ready (LibHalContext *ctx, const char *udi, DBusError *error);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#if defined(__cplusplus)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif /* LIBHAL_H */