• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "parameter.h"
17 #include "sysversion.h"
18 #include "device_info.h"
19 #ifdef DEPENDENT_APPEXECFWK_BASE
20 #include "bundlemgr/bundle_mgr_proxy.h"
21 #endif
22 #include "iservice_registry.h"
23 #include "if_system_ability_manager.h"
24 #include "system_ability_definition.h"
25 #include "beget_ext.h"
26 #include "init_error.h"
27 #include "securec.h"
28 #include "log.h"
29 
30 #include <string>
31 #include <memory>
32 #include <threads.h>
33 
34 namespace OHOS {
35 namespace CJSystemapi {
36 namespace DeviceInfo {
37 
38 const int UDID_LEN = 65;
39 const int ODID_LEN = 37;
40 
41 typedef enum {
42     DEV_INFO_OK,
43     DEV_INFO_ENULLPTR,
44     DEV_INFO_EGETODID,
45     DEV_INFO_ESTRCOPY
46 } DevInfoError;
47 
CjGetHardwareProfile()48 const char* DeviceInfo::CjGetHardwareProfile()
49 {
50     return GetHardwareProfile();
51 }
52 
CjGetOsFullName()53 const char* DeviceInfo::CjGetOsFullName()
54 {
55     return GetOSFullName();
56 }
57 
CjGetProductModel()58 const char* DeviceInfo::CjGetProductModel()
59 {
60     return GetProductModel();
61 }
62 
CjGetBrand()63 const char* DeviceInfo::CjGetBrand()
64 {
65     return GetBrand();
66 }
67 
CjGetDeviceType()68 const char* DeviceInfo::CjGetDeviceType()
69 {
70     return GetDeviceType();
71 }
72 
CjGetUdid()73 const char* DeviceInfo::CjGetUdid()
74 {
75     char* udid = static_cast<char*>(calloc(1, UDID_LEN));
76     if (udid == nullptr) {
77         return nullptr;
78     }
79     int res = AclGetDevUdid(udid, UDID_LEN);
80     if (res != 0) {
81         free(udid);
82         return nullptr;
83     }
84     return udid;
85 }
86 
CjGetBuildRootHash()87 const char* DeviceInfo::CjGetBuildRootHash()
88 {
89     return GetBuildRootHash();
90 }
91 
CjGetBuildTime()92 const char* DeviceInfo::CjGetBuildTime()
93 {
94     return GetBuildTime();
95 }
96 
CjGetBuildHost()97 const char* DeviceInfo::CjGetBuildHost()
98 {
99     return GetBuildHost();
100 }
101 
CjGetBuildUser()102 const char* DeviceInfo::CjGetBuildUser()
103 {
104     return GetBuildUser();
105 }
106 
CjGetBuildType()107 const char* DeviceInfo::CjGetBuildType()
108 {
109     return GetBuildType();
110 }
111 
CjGetVersionId()112 const char* DeviceInfo::CjGetVersionId()
113 {
114     return GetVersionId();
115 }
116 
CjGetFirstApiVersion()117 int64_t DeviceInfo::CjGetFirstApiVersion()
118 {
119     return GetFirstApiVersion();
120 }
121 
CjGetSdkApiVersion()122 int64_t DeviceInfo::CjGetSdkApiVersion()
123 {
124     return GetSdkApiVersion();
125 }
126 
CjGetBuildVersion()127 int64_t DeviceInfo::CjGetBuildVersion()
128 {
129     return GetBuildVersion();
130 }
131 
CjGetFeatureVersion()132 int64_t DeviceInfo::CjGetFeatureVersion()
133 {
134     return GetFeatureVersion();
135 }
136 
CjGetSeniorVersion()137 int64_t DeviceInfo::CjGetSeniorVersion()
138 {
139     return GetSeniorVersion();
140 }
141 
CjGetMajorVersion()142 int64_t DeviceInfo::CjGetMajorVersion()
143 {
144     return GetMajorVersion();
145 }
146 
CjGetDisplayVersion()147 const char* DeviceInfo::CjGetDisplayVersion()
148 {
149     return GetDisplayVersion();
150 }
151 
CjGetSerial()152 const char* DeviceInfo::CjGetSerial()
153 {
154     return AclGetSerial();
155 }
156 
CjGetOsReleaseType()157 const char* DeviceInfo::CjGetOsReleaseType()
158 {
159     return GetOsReleaseType();
160 }
161 
CjGetIncrementalVersion()162 const char* DeviceInfo::CjGetIncrementalVersion()
163 {
164     return GetIncrementalVersion();
165 }
166 
CjGetSecurityPatchTag()167 const char* DeviceInfo::CjGetSecurityPatchTag()
168 {
169     return GetSecurityPatchTag();
170 }
171 
CjGetAbiList()172 const char* DeviceInfo::CjGetAbiList()
173 {
174     return GetAbiList();
175 }
176 
CjGetBootloaderVersion()177 const char* DeviceInfo::CjGetBootloaderVersion()
178 {
179     return GetBootloaderVersion();
180 }
181 
CjGetHardwareModel()182 const char* DeviceInfo::CjGetHardwareModel()
183 {
184     return GetHardwareModel();
185 }
186 
CjGetSoftwareModel()187 const char* DeviceInfo::CjGetSoftwareModel()
188 {
189     return GetSoftwareModel();
190 }
191 
CjGetProductSeries()192 const char* DeviceInfo::CjGetProductSeries()
193 {
194     return GetProductSeries();
195 }
196 
CjGetMarketName()197 const char* DeviceInfo::CjGetMarketName()
198 {
199     return GetMarketName();
200 }
201 
CjGetManufacture()202 const char* DeviceInfo::CjGetManufacture()
203 {
204     return GetManufacture();
205 }
206 
CjGetDistributionOSName()207 const char* DeviceInfo::CjGetDistributionOSName()
208 {
209     return GetDistributionOSName();
210 }
211 
CjGetDistributionOSVersion()212 const char* DeviceInfo::CjGetDistributionOSVersion()
213 {
214     return GetDistributionOSVersion();
215 }
216 
CjGetDistributionOSApiVersion()217 int64_t DeviceInfo::CjGetDistributionOSApiVersion()
218 {
219     return GetDistributionOSApiVersion();
220 }
221 
CjGetDistributionOSReleaseType()222 const char* DeviceInfo::CjGetDistributionOSReleaseType()
223 {
224     return GetDistributionOSReleaseType();
225 }
226 
CjAclGetDevOdid(char * odid,int size)227 static DevInfoError CjAclGetDevOdid(char *odid, int size)
228 {
229     DevInfoError ret = DEV_INFO_OK;
230     if (odid[0] != '\0') {
231         return DEV_INFO_OK;
232     }
233     auto systemAbilityManager = OHOS::SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
234     if (!systemAbilityManager) {
235         return DEV_INFO_ENULLPTR;
236     }
237 
238     auto remoteObject = systemAbilityManager->GetSystemAbility(OHOS::BUNDLE_MGR_SERVICE_SYS_ABILITY_ID);
239     if (!remoteObject) {
240         return DEV_INFO_ENULLPTR;
241     }
242 
243 #ifdef DEPENDENT_APPEXECFWK_BASE
244     auto bundleMgrProxy = OHOS::iface_cast<OHOS::AppExecFwk::BundleMgrProxy>(remoteObject);
245     if (!bundleMgrProxy) {
246         return DEV_INFO_ENULLPTR;
247     }
248 
249     std::string odidStr;
250     if (bundleMgrProxy->GetOdid(odidStr) != 0) {
251         return DEV_INFO_EGETODID;
252     }
253 
254     if (strcpy_s(odid, size, odidStr.c_str()) != EOK) {
255         return DEV_INFO_ESTRCOPY;
256     }
257 #else
258     LOGE("DEPENDENT_APPEXECFWK_BASE does not exist, The ODID could not be obtained");
259     ret = DEV_INFO_EGETODID;
260 #endif
261 
262     return ret;
263 }
264 
CjGetDevOdid()265 const char* DeviceInfo::CjGetDevOdid()
266 {
267     thread_local char odid[ODID_LEN] = {0};
268     DevInfoError ret = CjAclGetDevOdid(odid, ODID_LEN);
269     if (ret != DEV_INFO_OK) {
270         LOGE("GetDevOdid ret:%d", ret);
271         return "";
272     }
273     return odid;
274 }
275 
CjGetDistributionOSApiName()276 const char* DeviceInfo::CjGetDistributionOSApiName()
277 {
278     return GetDistributionOSApiName();
279 }
280 
281 } // DeviceInfo
282 } // CJSystemapi
283 } // OHOS
284