From 8f1968599ea9540078a75ceca9c51da905ed9ed3 Mon Sep 17 00:00:00 2001 From: hellohyh001 Date: Mon, 28 Feb 2022 19:22:34 +0800 Subject: [PATCH] Signed-off-by:hellohyh001 Signed-off-by: hellohyh001 --- interfaces/plugin/BUILD.gn | 1 + interfaces/plugin/include/sensor_system_js.h | 48 +++++ interfaces/plugin/src/sensor_js.cpp | 29 +++ interfaces/plugin/src/sensor_system_js.cpp | 193 +++++++++++++++++++ 4 files changed, 271 insertions(+) create mode 100644 interfaces/plugin/include/sensor_system_js.h create mode 100644 interfaces/plugin/src/sensor_system_js.cpp diff --git a/interfaces/plugin/BUILD.gn b/interfaces/plugin/BUILD.gn index fdd5fc74..b59b5184 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 00000000..3b8dd9bd --- /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 fe2ea403..e23255e3 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 00000000..d17ada02 --- /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); +} -- Gitee