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 #if 0
00034 }
00035 #endif
00036 #endif
00037
00039 #define LIBHAL_CHECK_LIBHALCONTEXT(_ctx_, _ret_) \
00040 do { \
00041 if (_ctx_ == NULL) { \
00042 fprintf (stderr, \
00043 "%s %d : LibHalContext *ctx is NULL\n", \
00044 __FILE__, __LINE__); \
00045 return _ret_; \
00046 } \
00047 } while(0)
00048
00049 #define LIBHAL_FREE_DBUS_ERROR(_dbus_error_) \
00050 do { \
00051 if (dbus_error_is_set(_dbus_error_)) \
00052 dbus_error_free (_dbus_error_); \
00053 } while (0)
00054
00055
00063 typedef enum {
00065 LIBHAL_PROPERTY_TYPE_INVALID = DBUS_TYPE_INVALID,
00066
00068 LIBHAL_PROPERTY_TYPE_INT32 = DBUS_TYPE_INT32,
00069
00071 LIBHAL_PROPERTY_TYPE_UINT64 = DBUS_TYPE_UINT64,
00072
00074 LIBHAL_PROPERTY_TYPE_DOUBLE = DBUS_TYPE_DOUBLE,
00075
00077 LIBHAL_PROPERTY_TYPE_BOOLEAN = DBUS_TYPE_BOOLEAN,
00078
00080 LIBHAL_PROPERTY_TYPE_STRING = DBUS_TYPE_STRING,
00081
00083 LIBHAL_PROPERTY_TYPE_STRLIST = ((int) (DBUS_TYPE_STRING<<8)+('l'))
00084 } LibHalPropertyType;
00085
00086 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00087 typedef struct LibHalContext_s LibHalContext;
00088 #endif
00089
00096 typedef void (*LibHalIntegrateDBusIntoMainLoop) (LibHalContext *ctx,
00097 DBusConnection *dbus_connection);
00098
00104 typedef void (*LibHalDeviceAdded) (LibHalContext *ctx,
00105 const char *udi);
00106
00112 typedef void (*LibHalDeviceRemoved) (LibHalContext *ctx,
00113 const char *udi);
00114
00121 typedef void (*LibHalDeviceNewCapability) (LibHalContext *ctx,
00122 const char *udi,
00123 const char *capability);
00124
00131 typedef void (*LibHalDeviceLostCapability) (LibHalContext *ctx,
00132 const char *udi,
00133 const char *capability);
00134
00143 typedef void (*LibHalDevicePropertyModified) (LibHalContext *ctx,
00144 const char *udi,
00145 const char *key,
00146 dbus_bool_t is_removed,
00147 dbus_bool_t is_added);
00148
00158 typedef void (*LibHalDeviceCondition) (LibHalContext *ctx,
00159 const char *udi,
00160 const char *condition_name,
00161 const char *condition_detail);
00162
00163
00164
00165 LibHalContext *libhal_ctx_new (void);
00166
00167
00168 dbus_bool_t libhal_ctx_set_cache (LibHalContext *ctx, dbus_bool_t use_cache);
00169
00170
00171 dbus_bool_t libhal_ctx_set_dbus_connection (LibHalContext *ctx, DBusConnection *conn);
00172
00173
00174 dbus_bool_t libhal_ctx_set_user_data (LibHalContext *ctx, void *user_data);
00175
00176
00177 void* libhal_ctx_get_user_data (LibHalContext *ctx);
00178
00179
00180 dbus_bool_t libhal_ctx_set_device_added (LibHalContext *ctx, LibHalDeviceAdded callback);
00181
00182
00183 dbus_bool_t libhal_ctx_set_device_removed (LibHalContext *ctx, LibHalDeviceRemoved callback);
00184
00185
00186 dbus_bool_t libhal_ctx_set_device_new_capability (LibHalContext *ctx, LibHalDeviceNewCapability callback);
00187
00188
00189 dbus_bool_t libhal_ctx_set_device_lost_capability (LibHalContext *ctx, LibHalDeviceLostCapability callback);
00190
00191
00192 dbus_bool_t libhal_ctx_set_device_property_modified (LibHalContext *ctx, LibHalDevicePropertyModified callback);
00193
00194
00195 dbus_bool_t libhal_ctx_set_device_condition (LibHalContext *ctx, LibHalDeviceCondition callback);
00196
00197
00198 dbus_bool_t libhal_ctx_init (LibHalContext *ctx, DBusError *error);
00199
00200
00201 dbus_bool_t libhal_ctx_shutdown (LibHalContext *ctx, DBusError *error);
00202
00203
00204 dbus_bool_t libhal_ctx_free (LibHalContext *ctx);
00205
00206
00207 LibHalContext *libhal_ctx_init_direct (DBusError *error);
00208
00209
00210 char **libhal_get_all_devices (LibHalContext *ctx, int *num_devices, DBusError *error);
00211
00212
00213 dbus_bool_t libhal_device_exists (LibHalContext *ctx, const char *udi, DBusError *error);
00214
00215
00216 dbus_bool_t libhal_device_print (LibHalContext *ctx, const char *udi, DBusError *error);
00217
00218
00219 dbus_bool_t libhal_device_property_exists (LibHalContext *ctx,
00220 const char *udi,
00221 const char *key,
00222 DBusError *error);
00223
00224
00225 char *libhal_device_get_property_string (LibHalContext *ctx,
00226 const char *udi,
00227 const char *key,
00228 DBusError *error);
00229
00230
00231 dbus_int32_t libhal_device_get_property_int (LibHalContext *ctx,
00232 const char *udi,
00233 const char *key,
00234 DBusError *error);
00235
00236
00237 dbus_uint64_t libhal_device_get_property_uint64 (LibHalContext *ctx,
00238 const char *udi,
00239 const char *key,
00240 DBusError *error);
00241
00242
00243 double libhal_device_get_property_double (LibHalContext *ctx,
00244 const char *udi,
00245 const char *key,
00246 DBusError *error);
00247
00248
00249 dbus_bool_t libhal_device_get_property_bool (LibHalContext *ctx,
00250 const char *udi,
00251 const char *key,
00252 DBusError *error);
00253
00254
00255 char **libhal_device_get_property_strlist (LibHalContext *ctx,
00256 const char *udi,
00257 const char *key,
00258 DBusError *error);
00259
00260
00261 dbus_bool_t libhal_device_set_property_string (LibHalContext *ctx,
00262 const char *udi,
00263 const char *key,
00264 const char *value,
00265 DBusError *error);
00266
00267
00268 dbus_bool_t libhal_device_set_property_int (LibHalContext *ctx,
00269 const char *udi,
00270 const char *key,
00271 dbus_int32_t value,
00272 DBusError *error);
00273
00274
00275 dbus_bool_t libhal_device_set_property_uint64 (LibHalContext *ctx,
00276 const char *udi,
00277 const char *key,
00278 dbus_uint64_t value,
00279 DBusError *error);
00280
00281
00282 dbus_bool_t libhal_device_set_property_double (LibHalContext *ctx,
00283 const char *udi,
00284 const char *key,
00285 double value,
00286 DBusError *error);
00287
00288
00289 dbus_bool_t libhal_device_set_property_bool (LibHalContext *ctx,
00290 const char *udi,
00291 const char *key,
00292 dbus_bool_t value,
00293 DBusError *error);
00294
00295
00296 dbus_bool_t libhal_device_property_strlist_append (LibHalContext *ctx,
00297 const char *udi,
00298 const char *key,
00299 const char *value,
00300 DBusError *error);
00301
00302
00303 dbus_bool_t libhal_device_property_strlist_prepend (LibHalContext *ctx,
00304 const char *udi,
00305 const char *key,
00306 const char *value,
00307 DBusError *error);
00308
00309
00310 dbus_bool_t libhal_device_property_strlist_remove_index (LibHalContext *ctx,
00311 const char *udi,
00312 const char *key,
00313 unsigned int index,
00314 DBusError *error);
00315
00316
00317 dbus_bool_t libhal_device_property_strlist_remove (LibHalContext *ctx,
00318 const char *udi,
00319 const char *key,
00320 const char *value,
00321 DBusError *error);
00322
00323
00324 dbus_bool_t libhal_device_remove_property (LibHalContext *ctx,
00325 const char *udi,
00326 const char *key,
00327 DBusError *error);
00328
00329
00330 LibHalPropertyType libhal_device_get_property_type (LibHalContext *ctx,
00331 const char *udi,
00332 const char *key,
00333 DBusError *error);
00334
00335
00336 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00337 struct LibHalProperty_s;
00338 typedef struct LibHalProperty_s LibHalProperty;
00339
00340 struct LibHalPropertySet_s;
00341 typedef struct LibHalPropertySet_s LibHalPropertySet;
00342 #endif
00343
00344
00345 LibHalPropertySet *libhal_device_get_all_properties (LibHalContext *ctx,
00346 const char *udi,
00347 DBusError *error);
00348
00349
00350 void libhal_free_property_set (LibHalPropertySet *set);
00351
00352
00353 unsigned int libhal_property_set_get_num_elems (LibHalPropertySet *set);
00354
00356 struct LibHalPropertySetIterator_s {
00357 LibHalPropertySet *set;
00358 unsigned int index;
00359 LibHalProperty *cur_prop;
00360 void *reservered0;
00361 void *reservered1;
00362 };
00363
00364 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00365 typedef struct LibHalPropertySetIterator_s LibHalPropertySetIterator;
00366 #endif
00367
00368
00369 void libhal_psi_init (LibHalPropertySetIterator *iter, LibHalPropertySet *set);
00370
00371
00372 dbus_bool_t libhal_psi_has_more (LibHalPropertySetIterator *iter);
00373
00374
00375 void libhal_psi_next (LibHalPropertySetIterator *iter);
00376
00377
00378 LibHalPropertyType libhal_psi_get_type (LibHalPropertySetIterator *iter);
00379
00380
00381 char *libhal_psi_get_key (LibHalPropertySetIterator *iter);
00382
00383
00384 char *libhal_psi_get_string (LibHalPropertySetIterator *iter);
00385
00386
00387 dbus_int32_t libhal_psi_get_int (LibHalPropertySetIterator *iter);
00388
00389
00390 dbus_uint64_t libhal_psi_get_uint64 (LibHalPropertySetIterator *iter);
00391
00392
00393 double libhal_psi_get_double (LibHalPropertySetIterator *iter);
00394
00395
00396 dbus_bool_t libhal_psi_get_bool (LibHalPropertySetIterator *iter);
00397
00398
00399 char **libhal_psi_get_strlist (LibHalPropertySetIterator *iter);
00400
00401
00402 unsigned int libhal_string_array_length (char **str_array);
00403
00404
00405 void libhal_free_string_array (char **str_array);
00406
00407
00408 void libhal_free_string (char *str);
00409
00410
00411
00412
00413 char *libhal_new_device (LibHalContext *ctx, DBusError *error);
00414
00415
00416
00417
00418
00419 dbus_bool_t libhal_device_commit_to_gdl (LibHalContext *ctx,
00420 const char *temp_udi,
00421 const char *udi,
00422 DBusError *error);
00423
00424
00425
00426
00427
00428 dbus_bool_t libhal_remove_device (LibHalContext *ctx,
00429 const char *udi,
00430 DBusError *error);
00431
00432
00433 dbus_bool_t libhal_merge_properties (LibHalContext *ctx,
00434 const char *target_udi,
00435 const char *source_udi,
00436 DBusError *error);
00437
00438
00439 dbus_bool_t libhal_device_matches (LibHalContext *ctx,
00440 const char *udi1,
00441 const char *udi2,
00442 const char *property_namespace,
00443 DBusError *error);
00444
00445
00446
00447
00448 char **libhal_manager_find_device_string_match (LibHalContext *ctx,
00449 const char *key,
00450 const char *value,
00451 int *num_devices,
00452 DBusError *error);
00453
00454
00455 dbus_bool_t libhal_device_add_capability (LibHalContext *ctx,
00456 const char *udi,
00457 const char *capability,
00458 DBusError *error);
00459
00460
00461
00462
00463 dbus_bool_t libhal_device_query_capability (LibHalContext *ctx,
00464 const char *udi,
00465 const char *capability,
00466 DBusError *error);
00467
00468
00469 char **libhal_find_device_by_capability (LibHalContext *ctx,
00470 const char *capability,
00471 int *num_devices,
00472 DBusError *error);
00473
00474
00475
00476
00477 dbus_bool_t libhal_device_property_watch_all (LibHalContext *ctx,
00478 DBusError *error);
00479
00480
00481
00482
00483 dbus_bool_t libhal_device_add_property_watch (LibHalContext *ctx,
00484 const char *udi,
00485 DBusError *error);
00486
00487
00488 dbus_bool_t libhal_device_remove_property_watch (LibHalContext *ctx,
00489 const char *udi,
00490 DBusError *error);
00491
00492
00493 dbus_bool_t libhal_device_lock (LibHalContext *ctx,
00494 const char *udi,
00495 const char *reason_to_lock,
00496 char **reason_why_locked,
00497 DBusError *error);
00498
00499
00500 dbus_bool_t libhal_device_unlock (LibHalContext *ctx,
00501 const char *udi,
00502 DBusError *error);
00503
00504 dbus_bool_t libhal_device_rescan (LibHalContext *ctx,
00505 const char *udi,
00506 DBusError *error);
00507
00508 dbus_bool_t libhal_device_reprobe (LibHalContext *ctx,
00509 const char *udi,
00510 DBusError *error);
00511
00512
00513 dbus_bool_t libhal_device_emit_condition (LibHalContext *ctx,
00514 const char *udi,
00515 const char *condition_name,
00516 const char *condition_details,
00517 DBusError *error);
00518
00521 #if defined(__cplusplus)
00522 }
00523 #endif
00524
00525 #endif