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 TIME_SERVICE_H
17#define TIME_SERVICE_H
18
19/**
20 * @addtogroup TimeService
21 * @{
22 *
23 * @brief Declares the time zone capabilities provided by TimeService to an application.
24 * @since 12
25 */
26/**
27 * @file time_service.h
28 *
29 * @brief Declares the APIs for obtaining the time zone information.
30 * @library libtime_service_ndk.so
31 * @syscap SystemCapability.MiscServices.Time
32 * @since 12
33 */
34
35#include <stdint.h>
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/**
42 * @brief Enumerates the error codes.
43 *
44 * @since 12
45 */
46typedef enum TimeService_ErrCode {
47    /** @error Success.*/
48    TIMESERVICE_ERR_OK = 0,
49
50    /** @error Failed to obtain system parameters.*/
51    TIMESERVICE_ERR_INTERNAL_ERROR = 13000001,
52
53    /** @error Invalid parameter.*/
54    TIMESERVICE_ERR_INVALID_PARAMETER = 13000002,
55} TimeService_ErrCode;
56
57/**
58 * @brief Obtains the current system time zone.
59 *
60 * @param timeZone Pointer to an array of characters indicating the time zone ID. On success, the string indicates the
61 *        current system time zone ID. On failure, the string is empty. The string is terminated using '\0'.
62 * @param len Size of the memory allocated for the time zone ID character array. There is no upper limit for the length
63 *        of the time zone ID. It is recommended to allocate sufficient memory, at least not less than 31 bytes.
64 * @return Returns {@link TIMESERVICE_ERR_OK} if the operation is successful.
65 *         Returns {@link TIMESERVICE_ERR_INTERNAL_ERROR} if obtaining the system parameters fails.
66 *         Returns {@link TIMESERVICE_ERR_INVALID_PARAMETER} if <b>timeZone</b> is a null pointer or the length of the
67 *         time zone ID (excluding the terminating character ('\0')) is greater than or equal to <b>len</b>.
68 * @syscap SystemCapability.MiscServices.Time
69 * @since 12
70 */
71TimeService_ErrCode OH_TimeService_GetTimeZone(char *timeZone, uint32_t len);
72
73#ifdef __cplusplus
74}
75#endif
76
77/** @} */
78
79#endif /* TIME_SERVICE_H */