package obus

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file uPower.ml

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
(*
 * uPower.ml
 * ---------
 * Copyright : (c) 2010, Jeremie Dimino <jeremie@dimino.org>
 * Licence   : BSD3
 *
 * This file is a part of obus, an ocaml implementation of D-Bus.
 *)

open Lwt

include OBus_peer.Private

let general_error = "org.freedesktop.UPower.GeneralError"

let daemon () =
  let%lwt bus = OBus_bus.system () in
  return (OBus_peer.make bus "org.freedesktop.UPower")

open UPower_interfaces.Org_freedesktop_UPower

let proxy daemon = OBus_proxy.make daemon ["org"; "freedesktop"; "UPower"]

let enumerate_devices daemon =
  let%lwt (context, devices) = OBus_method.call_with_context m_EnumerateDevices (proxy daemon) () in
  return
    (List.map
       (fun path ->
          UPower_device.of_proxy
            (OBus_proxy.make (OBus_context.sender context) path))
       devices)

let device_added daemon =
  OBus_signal.map_with_context
    (fun context device ->
       UPower_device.of_proxy (OBus_proxy.make (OBus_context.sender context) (OBus_path.of_string device)))
    (OBus_signal.make s_DeviceAdded (proxy daemon))

let device_removed daemon =
  OBus_signal.map_with_context
    (fun context device ->
       UPower_device.of_proxy (OBus_proxy.make (OBus_context.sender context) (OBus_path.of_string device)))
    (OBus_signal.make s_DeviceRemoved (proxy daemon))

let device_changed daemon =
  OBus_signal.map_with_context
    (fun context device ->
       UPower_device.of_proxy (OBus_proxy.make (OBus_context.sender context) (OBus_path.of_string device)))
    (OBus_signal.make s_DeviceChanged (proxy daemon))

let changed daemon =
  OBus_signal.make s_Changed (proxy daemon)

let sleeping daemon =
  OBus_signal.make s_Sleeping (proxy daemon)

let resuming daemon =
  OBus_signal.make s_Resuming (proxy daemon)

let about_to_sleep daemon =
  OBus_method.call m_AboutToSleep (proxy daemon) ()

let suspend daemon =
  OBus_method.call m_Suspend (proxy daemon) ()

let suspend_allowed daemon =
  OBus_method.call m_SuspendAllowed (proxy daemon) ()

let hibernate daemon =
  OBus_method.call m_Hibernate (proxy daemon) ()

let hibernate_allowed daemon =
  OBus_method.call m_HibernateAllowed (proxy daemon) ()

let daemon_version daemon =
  OBus_property.make ~monitor:UPower_monitor.monitor p_DaemonVersion (proxy daemon)

let can_suspend daemon =
  OBus_property.make ~monitor:UPower_monitor.monitor p_CanSuspend (proxy daemon)

let can_hibernate daemon =
  OBus_property.make ~monitor:UPower_monitor.monitor p_CanHibernate (proxy daemon)

let on_battery daemon =
  OBus_property.make ~monitor:UPower_monitor.monitor p_OnBattery (proxy daemon)

let on_low_battery daemon =
  OBus_property.make ~monitor:UPower_monitor.monitor p_OnLowBattery (proxy daemon)

let lid_is_closed daemon =
  OBus_property.make ~monitor:UPower_monitor.monitor p_LidIsClosed (proxy daemon)

let lid_is_present daemon =
  OBus_property.make ~monitor:UPower_monitor.monitor p_LidIsPresent (proxy daemon)

let properties daemon =
  OBus_property.group ~monitor:UPower_monitor.monitor (proxy daemon) interface
OCaml

Innovation. Community. Security.