1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "V2_0/ScopedWakelock.h"
18 
19 namespace android {
20 namespace hardware {
21 namespace sensors {
22 namespace V2_0 {
23 namespace implementation {
24 
getTimeNow()25 int64_t getTimeNow() {
26     return std::chrono::duration_cast<std::chrono::nanoseconds>(
27                    std::chrono::system_clock::now().time_since_epoch())
28             .count();
29 }
30 
ScopedWakelock(IScopedWakelockRefCounter * refCounter,bool locked)31 ScopedWakelock::ScopedWakelock(IScopedWakelockRefCounter* refCounter, bool locked)
32     : mRefCounter(refCounter), mLocked(locked) {
33     if (mLocked) {
34         mLocked = mRefCounter->incrementRefCountAndMaybeAcquireWakelock(1, &mCreatedAtTimeNs);
35     }
36 }
37 
~ScopedWakelock()38 ScopedWakelock::~ScopedWakelock() {
39     if (mLocked) {
40         mRefCounter->decrementRefCountAndMaybeReleaseWakelock(1, mCreatedAtTimeNs);
41     }
42 }
43 
44 }  // namespace implementation
45 }  // namespace V2_0
46 }  // namespace sensors
47 }  // namespace hardware
48 }  // namespace android