1/*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef OHOS_BACKGROUOND_TASK_MANAGER_TRANSIENT_TASK_API_H
17#define OHOS_BACKGROUOND_TASK_MANAGER_TRANSIENT_TASK_API_H
18
19#include <stdint.h>
20
21#include "transient_task_type.h"
22
23/**
24 * @addtogroup TransientTask
25 * @{
26 *
27 * @brief Provide C interface for the Transient task management.
28 *
29 * @since 13
30 * @version 1.0
31 */
32
33/**
34 * @file transient_task_api.h
35 *
36 * @brief Declares the APIs for Transient task management.
37 *
38 * @library libtransient_task.so
39 * @kit BackgroundTasksKit
40 * @syscap SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
41 * @since 13
42 */
43
44#ifdef __cplusplus
45extern "C" {
46#endif
47
48/**
49 * @brief Requests delayed transition to the suspended state.
50 *
51 * @param reason Indicates the reason for delayed transition to the suspended state.
52 * @param callback Indicates the callback delay time expired.
53 * @param delaySuspendInfo Indicates the info of delay request.
54 * @return {@link ERR_TRANSIENT_TASK_OK} 0 - Success.
55 *         {@link ERR_TRANSIENT_TASK_INVALID_PARAM} 401 - Invalid parameter.
56 *         {@link ERR_TRANSIENT_TASK_PARCEL_FAILED} 9800002 - Parcelable failed.
57 *         {@link ERR_TRANSIENT_TASK_TRANSACTION_FAILED} 9800003 - Transact failed.
58 *         {@link ERR_TRANSIENT_TASK_SYS_NOT_READY} 9800004 - System service not ready.
59 *         {@link ERR_TRANSIENT_TASK_CLIENT_INFO_VERIFICATION_FAILED} 9900001 - uid or pid info verify failed.
60 *         {@link ERR_TRANSIENT_TASK_SERVICE_VERIFICATION_FAILED} 9900002 - Transient task verification failed.
61 * @syscap SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
62 * @since 13
63 * @version 1.0
64 */
65int32_t OH_BackgroundTaskManager_RequestSuspendDelay(const char* reason,
66    TransientTask_Callback callback, TransientTask_DelaySuspendInfo *info);
67
68/**
69 * @brief Obtains the remaining time before an application enters the suspended state.
70 *
71 * @param requestId Indicates the identifier of the delay request.
72 * @param time Indicates the remaining Time.
73 * @return {@link ERR_TRANSIENT_TASK_OK} 0 - Success.
74 *         {@link ERR_TRANSIENT_TASK_INVALID_PARAM} 401 - Invalid parameter.
75 *         {@link ERR_TRANSIENT_TASK_PARCEL_FAILED} 9800002 - Parcelable failed.
76 *         {@link ERR_TRANSIENT_TASK_TRANSACTION_FAILED} 9800003 - Transact failed.
77 *         {@link ERR_TRANSIENT_TASK_SYS_NOT_READY} 9800004 - System service not ready.
78 *         {@link ERR_TRANSIENT_TASK_CLIENT_INFO_VERIFICATION_FAILED} 9900001 - uid or pid info verify failed.
79 *         {@link ERR_TRANSIENT_TASK_SERVICE_VERIFICATION_FAILED} 9900002 - Transient task verification failed.
80 * @syscap SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
81 * @since 13
82 * @version 1.0
83 */
84int32_t OH_BackgroundTaskManager_GetRemainingDelayTime(int32_t requestId, int32_t *delayTime);
85
86/**
87 * @brief Cancels delayed transition to the suspended state.
88 *
89 * @param requestId Indicates the identifier of the delay request.
90 * @return {@link ERR_TRANSIENT_TASK_OK} 0 - Success.
91 *         {@link ERR_TRANSIENT_TASK_INVALID_PARAM} 401 - Invalid parameter.
92 *         {@link ERR_TRANSIENT_TASK_PARCEL_FAILED} 9800002 - Parcelable failed.
93 *         {@link ERR_TRANSIENT_TASK_TRANSACTION_FAILED} 9800003 - Transact failed.
94 *         {@link ERR_TRANSIENT_TASK_SYS_NOT_READY} 9800004 - System service not ready.
95 *         {@link ERR_TRANSIENT_TASK_CLIENT_INFO_VERIFICATION_FAILED} 9900001 - uid or pid info verify failed.
96 *         {@link ERR_TRANSIENT_TASK_SERVICE_VERIFICATION_FAILED} 9900002 - Transient task verification failed.
97 * @syscap SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
98 * @since 13
99 * @version 1.0
100 */
101int32_t OH_BackgroundTaskManager_CancelSuspendDelay(int32_t requestId);
102
103#ifdef __cplusplus
104}
105#endif
106/** @} */
107#endif
108