You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by fg...@apache.org on 2021/10/19 11:38:55 UTC
[nifi-minifi-cpp] 02/02: MINIFICPP-1664 - Unnecessary RTIMULib.ini
file is created
This is an automated email from the ASF dual-hosted git repository.
fgerlits pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit ae0e71df83b1759fec2a52f6eb5c3a9cbbf8e496
Author: Adam Markovics <nu...@gmail.com>
AuthorDate: Mon Oct 11 11:03:55 2021 +0200
MINIFICPP-1664 - Unnecessary RTIMULib.ini file is created
Signed-off-by: Ferenc Gerlits <fg...@gmail.com>
This closes #1198
---
extensions/sensors/GetEnvironmentalSensors.cpp | 8 +++----
extensions/sensors/GetMovementSensors.cpp | 4 ++--
extensions/sensors/SensorBase.cpp | 31 ++++++++------------------
extensions/sensors/SensorBase.h | 12 +++-------
4 files changed, 18 insertions(+), 37 deletions(-)
diff --git a/extensions/sensors/GetEnvironmentalSensors.cpp b/extensions/sensors/GetEnvironmentalSensors.cpp
index 194596c..900095f 100644
--- a/extensions/sensors/GetEnvironmentalSensors.cpp
+++ b/extensions/sensors/GetEnvironmentalSensors.cpp
@@ -68,14 +68,14 @@ void GetEnvironmentalSensors::initialize() {
void GetEnvironmentalSensors::onSchedule(const std::shared_ptr<core::ProcessContext> &context, const std::shared_ptr<core::ProcessSessionFactory> &sessionFactory) {
SensorBase::onSchedule(context, sessionFactory);
- humidity_sensor_ = RTHumidity::createHumidity(&settings);
+ humidity_sensor_ = RTHumidity::createHumidity(&settings_.value());
if (humidity_sensor_) {
humidity_sensor_->humidityInit();
} else {
throw std::runtime_error("RTHumidity could not be initialized");
}
- pressure_sensor_ = RTPressure::createPressure(&settings);
+ pressure_sensor_ = RTPressure::createPressure(&settings_.value());
if (pressure_sensor_) {
pressure_sensor_->pressureInit();
} else {
@@ -93,8 +93,8 @@ GetEnvironmentalSensors::~GetEnvironmentalSensors() = default;
void GetEnvironmentalSensors::onTrigger(const std::shared_ptr<core::ProcessContext>& /*context*/, const std::shared_ptr<core::ProcessSession>& session) {
auto flow_file_ = session->create();
- if (imu->IMURead()) {
- RTIMU_DATA imuData = imu->getIMUData();
+ if (imu_->IMURead()) {
+ RTIMU_DATA imuData = imu_->getIMUData();
auto vector = imuData.accel;
std::string degrees = RTMath::displayDegrees("acceleration", vector);
flow_file_->addAttribute("ACCELERATION", degrees);
diff --git a/extensions/sensors/GetMovementSensors.cpp b/extensions/sensors/GetMovementSensors.cpp
index 5a971c8..7e15f1a 100644
--- a/extensions/sensors/GetMovementSensors.cpp
+++ b/extensions/sensors/GetMovementSensors.cpp
@@ -67,8 +67,8 @@ GetMovementSensors::~GetMovementSensors() = default;
void GetMovementSensors::onTrigger(const std::shared_ptr<core::ProcessContext>& /*context*/, const std::shared_ptr<core::ProcessSession>& session) {
auto flow_file_ = session->create();
- if (imu->IMURead()) {
- RTIMU_DATA imuData = imu->getIMUData();
+ if (imu_->IMURead()) {
+ RTIMU_DATA imuData = imu_->getIMUData();
if (imuData.accelValid) {
auto vector = imuData.accel;
diff --git a/extensions/sensors/SensorBase.cpp b/extensions/sensors/SensorBase.cpp
index fb93a97..b2d29bd 100644
--- a/extensions/sensors/SensorBase.cpp
+++ b/extensions/sensors/SensorBase.cpp
@@ -16,28 +16,11 @@
* limitations under the License.
*/
#include <memory>
-#include <algorithm>
-#include <cctype>
-#include <cstdint>
-#include <cstring>
-#include <iostream>
-#include <iterator>
-#include <map>
#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-#include "utils/ByteArrayCallback.h"
-#include "core/FlowFile.h"
-#include "core/logging/Logger.h"
#include "core/ProcessContext.h"
#include "core/Relationship.h"
#include "SensorBase.h"
-#include "io/BufferStream.h"
-#include "io/StreamFactory.h"
-#include "ResourceClaim.h"
-#include "utils/StringUtils.h"
namespace org {
namespace apache {
@@ -51,11 +34,15 @@ void SensorBase::initialize() {
}
void SensorBase::onSchedule(const std::shared_ptr<core::ProcessContext>& /*context*/, const std::shared_ptr<core::ProcessSessionFactory>& /*sessionFactory*/) {
- imu = std::unique_ptr<RTIMU>(RTIMU::createIMU(&settings));
- if (imu) {
- imu->IMUInit();
- imu->setGyroEnable(true);
- imu->setAccelEnable(true);
+ // Deferred instantiation of RTIMUSettings, because it can create a file "RTIMULib.ini" in the working directory.
+ // SensorBase is instantiated when creating the manifest.
+ settings_ = std::make_optional<RTIMUSettings>();
+
+ imu_ = std::unique_ptr<RTIMU>(RTIMU::createIMU(&settings_.value()));
+ if (imu_) {
+ imu_->IMUInit();
+ imu_->setGyroEnable(true);
+ imu_->setAccelEnable(true);
} else {
throw std::runtime_error("RTIMU could not be initialized");
}
diff --git a/extensions/sensors/SensorBase.h b/extensions/sensors/SensorBase.h
index 84bfb58..d050174 100644
--- a/extensions/sensors/SensorBase.h
+++ b/extensions/sensors/SensorBase.h
@@ -18,17 +18,12 @@
#pragma once
#include <memory>
-#include <regex>
#include <string>
#include <utility>
-#include "utils/ByteArrayCallback.h"
-#include "FlowFileRecord.h"
#include "core/Processor.h"
#include "core/ProcessSession.h"
-#include "core/Core.h"
-#include "core/Property.h"
-#include "utils/Id.h"
+#include "io/StreamPipe.h"
#include "RTIMULib.h"
#include "RTMath.h"
@@ -47,7 +42,6 @@ class SensorBase : public core::Processor {
*/
explicit SensorBase(const std::string& name, const utils::Identifier& uuid = {})
: Processor(name, uuid),
- imu(nullptr),
logger_(logging::LoggerFactory<SensorBase>::getLogger()) {
}
// Destructor
@@ -74,8 +68,8 @@ class SensorBase : public core::Processor {
};
protected:
- RTIMUSettings settings;
- std::unique_ptr<RTIMU> imu;
+ std::optional<RTIMUSettings> settings_;
+ std::unique_ptr<RTIMU> imu_;
std::shared_ptr<logging::Logger> logger_;
};