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