diff --git a/interfaces/plugin/BUILD.gn b/interfaces/plugin/BUILD.gn index fdd5fc74983e89f7706c28123969762f7a7c98e8..b59b518441affd68fcc93acc4274f7e992c3882c 100644 --- a/interfaces/plugin/BUILD.gn +++ b/interfaces/plugin/BUILD.gn @@ -29,6 +29,7 @@ ohos_shared_library("sensor") { sources = [ "./src/sensor_js.cpp", "./src/sensor_napi_utils.cpp", + "./src/sensor_system_js.cpp", ] deps = [ "../native:sensor_interface_native" ] external_deps = [ diff --git a/interfaces/plugin/include/sensor_system_js.h b/interfaces/plugin/include/sensor_system_js.h new file mode 100644 index 0000000000000000000000000000000000000000..3b8dd9bd2530dfde679813c3a4d9df1324629dff --- /dev/null +++ b/interfaces/plugin/include/sensor_system_js.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef SENSOR_SYSTEM_JS_H +#define SENSOR_SYSTEM_JS_H +#include "napi/native_api.h" +#include "napi/native_node_api.h" + +napi_value SubscribeAccelerometer(napi_env env, napi_callback_info info); +napi_value UnsubscribeAccelerometer(napi_env env, napi_callback_info info); +napi_value SubscribeCompass(napi_env env, napi_callback_info info); +napi_value UnsubscribeCompass(napi_env env, napi_callback_info info); +napi_value SubscribeProximity(napi_env env, napi_callback_info info); +napi_value UnsubscribeProximity(napi_env env, napi_callback_info info); +napi_value SubscribeLight(napi_env env, napi_callback_info info); +napi_value UnsubscribeLight(napi_env env, napi_callback_info info); +napi_value SubscribeStepCounter(napi_env env, napi_callback_info info); +napi_value UnsubscribeStepCounter(napi_env env, napi_callback_info info); +napi_value SubscribeBarometer(napi_env env, napi_callback_info info); +napi_value UnsubscribeBarometer(napi_env env, napi_callback_info info); +napi_value SubscribeHeartRate(napi_env env, napi_callback_info info); +napi_value UnsubscribeHeartRate(napi_env env, napi_callback_info info); +napi_value SubscribeOnBodyState(napi_env env, napi_callback_info info); +napi_value UnsubscribeOnBodyState(napi_env env, napi_callback_info info); +napi_value GetOnBodyState(napi_env env, napi_callback_info info); +napi_value SubscribeDeviceOrientation(napi_env env, napi_callback_info info); +napi_value UnsubscribeDeviceOrientation(napi_env env, napi_callback_info info); +napi_value SubscribeGyroscope(napi_env env, napi_callback_info info); +napi_value UnsubscribeGyroscope(napi_env env, napi_callback_info info); +napi_value SubscribeGravity(napi_env env, napi_callback_info info); +napi_value UnsubscribeGravity(napi_env env, napi_callback_info info); +napi_value SubscribeMagnetic(napi_env env, napi_callback_info info); +napi_value UnsubscribeMagnetic(napi_env env, napi_callback_info info); +napi_value SubscribeHall(napi_env env, napi_callback_info info); +napi_value UnsubscribeHall(napi_env env, napi_callback_info info); + +#endif // SENSOR_SYSTEM_JS_H \ No newline at end of file diff --git a/interfaces/plugin/src/sensor_js.cpp b/interfaces/plugin/src/sensor_js.cpp index fe2ea403820f13d646d157eebfa60e4e2aa7a33a..e23255e3683dbab555a06d28688f1d74e6d2bf49 100644 --- a/interfaces/plugin/src/sensor_js.cpp +++ b/interfaces/plugin/src/sensor_js.cpp @@ -34,6 +34,7 @@ #include "sensor_agent.h" #include "sensor_algorithm.h" #include "sensor_napi_utils.h" +#include "sensor_system_js.h" using namespace OHOS::HiviewDFX; static constexpr HiLogLabel LABEL = {LOG_CORE, 0xD002708, "SensorJsAPI"}; @@ -858,6 +859,7 @@ static napi_value CreateEnumSensorType(napi_env env, napi_value exports) napi_set_named_property(env, exports, "SensorType", result); return exports; } + EXTERN_C_START static napi_value Init(napi_env env, napi_value exports) @@ -876,6 +878,33 @@ static napi_value Init(napi_env env, napi_value exports) DECLARE_NAPI_FUNCTION("createRotationMatrix", CreateRotationMatrix), DECLARE_NAPI_FUNCTION("getSensorList", GetSensorList), DECLARE_NAPI_FUNCTION("getSingleSensor", GetSingleSensor), + DECLARE_NAPI_FUNCTION("subscribeAccelerometer", SubscribeAccelerometer), + DECLARE_NAPI_FUNCTION("unsubscribeAccelerometer", UnsubscribeAccelerometer), + DECLARE_NAPI_FUNCTION("subscribeCompass", SubscribeCompass), + DECLARE_NAPI_FUNCTION("unsubscribeCompass", UnsubscribeCompass), + DECLARE_NAPI_FUNCTION("subscribeProximity", SubscribeProximity), + DECLARE_NAPI_FUNCTION("unsubscribeProximity", UnsubscribeProximity), + DECLARE_NAPI_FUNCTION("subscribeLight", SubscribeLight), + DECLARE_NAPI_FUNCTION("unsubscribeLight", UnsubscribeLight), + DECLARE_NAPI_FUNCTION("subscribeStepCounter", SubscribeStepCounter), + DECLARE_NAPI_FUNCTION("unsubscribeStepCounter", UnsubscribeStepCounter), + DECLARE_NAPI_FUNCTION("subscribeBarometer", SubscribeBarometer), + DECLARE_NAPI_FUNCTION("unsubscribeBarometer", UnsubscribeBarometer), + DECLARE_NAPI_FUNCTION("subscribeHeartRate", SubscribeHeartRate), + DECLARE_NAPI_FUNCTION("unsubscribeHeartRate", UnsubscribeHeartRate), + DECLARE_NAPI_FUNCTION("subscribeOnBodyState", SubscribeOnBodyState), + DECLARE_NAPI_FUNCTION("unsubscribeOnBodyState", UnsubscribeOnBodyState), + DECLARE_NAPI_FUNCTION("getOnBodyState", GetOnBodyState), + DECLARE_NAPI_FUNCTION("subscribeDeviceOrientation", SubscribeDeviceOrientation), + DECLARE_NAPI_FUNCTION("unsubscribeDeviceOrientation", UnsubscribeDeviceOrientation), + DECLARE_NAPI_FUNCTION("subscribeGyroscope", SubscribeGyroscope), + DECLARE_NAPI_FUNCTION("unsubscribeGyroscope", UnsubscribeGyroscope), + DECLARE_NAPI_FUNCTION("subscribeGravity", SubscribeGravity), + DECLARE_NAPI_FUNCTION("unsubscribeGravity", UnsubscribeGravity), + DECLARE_NAPI_FUNCTION("subscribeMagnetic", SubscribeMagnetic), + DECLARE_NAPI_FUNCTION("unsubscribeMagnetic", UnsubscribeMagnetic), + DECLARE_NAPI_FUNCTION("subscribeHall", SubscribeHall), + DECLARE_NAPI_FUNCTION("unsubscribeHall", UnsubscribeHall), }; NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(napi_property_descriptor), desc)); CreateEnumSensorType(env, exports); diff --git a/interfaces/plugin/src/sensor_system_js.cpp b/interfaces/plugin/src/sensor_system_js.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d17ada02c2545ddd404f2ddcc21eb9a54fe44542 --- /dev/null +++ b/interfaces/plugin/src/sensor_system_js.cpp @@ -0,0 +1,193 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "sensor_system_js.h" + +#include "hilog/log.h" +#include "sensor_agent_type.h" + +using namespace OHOS::HiviewDFX; +static constexpr HiLogLabel LABEL = {LOG_CORE, 0xD002708, "SensorSystemJs"}; + +static napi_value Subscribe(napi_env env, napi_callback_info info, int32_t sensorTypeId) +{ + return nullptr; +} + +static napi_value Unsubscribe(napi_env env, napi_callback_info info, int32_t sensorTypeId) +{ + return nullptr; +} + +napi_value SubscribeAccelerometer(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_ACCELEROMETER); +} + +napi_value UnsubscribeAccelerometer(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_ACCELEROMETER); +} + +napi_value SubscribeCompass(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_ORIENTATION); +} + +napi_value UnsubscribeCompass(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_ORIENTATION); +} + +napi_value SubscribeProximity(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_PROXIMITY); +} + +napi_value UnsubscribeProximity(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_PROXIMITY); +} + +napi_value SubscribeLight(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_AMBIENT_LIGHT); +} + +napi_value UnsubscribeLight(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_AMBIENT_LIGHT); +} + +napi_value SubscribeStepCounter(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_PEDOMETER); +} + +napi_value UnsubscribeStepCounter(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_PEDOMETER); +} + +napi_value SubscribeBarometer(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_BAROMETER); +} + +napi_value UnsubscribeBarometer(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_BAROMETER); +} + +napi_value SubscribeHeartRate(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_HEART_RATE); +} + +napi_value UnsubscribeHeartRate(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_HEART_RATE); +} + +napi_value SubscribeOnBodyState(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_WEAR_DETECTION); +} + +napi_value UnsubscribeOnBodyState(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_WEAR_DETECTION); +} + +napi_value GetOnBodyState(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return nullptr; +} + +napi_value SubscribeDeviceOrientation(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_ORIENTATION); +} + +napi_value UnsubscribeDeviceOrientation(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_ORIENTATION); +} + +napi_value SubscribeGyroscope(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_GYROSCOPE); +} + +napi_value UnsubscribeGyroscope(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_GYROSCOPE); +} + +napi_value SubscribeGravity(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_GRAVITY); +} + +napi_value UnsubscribeGravity(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_GRAVITY); +} + +napi_value SubscribeMagnetic(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_MAGNETIC_FIELD); +} + +napi_value UnsubscribeMagnetic(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_MAGNETIC_FIELD); +} + +napi_value SubscribeHall(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Subscribe(env, info, SENSOR_TYPE_ID_HALL); +} + +napi_value UnsubscribeHall(napi_env env, napi_callback_info info) +{ + HiLog::Debug(LABEL, "%{public}s in", __func__); + return Unsubscribe(env, info, SENSOR_TYPE_ID_HALL); +}