00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
#ifndef LIBHAL_H
00027
#define LIBHAL_H
00028
00029
#include <dbus/dbus.h>
00030
00031
#if defined(__cplusplus)
00032
extern "C" {
00033
#endif
00034
00041
#ifndef DOXYGEN_SHOULD_SKIP_THIS
00042
typedef struct LibHalContext_s LibHalContext;
00043
#endif
00044
00050 typedef void (*
LibHalIntegrateDBusIntoMainLoop) (LibHalContext *ctx,
00051 DBusConnection *
00052 dbus_connection);
00053
00058 typedef void (*
LibHalDeviceAdded) (LibHalContext *ctx,
const char *udi);
00059
00064 typedef void (*
LibHalDeviceRemoved) (LibHalContext *ctx,
const char *udi);
00065
00071 typedef void (*
LibHalNewCapability) (LibHalContext *ctx,
00072
const char *udi,
00073
const char *capability);
00074
00080 typedef void (*
LibHalLostCapability) (LibHalContext *ctx,
00081
const char *udi,
00082
const char *capability);
00083
00091 typedef void (*
LibHalDevicePropertyModified) (LibHalContext *ctx,
00092
const char *udi,
00093
const char *key,
00094 dbus_bool_t is_removed,
00095 dbus_bool_t is_added);
00096
00106 typedef void (*
LibHalDeviceCondition) (LibHalContext *ctx,
00107
const char *udi,
00108
const char *condition_name,
00109 DBusMessage *message);
00110
00111
00117 typedef struct LibHalFunctions_s {
00121 LibHalIntegrateDBusIntoMainLoop main_loop_integration;
00122
00124 LibHalDeviceAdded device_added;
00125
00127 LibHalDeviceRemoved device_removed;
00128
00130 LibHalNewCapability device_new_capability;
00131
00133 LibHalLostCapability device_lost_capability;
00134
00136 LibHalDevicePropertyModified device_property_modified;
00137
00139 LibHalDeviceCondition device_condition;
00140
00141 }
LibHalFunctions;
00142
00143
00144 LibHalContext *
hal_initialize (
const LibHalFunctions * cb_functions,
00145 dbus_bool_t use_cache);
00146
00147
int hal_shutdown (LibHalContext *ctx);
00148
00149
void hal_ctx_set_user_data(LibHalContext *ctx,
void *user_data);
00150
00151
void*
hal_ctx_get_user_data(LibHalContext *ctx);
00152
00153
char **
hal_get_all_devices (LibHalContext *ctx,
int *num_devices);
00154 dbus_bool_t
hal_device_exists (LibHalContext *ctx,
const char *udi);
00155
00156
void hal_device_print (LibHalContext *ctx,
const char *udi);
00157
00158 dbus_bool_t
hal_device_property_exists (LibHalContext *ctx,
00159
const char *udi,
00160
const char *key);
00161
00162
char *
hal_device_get_property_string (LibHalContext *ctx,
const char *udi,
00163
const char *key);
00164
00165 dbus_int32_t
hal_device_get_property_int (LibHalContext *ctx,
00166
const char *udi,
00167
const char *key);
00168
00169 dbus_uint64_t
hal_device_get_property_uint64 (LibHalContext *ctx,
00170
const char *udi,
00171
const char *key);
00172
00173
double hal_device_get_property_double (LibHalContext *ctx,
00174
const char *udi,
00175
const char *key);
00176
00177 dbus_bool_t
hal_device_get_property_bool (LibHalContext *ctx,
00178
const char *udi,
00179
const char *key);
00180
00181 dbus_bool_t
hal_device_set_property_string (LibHalContext *ctx,
00182
const char *udi,
00183
const char *key,
00184
const char *value);
00185
00186 dbus_bool_t
hal_device_set_property_int (LibHalContext *ctx,
00187
const char *udi,
00188
const char *key,
00189 dbus_int32_t value);
00190
00191 dbus_bool_t
hal_device_set_property_uint64 (LibHalContext *ctx,
00192
const char *udi,
00193
const char *key,
00194 dbus_uint64_t value);
00195
00196 dbus_bool_t
hal_device_set_property_double (LibHalContext *ctx,
00197
const char *udi,
00198
const char *key,
00199
double value);
00200
00201 dbus_bool_t
hal_device_set_property_bool (LibHalContext *ctx,
00202
const char *udi,
00203
const char *key,
00204 dbus_bool_t value);
00205
00206 dbus_bool_t
hal_device_remove_property (LibHalContext *ctx,
00207
const char *udi,
00208
const char *key);
00209
00210
int hal_device_get_property_type (LibHalContext *ctx,
00211
const char *udi,
00212
const char *key);
00213
00214
00215
#ifndef DOXYGEN_SHOULD_SKIP_THIS
00216
struct LibHalProperty_s;
00217
typedef struct LibHalProperty_s LibHalProperty;
00218
00219
struct LibHalPropertySet_s;
00220
typedef struct LibHalPropertySet_s LibHalPropertySet;
00221
#endif
00222
00223
00224 LibHalPropertySet *
hal_device_get_all_properties (LibHalContext *ctx,
00225
const char *udi);
00226
00227
void hal_free_property_set (LibHalPropertySet * set);
00228
00230 struct LibHalPropertySetIterator_s {
00231 LibHalPropertySet *
set;
00232 unsigned int index;
00233 LibHalProperty *
cur_prop;
00234 void *
reservered0;
00235 void *
reservered1;
00236 };
00237
00238
#ifndef DOXYGEN_SHOULD_SKIP_THIS
00239
typedef struct LibHalPropertySetIterator_s LibHalPropertySetIterator;
00240
#endif
00241
00242
void hal_psi_init (LibHalPropertySetIterator * iter,
00243 LibHalPropertySet * set);
00244
00245 dbus_bool_t
hal_psi_has_more (LibHalPropertySetIterator * iter);
00246
void hal_psi_next (LibHalPropertySetIterator * iter);
00247
00248
int hal_psi_get_type (LibHalPropertySetIterator * iter);
00249
00250
char *
hal_psi_get_key (LibHalPropertySetIterator * iter);
00251
00252
char *
hal_psi_get_string (LibHalPropertySetIterator * iter);
00253 dbus_int32_t
hal_psi_get_int (LibHalPropertySetIterator * iter);
00254 dbus_uint64_t
hal_psi_get_uint64 (LibHalPropertySetIterator * iter);
00255
double hal_psi_get_double (LibHalPropertySetIterator * iter);
00256 dbus_bool_t
hal_psi_get_bool (LibHalPropertySetIterator * iter);
00257
00258
void hal_free_string_array (
char **str_array);
00259
void hal_free_string (
char *str);
00260
00261
char *
hal_agent_new_device (LibHalContext *ctx);
00262 dbus_bool_t
hal_agent_commit_to_gdl (LibHalContext *ctx,
00263
const char *temp_udi,
00264
const char *udi);
00265 dbus_bool_t
hal_agent_remove_device (LibHalContext *ctx,
00266
const char *udi);
00267 dbus_bool_t
hal_agent_merge_properties (LibHalContext *ctx,
00268
const char *target_udi,
00269
const char *source_udi);
00270
00271 dbus_bool_t
hal_agent_device_matches (LibHalContext *ctx,
00272
const char *udi1,
00273
const char *udi2,
00274
const char *property_namespace);
00275
00276
char **
hal_manager_find_device_string_match (LibHalContext *ctx,
00277
const char *key,
00278
const char *value,
00279
int *num_devices);
00280
00281
00282 dbus_bool_t
hal_device_add_capability (LibHalContext *ctx,
00283
const char *udi,
00284
const char *capability);
00285
00286 dbus_bool_t
hal_device_query_capability (LibHalContext *ctx,
00287
const char *udi,
00288
const char *capability);
00289
00290
char **
hal_find_device_by_capability (LibHalContext *ctx,
00291
const char *capability,
00292
int *num_devices);
00293
00294
int hal_device_property_watch_all (LibHalContext *ctx);
00295
int hal_device_add_property_watch (LibHalContext *ctx,
00296
const char *udi);
00297
int hal_device_remove_property_watch (LibHalContext *ctx,
00298
const char *udi);
00299
00300 dbus_bool_t
hal_device_lock (LibHalContext *ctx,
00301
const char *udi,
00302
const char *reason_to_lock,
00303
char **reason_why_locked);
00304
00305 dbus_bool_t
hal_device_unlock (LibHalContext *ctx,
00306
const char *udi);
00307
00310
#if defined(__cplusplus)
00311
}
00312
#endif
00313
00314
#endif