From 3320c3bc34f383a73746fa596a5069757ca0e556 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Mon, 3 Nov 2025 17:12:43 -0600 Subject: [PATCH 1/3] Remove helpers, reference member var correctly --- .../Components/Drv/CMakeLists.txt | 1 - .../Components/Drv/Helpers/CMakeLists.txt | 34 ---------------- .../Components/Drv/Helpers/Helpers.cpp | 16 -------- .../Components/Drv/Helpers/Helpers.hpp | 19 --------- .../Drv/Lis2mdlManager/CMakeLists.txt | 4 +- .../Drv/Lis2mdlManager/Lis2mdlManager.cpp | 14 +++---- .../Drv/Lis2mdlManager/Lis2mdlManager.hpp | 6 +-- .../Drv/Lsm6dsoManager/CMakeLists.txt | 4 +- .../Drv/Lsm6dsoManager/Lsm6dsoManager.cpp | 40 +++++++++---------- .../Drv/Lsm6dsoManager/Lsm6dsoManager.hpp | 6 +-- 10 files changed, 33 insertions(+), 111 deletions(-) delete mode 100644 FprimeZephyrReference/Components/Drv/Helpers/CMakeLists.txt delete mode 100644 FprimeZephyrReference/Components/Drv/Helpers/Helpers.cpp delete mode 100644 FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp diff --git a/FprimeZephyrReference/Components/Drv/CMakeLists.txt b/FprimeZephyrReference/Components/Drv/CMakeLists.txt index 6945424..fba56bb 100644 --- a/FprimeZephyrReference/Components/Drv/CMakeLists.txt +++ b/FprimeZephyrReference/Components/Drv/CMakeLists.txt @@ -1,4 +1,3 @@ -add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Helpers/") add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Lis2mdlManager/") add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Lsm6dsoManager/") add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/RtcManager") diff --git a/FprimeZephyrReference/Components/Drv/Helpers/CMakeLists.txt b/FprimeZephyrReference/Components/Drv/Helpers/CMakeLists.txt deleted file mode 100644 index 5bac4cd..0000000 --- a/FprimeZephyrReference/Components/Drv/Helpers/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -#### -# F Prime CMakeLists.txt: -# -# SOURCES: list of source files (to be compiled) -# AUTOCODER_INPUTS: list of files to be passed to the autocoders -# DEPENDS: list of libraries that this module depends on -# -# More information in the F´ CMake API documentation: -# https://fprime.jpl.nasa.gov/latest/docs/reference/api/cmake/API/ -# -#### - -# Module names are derived from the path from the nearest project/library/framework -# root when not specifically overridden by the developer. i.e. The module defined by -# `Ref/SignalGen/CMakeLists.txt` will be named `Ref_SignalGen`. - -register_fprime_library( - SOURCES - "${CMAKE_CURRENT_LIST_DIR}/Helpers.cpp" - DEPENDS - Fw_Types -) - -### Unit Tests ### -# register_fprime_ut( -# AUTOCODER_INPUTS -# "${CMAKE_CURRENT_LIST_DIR}/Helpers.fpp" -# SOURCES -# "${CMAKE_CURRENT_LIST_DIR}/test/ut/HelpersTestMain.cpp" -# "${CMAKE_CURRENT_LIST_DIR}/test/ut/HelpersTester.cpp" -# DEPENDS -# STest # For rules-based testing -# UT_AUTO_HELPERS -# ) diff --git a/FprimeZephyrReference/Components/Drv/Helpers/Helpers.cpp b/FprimeZephyrReference/Components/Drv/Helpers/Helpers.cpp deleted file mode 100644 index fac9e1f..0000000 --- a/FprimeZephyrReference/Components/Drv/Helpers/Helpers.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// ====================================================================== -// \title Helpers.cpp -// \brief cpp file for Helpers component implementation class -// ====================================================================== - -#include "FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp" - -#include - -namespace Drv { - -F64 sensor_value_to_f64(const struct sensor_value& val) { - return val.val1 + (val.val2 / 1000000.0f); -} - -} // namespace Drv diff --git a/FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp b/FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp deleted file mode 100644 index 02c9325..0000000 --- a/FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// ====================================================================== -// \title Helpers.hpp -// \brief hpp file for Helpers component implementation class -// ====================================================================== - -#ifndef Components_Helpers_HPP -#define Components_Helpers_HPP - -#include -#include - -namespace Drv { - -//! Convert a Zephyr sensor_value to an Fprime F64 -F64 sensor_value_to_f64(const struct sensor_value& val); - -} // namespace Drv - -#endif diff --git a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/CMakeLists.txt b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/CMakeLists.txt index 1bdafd8..482ee77 100644 --- a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/CMakeLists.txt +++ b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/CMakeLists.txt @@ -19,8 +19,8 @@ register_fprime_library( "${CMAKE_CURRENT_LIST_DIR}/Lis2mdlManager.fpp" SOURCES "${CMAKE_CURRENT_LIST_DIR}/Lis2mdlManager.cpp" - DEPENDS - FprimeZephyrReference_Components_Drv_Helpers + # DEPENDS + # FprimeZephyrReference_Components_Drv_Helpers ) ### Unit Tests ### diff --git a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp index e0b133f..c4bebea 100644 --- a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp +++ b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp @@ -14,7 +14,7 @@ namespace Drv { // ---------------------------------------------------------------------- Lis2mdlManager ::Lis2mdlManager(const char* const compName) : Lis2mdlManagerComponentBase(compName) { - dev = device_get_binding("LIS2MDL"); + this->m_dev = device_get_binding("LIS2MDL"); } Lis2mdlManager ::~Lis2mdlManager() {} @@ -24,7 +24,7 @@ Lis2mdlManager ::~Lis2mdlManager() {} // ---------------------------------------------------------------------- Drv::MagneticField Lis2mdlManager ::magneticFieldGet_handler(FwIndexType portNum) { - if (!device_is_ready(dev)) { + if (!device_is_ready(this->m_dev)) { this->log_WARNING_HI_DeviceNotReady(); return Drv::MagneticField(0.0, 0.0, 0.0); } @@ -34,14 +34,14 @@ Drv::MagneticField Lis2mdlManager ::magneticFieldGet_handler(FwIndexType portNum struct sensor_value y; struct sensor_value z; - sensor_sample_fetch_chan(dev, SENSOR_CHAN_MAGN_XYZ); + sensor_sample_fetch_chan(this->m_dev, SENSOR_CHAN_MAGN_XYZ); - sensor_channel_get(dev, SENSOR_CHAN_MAGN_X, &x); - sensor_channel_get(dev, SENSOR_CHAN_MAGN_Y, &y); - sensor_channel_get(dev, SENSOR_CHAN_MAGN_Z, &z); + sensor_channel_get(this->m_dev, SENSOR_CHAN_MAGN_X, &x); + sensor_channel_get(this->m_dev, SENSOR_CHAN_MAGN_Y, &y); + sensor_channel_get(this->m_dev, SENSOR_CHAN_MAGN_Z, &z); Drv::MagneticField magnetic_readings = - Drv::MagneticField(Drv::sensor_value_to_f64(x), Drv::sensor_value_to_f64(y), Drv::sensor_value_to_f64(z)); + Drv::MagneticField(sensor_value_to_double(x), sensor_value_to_double(y), sensor_value_to_double(z)); this->tlmWrite_MagneticField(magnetic_readings); diff --git a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp index 34f5de3..be2a746 100644 --- a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp +++ b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp @@ -6,11 +6,7 @@ #ifndef Components_Lis2mdlManager_HPP #define Components_Lis2mdlManager_HPP -// clang-format off -// Keep the includes in this order #include "FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManagerComponentAc.hpp" -#include "FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp" -// clang-format on #include #include @@ -44,7 +40,7 @@ class Lis2mdlManager final : public Lis2mdlManagerComponentBase { // ---------------------------------------------------------------------- //! Zephyr device stores the initialized LIS2MDL sensor - const struct device* dev; + const struct device* m_dev; }; } // namespace Drv diff --git a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/CMakeLists.txt b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/CMakeLists.txt index 9ec411e..b7bea3a 100644 --- a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/CMakeLists.txt +++ b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/CMakeLists.txt @@ -19,8 +19,8 @@ register_fprime_library( "${CMAKE_CURRENT_LIST_DIR}/Lsm6dsoManager.fpp" SOURCES "${CMAKE_CURRENT_LIST_DIR}/Lsm6dsoManager.cpp" - DEPENDS - FprimeZephyrReference_Components_Drv_Helpers + # DEPENDS + # FprimeZephyrReference_Components_Drv_Helpers ) ### Unit Tests ### diff --git a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp index a0d219c..78ba441 100644 --- a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp +++ b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp @@ -14,16 +14,16 @@ namespace Drv { // ---------------------------------------------------------------------- Lsm6dsoManager ::Lsm6dsoManager(const char* const compName) : Lsm6dsoManagerComponentBase(compName) { - dev = DEVICE_DT_GET_ONE(st_lsm6dso); + this->m_dev = DEVICE_DT_GET_ONE(st_lsm6dso); // Configure the sensor struct sensor_value odr = {.val1 = 12, .val2 = 500000}; // 12.5 Hz - if (sensor_attr_set(dev, SENSOR_CHAN_ACCEL_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &odr) != 0) { + if (sensor_attr_set(this->m_dev, SENSOR_CHAN_ACCEL_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &odr) != 0) { this->log_WARNING_HI_AccelerometerSamplingFrequencyNotConfigured(); } - if (sensor_attr_set(dev, SENSOR_CHAN_GYRO_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &odr) != 0) { + if (sensor_attr_set(this->m_dev, SENSOR_CHAN_GYRO_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &odr) != 0) { this->log_WARNING_HI_GyroscopeSamplingFrequencyNotConfigured(); } } @@ -35,7 +35,7 @@ Lsm6dsoManager ::~Lsm6dsoManager() {} // ---------------------------------------------------------------------- Drv::Acceleration Lsm6dsoManager ::accelerationGet_handler(FwIndexType portNum) { - if (!device_is_ready(dev)) { + if (!device_is_ready(this->m_dev)) { this->log_WARNING_HI_DeviceNotReady(); return Drv::Acceleration(0.0, 0.0, 0.0); } @@ -45,21 +45,21 @@ Drv::Acceleration Lsm6dsoManager ::accelerationGet_handler(FwIndexType portNum) struct sensor_value y; struct sensor_value z; - sensor_sample_fetch_chan(dev, SENSOR_CHAN_ACCEL_XYZ); + sensor_sample_fetch_chan(this->m_dev, SENSOR_CHAN_ACCEL_XYZ); - sensor_channel_get(dev, SENSOR_CHAN_ACCEL_X, &x); - sensor_channel_get(dev, SENSOR_CHAN_ACCEL_Y, &y); - sensor_channel_get(dev, SENSOR_CHAN_ACCEL_Z, &z); + sensor_channel_get(this->m_dev, SENSOR_CHAN_ACCEL_X, &x); + sensor_channel_get(this->m_dev, SENSOR_CHAN_ACCEL_Y, &y); + sensor_channel_get(this->m_dev, SENSOR_CHAN_ACCEL_Z, &z); Drv::Acceleration acceleration = - Drv::Acceleration(Drv::sensor_value_to_f64(x), Drv::sensor_value_to_f64(y), Drv::sensor_value_to_f64(z)); + Drv::Acceleration(sensor_value_to_double(x), sensor_value_to_double(y), sensor_value_to_double(z)); this->tlmWrite_Acceleration(acceleration); return acceleration; } Drv::AngularVelocity Lsm6dsoManager ::angularVelocityGet_handler(FwIndexType portNum) { - if (!device_is_ready(dev)) { + if (!device_is_ready(this->m_dev)) { this->log_WARNING_HI_DeviceNotReady(); return Drv::AngularVelocity(0.0, 0.0, 0.0); } @@ -69,21 +69,21 @@ Drv::AngularVelocity Lsm6dsoManager ::angularVelocityGet_handler(FwIndexType por struct sensor_value y; struct sensor_value z; - sensor_sample_fetch_chan(dev, SENSOR_CHAN_GYRO_XYZ); + sensor_sample_fetch_chan(this->m_dev, SENSOR_CHAN_GYRO_XYZ); - sensor_channel_get(dev, SENSOR_CHAN_GYRO_X, &x); - sensor_channel_get(dev, SENSOR_CHAN_GYRO_Y, &y); - sensor_channel_get(dev, SENSOR_CHAN_GYRO_Z, &z); + sensor_channel_get(this->m_dev, SENSOR_CHAN_GYRO_X, &x); + sensor_channel_get(this->m_dev, SENSOR_CHAN_GYRO_Y, &y); + sensor_channel_get(this->m_dev, SENSOR_CHAN_GYRO_Z, &z); Drv::AngularVelocity angular_velocity = - Drv::AngularVelocity(Drv::sensor_value_to_f64(x), Drv::sensor_value_to_f64(y), Drv::sensor_value_to_f64(z)); + Drv::AngularVelocity(sensor_value_to_double(x), sensor_value_to_double(y), sensor_value_to_double(z)); this->tlmWrite_AngularVelocity(angular_velocity); return angular_velocity; } F64 Lsm6dsoManager ::temperatureGet_handler(FwIndexType portNum) { - if (!device_is_ready(dev)) { + if (!device_is_ready(this->m_dev)) { this->log_WARNING_HI_DeviceNotReady(); return 0; } @@ -91,13 +91,13 @@ F64 Lsm6dsoManager ::temperatureGet_handler(FwIndexType portNum) { struct sensor_value temp; - sensor_sample_fetch_chan(dev, SENSOR_CHAN_DIE_TEMP); + sensor_sample_fetch_chan(this->m_dev, SENSOR_CHAN_DIE_TEMP); - sensor_channel_get(dev, SENSOR_CHAN_DIE_TEMP, &temp); + sensor_channel_get(this->m_dev, SENSOR_CHAN_DIE_TEMP, &temp); - this->tlmWrite_Temperature(Drv::sensor_value_to_f64(temp)); + this->tlmWrite_Temperature(sensor_value_to_double(temp)); - return Drv::sensor_value_to_f64(temp); + return sensor_value_to_double(temp); } } // namespace Drv diff --git a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp index 2a15c39..e5da1c9 100644 --- a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp +++ b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp @@ -6,11 +6,7 @@ #ifndef Components_Lsm6dsoManager_HPP #define Components_Lsm6dsoManager_HPP -// clang-format off -// Keep the includes in this order #include "FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManagerComponentAc.hpp" -#include "FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp" -// clang-format on #include #include @@ -52,7 +48,7 @@ class Lsm6dsoManager final : public Lsm6dsoManagerComponentBase { // ---------------------------------------------------------------------- //! Zephyr device stores the initialized LSM6DSO sensor - const struct device* dev; + const struct device* m_dev; }; } // namespace Drv From 97bb636b260e3e1948be5b1a2ffdf7249b74469d Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Mon, 3 Nov 2025 21:06:24 -0600 Subject: [PATCH 2/3] Initialize device outside of component --- .../Drv/Lis2mdlManager/Lis2mdlManager.cpp | 14 ++++++++---- .../Drv/Lis2mdlManager/Lis2mdlManager.hpp | 8 +++++++ .../Drv/Lsm6dsoManager/Lsm6dsoManager.cpp | 22 ++++++++++++------- .../Drv/Lsm6dsoManager/Lsm6dsoManager.hpp | 8 +++++++ .../ReferenceDeployment/Main.cpp | 4 ++++ .../Top/ReferenceDeploymentTopology.cpp | 3 +++ .../Top/ReferenceDeploymentTopologyDefs.hpp | 2 ++ .../proves_flight_control_board_v5.dtsi | 2 +- 8 files changed, 50 insertions(+), 13 deletions(-) diff --git a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp index c4bebea..23484e4 100644 --- a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp +++ b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp @@ -13,12 +13,18 @@ namespace Drv { // Component construction and destruction // ---------------------------------------------------------------------- -Lis2mdlManager ::Lis2mdlManager(const char* const compName) : Lis2mdlManagerComponentBase(compName) { - this->m_dev = device_get_binding("LIS2MDL"); -} +Lis2mdlManager ::Lis2mdlManager(const char* const compName) : Lis2mdlManagerComponentBase(compName) {} Lis2mdlManager ::~Lis2mdlManager() {} +// ---------------------------------------------------------------------- +// Helper methods +// ---------------------------------------------------------------------- + +void Lis2mdlManager ::configure(const struct device* dev) { + this->m_dev = dev; +} + // ---------------------------------------------------------------------- // Handler implementations for typed input ports // ---------------------------------------------------------------------- @@ -41,7 +47,7 @@ Drv::MagneticField Lis2mdlManager ::magneticFieldGet_handler(FwIndexType portNum sensor_channel_get(this->m_dev, SENSOR_CHAN_MAGN_Z, &z); Drv::MagneticField magnetic_readings = - Drv::MagneticField(sensor_value_to_double(x), sensor_value_to_double(y), sensor_value_to_double(z)); + Drv::MagneticField(sensor_value_to_double(&x), sensor_value_to_double(&y), sensor_value_to_double(&z)); this->tlmWrite_MagneticField(magnetic_readings); diff --git a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp index be2a746..8ff1915 100644 --- a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp +++ b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp @@ -26,6 +26,14 @@ class Lis2mdlManager final : public Lis2mdlManagerComponentBase { //! Destroy Lis2mdlManager object ~Lis2mdlManager(); + public: + // ---------------------------------------------------------------------- + // Helper methods + // ---------------------------------------------------------------------- + + //! Configure the INA219 device + void configure(const struct device* dev); + private: // ---------------------------------------------------------------------- // Handler implementations for typed input ports diff --git a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp index 78ba441..c0cf0cb 100644 --- a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp +++ b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp @@ -13,8 +13,16 @@ namespace Drv { // Component construction and destruction // ---------------------------------------------------------------------- -Lsm6dsoManager ::Lsm6dsoManager(const char* const compName) : Lsm6dsoManagerComponentBase(compName) { - this->m_dev = DEVICE_DT_GET_ONE(st_lsm6dso); +Lsm6dsoManager ::Lsm6dsoManager(const char* const compName) : Lsm6dsoManagerComponentBase(compName) {} + +Lsm6dsoManager ::~Lsm6dsoManager() {} + +// ---------------------------------------------------------------------- +// Helper methods +// ---------------------------------------------------------------------- + +void Lsm6dsoManager ::configure(const struct device* dev) { + this->m_dev = dev; // Configure the sensor struct sensor_value odr = {.val1 = 12, .val2 = 500000}; // 12.5 Hz @@ -28,8 +36,6 @@ Lsm6dsoManager ::Lsm6dsoManager(const char* const compName) : Lsm6dsoManagerComp } } -Lsm6dsoManager ::~Lsm6dsoManager() {} - // ---------------------------------------------------------------------- // Handler implementations for typed input ports // ---------------------------------------------------------------------- @@ -52,7 +58,7 @@ Drv::Acceleration Lsm6dsoManager ::accelerationGet_handler(FwIndexType portNum) sensor_channel_get(this->m_dev, SENSOR_CHAN_ACCEL_Z, &z); Drv::Acceleration acceleration = - Drv::Acceleration(sensor_value_to_double(x), sensor_value_to_double(y), sensor_value_to_double(z)); + Drv::Acceleration(sensor_value_to_double(&x), sensor_value_to_double(&y), sensor_value_to_double(&z)); this->tlmWrite_Acceleration(acceleration); return acceleration; @@ -76,7 +82,7 @@ Drv::AngularVelocity Lsm6dsoManager ::angularVelocityGet_handler(FwIndexType por sensor_channel_get(this->m_dev, SENSOR_CHAN_GYRO_Z, &z); Drv::AngularVelocity angular_velocity = - Drv::AngularVelocity(sensor_value_to_double(x), sensor_value_to_double(y), sensor_value_to_double(z)); + Drv::AngularVelocity(sensor_value_to_double(&x), sensor_value_to_double(&y), sensor_value_to_double(&z)); this->tlmWrite_AngularVelocity(angular_velocity); return angular_velocity; @@ -95,9 +101,9 @@ F64 Lsm6dsoManager ::temperatureGet_handler(FwIndexType portNum) { sensor_channel_get(this->m_dev, SENSOR_CHAN_DIE_TEMP, &temp); - this->tlmWrite_Temperature(sensor_value_to_double(temp)); + this->tlmWrite_Temperature(sensor_value_to_double(&temp)); - return sensor_value_to_double(temp); + return sensor_value_to_double(&temp); } } // namespace Drv diff --git a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp index e5da1c9..6a47dda 100644 --- a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp +++ b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp @@ -26,6 +26,14 @@ class Lsm6dsoManager final : public Lsm6dsoManagerComponentBase { //! Destroy Lsm6dsoManager object ~Lsm6dsoManager(); + public: + // ---------------------------------------------------------------------- + // Helper methods + // ---------------------------------------------------------------------- + + //! Configure the INA219 device + void configure(const struct device* dev); + private: // ---------------------------------------------------------------------- // Handler implementations for typed input ports diff --git a/FprimeZephyrReference/ReferenceDeployment/Main.cpp b/FprimeZephyrReference/ReferenceDeployment/Main.cpp index 705a7f2..dd0f09c 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Main.cpp +++ b/FprimeZephyrReference/ReferenceDeployment/Main.cpp @@ -12,6 +12,8 @@ const struct device* serial = DEVICE_DT_GET(DT_NODELABEL(cdc_acm_uart0)); const struct device* lora = DEVICE_DT_GET(DT_NODELABEL(lora0)); +const struct device* lsm6dso = DEVICE_DT_GET(DT_NODELABEL(lsm6dso0)); +const struct device* lis2mdl = DEVICE_DT_GET(DT_NODELABEL(lis2mdl0)); int main(int argc, char* argv[]) { // ** DO NOT REMOVE **// @@ -24,6 +26,8 @@ int main(int argc, char* argv[]) { ReferenceDeployment::TopologyState inputs; inputs.loraDevice = lora; inputs.uartDevice = serial; + inputs.lsm6dsoDevice = lsm6dso; + inputs.lis2mdlDevice = lis2mdl; inputs.baudRate = 115200; // Setup, cycle, and teardown topology diff --git a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopology.cpp b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopology.cpp index ccef907..7ab8f38 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopology.cpp +++ b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopology.cpp @@ -87,6 +87,9 @@ void setupTopology(const TopologyState& state) { // for over-the-air communications. lora.start(state.loraDevice, Zephyr::TransmitState::DISABLED); comDriver.configure(state.uartDevice, state.baudRate); + + lsm6dsoManager.configure(state.lsm6dsoDevice); + lis2mdlManager.configure(state.lis2mdlDevice); } void startRateGroups() { diff --git a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopologyDefs.hpp b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopologyDefs.hpp index 81064f6..af66085 100644 --- a/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopologyDefs.hpp +++ b/FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentTopologyDefs.hpp @@ -71,6 +71,8 @@ namespace ReferenceDeployment { struct TopologyState { const device* uartDevice; //!< UART device path for communication const device* loraDevice; //!< LoRa device path for communication + const device* lsm6dsoDevice; //!< LSM6DSO device path for accelerometer/gyroscope + const device* lis2mdlDevice; //!< LIS2MDL device path for magnetometer U32 baudRate; //!< Baud rate for UART communication CdhCore::SubtopologyState cdhCore; //!< Subtopology state for CdhCore ComCcsds::SubtopologyState comCcsds; //!< Subtopology state for ComCcsds diff --git a/boards/bronco_space/proves_flight_control_board_v5/proves_flight_control_board_v5.dtsi b/boards/bronco_space/proves_flight_control_board_v5/proves_flight_control_board_v5.dtsi index 11db77d..cf5756a 100644 --- a/boards/bronco_space/proves_flight_control_board_v5/proves_flight_control_board_v5.dtsi +++ b/boards/bronco_space/proves_flight_control_board_v5/proves_flight_control_board_v5.dtsi @@ -147,7 +147,7 @@ zephyr_udc0: &usbd { label = "LSM6DSO"; }; - lis2mdl: lis2mdl@1e { + lis2mdl0: lis2mdl0@1e { compatible = "st,lis2mdl"; reg = <0x1e>; label = "LIS2MDL"; From 408abb71399d9407a37bf8717bf6eee6cfd6c132 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Mon, 3 Nov 2025 21:11:37 -0600 Subject: [PATCH 3/3] Fix comment --- .../Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp | 2 +- .../Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp index 8ff1915..f7850ce 100644 --- a/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp +++ b/FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp @@ -31,7 +31,7 @@ class Lis2mdlManager final : public Lis2mdlManagerComponentBase { // Helper methods // ---------------------------------------------------------------------- - //! Configure the INA219 device + //! Configure the LIS2MDL device void configure(const struct device* dev); private: diff --git a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp index 6a47dda..e28bc24 100644 --- a/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp +++ b/FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp @@ -31,7 +31,7 @@ class Lsm6dsoManager final : public Lsm6dsoManagerComponentBase { // Helper methods // ---------------------------------------------------------------------- - //! Configure the INA219 device + //! Configure the LSM6DSO device void configure(const struct device* dev); private: