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 /** 17 * @addtogroup resourcemanager 18 * @{ 19 * 20 * @brief Provides the c interface to obtain resources, and relies on librawfile.z.so when used. 21 * 22 * @since 12 23 */ 24 25 /** 26 * @file resmgr_common.h 27 * 28 * @brief Provides the structure required by the interface. 29 * @syscap SystemCapability.Global.ResourceManager 30 * @library libohresmgr.so 31 * @since 12 32 */ 33 #ifndef GLOBAL_RESMGR_COMMON_H 34 #define GLOBAL_RESMGR_COMMON_H 35 36 #include <stdint.h> 37 38 #ifdef __cplusplus 39 extern "C" { 40 #endif 41 42 /** 43 * @brief The error code of resource manager. 44 * 45 * @since 12 46 */ 47 typedef enum ResourceManager_ErrorCode { 48 /** @error Success */ 49 SUCCESS = 0, 50 /** @error Invalid input parameter */ 51 ERROR_CODE_INVALID_INPUT_PARAMETER = 401, 52 /** @error Invalid resource ID */ 53 ERROR_CODE_RES_ID_NOT_FOUND = 9001001, 54 /** @error Invalid resource name */ 55 ERROR_CODE_RES_NOT_FOUND_BY_ID = 9001002, 56 /** @error No matching resource is found based on the resource ID */ 57 ERROR_CODE_RES_NAME_NOT_FOUND = 9001003, 58 /** @error No matching resource is found based on the resource name */ 59 ERROR_CODE_RES_NOT_FOUND_BY_NAME = 9001004, 60 /** @error Invalid relative path */ 61 ERROR_CODE_RES_PATH_INVALID = 9001005, 62 /** @error The resource is referenced cyclically */ 63 ERROR_CODE_RES_REF_TOO_MUCH = 9001006, 64 /** @error Failed to format the resource obtained based on the resource ID */ 65 ERROR_CODE_RES_ID_FORMAT_ERROR = 9001007, 66 /** @error Failed to format the resource obtained based on the resource Name */ 67 ERROR_CODE_RES_NAME_FORMAT_ERROR = 9001008, 68 /** @error Failed to access the system resource */ 69 ERROR_CODE_SYSTEM_RES_MANAGER_GET_FAILED = 9001009, 70 /** @error Invalid overlay path */ 71 ERROR_CODE_OVERLAY_RES_PATH_INVALID = 9001010, 72 /** @error Out of memory */ 73 ERROR_CODE_OUT_OF_MEMORY = 9001100, 74 } ResourceManager_ErrorCode; 75 76 /** 77 * @brief Enumerates screen density types. 78 * 79 * @since 12 80 */ 81 typedef enum ScreenDensity { 82 /** Indicates small screen density. */ 83 SCREEN_SDPI = 120, 84 /** Indicates medium screen density. */ 85 SCREEN_MDPI = 160, 86 /** Indicates large screen density. */ 87 SCREEN_LDPI = 240, 88 /** Indicates extra-large screen density. */ 89 SCREEN_XLDPI = 320, 90 /** Indicates extra-extra-large screen density. */ 91 SCREEN_XXLDPI = 480, 92 /** Indicates extra-extra-extra-large screen density. */ 93 SCREEN_XXXLDPI = 640, 94 } ScreenDensity; 95 96 /** 97 * @brief Enumerates screen directions. 98 * 99 * @since 12 100 */ 101 typedef enum ResourceManager_Direction { 102 /** Indicates the vertical direction. */ 103 DIRECTION_VERTICAL = 0, 104 /** Indicates the horizontal direction. */ 105 DIRECTION_HORIZONTAL = 1, 106 } ResourceManager_Direction; 107 108 /** 109 * @brief Enumerates color mode types. 110 * 111 * @since 12 112 */ 113 typedef enum ResourceManager_ColorMode { 114 /** Indicates dark mode. */ 115 DARK = 0, 116 /** Indicates light mode. */ 117 LIGHT = 1, 118 } ResourceManager_ColorMode; 119 120 /** 121 * @brief Enumerates device types. 122 * 123 * @since 12 124 */ 125 typedef enum ResourceManager_DeviceType { 126 /** Indicates a phone. */ 127 DEVICE_TYPE_PHONE = 0X00, 128 /** Indicates a tablet. */ 129 DEVICE_TYPE_TABLET = 0x01, 130 /** Indicates a car. */ 131 DEVICE_TYPE_CAR = 0x02, 132 /** Indicates a PC. */ 133 DEVICE_TYPE_PC = 0x03, 134 /** Indicates a smart TV. */ 135 DEVICE_TYPE_TV = 0x04, 136 /** Indicates a wearable device. */ 137 DEVICE_TYPE_WEARABLE = 0x06, 138 /** Indicates a 2in1 device. */ 139 DEVICE_TYPE_2IN1 = 0x07, 140 } ResourceManager_DeviceType; 141 142 /** 143 * @brief Enumerates device configuration. 144 * 145 * @since 12 146 */ 147 typedef struct ResourceManager_Configuration { 148 /** Indicates the screen direction of the current device. */ 149 ResourceManager_Direction direction; 150 /** Indicates the current system language, for example, zh-Hans-CN. */ 151 char* locale; 152 /** Indicates the device type. */ 153 ResourceManager_DeviceType deviceType; 154 /** Indicates the screen density. */ 155 ScreenDensity screenDensity; 156 /** Indicates the color mode. */ 157 ResourceManager_ColorMode colorMode; 158 /** Indicates the mcc. */ 159 uint32_t mcc; 160 /** Indicates the mnc. */ 161 uint32_t mnc; 162 /** Reserved attributes. */ 163 uint32_t reserved[20]; 164 } ResourceManager_Configuration; 165 #ifdef __cplusplus 166 }; 167 #endif 168 169 /** @} */ 170 #endif // GLOBAL_RESMGR_COMMON_H 171