1d9f0492fSopenharmony_ci/* 2d9f0492fSopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3d9f0492fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d9f0492fSopenharmony_ci * you may not use this file except in compliance with the License. 5d9f0492fSopenharmony_ci * You may obtain a copy of the License at 6d9f0492fSopenharmony_ci * 7d9f0492fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d9f0492fSopenharmony_ci * 9d9f0492fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d9f0492fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d9f0492fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d9f0492fSopenharmony_ci * See the License for the specific language governing permissions and 13d9f0492fSopenharmony_ci * limitations under the License. 14d9f0492fSopenharmony_ci */ 15d9f0492fSopenharmony_ci 16d9f0492fSopenharmony_ci#include <cstdio> 17d9f0492fSopenharmony_ci#include <string> 18d9f0492fSopenharmony_ci 19d9f0492fSopenharmony_ci#include "napi/native_api.h" 20d9f0492fSopenharmony_ci#include "napi/native_node_api.h" 21d9f0492fSopenharmony_ci#include "parameter.h" 22d9f0492fSopenharmony_ci#include "sysversion.h" 23d9f0492fSopenharmony_ci#ifdef DEPENDENT_APPEXECFWK_BASE 24d9f0492fSopenharmony_ci#include "bundlemgr/bundle_mgr_proxy.h" 25d9f0492fSopenharmony_ci#endif 26d9f0492fSopenharmony_ci#include "iservice_registry.h" 27d9f0492fSopenharmony_ci#include "if_system_ability_manager.h" 28d9f0492fSopenharmony_ci#include "system_ability_definition.h" 29d9f0492fSopenharmony_ci#include "beget_ext.h" 30d9f0492fSopenharmony_ci#include "init_error.h" 31d9f0492fSopenharmony_ci#include "securec.h" 32d9f0492fSopenharmony_ci 33d9f0492fSopenharmony_ci#ifndef DEVICEINFO_JS_DOMAIN 34d9f0492fSopenharmony_ci#define DEVICEINFO_JS_DOMAIN (BASE_DOMAIN + 8) 35d9f0492fSopenharmony_ci#endif 36d9f0492fSopenharmony_ci 37d9f0492fSopenharmony_ci#ifndef DINFO_TAG 38d9f0492fSopenharmony_ci#define DINFO_TAG "DEVICEINFO_JS" 39d9f0492fSopenharmony_ci#endif 40d9f0492fSopenharmony_ci 41d9f0492fSopenharmony_ci#define DEVINFO_LOGV(fmt, ...) STARTUP_LOGV(DEVICEINFO_JS_DOMAIN, DINFO_TAG, fmt, ##__VA_ARGS__) 42d9f0492fSopenharmony_ci#define DEVINFO_LOGI(fmt, ...) STARTUP_LOGI(DEVICEINFO_JS_DOMAIN, DINFO_TAG, fmt, ##__VA_ARGS__) 43d9f0492fSopenharmony_ci#define DEVINFO_LOGW(fmt, ...) STARTUP_LOGW(DEVICEINFO_JS_DOMAIN, DINFO_TAG, fmt, ##__VA_ARGS__) 44d9f0492fSopenharmony_ci#define DEVINFO_LOGE(fmt, ...) STARTUP_LOGE(DEVICEINFO_JS_DOMAIN, DINFO_TAG, fmt, ##__VA_ARGS__) 45d9f0492fSopenharmony_ci 46d9f0492fSopenharmony_ciconst int UDID_LEN = 65; 47d9f0492fSopenharmony_ciconst int ODID_LEN = 37; 48d9f0492fSopenharmony_ci 49d9f0492fSopenharmony_citypedef enum { 50d9f0492fSopenharmony_ci DEV_INFO_OK, 51d9f0492fSopenharmony_ci DEV_INFO_ENULLPTR, 52d9f0492fSopenharmony_ci DEV_INFO_EGETODID, 53d9f0492fSopenharmony_ci DEV_INFO_ESTRCOPY 54d9f0492fSopenharmony_ci} DevInfoError; 55d9f0492fSopenharmony_ci 56d9f0492fSopenharmony_cistatic napi_value GetDeviceType(napi_env env, napi_callback_info info) 57d9f0492fSopenharmony_ci{ 58d9f0492fSopenharmony_ci napi_value deviceType = nullptr; 59d9f0492fSopenharmony_ci const char *value = GetDeviceType(); 60d9f0492fSopenharmony_ci if (value == nullptr) { 61d9f0492fSopenharmony_ci value = ""; 62d9f0492fSopenharmony_ci } 63d9f0492fSopenharmony_ci 64d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, value, strlen(value), &deviceType)); 65d9f0492fSopenharmony_ci return deviceType; 66d9f0492fSopenharmony_ci} 67d9f0492fSopenharmony_ci 68d9f0492fSopenharmony_cistatic napi_value GetManufacture(napi_env env, napi_callback_info info) 69d9f0492fSopenharmony_ci{ 70d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 71d9f0492fSopenharmony_ci const char *manfactureName = GetManufacture(); 72d9f0492fSopenharmony_ci if (manfactureName == nullptr) { 73d9f0492fSopenharmony_ci manfactureName = ""; 74d9f0492fSopenharmony_ci } 75d9f0492fSopenharmony_ci 76d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, manfactureName, strlen(manfactureName), &napiValue)); 77d9f0492fSopenharmony_ci return napiValue; 78d9f0492fSopenharmony_ci} 79d9f0492fSopenharmony_ci 80d9f0492fSopenharmony_cistatic napi_value GetBrand(napi_env env, napi_callback_info info) 81d9f0492fSopenharmony_ci{ 82d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 83d9f0492fSopenharmony_ci const char *productBrand = GetBrand(); 84d9f0492fSopenharmony_ci if (productBrand == nullptr) { 85d9f0492fSopenharmony_ci productBrand = ""; 86d9f0492fSopenharmony_ci } 87d9f0492fSopenharmony_ci 88d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, productBrand, strlen(productBrand), &napiValue)); 89d9f0492fSopenharmony_ci return napiValue; 90d9f0492fSopenharmony_ci} 91d9f0492fSopenharmony_ci 92d9f0492fSopenharmony_cistatic napi_value GetMarketName(napi_env env, napi_callback_info info) 93d9f0492fSopenharmony_ci{ 94d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 95d9f0492fSopenharmony_ci const char *marketName = GetMarketName(); 96d9f0492fSopenharmony_ci if (marketName == nullptr) { 97d9f0492fSopenharmony_ci marketName = ""; 98d9f0492fSopenharmony_ci } 99d9f0492fSopenharmony_ci 100d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, marketName, strlen(marketName), &napiValue)); 101d9f0492fSopenharmony_ci return napiValue; 102d9f0492fSopenharmony_ci} 103d9f0492fSopenharmony_ci 104d9f0492fSopenharmony_cistatic napi_value GetProductSeries(napi_env env, napi_callback_info info) 105d9f0492fSopenharmony_ci{ 106d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 107d9f0492fSopenharmony_ci const char *productSeries = GetProductSeries(); 108d9f0492fSopenharmony_ci if (productSeries == nullptr) { 109d9f0492fSopenharmony_ci productSeries = ""; 110d9f0492fSopenharmony_ci } 111d9f0492fSopenharmony_ci 112d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, productSeries, strlen(productSeries), &napiValue)); 113d9f0492fSopenharmony_ci return napiValue; 114d9f0492fSopenharmony_ci} 115d9f0492fSopenharmony_ci 116d9f0492fSopenharmony_cistatic napi_value GetProductModel(napi_env env, napi_callback_info info) 117d9f0492fSopenharmony_ci{ 118d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 119d9f0492fSopenharmony_ci const char *productModel = GetProductModel(); 120d9f0492fSopenharmony_ci if (productModel == nullptr) { 121d9f0492fSopenharmony_ci productModel = ""; 122d9f0492fSopenharmony_ci } 123d9f0492fSopenharmony_ci 124d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, productModel, strlen(productModel), &napiValue)); 125d9f0492fSopenharmony_ci return napiValue; 126d9f0492fSopenharmony_ci} 127d9f0492fSopenharmony_ci 128d9f0492fSopenharmony_cistatic napi_value GetSoftwareModel(napi_env env, napi_callback_info info) 129d9f0492fSopenharmony_ci{ 130d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 131d9f0492fSopenharmony_ci const char *softwareModel = GetSoftwareModel(); 132d9f0492fSopenharmony_ci if (softwareModel == nullptr) { 133d9f0492fSopenharmony_ci softwareModel = ""; 134d9f0492fSopenharmony_ci } 135d9f0492fSopenharmony_ci 136d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, softwareModel, strlen(softwareModel), &napiValue)); 137d9f0492fSopenharmony_ci return napiValue; 138d9f0492fSopenharmony_ci} 139d9f0492fSopenharmony_ci 140d9f0492fSopenharmony_cistatic napi_value GetHardwareModel(napi_env env, napi_callback_info info) 141d9f0492fSopenharmony_ci{ 142d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 143d9f0492fSopenharmony_ci const char *hardwareModel = GetHardwareModel(); 144d9f0492fSopenharmony_ci if (hardwareModel == nullptr) { 145d9f0492fSopenharmony_ci hardwareModel = ""; 146d9f0492fSopenharmony_ci } 147d9f0492fSopenharmony_ci 148d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, hardwareModel, strlen(hardwareModel), &napiValue)); 149d9f0492fSopenharmony_ci return napiValue; 150d9f0492fSopenharmony_ci} 151d9f0492fSopenharmony_ci 152d9f0492fSopenharmony_cistatic napi_value GetHardwareProfile(napi_env env, napi_callback_info info) 153d9f0492fSopenharmony_ci{ 154d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 155d9f0492fSopenharmony_ci const char *hardwareProfile = GetHardwareProfile(); 156d9f0492fSopenharmony_ci if (hardwareProfile == nullptr) { 157d9f0492fSopenharmony_ci hardwareProfile = ""; 158d9f0492fSopenharmony_ci } 159d9f0492fSopenharmony_ci 160d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, hardwareProfile, strlen(hardwareProfile), &napiValue)); 161d9f0492fSopenharmony_ci return napiValue; 162d9f0492fSopenharmony_ci} 163d9f0492fSopenharmony_ci 164d9f0492fSopenharmony_cistatic napi_value GetSerial(napi_env env, napi_callback_info info) 165d9f0492fSopenharmony_ci{ 166d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 167d9f0492fSopenharmony_ci const char *serialNumber = AclGetSerial(); 168d9f0492fSopenharmony_ci if (serialNumber == nullptr) { 169d9f0492fSopenharmony_ci serialNumber = ""; 170d9f0492fSopenharmony_ci } 171d9f0492fSopenharmony_ci 172d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, serialNumber, strlen(serialNumber), &napiValue)); 173d9f0492fSopenharmony_ci return napiValue; 174d9f0492fSopenharmony_ci} 175d9f0492fSopenharmony_ci 176d9f0492fSopenharmony_cistatic napi_value GetBootloaderVersion(napi_env env, napi_callback_info info) 177d9f0492fSopenharmony_ci{ 178d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 179d9f0492fSopenharmony_ci const char *bootloaderVersion = GetBootloaderVersion(); 180d9f0492fSopenharmony_ci if (bootloaderVersion == nullptr) { 181d9f0492fSopenharmony_ci bootloaderVersion = ""; 182d9f0492fSopenharmony_ci } 183d9f0492fSopenharmony_ci 184d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, bootloaderVersion, strlen(bootloaderVersion), &napiValue)); 185d9f0492fSopenharmony_ci return napiValue; 186d9f0492fSopenharmony_ci} 187d9f0492fSopenharmony_ci 188d9f0492fSopenharmony_cistatic napi_value GetAbiList(napi_env env, napi_callback_info info) 189d9f0492fSopenharmony_ci{ 190d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 191d9f0492fSopenharmony_ci const char *abiList = GetAbiList(); 192d9f0492fSopenharmony_ci if (abiList == nullptr) { 193d9f0492fSopenharmony_ci abiList = ""; 194d9f0492fSopenharmony_ci } 195d9f0492fSopenharmony_ci 196d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, abiList, strlen(abiList), &napiValue)); 197d9f0492fSopenharmony_ci return napiValue; 198d9f0492fSopenharmony_ci} 199d9f0492fSopenharmony_ci 200d9f0492fSopenharmony_cistatic napi_value GetSecurityPatchTag(napi_env env, napi_callback_info info) 201d9f0492fSopenharmony_ci{ 202d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 203d9f0492fSopenharmony_ci const char *securityPatchTag = GetSecurityPatchTag(); 204d9f0492fSopenharmony_ci if (securityPatchTag == nullptr) { 205d9f0492fSopenharmony_ci securityPatchTag = ""; 206d9f0492fSopenharmony_ci } 207d9f0492fSopenharmony_ci 208d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, securityPatchTag, strlen(securityPatchTag), &napiValue)); 209d9f0492fSopenharmony_ci return napiValue; 210d9f0492fSopenharmony_ci} 211d9f0492fSopenharmony_ci 212d9f0492fSopenharmony_cistatic napi_value GetDisplayVersion(napi_env env, napi_callback_info info) 213d9f0492fSopenharmony_ci{ 214d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 215d9f0492fSopenharmony_ci const char *productVersion = GetDisplayVersion(); 216d9f0492fSopenharmony_ci if (productVersion == nullptr) { 217d9f0492fSopenharmony_ci productVersion = ""; 218d9f0492fSopenharmony_ci } 219d9f0492fSopenharmony_ci 220d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, productVersion, strlen(productVersion), &napiValue)); 221d9f0492fSopenharmony_ci return napiValue; 222d9f0492fSopenharmony_ci} 223d9f0492fSopenharmony_ci 224d9f0492fSopenharmony_cistatic napi_value GetIncrementalVersion(napi_env env, napi_callback_info info) 225d9f0492fSopenharmony_ci{ 226d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 227d9f0492fSopenharmony_ci const char *incrementalVersion = GetIncrementalVersion(); 228d9f0492fSopenharmony_ci if (incrementalVersion == nullptr) { 229d9f0492fSopenharmony_ci incrementalVersion = ""; 230d9f0492fSopenharmony_ci } 231d9f0492fSopenharmony_ci 232d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, incrementalVersion, strlen(incrementalVersion), &napiValue)); 233d9f0492fSopenharmony_ci return napiValue; 234d9f0492fSopenharmony_ci} 235d9f0492fSopenharmony_ci 236d9f0492fSopenharmony_cistatic napi_value GetOsReleaseType(napi_env env, napi_callback_info info) 237d9f0492fSopenharmony_ci{ 238d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 239d9f0492fSopenharmony_ci const char *osReleaseType = GetOsReleaseType(); 240d9f0492fSopenharmony_ci if (osReleaseType == nullptr) { 241d9f0492fSopenharmony_ci osReleaseType = ""; 242d9f0492fSopenharmony_ci } 243d9f0492fSopenharmony_ci 244d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, osReleaseType, strlen(osReleaseType), &napiValue)); 245d9f0492fSopenharmony_ci return napiValue; 246d9f0492fSopenharmony_ci} 247d9f0492fSopenharmony_ci 248d9f0492fSopenharmony_cistatic napi_value GetOSFullName(napi_env env, napi_callback_info info) 249d9f0492fSopenharmony_ci{ 250d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 251d9f0492fSopenharmony_ci const char *osVersion = GetOSFullName(); 252d9f0492fSopenharmony_ci if (osVersion == nullptr) { 253d9f0492fSopenharmony_ci osVersion = ""; 254d9f0492fSopenharmony_ci } 255d9f0492fSopenharmony_ci 256d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, osVersion, strlen(osVersion), &napiValue)); 257d9f0492fSopenharmony_ci return napiValue; 258d9f0492fSopenharmony_ci} 259d9f0492fSopenharmony_ci 260d9f0492fSopenharmony_cistatic napi_value GetMajorVersion(napi_env env, napi_callback_info info) 261d9f0492fSopenharmony_ci{ 262d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 263d9f0492fSopenharmony_ci int majorVersion = GetMajorVersion(); 264d9f0492fSopenharmony_ci 265d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_int32(env, majorVersion, &napiValue)); 266d9f0492fSopenharmony_ci return napiValue; 267d9f0492fSopenharmony_ci} 268d9f0492fSopenharmony_ci 269d9f0492fSopenharmony_cistatic napi_value GetSeniorVersion(napi_env env, napi_callback_info info) 270d9f0492fSopenharmony_ci{ 271d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 272d9f0492fSopenharmony_ci int seniorVersion = GetSeniorVersion(); 273d9f0492fSopenharmony_ci 274d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_int32(env, seniorVersion, &napiValue)); 275d9f0492fSopenharmony_ci return napiValue; 276d9f0492fSopenharmony_ci} 277d9f0492fSopenharmony_ci 278d9f0492fSopenharmony_cistatic napi_value GetFeatureVersion(napi_env env, napi_callback_info info) 279d9f0492fSopenharmony_ci{ 280d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 281d9f0492fSopenharmony_ci int featureVersion = GetFeatureVersion(); 282d9f0492fSopenharmony_ci 283d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_int32(env, featureVersion, &napiValue)); 284d9f0492fSopenharmony_ci return napiValue; 285d9f0492fSopenharmony_ci} 286d9f0492fSopenharmony_ci 287d9f0492fSopenharmony_cistatic napi_value GetBuildVersion(napi_env env, napi_callback_info info) 288d9f0492fSopenharmony_ci{ 289d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 290d9f0492fSopenharmony_ci int buildVersion = GetBuildVersion(); 291d9f0492fSopenharmony_ci 292d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_int32(env, buildVersion, &napiValue)); 293d9f0492fSopenharmony_ci return napiValue; 294d9f0492fSopenharmony_ci} 295d9f0492fSopenharmony_ci 296d9f0492fSopenharmony_cistatic napi_value GetSdkApiVersion(napi_env env, napi_callback_info info) 297d9f0492fSopenharmony_ci{ 298d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 299d9f0492fSopenharmony_ci int sdkApiVersion = GetSdkApiVersion(); 300d9f0492fSopenharmony_ci 301d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_int32(env, sdkApiVersion, &napiValue)); 302d9f0492fSopenharmony_ci return napiValue; 303d9f0492fSopenharmony_ci} 304d9f0492fSopenharmony_ci 305d9f0492fSopenharmony_cistatic napi_value GetFirstApiVersion(napi_env env, napi_callback_info info) 306d9f0492fSopenharmony_ci{ 307d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 308d9f0492fSopenharmony_ci int firstApiVersion = GetFirstApiVersion(); 309d9f0492fSopenharmony_ci 310d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_int32(env, firstApiVersion, &napiValue)); 311d9f0492fSopenharmony_ci return napiValue; 312d9f0492fSopenharmony_ci} 313d9f0492fSopenharmony_ci 314d9f0492fSopenharmony_cistatic napi_value GetVersionId(napi_env env, napi_callback_info info) 315d9f0492fSopenharmony_ci{ 316d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 317d9f0492fSopenharmony_ci const char *versionId = GetVersionId(); 318d9f0492fSopenharmony_ci if (versionId == nullptr) { 319d9f0492fSopenharmony_ci versionId = ""; 320d9f0492fSopenharmony_ci } 321d9f0492fSopenharmony_ci 322d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, versionId, strlen(versionId), &napiValue)); 323d9f0492fSopenharmony_ci return napiValue; 324d9f0492fSopenharmony_ci} 325d9f0492fSopenharmony_ci 326d9f0492fSopenharmony_cistatic napi_value GetBuildType(napi_env env, napi_callback_info info) 327d9f0492fSopenharmony_ci{ 328d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 329d9f0492fSopenharmony_ci const char *buildType = GetBuildType(); 330d9f0492fSopenharmony_ci if (buildType == nullptr) { 331d9f0492fSopenharmony_ci buildType = ""; 332d9f0492fSopenharmony_ci } 333d9f0492fSopenharmony_ci 334d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, buildType, strlen(buildType), &napiValue)); 335d9f0492fSopenharmony_ci return napiValue; 336d9f0492fSopenharmony_ci} 337d9f0492fSopenharmony_ci 338d9f0492fSopenharmony_cistatic napi_value GetBuildUser(napi_env env, napi_callback_info info) 339d9f0492fSopenharmony_ci{ 340d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 341d9f0492fSopenharmony_ci const char *buildUser = GetBuildUser(); 342d9f0492fSopenharmony_ci if (buildUser == nullptr) { 343d9f0492fSopenharmony_ci buildUser = ""; 344d9f0492fSopenharmony_ci } 345d9f0492fSopenharmony_ci 346d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, buildUser, strlen(buildUser), &napiValue)); 347d9f0492fSopenharmony_ci return napiValue; 348d9f0492fSopenharmony_ci} 349d9f0492fSopenharmony_ci 350d9f0492fSopenharmony_cistatic napi_value GetBuildHost(napi_env env, napi_callback_info info) 351d9f0492fSopenharmony_ci{ 352d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 353d9f0492fSopenharmony_ci const char *buildHost = GetBuildHost(); 354d9f0492fSopenharmony_ci if (buildHost == nullptr) { 355d9f0492fSopenharmony_ci buildHost = ""; 356d9f0492fSopenharmony_ci } 357d9f0492fSopenharmony_ci 358d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, buildHost, strlen(buildHost), &napiValue)); 359d9f0492fSopenharmony_ci return napiValue; 360d9f0492fSopenharmony_ci} 361d9f0492fSopenharmony_ci 362d9f0492fSopenharmony_cistatic napi_value GetBuildTime(napi_env env, napi_callback_info info) 363d9f0492fSopenharmony_ci{ 364d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 365d9f0492fSopenharmony_ci const char *buildTime = GetBuildTime(); 366d9f0492fSopenharmony_ci if (buildTime == nullptr) { 367d9f0492fSopenharmony_ci buildTime = ""; 368d9f0492fSopenharmony_ci } 369d9f0492fSopenharmony_ci 370d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, buildTime, strlen(buildTime), &napiValue)); 371d9f0492fSopenharmony_ci return napiValue; 372d9f0492fSopenharmony_ci} 373d9f0492fSopenharmony_ci 374d9f0492fSopenharmony_cistatic napi_value GetBuildRootHash(napi_env env, napi_callback_info info) 375d9f0492fSopenharmony_ci{ 376d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 377d9f0492fSopenharmony_ci const char *buildRootHash = GetBuildRootHash(); 378d9f0492fSopenharmony_ci if (buildRootHash == nullptr) { 379d9f0492fSopenharmony_ci buildRootHash = ""; 380d9f0492fSopenharmony_ci } 381d9f0492fSopenharmony_ci 382d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, buildRootHash, strlen(buildRootHash), &napiValue)); 383d9f0492fSopenharmony_ci return napiValue; 384d9f0492fSopenharmony_ci} 385d9f0492fSopenharmony_ci 386d9f0492fSopenharmony_cistatic napi_value GetDevUdid(napi_env env, napi_callback_info info) 387d9f0492fSopenharmony_ci{ 388d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 389d9f0492fSopenharmony_ci char localDeviceId[UDID_LEN] = {0}; 390d9f0492fSopenharmony_ci AclGetDevUdid(localDeviceId, UDID_LEN); 391d9f0492fSopenharmony_ci 392d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, localDeviceId, strlen(localDeviceId), &napiValue)); 393d9f0492fSopenharmony_ci return napiValue; 394d9f0492fSopenharmony_ci} 395d9f0492fSopenharmony_ci 396d9f0492fSopenharmony_cistatic napi_value NAPI_GetDistributionOSName(napi_env env, napi_callback_info info) 397d9f0492fSopenharmony_ci{ 398d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 399d9f0492fSopenharmony_ci const char *val = GetDistributionOSName(); 400d9f0492fSopenharmony_ci 401d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, val, strlen(val), &napiValue)); 402d9f0492fSopenharmony_ci return napiValue; 403d9f0492fSopenharmony_ci} 404d9f0492fSopenharmony_ci 405d9f0492fSopenharmony_cistatic napi_value NAPI_GetDistributionOSVersion(napi_env env, napi_callback_info info) 406d9f0492fSopenharmony_ci{ 407d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 408d9f0492fSopenharmony_ci const char *val = GetDistributionOSVersion(); 409d9f0492fSopenharmony_ci 410d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, val, strlen(val), &napiValue)); 411d9f0492fSopenharmony_ci return napiValue; 412d9f0492fSopenharmony_ci} 413d9f0492fSopenharmony_ci 414d9f0492fSopenharmony_cistatic napi_value NAPI_GetDistributionOSApiVersion(napi_env env, napi_callback_info info) 415d9f0492fSopenharmony_ci{ 416d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 417d9f0492fSopenharmony_ci int sdkApiVersion = GetDistributionOSApiVersion(); 418d9f0492fSopenharmony_ci 419d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_int32(env, sdkApiVersion, &napiValue)); 420d9f0492fSopenharmony_ci return napiValue; 421d9f0492fSopenharmony_ci} 422d9f0492fSopenharmony_ci 423d9f0492fSopenharmony_cistatic napi_value NAPI_GetDistributionOSApiName(napi_env env, napi_callback_info info) 424d9f0492fSopenharmony_ci{ 425d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 426d9f0492fSopenharmony_ci const char *val = GetDistributionOSApiName(); 427d9f0492fSopenharmony_ci 428d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, val, strlen(val), &napiValue)); 429d9f0492fSopenharmony_ci return napiValue; 430d9f0492fSopenharmony_ci} 431d9f0492fSopenharmony_ci 432d9f0492fSopenharmony_cistatic napi_value NAPI_GetDistributionOSReleaseType(napi_env env, napi_callback_info info) 433d9f0492fSopenharmony_ci{ 434d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 435d9f0492fSopenharmony_ci const char *val = GetDistributionOSReleaseType(); 436d9f0492fSopenharmony_ci 437d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, val, strlen(val), &napiValue)); 438d9f0492fSopenharmony_ci return napiValue; 439d9f0492fSopenharmony_ci} 440d9f0492fSopenharmony_ci 441d9f0492fSopenharmony_cistatic DevInfoError AclGetDevOdid(char *odid, int size) 442d9f0492fSopenharmony_ci{ 443d9f0492fSopenharmony_ci DevInfoError ret = DEV_INFO_OK; 444d9f0492fSopenharmony_ci if (odid[0] != '\0') { 445d9f0492fSopenharmony_ci return DEV_INFO_OK; 446d9f0492fSopenharmony_ci } 447d9f0492fSopenharmony_ci auto systemAbilityManager = OHOS::SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 448d9f0492fSopenharmony_ci if (!systemAbilityManager) { 449d9f0492fSopenharmony_ci return DEV_INFO_ENULLPTR; 450d9f0492fSopenharmony_ci } 451d9f0492fSopenharmony_ci 452d9f0492fSopenharmony_ci auto remoteObject = systemAbilityManager->GetSystemAbility(OHOS::BUNDLE_MGR_SERVICE_SYS_ABILITY_ID); 453d9f0492fSopenharmony_ci if (!remoteObject) { 454d9f0492fSopenharmony_ci return DEV_INFO_ENULLPTR; 455d9f0492fSopenharmony_ci } 456d9f0492fSopenharmony_ci 457d9f0492fSopenharmony_ci#ifdef DEPENDENT_APPEXECFWK_BASE 458d9f0492fSopenharmony_ci auto bundleMgrProxy = OHOS::iface_cast<OHOS::AppExecFwk::BundleMgrProxy>(remoteObject); 459d9f0492fSopenharmony_ci if (!bundleMgrProxy) { 460d9f0492fSopenharmony_ci return DEV_INFO_ENULLPTR; 461d9f0492fSopenharmony_ci } 462d9f0492fSopenharmony_ci 463d9f0492fSopenharmony_ci std::string odidStr; 464d9f0492fSopenharmony_ci if (bundleMgrProxy->GetOdid(odidStr) != 0) { 465d9f0492fSopenharmony_ci return DEV_INFO_EGETODID; 466d9f0492fSopenharmony_ci } 467d9f0492fSopenharmony_ci 468d9f0492fSopenharmony_ci if (strcpy_s(odid, size, odidStr.c_str()) != EOK) { 469d9f0492fSopenharmony_ci return DEV_INFO_ESTRCOPY; 470d9f0492fSopenharmony_ci } 471d9f0492fSopenharmony_ci#else 472d9f0492fSopenharmony_ci DEVINFO_LOGE("DEPENDENT_APPEXECFWK_BASE does not exist, The ODID could not be obtained"); 473d9f0492fSopenharmony_ci ret = DEV_INFO_EGETODID; 474d9f0492fSopenharmony_ci#endif 475d9f0492fSopenharmony_ci 476d9f0492fSopenharmony_ci return ret; 477d9f0492fSopenharmony_ci} 478d9f0492fSopenharmony_ci 479d9f0492fSopenharmony_cistatic napi_value GetDevOdid(napi_env env, napi_callback_info info) 480d9f0492fSopenharmony_ci{ 481d9f0492fSopenharmony_ci napi_value napiValue = nullptr; 482d9f0492fSopenharmony_ci static char odid[ODID_LEN] = {0}; 483d9f0492fSopenharmony_ci DevInfoError ret = AclGetDevOdid(odid, ODID_LEN); 484d9f0492fSopenharmony_ci if (ret != DEV_INFO_OK) { 485d9f0492fSopenharmony_ci DEVINFO_LOGE("GetDevOdid ret:%d", ret); 486d9f0492fSopenharmony_ci } 487d9f0492fSopenharmony_ci 488d9f0492fSopenharmony_ci NAPI_CALL(env, napi_create_string_utf8(env, odid, strlen(odid), &napiValue)); 489d9f0492fSopenharmony_ci return napiValue; 490d9f0492fSopenharmony_ci} 491d9f0492fSopenharmony_ci 492d9f0492fSopenharmony_ciEXTERN_C_START 493d9f0492fSopenharmony_ci/* 494d9f0492fSopenharmony_ci * Module init 495d9f0492fSopenharmony_ci */ 496d9f0492fSopenharmony_cistatic napi_value Init(napi_env env, napi_value exports) 497d9f0492fSopenharmony_ci{ 498d9f0492fSopenharmony_ci /* 499d9f0492fSopenharmony_ci * Attribute definition 500d9f0492fSopenharmony_ci */ 501d9f0492fSopenharmony_ci napi_property_descriptor desc[] = { 502d9f0492fSopenharmony_ci {"deviceType", nullptr, nullptr, GetDeviceType, nullptr, nullptr, napi_default, nullptr}, 503d9f0492fSopenharmony_ci {"manufacture", nullptr, nullptr, GetManufacture, nullptr, nullptr, napi_default, nullptr}, 504d9f0492fSopenharmony_ci {"brand", nullptr, nullptr, GetBrand, nullptr, nullptr, napi_default, nullptr}, 505d9f0492fSopenharmony_ci {"marketName", nullptr, nullptr, GetMarketName, nullptr, nullptr, napi_default, nullptr}, 506d9f0492fSopenharmony_ci {"productSeries", nullptr, nullptr, GetProductSeries, nullptr, nullptr, napi_default, nullptr}, 507d9f0492fSopenharmony_ci {"productModel", nullptr, nullptr, GetProductModel, nullptr, nullptr, napi_default, nullptr}, 508d9f0492fSopenharmony_ci {"softwareModel", nullptr, nullptr, GetSoftwareModel, nullptr, nullptr, napi_default, nullptr}, 509d9f0492fSopenharmony_ci {"hardwareModel", nullptr, nullptr, GetHardwareModel, nullptr, nullptr, napi_default, nullptr}, 510d9f0492fSopenharmony_ci {"hardwareProfile", nullptr, nullptr, GetHardwareProfile, nullptr, nullptr, napi_default, nullptr}, 511d9f0492fSopenharmony_ci {"serial", nullptr, nullptr, GetSerial, nullptr, nullptr, napi_default, nullptr}, 512d9f0492fSopenharmony_ci {"bootloaderVersion", nullptr, nullptr, GetBootloaderVersion, nullptr, nullptr, napi_default, nullptr}, 513d9f0492fSopenharmony_ci {"abiList", nullptr, nullptr, GetAbiList, nullptr, nullptr, napi_default, nullptr}, 514d9f0492fSopenharmony_ci {"securityPatchTag", nullptr, nullptr, GetSecurityPatchTag, nullptr, nullptr, napi_default, nullptr}, 515d9f0492fSopenharmony_ci {"displayVersion", nullptr, nullptr, GetDisplayVersion, nullptr, nullptr, napi_default, nullptr}, 516d9f0492fSopenharmony_ci {"incrementalVersion", nullptr, nullptr, GetIncrementalVersion, nullptr, nullptr, napi_default, nullptr}, 517d9f0492fSopenharmony_ci {"osReleaseType", nullptr, nullptr, GetOsReleaseType, nullptr, nullptr, napi_default, nullptr}, 518d9f0492fSopenharmony_ci {"osFullName", nullptr, nullptr, GetOSFullName, nullptr, nullptr, napi_default, nullptr}, 519d9f0492fSopenharmony_ci {"majorVersion", nullptr, nullptr, GetMajorVersion, nullptr, nullptr, napi_default, nullptr}, 520d9f0492fSopenharmony_ci {"seniorVersion", nullptr, nullptr, GetSeniorVersion, nullptr, nullptr, napi_default, nullptr}, 521d9f0492fSopenharmony_ci {"featureVersion", nullptr, nullptr, GetFeatureVersion, nullptr, nullptr, napi_default, nullptr}, 522d9f0492fSopenharmony_ci {"buildVersion", nullptr, nullptr, GetBuildVersion, nullptr, nullptr, napi_default, nullptr}, 523d9f0492fSopenharmony_ci {"sdkApiVersion", nullptr, nullptr, GetSdkApiVersion, nullptr, nullptr, napi_default, nullptr}, 524d9f0492fSopenharmony_ci {"firstApiVersion", nullptr, nullptr, GetFirstApiVersion, nullptr, nullptr, napi_default, nullptr}, 525d9f0492fSopenharmony_ci {"versionId", nullptr, nullptr, GetVersionId, nullptr, nullptr, napi_default, nullptr}, 526d9f0492fSopenharmony_ci {"buildType", nullptr, nullptr, GetBuildType, nullptr, nullptr, napi_default, nullptr}, 527d9f0492fSopenharmony_ci {"buildUser", nullptr, nullptr, GetBuildUser, nullptr, nullptr, napi_default, nullptr}, 528d9f0492fSopenharmony_ci {"buildHost", nullptr, nullptr, GetBuildHost, nullptr, nullptr, napi_default, nullptr}, 529d9f0492fSopenharmony_ci {"buildTime", nullptr, nullptr, GetBuildTime, nullptr, nullptr, napi_default, nullptr}, 530d9f0492fSopenharmony_ci {"buildRootHash", nullptr, nullptr, GetBuildRootHash, nullptr, nullptr, napi_default, nullptr}, 531d9f0492fSopenharmony_ci {"udid", nullptr, nullptr, GetDevUdid, nullptr, nullptr, napi_default, nullptr}, 532d9f0492fSopenharmony_ci {"distributionOSName", nullptr, nullptr, NAPI_GetDistributionOSName, nullptr, nullptr, napi_default, nullptr}, 533d9f0492fSopenharmony_ci {"distributionOSVersion", nullptr, nullptr, NAPI_GetDistributionOSVersion, nullptr, nullptr, napi_default, nullptr}, 534d9f0492fSopenharmony_ci {"distributionOSApiVersion", nullptr, nullptr, NAPI_GetDistributionOSApiVersion, nullptr, nullptr, napi_default, nullptr}, 535d9f0492fSopenharmony_ci {"distributionOSApiName", nullptr, nullptr, NAPI_GetDistributionOSApiName, nullptr, nullptr, napi_default, nullptr}, 536d9f0492fSopenharmony_ci {"distributionOSReleaseType", nullptr, nullptr, NAPI_GetDistributionOSReleaseType, nullptr, nullptr, napi_default, nullptr}, 537d9f0492fSopenharmony_ci {"ODID", nullptr, nullptr, GetDevOdid, nullptr, nullptr, napi_default, nullptr}, 538d9f0492fSopenharmony_ci }; 539d9f0492fSopenharmony_ci NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(napi_property_descriptor), desc)); 540d9f0492fSopenharmony_ci 541d9f0492fSopenharmony_ci return exports; 542d9f0492fSopenharmony_ci} 543d9f0492fSopenharmony_ciEXTERN_C_END 544d9f0492fSopenharmony_ci 545d9f0492fSopenharmony_ci/* 546d9f0492fSopenharmony_ci * Module definition 547d9f0492fSopenharmony_ci */ 548d9f0492fSopenharmony_cistatic napi_module _module = { 549d9f0492fSopenharmony_ci .nm_version = 1, 550d9f0492fSopenharmony_ci .nm_flags = 0, 551d9f0492fSopenharmony_ci .nm_filename = NULL, 552d9f0492fSopenharmony_ci .nm_register_func = Init, 553d9f0492fSopenharmony_ci .nm_modname = "deviceInfo", 554d9f0492fSopenharmony_ci .nm_priv = ((void *)0), 555d9f0492fSopenharmony_ci .reserved = { 0 } 556d9f0492fSopenharmony_ci}; 557d9f0492fSopenharmony_ci/* 558d9f0492fSopenharmony_ci * Module registration function 559d9f0492fSopenharmony_ci */ 560d9f0492fSopenharmony_ciextern "C" __attribute__((constructor)) void RegisterModule(void) 561d9f0492fSopenharmony_ci{ 562d9f0492fSopenharmony_ci napi_module_register(&_module); 563d9f0492fSopenharmony_ci} 564