blob: 6facafae9f78a7308676cc8d44c8d92d397d1084 [file] [log] [blame]
mukesh agrawal7c1fece2012-01-13 11:31:27 -08001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkov394b7d42011-11-03 15:48:02 +01002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Darin Petkov3ec55342012-09-28 14:04:44 +02005#ifndef SHILL_POWER_MANAGER_PROXY_INTERFACE_H_
6#define SHILL_POWER_MANAGER_PROXY_INTERFACE_H_
Darin Petkov394b7d42011-11-03 15:48:02 +01007
Daniel Eratf9753672013-01-24 10:17:02 -08008#include <string>
9
Ben Chana0ddf462014-02-06 11:32:42 -080010#include <base/time/time.h>
Darin Petkov394b7d42011-11-03 15:48:02 +010011
12namespace shill {
13
mukesh agrawal7c1fece2012-01-13 11:31:27 -080014// This class provides events from the power manager. To use this class, create
15// a subclass from PowerManagerProxyDelegate and implement its member functions.
16// Call ProxyFactory::CreatePowerManagerProxy() to create an instance of this
17// proxy, passing it a pointer to the delegate you created. When an event from
18// the power manager is received, your delegate's member function will be
19// called. You retain ownership of the delegate and must ensure that the proxy
20// is deleted before the delegate.
Darin Petkov394b7d42011-11-03 15:48:02 +010021class PowerManagerProxyInterface {
22 public:
23 virtual ~PowerManagerProxyInterface() {}
24
Daniel Erat0818cca2012-12-14 10:16:21 -080025 // Sends a request to the power manager to wait for this client for up to
Daniel Eratf9753672013-01-24 10:17:02 -080026 // |timeout| before suspending the system. |description| is a
27 // human-readable string describing the delay's purpose. Assigns an ID
28 // corresponding to the registered delay to |delay_id_out| and returns
29 // true on success.
Daniel Erat0818cca2012-12-14 10:16:21 -080030 virtual bool RegisterSuspendDelay(base::TimeDelta timeout,
Daniel Eratf9753672013-01-24 10:17:02 -080031 const std::string &description,
Daniel Erat0818cca2012-12-14 10:16:21 -080032 int *delay_id_out) = 0;
33
34 // Unregisters a previously-registered suspend delay. Returns true on
35 // success.
36 virtual bool UnregisterSuspendDelay(int delay_id) = 0;
37
38 // Calls the power manager's HandleSuspendReadiness method. |delay_id| should
39 // contain the ID returned via RegisterSuspendDelay() and |suspend_id| should
40 // contain the ID from OnSuspendImminent(). Returns true on success.
41 virtual bool ReportSuspendReadiness(int delay_id, int suspend_id) = 0;
Prathmesh Prabhu64ad2382014-08-26 11:19:30 -070042
43 // Sends a request to the power manager to wait for this client for up to
44 // |timeout| before suspending the system from a dark resume. Arguments
45 // are as explained for |RegisterSuspendDelay|. Returns true on success.
46 virtual bool RegisterDarkSuspendDelay(base::TimeDelta timeout,
47 const std::string &description,
48 int *delay_id_out) = 0;
49
50 // Unregisters a previously-registered dark suspend delay. Returns true on
51 // success.
52 virtual bool UnregisterDarkSuspendDelay(int delay_id) = 0;
53
54 // Calls the power manager's HandleDarkSuspendReadiness method. Arguments are
55 // as explained for ReportSuspendReadiness. Returns true on success.
56 virtual bool ReportDarkSuspendReadiness(int delay_id, int suspend_id) = 0;
Darin Petkov394b7d42011-11-03 15:48:02 +010057};
58
59// PowerManager signal delegate to be associated with the proxy.
60class PowerManagerProxyDelegate {
61 public:
62 virtual ~PowerManagerProxyDelegate() {}
63
Prathmesh Prabhu64ad2382014-08-26 11:19:30 -070064 // Broadcast by the power manager when it's about to suspend. Delegates
Daniel Erat0818cca2012-12-14 10:16:21 -080065 // that have registered through RegisterSuspendDelay() should tell the power
66 // manager that they're ready to suspend by calling ReportSuspendReadiness()
67 // with the delay ID returned by RegisterSuspendDelay() and |suspend_id|.
68 virtual void OnSuspendImminent(int suspend_id) = 0;
mukesh agrawal7c1fece2012-01-13 11:31:27 -080069
Daniel Eratfac09532014-04-17 20:25:59 -070070 // Broadcast by the power manager when a suspend attempt has completed.
71 virtual void OnSuspendDone(int suspend_id) = 0;
Prathmesh Prabhu64ad2382014-08-26 11:19:30 -070072
73 // Broadcast by the power manager when the system enters dark resume.
74 // Delegates that have registered through RegisterDarkSuspendDelay() should
75 // tell the power manager when they are ready to suspend from the dark resume
76 // by calling ReportDarkSuspendResume() with the delay ID returned by
77 // RegisterDarkSuspendDelay() and |suspend_id|.
78 virtual void OnDarkSuspendImminent(int suspend_id) = 0;
Darin Petkov394b7d42011-11-03 15:48:02 +010079};
80
81} // namespace shill
82
Darin Petkov3ec55342012-09-28 14:04:44 +020083#endif // SHILL_POWER_MANAGER_PROXY_INTERFACE_H_