1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
(*
* hal_manager.ml
* --------------
* Copyright : (c) 2009, Jeremie Dimino <jeremie@dimino.org>
* Licence : BSD3
*
* This file is a part of obus, an ocaml implementation of D-Bus.
*)
open Lwt
open OBus_value
include OBus_proxy.Private
let manager () =
let%lwt bus = OBus_bus.system () in
return (OBus_proxy.make
(OBus_peer.make bus "org.freedesktop.Hal")
[ "org"; "freedesktop"; "Hal"; "Manager" ])
open Hal_interfaces.Org_freedesktop_Hal_Manager
let make_device context udi =
Hal_device.of_proxy
(OBus_proxy.make (OBus_context.sender context)
(OBus_path.of_string udi))
let get_all_devices proxy =
let%lwt context, l = OBus_method.call_with_context m_GetAllDevices proxy () in
return (List.map (make_device context) l)
let get_all_devices_with_properties proxy =
let%lwt context, l = OBus_method.call_with_context m_GetAllDevicesWithProperties proxy () in
return (List.map
(fun (udi, properties) ->
(make_device context udi,
List.map (fun (name, value) -> (name, Hal_device.property_of_variant value)) properties))
l)
let device_exists proxy udi =
OBus_method.call m_DeviceExists proxy (OBus_path.to_string udi)
let find_device_string_match proxy key value =
let%lwt context, l = OBus_method.call_with_context m_FindDeviceStringMatch proxy (key, value) in
return (List.map (make_device context) l)
let find_device_by_capability proxy capability =
let%lwt context, l = OBus_method.call_with_context m_FindDeviceByCapability proxy capability in
return (List.map (make_device context) l)
let new_device proxy =
let%lwt context, udi = OBus_method.call_with_context m_NewDevice proxy () in
return (make_device context udi)
let remove proxy dev =
OBus_method.call m_Remove proxy (OBus_path.to_string (Hal_device.udi dev))
let commit_to_gdl proxy temporary_udi global_udi =
OBus_method.call m_CommitToGdl proxy (temporary_udi, global_udi)
let acquire_global_interface_lock proxy interface_name exclusive =
OBus_method.call m_AcquireGlobalInterfaceLock proxy (interface_name, exclusive)
let release_global_interface_lock proxy interface_name =
OBus_method.call m_ReleaseGlobalInterfaceLock proxy interface_name
let singleton_addon_is_ready proxy command_line =
OBus_method.call m_SingletonAddonIsReady proxy command_line
let device_added proxy =
OBus_signal.map_with_context
make_device
(OBus_signal.make s_DeviceAdded proxy)
let device_removed proxy =
OBus_signal.map_with_context
make_device
(OBus_signal.make s_DeviceRemoved proxy)
let new_capability proxy =
OBus_signal.map_with_context
(fun context (udi, cap) -> (make_device context udi, cap))
(OBus_signal.make s_NewCapability proxy)
let global_interface_lock_acquired proxy =
OBus_signal.map
(fun (interface_name, lock_holder, num_locks) ->
let num_locks = Int32.to_int num_locks in
(interface_name, lock_holder, num_locks))
(OBus_signal.make s_GlobalInterfaceLockAcquired proxy)
let global_interface_lock_released proxy =
OBus_signal.map
(fun (interface_name, lock_holder, num_locks) ->
let num_locks = Int32.to_int num_locks in
(interface_name, lock_holder, num_locks))
(OBus_signal.make s_GlobalInterfaceLockReleased proxy)
|