<!-- ##### SECTION Title ##### -->
libhal

<!-- ##### SECTION Short_Description ##### -->


<!-- ##### SECTION Long_Description ##### -->
<para>

</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### MACRO LIBHAL_CHECK_LIBHALCONTEXT ##### -->
<para>

</para>

@_ctx_: 
@_ret_: 


<!-- ##### ENUM LibHalPropertyType ##### -->
<para>

</para>

@LIBHAL_PROPERTY_TYPE_INVALID: 
@LIBHAL_PROPERTY_TYPE_INT32: 
@LIBHAL_PROPERTY_TYPE_UINT64: 
@LIBHAL_PROPERTY_TYPE_DOUBLE: 
@LIBHAL_PROPERTY_TYPE_BOOLEAN: 
@LIBHAL_PROPERTY_TYPE_STRING: 
@LIBHAL_PROPERTY_TYPE_STRLIST: 

<!-- ##### TYPEDEF LibHalContext ##### -->
<para>

</para>


<!-- ##### USER_FUNCTION LibHalIntegrateDBusIntoMainLoop ##### -->
<para>

</para>

@ctx: 
@dbus_connection: 


<!-- ##### USER_FUNCTION LibHalDeviceAdded ##### -->
<para>

</para>

@ctx: 
@udi: 


<!-- ##### USER_FUNCTION LibHalDeviceRemoved ##### -->
<para>

</para>

@ctx: 
@udi: 


<!-- ##### USER_FUNCTION LibHalDeviceNewCapability ##### -->
<para>

</para>

@ctx: 
@udi: 
@capability: 


<!-- ##### USER_FUNCTION LibHalDeviceLostCapability ##### -->
<para>

</para>

@ctx: 
@udi: 
@capability: 


<!-- ##### USER_FUNCTION LibHalDevicePropertyModified ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@is_removed: 
@is_added: 


<!-- ##### USER_FUNCTION LibHalDeviceCondition ##### -->
<para>

</para>

@ctx: 
@udi: 
@condition_name: 
@condition_detail: 


<!-- ##### FUNCTION libhal_ctx_new ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_cache ##### -->
<para>

</para>

@ctx: 
@use_cache: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_dbus_connection ##### -->
<para>

</para>

@ctx: 
@conn: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_get_dbus_connection ##### -->
<para>

</para>

@ctx: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_user_data ##### -->
<para>

</para>

@ctx: 
@user_data: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_get_user_data ##### -->
<para>

</para>

@ctx: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_device_added ##### -->
<para>

</para>

@ctx: 
@callback: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_device_removed ##### -->
<para>

</para>

@ctx: 
@callback: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_device_new_capability ##### -->
<para>

</para>

@ctx: 
@callback: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_device_lost_capability ##### -->
<para>

</para>

@ctx: 
@callback: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_device_property_modified ##### -->
<para>

</para>

@ctx: 
@callback: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_set_device_condition ##### -->
<para>

</para>

@ctx: 
@callback: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_init ##### -->
<para>

</para>

@ctx: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_shutdown ##### -->
<para>

</para>

@ctx: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_free ##### -->
<para>

</para>

@ctx: 
@Returns: 


<!-- ##### FUNCTION libhal_ctx_init_direct ##### -->
<para>

</para>

@error: 
@Returns: 


<!-- ##### FUNCTION libhal_get_all_devices ##### -->
<para>

</para>

@ctx: 
@num_devices: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_exists ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_print ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_property_exists ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_get_property_string ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_get_property_int ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_get_property_uint64 ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_get_property_double ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_get_property_bool ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_get_property_strlist ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_set_property_string ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@value: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_set_property_int ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@value: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_set_property_uint64 ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@value: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_set_property_double ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@value: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_set_property_bool ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@value: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_property_strlist_append ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@value: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_property_strlist_prepend ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@value: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_property_strlist_remove_index ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@idx: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_property_strlist_remove ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@value: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_remove_property ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_get_property_type ##### -->
<para>

</para>

@ctx: 
@udi: 
@key: 
@error: 
@Returns: 


<!-- ##### STRUCT LibHalProperty_s ##### -->
<para>

</para>


<!-- ##### TYPEDEF LibHalProperty ##### -->
<para>

</para>


<!-- ##### STRUCT LibHalPropertySet_s ##### -->
<para>

</para>


<!-- ##### TYPEDEF LibHalPropertySet ##### -->
<para>

</para>


<!-- ##### FUNCTION libhal_device_get_all_properties ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_free_property_set ##### -->
<para>

</para>

@set: 


<!-- ##### FUNCTION libhal_property_set_get_num_elems ##### -->
<para>

</para>

@set: 
@Returns: 


<!-- ##### STRUCT LibHalPropertySetIterator_s ##### -->
<para>

</para>

@set: 
@idx: 
@cur_prop: 
@reservered0: 
@reservered1: 

<!-- ##### TYPEDEF LibHalPropertySetIterator ##### -->
<para>

</para>


<!-- ##### FUNCTION libhal_psi_init ##### -->
<para>

</para>

@iter: 
@set: 


<!-- ##### FUNCTION libhal_psi_has_more ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_psi_next ##### -->
<para>

</para>

@iter: 


<!-- ##### FUNCTION libhal_psi_get_type ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_psi_get_key ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_psi_get_string ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_psi_get_int ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_psi_get_uint64 ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_psi_get_double ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_psi_get_bool ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_psi_get_strlist ##### -->
<para>

</para>

@iter: 
@Returns: 


<!-- ##### FUNCTION libhal_string_array_length ##### -->
<para>

</para>

@str_array: 
@Returns: 


<!-- ##### FUNCTION libhal_free_string_array ##### -->
<para>

</para>

@str_array: 


<!-- ##### FUNCTION libhal_free_string ##### -->
<para>

</para>

@str: 


<!-- ##### FUNCTION libhal_new_device ##### -->
<para>

</para>

@ctx: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_commit_to_gdl ##### -->
<para>

</para>

@ctx: 
@temp_udi: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_remove_device ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_merge_properties ##### -->
<para>

</para>

@ctx: 
@target_udi: 
@source_udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_matches ##### -->
<para>

</para>

@ctx: 
@udi1: 
@udi2: 
@property_namespace: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_manager_find_device_string_match ##### -->
<para>

</para>

@ctx: 
@key: 
@value: 
@num_devices: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_add_capability ##### -->
<para>

</para>

@ctx: 
@udi: 
@capability: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_query_capability ##### -->
<para>

</para>

@ctx: 
@udi: 
@capability: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_find_device_by_capability ##### -->
<para>

</para>

@ctx: 
@capability: 
@num_devices: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_property_watch_all ##### -->
<para>

</para>

@ctx: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_add_property_watch ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_remove_property_watch ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_lock ##### -->
<para>

</para>

@ctx: 
@udi: 
@reason_to_lock: 
@reason_why_locked: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_unlock ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_rescan ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_reprobe ##### -->
<para>

</para>

@ctx: 
@udi: 
@error: 
@Returns: 


<!-- ##### FUNCTION libhal_device_emit_condition ##### -->
<para>

</para>

@ctx: 
@udi: 
@condition_name: 
@condition_details: 
@error: 
@Returns: 


