1/*
2 * Copyright (c) 2020 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 <string>
17#include <new>
18#include "global.h"
19#include "nativeapi_common.h"
20#include "nativeapi_config.h"
21#include "parameter.h"
22#include "sysversion.h"
23
24static constexpr int MAX_BUFFER = 65;
25namespace OHOS {
26namespace ACELite {
27JSIValue JSGetDeviceType(void)
28{
29    const char *value = GetDeviceType();
30    if (value == nullptr) {
31        value = "";
32    }
33
34    JSIValue deviceType = JSI::CreateString(value);
35    return deviceType;
36}
37
38JSIValue JSGetManufacture(void)
39{
40    const char *value = GetManufacture();
41    if (value == nullptr) {
42        value = "";
43    }
44
45    JSIValue manfactureName = JSI::CreateString(value);
46    return manfactureName;
47}
48
49JSIValue JSGetBrand(void)
50{
51    const char *value = GetBrand();
52    if (value == nullptr) {
53        value = "";
54    }
55
56    JSIValue productBrand = JSI::CreateString(value);
57    return productBrand;
58}
59
60JSIValue JSGetMarketName(void)
61{
62    const char *value = GetMarketName();
63    if (value == nullptr) {
64        value = "";
65    }
66
67    JSIValue marketName = JSI::CreateString(value);
68    return marketName;
69}
70
71JSIValue JSGetProductSeries(void)
72{
73    const char *value = GetProductSeries();
74    if (value == nullptr) {
75        value = "";
76    }
77
78    JSIValue productSeries = JSI::CreateString(value);
79    return productSeries;
80}
81
82JSIValue JSGetProductModel(void)
83{
84    const char *value = GetProductModel();
85    if (value == nullptr) {
86        value = "";
87    }
88
89    JSIValue productModel = JSI::CreateString(value);
90    return productModel;
91}
92
93JSIValue JSGetSoftwareModel(void)
94{
95    const char *value = GetSoftwareModel();
96    if (value == nullptr) {
97        value = "";
98    }
99
100    JSIValue softwareModel = JSI::CreateString(value);
101    return softwareModel;
102}
103
104JSIValue JSGetHardwareModel(void)
105{
106    const char *value = GetHardwareModel();
107    if (value == nullptr) {
108        value = "";
109    }
110
111    JSIValue hardwareModel = JSI::CreateString(value);
112    return hardwareModel;
113}
114
115JSIValue JSGetHardwareProfile(void)
116{
117    const char *value = GetHardwareProfile();
118    if (value == nullptr) {
119        value = "";
120    }
121
122    JSIValue hardwareProfile = JSI::CreateString(value);
123    return hardwareProfile;
124}
125
126JSIValue JSGetSerial(void)
127{
128    const char *value = GetSerial();
129    if (value == nullptr) {
130        value = "";
131    }
132
133    JSIValue serialNumber = JSI::CreateString(value);
134    return serialNumber;
135}
136
137JSIValue JSGetBootloaderVersion(void)
138{
139    const char *value = GetBootloaderVersion();
140    if (value == nullptr) {
141        value = "";
142    }
143
144    JSIValue bootloaderVersion = JSI::CreateString(value);
145    return bootloaderVersion;
146}
147
148JSIValue JSGetAbiList(void)
149{
150    const char *value = GetAbiList();
151    if (value == nullptr) {
152        value = "";
153    }
154
155    JSIValue abiList = JSI::CreateString(value);
156    return abiList;
157}
158
159JSIValue JSGetSecurityPatchTag(void)
160{
161    const char *value = GetSecurityPatchTag();
162    if (value == nullptr) {
163        value = "";
164    }
165
166    JSIValue securityPatchTag = JSI::CreateString(value);
167    return securityPatchTag;
168}
169
170JSIValue JSGetDisplayVersion(void)
171{
172    const char *value = GetDisplayVersion();
173    if (value == nullptr) {
174        value = "";
175    }
176
177    JSIValue productVersion = JSI::CreateString(value);
178    return productVersion;
179}
180
181JSIValue JSGetIncrementalVersion(void)
182{
183    const char *value = GetIncrementalVersion();
184    if (value == nullptr) {
185        value = "";
186    }
187
188    JSIValue incrementalVersion = JSI::CreateString(value);
189    return incrementalVersion;
190}
191
192JSIValue JSGetOsReleaseType(void)
193{
194    const char *value = GetOsReleaseType();
195    if (value == nullptr) {
196        value = "";
197    }
198
199    JSIValue osReleaseType = JSI::CreateString(value);
200    return osReleaseType;
201}
202
203JSIValue JSGetOSFullName(void)
204{
205    const char *value = GetOSFullName();
206    if (value == nullptr) {
207        value = "";
208    }
209    JSIValue osVersion = JSI::CreateString(value);
210    return osVersion;
211}
212
213JSIValue JSGetMajorVersion(void)
214{
215    int value = GetMajorVersion();
216    JSIValue majorVersion = JSI::CreateUndefined();
217    if (value < 0) {
218        return majorVersion;
219    }
220
221    majorVersion = JSI::CreateString(std::to_string(value).c_str());
222    return majorVersion;
223}
224
225JSIValue JSGetSeniorVersion(void)
226{
227    int value = GetSeniorVersion();
228    JSIValue seniorVersion = JSI::CreateUndefined();
229    if (value < 0) {
230        return seniorVersion;
231    }
232
233    seniorVersion = JSI::CreateString(std::to_string(value).c_str());
234    return seniorVersion;
235}
236
237JSIValue JSGetFeatureVersion(void)
238{
239    int value = GetFeatureVersion();
240    JSIValue featureVersion = JSI::CreateUndefined();
241    if (value < 0) {
242        return featureVersion;
243    }
244
245    featureVersion = JSI::CreateString(std::to_string(value).c_str());
246    return featureVersion;
247}
248
249JSIValue JSGetBuildVersion(void)
250{
251    int value = GetBuildVersion();
252    JSIValue buildVersion = JSI::CreateUndefined();
253    if (value < 0) {
254        return buildVersion;
255    }
256
257    buildVersion = JSI::CreateString(std::to_string(value).c_str());
258    return buildVersion;
259}
260
261JSIValue JSGetSdkApiVersion(void)
262{
263    int value = GetSdkApiVersion();
264    JSIValue sdkApiVersion = JSI::CreateUndefined();
265    if (value < 0) {
266        return sdkApiVersion;
267    }
268
269    sdkApiVersion = JSI::CreateString(std::to_string(value).c_str());
270    return sdkApiVersion;
271}
272
273JSIValue JSGetFirstApiVersion(void)
274{
275    int value = GetFirstApiVersion();
276    JSIValue firstApiVersion = JSI::CreateUndefined();
277    if (value < 0) {
278        return firstApiVersion;
279    }
280
281    firstApiVersion = JSI::CreateString(std::to_string(value).c_str());
282    return firstApiVersion;
283}
284
285JSIValue JSGetVersionId(void)
286{
287    const char *value = GetVersionId();
288    if (value == nullptr) {
289        value = "";
290    }
291
292    JSIValue versionId = JSI::CreateString(value);
293    return versionId;
294}
295
296JSIValue JSGetBuildType(void)
297{
298    const char *value = GetBuildType();
299    if (value == nullptr) {
300        value = "";
301    }
302
303    JSIValue buildType = JSI::CreateString(value);
304    return buildType;
305}
306
307JSIValue JSGetBuildUser(void)
308{
309    const char *value = GetBuildUser();
310    if (value == nullptr) {
311        value = "";
312    }
313
314    JSIValue buildUser = JSI::CreateString(value);
315    return buildUser;
316}
317
318JSIValue JSGetBuildHost(void)
319{
320    const char *value = GetBuildHost();
321    if (value == nullptr) {
322        value = "";
323    }
324
325    JSIValue buildHost = JSI::CreateString(value);
326    return buildHost;
327}
328
329JSIValue JSGetBuildTime(void)
330{
331    const char *value = GetBuildTime();
332    if (value == nullptr) {
333        value = "";
334    }
335
336    JSIValue buildTime = JSI::CreateString(value);
337    return buildTime;
338}
339
340JSIValue JSGetBuildRootHash(void)
341{
342    const char *value = GetBuildRootHash();
343    if (value == nullptr) {
344        value = "";
345    }
346
347    JSIValue buildRootHash = JSI::CreateString(value);
348    return buildRootHash;
349}
350
351JSIValue JSGetDevUdid(void)
352{
353    char buffer[MAX_BUFFER] = { 0 };
354    int value = GetDevUdid(buffer, sizeof(buffer));
355    JSIValue udid = JSI::CreateUndefined();
356    if (value < 0) {
357        return udid;
358    }
359
360    udid = JSI::CreateString(std::to_string(value).c_str());
361    return udid;
362}
363
364JSIValue JSGetDistributionOSName(void)
365{
366    const char *value = GetDistributionOSName();
367    if (value == nullptr) {
368        value = "";
369    }
370    JSIValue distributionOSName = JSI::CreateString(value);
371    return distributionOSName;
372}
373
374JSIValue JSGetDistributionOSVersion(void)
375{
376    const char *value = GetDistributionOSVersion();
377    if (value == nullptr) {
378        value = "";
379    }
380    JSIValue distributionOSVersion = JSI::CreateString(value);
381    return distributionOSVersion;
382}
383
384JSIValue JSGetDistributionOSApiVersion(void)
385{
386    int value = GetDistributionOSApiVersion();
387    JSIValue distributionOSApiVersion = JSI::CreateUndefined();
388    if (value < 0) {
389        return distributionOSApiVersion;
390    }
391
392    distributionOSApiVersion = JSI::CreateString(std::to_string(value).c_str());
393    return distributionOSApiVersion;
394}
395
396JSIValue JSGetDistributionOSReleaseType(void)
397{
398    const char *value = GetDistributionOSReleaseType();
399    if (value == nullptr) {
400        value = "";
401    }
402    JSIValue distributionOSReleaseType = JSI::CreateString(value);
403    return distributionOSReleaseType;
404}
405
406void InitDeviceInfoModule(JSIValue exports)
407{
408     JSI::SetNamedProperty(exports, "deviceType", JSGetDeviceType());
409     JSI::SetNamedProperty(exports, "manufacture", JSGetManufacture());
410     JSI::SetNamedProperty(exports, "brand", JSGetBrand());
411     JSI::SetNamedProperty(exports, "marketName", JSGetMarketName());
412     JSI::SetNamedProperty(exports, "productSeries", JSGetProductSeries());
413     JSI::SetNamedProperty(exports, "productModel", JSGetProductModel());
414     JSI::SetNamedProperty(exports, "softwareModel", JSGetSoftwareModel());
415     JSI::SetNamedProperty(exports, "hardwareModel", JSGetHardwareModel());
416     JSI::SetNamedProperty(exports, "hardwareProfile", JSGetHardwareProfile());
417     JSI::SetNamedProperty(exports, "serial", JSGetSerial());
418     JSI::SetNamedProperty(exports, "bootloaderVersion", JSGetBootloaderVersion());
419     JSI::SetNamedProperty(exports, "abiList", JSGetAbiList());
420     JSI::SetNamedProperty(exports, "securityPatchTag", JSGetSecurityPatchTag());
421     JSI::SetNamedProperty(exports, "displayVersion", JSGetDisplayVersion());
422     JSI::SetNamedProperty(exports, "incrementalVersion", JSGetIncrementalVersion());
423     JSI::SetNamedProperty(exports, "osReleaseType", JSGetOsReleaseType());
424     JSI::SetNamedProperty(exports, "osFullName", JSGetOSFullName());
425     JSI::SetNamedProperty(exports, "majorVersion", JSGetMajorVersion());
426     JSI::SetNamedProperty(exports, "seniorVersion", JSGetSeniorVersion());
427     JSI::SetNamedProperty(exports, "featureVersion", JSGetFeatureVersion());
428     JSI::SetNamedProperty(exports, "buildVersion", JSGetBuildVersion());
429     JSI::SetNamedProperty(exports, "sdkApiVersion", JSGetSdkApiVersion());
430     JSI::SetNamedProperty(exports, "firstApiVersion", JSGetFirstApiVersion());
431     JSI::SetNamedProperty(exports, "versionId", JSGetVersionId());
432     JSI::SetNamedProperty(exports, "buildType", JSGetBuildType());
433     JSI::SetNamedProperty(exports, "buildUser", JSGetBuildUser());
434     JSI::SetNamedProperty(exports, "buildHost", JSGetBuildHost());
435     JSI::SetNamedProperty(exports, "buildTime", JSGetBuildTime());
436     JSI::SetNamedProperty(exports, "buildRootHash", JSGetBuildRootHash());
437     JSI::SetNamedProperty(exports, "udid", JSGetDevUdid());
438     JSI::SetNamedProperty(exports, "distributionOSName", JSGetDistributionOSName());
439     JSI::SetNamedProperty(exports, "distributionOSVersion", JSGetDistributionOSVersion());
440     JSI::SetNamedProperty(exports, "distributionOSApiVersion", JSGetDistributionOSApiVersion());
441     JSI::SetNamedProperty(exports, "distributionOSReleaseType", JSGetDistributionOSReleaseType());
442}
443} // ACELite
444} // OHOS
445