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 <[email protected]>
AuthorDate: Mon Oct 11 11:03:55 2021 +0200

    MINIFICPP-1664 - Unnecessary RTIMULib.ini file is created
    
    Signed-off-by: Ferenc Gerlits <[email protected]>
    
    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_;
 };
 

Reply via email to