• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 "napi/native_api.h"
17 #include <LocationKit/oh_location.h>
18 #include <LocationKit/oh_location_type.h>
19 #include <js_native_api_types.h>
20 #include <unistd.h>
21 
22 namespace {
23 static const Location_RequestConfig *requestConfig = OH_Location_CreateRequestConfig();
24 }
25 
OHLocationInfoGetAdditionalInfo(napi_env env,napi_callback_info info)26 static napi_value OHLocationInfoGetAdditionalInfo(napi_env env, napi_callback_info info)
27 {
28     Location_Info *location;
29     char additionalInfo[] = "";
30     Location_ResultCode errorCode = OH_LocationInfo_GetAdditionalInfo(nullptr, additionalInfo, 0);
31     napi_value result = nullptr;
32     napi_create_int32(env, errorCode, &result);
33     return result;
34 }
OH_Location_IsLocatingEnabled1(napi_env env,napi_callback_info info)35 static napi_value OH_Location_IsLocatingEnabled1(napi_env env, napi_callback_info info)
36 {
37     bool flag = true;
38     bool *enabled = &flag;
39     Location_ResultCode startCode = OH_Location_IsLocatingEnabled(enabled);
40     napi_value result = nullptr;
41     napi_create_int32(env, startCode, &result);
42     return result;
43 }
OH_Location_IsLocatingEnabled2(napi_env env,napi_callback_info info)44 static napi_value OH_Location_IsLocatingEnabled2(napi_env env, napi_callback_info info)
45 {
46     Location_ResultCode startCode = OH_Location_IsLocatingEnabled(nullptr);
47     napi_value result = nullptr;
48     napi_create_int32(env, startCode, &result);
49     return result;
50 }
51 
OH_Location_StartLocating1(napi_env env,napi_callback_info info)52 static napi_value OH_Location_StartLocating1(napi_env env, napi_callback_info info)
53 {
54     Location_RequestConfig *config = OH_Location_CreateRequestConfig();
55     Location_ResultCode startCode1 = OH_Location_StartLocating(config);
56     napi_value result = nullptr;
57     napi_create_int32(env, startCode1, &result);
58     return result;
59 }
OH_Location_StartLocating2(napi_env env,napi_callback_info info)60 static napi_value OH_Location_StartLocating2(napi_env env, napi_callback_info info)
61 {
62     Location_ResultCode startCode = OH_Location_StartLocating(nullptr);
63     napi_value result = nullptr;
64     napi_create_int32(env, startCode, &result);
65     return result;
66 }
OH_Location_StopLocating2(napi_env env,napi_callback_info info)67 static napi_value OH_Location_StopLocating2(napi_env env, napi_callback_info info)
68 {
69     Location_ResultCode stopCode = OH_Location_StopLocating(nullptr);
70     napi_value result = nullptr;
71     napi_create_int32(env, stopCode, &result);
72     return result;
73 }
OHLocationInfoGetAdditionalInfo0100(napi_env env,napi_callback_info info)74 static napi_value OHLocationInfoGetAdditionalInfo0100(napi_env env, napi_callback_info info)
75 {
76     Location_Info *location;
77     char additionalInfo[] = "";
78     Location_ResultCode errorCode = OH_LocationInfo_GetAdditionalInfo(location, additionalInfo, 0);
79     napi_value result = nullptr;
80     napi_create_int32(env, errorCode, &result);
81     return result;
82 }
OH_LocationRequestConfig_SetUseScene0100(napi_env env,napi_callback_info info)83 static napi_value OH_LocationRequestConfig_SetUseScene0100(napi_env env, napi_callback_info info)
84 {
85     try {
86         Location_RequestConfig *requestConfig = OH_Location_CreateRequestConfig();
87         OH_LocationRequestConfig_SetUseScene(requestConfig, LOCATION_USE_SCENE_SPORT);
88         int32_t errorCode = 0;
89         napi_value result = nullptr;
90         napi_create_int32(env, errorCode, &result);
91         return result;
92     } catch (...) {
93         int32_t errorCode = 1;
94         napi_value result = nullptr;
95         napi_create_int32(env, errorCode, &result);
96         return result;
97     }
98 }
OH_LocationRequestConfig_SetUseScene0101(napi_env env,napi_callback_info info)99 static napi_value OH_LocationRequestConfig_SetUseScene0101(napi_env env, napi_callback_info info)
100 {
101     try {
102         Location_RequestConfig *requestConfig = OH_Location_CreateRequestConfig();
103         OH_LocationRequestConfig_SetUseScene(requestConfig, LOCATION_USE_SCENE_TRANSPORT);
104         int32_t errorCode = 0;
105         napi_value result = nullptr;
106         napi_create_int32(env, errorCode, &result);
107         return result;
108     } catch (...) {
109         int32_t errorCode = 1;
110         napi_value result = nullptr;
111         napi_create_int32(env, errorCode, &result);
112         return result;
113     }
114 }
OH_LocationRequestConfig_SetUseScene0102(napi_env env,napi_callback_info info)115 static napi_value OH_LocationRequestConfig_SetUseScene0102(napi_env env, napi_callback_info info)
116 {
117     try {
118         Location_RequestConfig *requestConfig = OH_Location_CreateRequestConfig();
119         OH_LocationRequestConfig_SetUseScene(requestConfig, LOCATION_USE_SCENE_DAILY_LIFE_SERVICE);
120         int32_t errorCode = 0;
121         napi_value result = nullptr;
122         napi_create_int32(env, errorCode, &result);
123         return result;
124     } catch (...) {
125         int32_t errorCode = 1;
126         napi_value result = nullptr;
127         napi_create_int32(env, errorCode, &result);
128         return result;
129     }
130 }
OH_LocationRequestConfig_SetPowerConsumptionScene0100(napi_env env,napi_callback_info info)131 static napi_value OH_LocationRequestConfig_SetPowerConsumptionScene0100(napi_env env, napi_callback_info info)
132 {
133     try {
134         Location_RequestConfig *requestConfig = OH_Location_CreateRequestConfig();
135         OH_LocationRequestConfig_SetPowerConsumptionScene(requestConfig, LOCATION_LOW_POWER_CONSUMPTION);
136         int32_t errorCode = 0;
137         napi_value result = nullptr;
138         napi_create_int32(env, errorCode, &result);
139         return result;
140     } catch (...) {
141         int32_t errorCode = 1;
142         napi_value result = nullptr;
143         napi_create_int32(env, errorCode, &result);
144         return result;
145     }
146 }
OH_LocationRequestConfig_SetPowerConsumptionScene0101(napi_env env,napi_callback_info info)147 static napi_value OH_LocationRequestConfig_SetPowerConsumptionScene0101(napi_env env, napi_callback_info info)
148 {
149     try {
150         Location_RequestConfig *requestConfig = OH_Location_CreateRequestConfig();
151         OH_LocationRequestConfig_SetPowerConsumptionScene(requestConfig, LOCATION_NO_POWER_CONSUMPTION);
152         int32_t errorCode = 0;
153         napi_value result = nullptr;
154         napi_create_int32(env, errorCode, &result);
155         return result;
156     } catch (...) {
157         int32_t errorCode = 1;
158         napi_value result = nullptr;
159         napi_create_int32(env, errorCode, &result);
160         return result;
161     }
162 }
163 
164 EXTERN_C_START
Init(napi_env env,napi_value exports)165 static napi_value Init(napi_env env, napi_value exports)
166 {
167     napi_property_descriptor desc[] = {
168         {"OHLocationInfoGetAdditionalInfo", nullptr, OHLocationInfoGetAdditionalInfo, nullptr, nullptr, nullptr,
169          napi_default, nullptr},
170         {"OH_Location_IsLocatingEnabled1", nullptr, OH_Location_IsLocatingEnabled1, nullptr, nullptr, nullptr,
171          napi_default, nullptr},
172         {"OH_Location_IsLocatingEnabled2", nullptr, OH_Location_IsLocatingEnabled2, nullptr, nullptr, nullptr,
173          napi_default, nullptr},
174         {"OH_Location_StartLocating1", nullptr, OH_Location_StartLocating1, nullptr, nullptr, nullptr, napi_default,
175          nullptr},
176         {"OH_Location_StartLocating2", nullptr, OH_Location_StartLocating2, nullptr, nullptr, nullptr, napi_default,
177          nullptr},
178         {"OH_Location_StopLocating2", nullptr, OH_Location_StopLocating2, nullptr, nullptr, nullptr, napi_default,
179          nullptr},
180         {"OHLocationInfoGetAdditionalInfo0100", nullptr, OHLocationInfoGetAdditionalInfo0100, nullptr, nullptr, nullptr,
181          napi_default, nullptr},
182         {"OH_LocationRequestConfig_SetUseScene0100", nullptr, OH_LocationRequestConfig_SetUseScene0100, nullptr,
183          nullptr, nullptr, napi_default, nullptr},
184         {"OH_LocationRequestConfig_SetUseScene0101", nullptr, OH_LocationRequestConfig_SetUseScene0101, nullptr,
185          nullptr, nullptr, napi_default, nullptr},
186         {"OH_LocationRequestConfig_SetUseScene0102", nullptr, OH_LocationRequestConfig_SetUseScene0102, nullptr,
187          nullptr, nullptr, napi_default, nullptr},
188         {"OH_LocationRequestConfig_SetPowerConsumptionScene0100", nullptr,
189          OH_LocationRequestConfig_SetPowerConsumptionScene0100, nullptr, nullptr, nullptr, napi_default, nullptr},
190         {"OH_LocationRequestConfig_SetPowerConsumptionScene0101", nullptr,
191          OH_LocationRequestConfig_SetPowerConsumptionScene0101, nullptr, nullptr, nullptr, napi_default, nullptr},
192     };
193 
194     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
195     return exports;
196 }
197 EXTERN_C_END
198 
199 static napi_module demoModule = {
200     .nm_version = 1,
201     .nm_flags = 0,
202     .nm_filename = nullptr,
203     .nm_register_func = Init,
204     .nm_modname = "locationcapi20",
205     .nm_priv = ((void *)0),
206     .reserved = {0},
207 };
208 
RegisterModule(void)209 extern "C" __attribute__((constructor)) void RegisterModule(void) { napi_module_register(&demoModule); }
210