From 66f742619fbc52cfd4145018378fca420cb96ead Mon Sep 17 00:00:00 2001 From: h00514358 Date: Thu, 28 Jul 2022 15:13:54 +0800 Subject: [PATCH 1/3] Modify the framework and service decoupling Signed-off-by: h00514358 --- bundle.json | 1 - frameworks/native/sensor/BUILD.gn | 7 ++--- .../src/my_file_descriptor_listener.cpp | 1 - .../native}/sensor/src/sensor_client_stub.cpp | 5 ++-- interfaces/native/BUILD.gn | 28 +++++++++++++------ interfaces/native/include/geomagnetic_field.h | 9 +----- interfaces/native/src/geomagnetic_field.cpp | 4 ++- interfaces/plugin/src/sensor_js.cpp | 8 +++--- services/sensor/BUILD.gn | 1 - .../adapter/src/compatible_connection.cpp | 7 +++-- .../adapter/src/sensor_event_callback.cpp | 3 +- services/sensor/src/sensor_data_processer.cpp | 5 +++- 12 files changed, 41 insertions(+), 38 deletions(-) rename {services => frameworks/native}/sensor/src/sensor_client_stub.cpp (89%) mode change 100644 => 100755 diff --git a/bundle.json b/bundle.json index 21918355..8f302bce 100644 --- a/bundle.json +++ b/bundle.json @@ -22,7 +22,6 @@ "safwk", "samgr_standard", "utils_base", - "appexecfwk_standard", "napi", "hisysevent_native", "sensor_device_driver" diff --git a/frameworks/native/sensor/BUILD.gn b/frameworks/native/sensor/BUILD.gn index 59063bb7..df8d72d4 100644 --- a/frameworks/native/sensor/BUILD.gn +++ b/frameworks/native/sensor/BUILD.gn @@ -21,6 +21,7 @@ ohos_shared_library("libsensor_native") { "src/my_event_handler.cpp", "src/my_file_descriptor_listener.cpp", "src/sensor_agent_proxy.cpp", + "src/sensor_client_stub.cpp", "src/sensor_data_channel.cpp", "src/sensor_service_client.cpp", "src/sensor_service_proxy.cpp", @@ -31,13 +32,9 @@ ohos_shared_library("libsensor_native") { "//utils/native/base/include", "//utils/system/safwk/native/include", "$SUBSYSTEM_DIR/sensor/utils/include", - "$SUBSYSTEM_DIR/sensor/services/sensor/include", "$SUBSYSTEM_DIR/sensor/interfaces/native/include", ] - deps = [ - "$SUBSYSTEM_DIR/sensor/services/sensor:libsensor_service", - "$SUBSYSTEM_DIR/sensor/utils:libsensor_utils", - ] + deps = [ "$SUBSYSTEM_DIR/sensor/utils:libsensor_utils" ] external_deps = [ "eventhandler:libeventhandler", diff --git a/frameworks/native/sensor/src/my_file_descriptor_listener.cpp b/frameworks/native/sensor/src/my_file_descriptor_listener.cpp index b24a95a6..ad1ceeca 100644 --- a/frameworks/native/sensor/src/my_file_descriptor_listener.cpp +++ b/frameworks/native/sensor/src/my_file_descriptor_listener.cpp @@ -46,7 +46,6 @@ MyFileDescriptorListener::~MyFileDescriptorListener() void MyFileDescriptorListener::OnReadable(int32_t fileDescriptor) { - CALL_LOG_ENTER; if (fileDescriptor < 0) { SEN_HILOGE("fileDescriptor: %{public}d", fileDescriptor); return; diff --git a/services/sensor/src/sensor_client_stub.cpp b/frameworks/native/sensor/src/sensor_client_stub.cpp old mode 100644 new mode 100755 similarity index 89% rename from services/sensor/src/sensor_client_stub.cpp rename to frameworks/native/sensor/src/sensor_client_stub.cpp index 7d3c0931..ad45668b --- a/services/sensor/src/sensor_client_stub.cpp +++ b/frameworks/native/sensor/src/sensor_client_stub.cpp @@ -16,15 +16,14 @@ #include "sensor_client_stub.h" #include "message_parcel.h" -#include "sensors_errors.h" -#include "sensors_log_domain.h" +#include "sensor_log.h" namespace OHOS { namespace Sensors { using namespace OHOS::HiviewDFX; namespace { -constexpr HiLogLabel LABEL = { LOG_CORE, SensorsLogDomain::SENSOR_SERVICE, "SensorClientStub" }; +constexpr HiLogLabel LABEL = { LOG_CORE, SENSOR_LOG_DOMAIN, "SensorClientStub" }; } int32_t SensorClientStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, diff --git a/interfaces/native/BUILD.gn b/interfaces/native/BUILD.gn index 6fc5e5a4..21676633 100644 --- a/interfaces/native/BUILD.gn +++ b/interfaces/native/BUILD.gn @@ -22,16 +22,8 @@ ohos_ndk_library("libsensor_ndk") { min_compact_version = "6" } -ohos_shared_library("sensor_interface_native") { - output_name = "sensor_agent" - sources = [ - "src/geomagnetic_field.cpp", - "src/sensor_agent.cpp", - "src/sensor_algorithm.cpp", - ] - +config("sensor_private_config") { include_dirs = [ - "include", "//utils/native/base/include", "//utils/system/safwk/native/include", "$SUBSYSTEM_DIR/frameworks/native/sensor/include", @@ -39,11 +31,29 @@ ohos_shared_library("sensor_interface_native") { "$SUBSYSTEM_DIR/interfaces/native/include", "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include", ] +} + +config("sensor_public_config") { + include_dirs = [ "include" ] +} + +ohos_shared_library("sensor_interface_native") { + output_name = "sensor_agent" + sources = [ + "src/geomagnetic_field.cpp", + "src/sensor_agent.cpp", + "src/sensor_algorithm.cpp", + ] + + configs = [ ":sensor_private_config" ] + public_configs = [ ":sensor_public_config" ] + deps = [ "$SUBSYSTEM_DIR/frameworks/native/sensor:libsensor_native", "$SUBSYSTEM_DIR/interfaces/native:libsensor_ndk", "$SUBSYSTEM_DIR/utils:libsensor_utils", ] + external_deps = [ "eventhandler:libeventhandler", "hiviewdfx_hilog_native:libhilog", diff --git a/interfaces/native/include/geomagnetic_field.h b/interfaces/native/include/geomagnetic_field.h index 28a20a72..1c3dd4c1 100644 --- a/interfaces/native/include/geomagnetic_field.h +++ b/interfaces/native/include/geomagnetic_field.h @@ -16,16 +16,9 @@ #ifndef GEOMAGNETIC_FIELD_H #define GEOMAGNETIC_FIELD_H -#include -#include -#include -#include +#include #include -#include -#include -#include - class GeomagneticField { public: GeomagneticField(float latitude, float longitude, float altitude, int64_t timeMillis); diff --git a/interfaces/native/src/geomagnetic_field.cpp b/interfaces/native/src/geomagnetic_field.cpp index 254abf35..4094114d 100644 --- a/interfaces/native/src/geomagnetic_field.cpp +++ b/interfaces/native/src/geomagnetic_field.cpp @@ -14,7 +14,9 @@ */ #include "geomagnetic_field.h" -#include "sensors_log_domain.h" + +#include +#include using namespace OHOS::HiviewDFX; using namespace std; diff --git a/interfaces/plugin/src/sensor_js.cpp b/interfaces/plugin/src/sensor_js.cpp index 22e60701..a09dab81 100644 --- a/interfaces/plugin/src/sensor_js.cpp +++ b/interfaces/plugin/src/sensor_js.cpp @@ -15,14 +15,12 @@ #include "sensor_js.h" #include -#include #include #include #include +#include #include -#include #include -#include #include #include "geomagnetic_field.h" @@ -430,6 +428,9 @@ static napi_value TransformCoordinateSystem(napi_env env, napi_callback_info inf std::vector inRotationVector; CHKNCP(env, GetFloatArray(env, args[0], inRotationVector), "Wrong argument type, get inRotationVector fail"); + size_t length = inRotationVector.size(); + CHKNCP(env, ((length == DATA_LENGTH) || (length == THREE_DIMENSIONAL_MATRIX_LENGTH)), + "Wrong inRotationVector length"); napi_value napiAxisX = GetNamedProperty(env, args[1], "axisX"); CHKNCP(env, (napiAxisX != nullptr), "napiAxisX is null"); int32_t axisX = 0; @@ -442,7 +443,6 @@ static napi_value TransformCoordinateSystem(napi_env env, napi_callback_info inf sptr asyncCallbackInfo = new (std::nothrow) AsyncCallbackInfo(env, TRANSFORM_COORDINATE_SYSTEM); CHKPP(asyncCallbackInfo); - size_t length = inRotationVector.size(); std::vector outRotationVector(length); SensorAlgorithm sensorAlgorithm; int32_t ret = sensorAlgorithm.transformCoordinateSystem(inRotationVector, axisX, axisY, outRotationVector); diff --git a/services/sensor/BUILD.gn b/services/sensor/BUILD.gn index b20aefa4..d2fb3913 100644 --- a/services/sensor/BUILD.gn +++ b/services/sensor/BUILD.gn @@ -24,7 +24,6 @@ ohos_shared_library("libsensor_service") { "src/client_info.cpp", "src/fifo_cache_data.cpp", "src/flush_info_record.cpp", - "src/sensor_client_stub.cpp", "src/sensor_data_processer.cpp", "src/sensor_dump.cpp", "src/sensor_manager.cpp", diff --git a/services/sensor/hdi_connection/adapter/src/compatible_connection.cpp b/services/sensor/hdi_connection/adapter/src/compatible_connection.cpp index d451dde1..588b8b82 100644 --- a/services/sensor/hdi_connection/adapter/src/compatible_connection.cpp +++ b/services/sensor/hdi_connection/adapter/src/compatible_connection.cpp @@ -129,8 +129,6 @@ int32_t CompatibleConnection::SensorDataCallback(const struct SensorEvents *even SEN_HILOGE("event is NULL"); return ERR_INVALID_VALUE; } - CHKPR(reportDataCallback_, ERR_NO_INIT); - CHKPR(reportDataCb_, ERR_NO_INIT); struct SensorEvent sensorEvent = { .sensorTypeId = event->sensorId, @@ -140,13 +138,16 @@ int32_t CompatibleConnection::SensorDataCallback(const struct SensorEvents *even .mode = event->mode, .dataLen = event->dataLen }; - sensorEvent.data = new uint8_t[SENSOR_DATA_LENGHT]; + sensorEvent.data = new (std::nothrow) uint8_t[SENSOR_DATA_LENGHT]; + CHKPR(sensorEvent.data, ERR_INVALID_VALUE); errno_t ret = memcpy_s(sensorEvent.data, event->dataLen, event->data, event->dataLen); if (ret != EOK) { SEN_HILOGE("copy data failed"); delete[] sensorEvent.data; return COPY_ERR; } + CHKPR(reportDataCallback_, ERR_NO_INIT); + CHKPR(reportDataCb_, ERR_NO_INIT); (void)(reportDataCallback_->*reportDataCb_)(&sensorEvent, reportDataCallback_); ISensorHdiConnection::dataCondition_.notify_one(); return ERR_OK; diff --git a/services/sensor/hdi_connection/adapter/src/sensor_event_callback.cpp b/services/sensor/hdi_connection/adapter/src/sensor_event_callback.cpp index 587331fb..0ed50bed 100644 --- a/services/sensor/hdi_connection/adapter/src/sensor_event_callback.cpp +++ b/services/sensor/hdi_connection/adapter/src/sensor_event_callback.cpp @@ -44,7 +44,8 @@ int32_t SensorEventCallback::OnDataEvent(const HdfSensorEvents& event) .mode = event.mode, .dataLen = event.dataLen }; - sensorEvent.data = new uint8_t[SENSOR_DATA_LENGHT]; + sensorEvent.data = new (std::nothrow) uint8_t[SENSOR_DATA_LENGHT]; + CHKPR(sensorEvent.data, ERR_NO_INIT); for (int32_t i = 0; i < static_cast(dataSize); i++) { sensorEvent.data[i] = event.data[i]; } diff --git a/services/sensor/src/sensor_data_processer.cpp b/services/sensor/src/sensor_data_processer.cpp index 3310bfc1..2455154e 100644 --- a/services/sensor/src/sensor_data_processer.cpp +++ b/services/sensor/src/sensor_data_processer.cpp @@ -348,7 +348,10 @@ int32_t SensorDataProcesser::ProcessEvents(sptr dataCallback int32_t eventNum = eventsBuf.eventNum; for (int32_t i = 0; i < eventNum; i++) { EventFilter(eventsBuf); - delete[] eventsBuf.circularBuf[eventsBuf.readPos].data; + if (eventsBuf.circularBuf[eventsBuf.readPos].data != nullptr) { + delete[] eventsBuf.circularBuf[eventsBuf.readPos].data; + eventsBuf.circularBuf[eventsBuf.readPos].data = nullptr; + } eventsBuf.readPos++; if (eventsBuf.readPos == CIRCULAR_BUF_LEN) { eventsBuf.readPos = 0; -- Gitee From 6ea4bb9f47948b62b83b3a166f972cae980dc627 Mon Sep 17 00:00:00 2001 From: h00514358 Date: Thu, 28 Jul 2022 15:14:48 +0800 Subject: [PATCH 2/3] Modify the framework and service decoupling Signed-off-by: h00514358 --- frameworks/native/sensor/src/sensor_client_stub.cpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 frameworks/native/sensor/src/sensor_client_stub.cpp diff --git a/frameworks/native/sensor/src/sensor_client_stub.cpp b/frameworks/native/sensor/src/sensor_client_stub.cpp old mode 100755 new mode 100644 -- Gitee From 9010bfd5b4ef95e3ebc6874d208959f3e85a5bdf Mon Sep 17 00:00:00 2001 From: h00514358 Date: Thu, 28 Jul 2022 17:23:54 +0800 Subject: [PATCH 3/3] Modify the framework and service decoupling Signed-off-by: h00514358 --- interfaces/native/src/geomagnetic_field.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interfaces/native/src/geomagnetic_field.cpp b/interfaces/native/src/geomagnetic_field.cpp index 4094114d..20e4c043 100644 --- a/interfaces/native/src/geomagnetic_field.cpp +++ b/interfaces/native/src/geomagnetic_field.cpp @@ -18,6 +18,8 @@ #include #include +#include "sensors_log_domain.h" + using namespace OHOS::HiviewDFX; using namespace std; namespace { -- Gitee