1cb69b360Sopenharmony_ci/*
2cb69b360Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3cb69b360Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4cb69b360Sopenharmony_ci * you may not use this file except in compliance with the License.
5cb69b360Sopenharmony_ci * You may obtain a copy of the License at
6cb69b360Sopenharmony_ci *
7cb69b360Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8cb69b360Sopenharmony_ci *
9cb69b360Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10cb69b360Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11cb69b360Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12cb69b360Sopenharmony_ci * See the License for the specific language governing permissions and
13cb69b360Sopenharmony_ci * limitations under the License.
14cb69b360Sopenharmony_ci */
15cb69b360Sopenharmony_ci#ifndef POWERMGR_POWER_MGR_TIMER_UTIL_H
16cb69b360Sopenharmony_ci#define POWERMGR_POWER_MGR_TIMER_UTIL_H
17cb69b360Sopenharmony_ci
18cb69b360Sopenharmony_ci#include <stdint.h>
19cb69b360Sopenharmony_ci
20cb69b360Sopenharmony_ci#include <ohos_types.h>
21cb69b360Sopenharmony_ci#include <time.h>
22cb69b360Sopenharmony_ci
23cb69b360Sopenharmony_ci#ifdef __cplusplus
24cb69b360Sopenharmony_ciextern "C" {
25cb69b360Sopenharmony_ci#endif // __cplusplus
26cb69b360Sopenharmony_ci
27cb69b360Sopenharmony_citypedef timer_t PowerTimer;
28cb69b360Sopenharmony_citypedef void (*PowerTimerCallback)(void *privateData);
29cb69b360Sopenharmony_ci
30cb69b360Sopenharmony_ci/*
31cb69b360Sopenharmony_ci * Create timer. Must call PowerMgrDestroyTimer to release memory after timer is not needed
32cb69b360Sopenharmony_ci */
33cb69b360Sopenharmony_ciPowerTimer *PowerMgrCreateTimer(int64_t whenMsec, int64_t intervalMsec, PowerTimerCallback cb);
34cb69b360Sopenharmony_ci
35cb69b360Sopenharmony_ci/*
36cb69b360Sopenharmony_ci * Reset timer attributes and stop timer
37cb69b360Sopenharmony_ci */
38cb69b360Sopenharmony_ciBOOL PowerMgrResetTimer(PowerTimer *timer, int64_t whenMsec, int64_t intervalMsec);
39cb69b360Sopenharmony_ci
40cb69b360Sopenharmony_ci/*
41cb69b360Sopenharmony_ci * Start timer. The privateData will set to PowerTimerCallback function when timer timeout
42cb69b360Sopenharmony_ci */
43cb69b360Sopenharmony_ciBOOL PowerMgrStartTimer(PowerTimer *timer, void *privateData);
44cb69b360Sopenharmony_ci
45cb69b360Sopenharmony_ci/*
46cb69b360Sopenharmony_ci * Restart timer. The privateData will set to PowerTimerCallback function when timer timeout
47cb69b360Sopenharmony_ci */
48cb69b360Sopenharmony_ciBOOL PowerMgrRestartTimer(PowerTimer *timer, void *privateData);
49cb69b360Sopenharmony_ci
50cb69b360Sopenharmony_ci/*
51cb69b360Sopenharmony_ci * Stop timer
52cb69b360Sopenharmony_ci */
53cb69b360Sopenharmony_ciBOOL PowerMgrStopTimer(PowerTimer *timer);
54cb69b360Sopenharmony_ci
55cb69b360Sopenharmony_ci/*
56cb69b360Sopenharmony_ci * Destory timer
57cb69b360Sopenharmony_ci */
58cb69b360Sopenharmony_civoid PowerMgrDestroyTimer(PowerTimer *timer);
59cb69b360Sopenharmony_ci
60cb69b360Sopenharmony_ci#ifdef __cplusplus
61cb69b360Sopenharmony_ci}
62cb69b360Sopenharmony_ci#endif // __cplusplus
63cb69b360Sopenharmony_ci#endif // POWERMGR_POWER_MGR_TIMER_UTIL_H
64