• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  *  Copyright 2021 Google, Inc.
4  *
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at:
8  *
9  *  http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  ******************************************************************************/
18 
19 #pragma once
20 
21 #include <memory>
22 
23 namespace bluetooth {
24 namespace os {
25 namespace internal {
26 
27 // DO NOT USE OUTSIDE os/
28 // Native wakelock APIs implemented by each architecture, not public APIs
29 class WakelockNative {
30  public:
Get()31   static WakelockNative& Get() {
32     static WakelockNative instance;
33     return instance;
34   }
35   enum StatusCode : uint8_t { SUCCESS = 0, NATIVE_SERVICE_NOT_AVAILABLE = 1, NATIVE_API_ERROR = 2 };
36   void Initialize();
37   StatusCode Acquire(const std::string& lock_name);
38   StatusCode Release(const std::string& lock_name);
39   void CleanUp();
40 
41   ~WakelockNative();
42 
43  private:
44   WakelockNative();
45   struct Impl;
46   std::unique_ptr<Impl> pimpl_;
47 };
48 
49 }  // namespace internal
50 }  // namespace os
51 }  // namespace bluetooth