1e5c4badcSopenharmony_ci/*
2e5c4badcSopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
3e5c4badcSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e5c4badcSopenharmony_ci * you may not use this file except in compliance with the License.
5e5c4badcSopenharmony_ci * You may obtain a copy of the License at
6e5c4badcSopenharmony_ci *
7e5c4badcSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e5c4badcSopenharmony_ci *
9e5c4badcSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e5c4badcSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e5c4badcSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e5c4badcSopenharmony_ci * See the License for the specific language governing permissions and
13e5c4badcSopenharmony_ci * limitations under the License.
14e5c4badcSopenharmony_ci */
15e5c4badcSopenharmony_ci
16e5c4badcSopenharmony_ci
17e5c4badcSopenharmony_ci#ifndef MOCK_NATIVE_INCLUDE_ERRORS_H
18e5c4badcSopenharmony_ci#define MOCK_NATIVE_INCLUDE_ERRORS_H
19e5c4badcSopenharmony_ci
20e5c4badcSopenharmony_ci#include <cerrno>
21e5c4badcSopenharmony_ci
22e5c4badcSopenharmony_cinamespace OHOS {
23e5c4badcSopenharmony_ci/**
24e5c4badcSopenharmony_ci * ErrCode layout
25e5c4badcSopenharmony_ci *
26e5c4badcSopenharmony_ci * +-----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
27e5c4badcSopenharmony_ci * | Bit |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
28e5c4badcSopenharmony_ci * +-----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
29e5c4badcSopenharmony_ci * |Field|Reserved|        Subsystem      |  Module      |                  Code                         |
30e5c4badcSopenharmony_ci * +-----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
31e5c4badcSopenharmony_ci */
32e5c4badcSopenharmony_ci
33e5c4badcSopenharmony_ciusing ErrCode = int;
34e5c4badcSopenharmony_ci
35e5c4badcSopenharmony_cienum {
36e5c4badcSopenharmony_ci    SUBSYS_COMMON               = 0,
37e5c4badcSopenharmony_ci    SUBSYS_AAFWK                = 1,
38e5c4badcSopenharmony_ci    SUBSYS_ACCOUNT              = 2,
39e5c4badcSopenharmony_ci    SUBSYS_AI                   = 3,
40e5c4badcSopenharmony_ci    SUBSYS_APPEXECFWK           = 4,
41e5c4badcSopenharmony_ci    SUBSYS_APPLICATIONS         = 5,
42e5c4badcSopenharmony_ci    SUBSYS_ARVR                 = 6,
43e5c4badcSopenharmony_ci    SUBSYS_ARVRHARDWARE         = 7,
44e5c4badcSopenharmony_ci    SUBSYS_BARRIERFREE          = 8,
45e5c4badcSopenharmony_ci    SUBSYS_BIOMETRICS           = 9,
46e5c4badcSopenharmony_ci    SUBSYS_CCRUNTIME            = 10,
47e5c4badcSopenharmony_ci    SUBSYS_COMMUNICATION        = 11,
48e5c4badcSopenharmony_ci    SUBSYS_DFX                  = 12,
49e5c4badcSopenharmony_ci    SUBSYS_DISTRIBUTEDDATAMNG   = 13,
50e5c4badcSopenharmony_ci    SUBSYS_DISTRIBUTEDSCHEDULE  = 14,
51e5c4badcSopenharmony_ci    SUBSYS_DRIVERS              = 15,
52e5c4badcSopenharmony_ci    SUBSYS_GLOBAL               = 16,
53e5c4badcSopenharmony_ci    SUBSYS_GRAPHIC              = 17,
54e5c4badcSopenharmony_ci    SUBSYS_HBS                  = 18,
55e5c4badcSopenharmony_ci    SUBSYS_IAWARE               = 19,
56e5c4badcSopenharmony_ci    SUBSYS_IDE                  = 20,
57e5c4badcSopenharmony_ci    SUBSYS_INTELLIACCESSORIES   = 21,
58e5c4badcSopenharmony_ci    SUBSYS_INTELLISPEAKER       = 22,
59e5c4badcSopenharmony_ci    SUBSYS_INTELLITV            = 23,
60e5c4badcSopenharmony_ci    SUBSYS_IOT                  = 24,
61e5c4badcSopenharmony_ci    SUBSYS_IOTHARDWARE          = 25,
62e5c4badcSopenharmony_ci    SUBSYS_IVIHARDWARE          = 26,
63e5c4badcSopenharmony_ci    SUBSYS_KERNEL               = 27,
64e5c4badcSopenharmony_ci    SUBSYS_LOCATION             = 28,
65e5c4badcSopenharmony_ci    SUBSYS_MSDP                 = 29,
66e5c4badcSopenharmony_ci    SUBSYS_MULTIMEDIA           = 30,
67e5c4badcSopenharmony_ci    SUBSYS_MULTIMODAINPUT       = 31,
68e5c4badcSopenharmony_ci    SUBSYS_NOTIFICATION         = 32,
69e5c4badcSopenharmony_ci    SUBSYS_POWERMNG             = 33,
70e5c4badcSopenharmony_ci    SUBSYS_ROUTER               = 34,
71e5c4badcSopenharmony_ci    SUBSYS_SECURITY             = 35,
72e5c4badcSopenharmony_ci    SUBSYS_SENSORS              = 36,
73e5c4badcSopenharmony_ci    SUBSYS_SMALLSERVICES        = 37,
74e5c4badcSopenharmony_ci    SUBSYS_SOURCECODETRANSFORMER = 38,
75e5c4badcSopenharmony_ci    SUBSYS_STARTUP              = 39,
76e5c4badcSopenharmony_ci    SUBSYS_TELEPONY             = 40,
77e5c4badcSopenharmony_ci    SUBSYS_UPDATE               = 41,
78e5c4badcSopenharmony_ci    SUBSYS_USB                  = 42,
79e5c4badcSopenharmony_ci    SUBSYS_WEARABLE             = 43,
80e5c4badcSopenharmony_ci    SUBSYS_WEARABLEHARDWARE     = 44,
81e5c4badcSopenharmony_ci    SUBSYS_IVI                  = 45
82e5c4badcSopenharmony_ci    // new type
83e5c4badcSopenharmony_ci};
84e5c4badcSopenharmony_ci
85e5c4badcSopenharmony_ci// be used to init the subsystem errorno.
86e5c4badcSopenharmony_ciconstexpr ErrCode ErrCodeOffset(unsigned int subsystem, unsigned int module = 0)
87e5c4badcSopenharmony_ci{
88e5c4badcSopenharmony_ci    constexpr int SUBSYSTEM_BIT_NUM = 21;
89e5c4badcSopenharmony_ci    constexpr int MODULE_BIT_NUM = 16;
90e5c4badcSopenharmony_ci    return (subsystem << SUBSYSTEM_BIT_NUM) | (module << MODULE_BIT_NUM);
91e5c4badcSopenharmony_ci}
92e5c4badcSopenharmony_ci
93e5c4badcSopenharmony_ci// offset of common error, only be used in this file.
94e5c4badcSopenharmony_ciconstexpr ErrCode BASE_ERR_OFFSET = ErrCodeOffset(SUBSYS_COMMON);
95e5c4badcSopenharmony_ci
96e5c4badcSopenharmony_cienum {
97e5c4badcSopenharmony_ci    ERR_OK                = 0,
98e5c4badcSopenharmony_ci    ERR_NO_MEMORY         = BASE_ERR_OFFSET + ENOMEM,
99e5c4badcSopenharmony_ci    ERR_INVALID_OPERATION = BASE_ERR_OFFSET + ENOSYS,
100e5c4badcSopenharmony_ci    ERR_INVALID_VALUE     = BASE_ERR_OFFSET + EINVAL,
101e5c4badcSopenharmony_ci    ERR_NAME_NOT_FOUND    = BASE_ERR_OFFSET + ENOENT,
102e5c4badcSopenharmony_ci    ERR_PERMISSION_DENIED = BASE_ERR_OFFSET + EPERM,
103e5c4badcSopenharmony_ci    ERR_NO_INIT           = BASE_ERR_OFFSET + ENODEV,
104e5c4badcSopenharmony_ci    ERR_ALREADY_EXISTS    = BASE_ERR_OFFSET + EEXIST,
105e5c4badcSopenharmony_ci    ERR_DEAD_OBJECT       = BASE_ERR_OFFSET + EPIPE,
106e5c4badcSopenharmony_ci    ERR_OVERFLOW          = BASE_ERR_OFFSET + EOVERFLOW,
107e5c4badcSopenharmony_ci    ERR_ENOUGH_DATA       = BASE_ERR_OFFSET + ENODATA,
108e5c4badcSopenharmony_ci    ERR_WOULD_BLOCK       = BASE_ERR_OFFSET + EWOULDBLOCK,
109e5c4badcSopenharmony_ci    ERR_TIMED_OUT         = BASE_ERR_OFFSET + ETIMEDOUT
110e5c4badcSopenharmony_ci};
111e5c4badcSopenharmony_ci
112e5c4badcSopenharmony_ci#define SUCCEEDED(errCode) ((errCode) == ERR_OK)
113e5c4badcSopenharmony_ci#define FAILED(errCode) ((errCode) != ERR_OK)
114e5c4badcSopenharmony_ci} // namespace OHOS
115e5c4badcSopenharmony_ci
116e5c4badcSopenharmony_ci#endif  // MOCK_NATIVE_INCLUDE_ERRORS_H
117