Skip to content

Commit 497f48a

Browse files
authored
Update Lis2mdlManager and Lsm6dsoManager with best practices (#78)
* Remove helpers, reference member var correctly * Initialize device outside of component * Fix comment
1 parent 8d22001 commit 497f48a

File tree

14 files changed

+76
-117
lines changed

14 files changed

+76
-117
lines changed

FprimeZephyrReference/Components/Drv/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Helpers/")
21
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Ina219Manager/")
32
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Lis2mdlManager/")
43
add_fprime_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Lsm6dsoManager/")

FprimeZephyrReference/Components/Drv/Helpers/CMakeLists.txt

Lines changed: 0 additions & 34 deletions
This file was deleted.

FprimeZephyrReference/Components/Drv/Helpers/Helpers.cpp

Lines changed: 0 additions & 16 deletions
This file was deleted.

FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp

Lines changed: 0 additions & 19 deletions
This file was deleted.

FprimeZephyrReference/Components/Drv/Lis2mdlManager/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ register_fprime_library(
1919
"${CMAKE_CURRENT_LIST_DIR}/Lis2mdlManager.fpp"
2020
SOURCES
2121
"${CMAKE_CURRENT_LIST_DIR}/Lis2mdlManager.cpp"
22-
DEPENDS
23-
FprimeZephyrReference_Components_Drv_Helpers
22+
# DEPENDS
23+
# FprimeZephyrReference_Components_Drv_Helpers
2424
)
2525

2626
### Unit Tests ###

FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,24 @@ namespace Drv {
1313
// Component construction and destruction
1414
// ----------------------------------------------------------------------
1515

16-
Lis2mdlManager ::Lis2mdlManager(const char* const compName) : Lis2mdlManagerComponentBase(compName) {
17-
dev = device_get_binding("LIS2MDL");
18-
}
16+
Lis2mdlManager ::Lis2mdlManager(const char* const compName) : Lis2mdlManagerComponentBase(compName) {}
1917

2018
Lis2mdlManager ::~Lis2mdlManager() {}
2119

20+
// ----------------------------------------------------------------------
21+
// Helper methods
22+
// ----------------------------------------------------------------------
23+
24+
void Lis2mdlManager ::configure(const struct device* dev) {
25+
this->m_dev = dev;
26+
}
27+
2228
// ----------------------------------------------------------------------
2329
// Handler implementations for typed input ports
2430
// ----------------------------------------------------------------------
2531

2632
Drv::MagneticField Lis2mdlManager ::magneticFieldGet_handler(FwIndexType portNum) {
27-
if (!device_is_ready(dev)) {
33+
if (!device_is_ready(this->m_dev)) {
2834
this->log_WARNING_HI_DeviceNotReady();
2935
return Drv::MagneticField(0.0, 0.0, 0.0);
3036
}
@@ -34,14 +40,14 @@ Drv::MagneticField Lis2mdlManager ::magneticFieldGet_handler(FwIndexType portNum
3440
struct sensor_value y;
3541
struct sensor_value z;
3642

37-
sensor_sample_fetch_chan(dev, SENSOR_CHAN_MAGN_XYZ);
43+
sensor_sample_fetch_chan(this->m_dev, SENSOR_CHAN_MAGN_XYZ);
3844

39-
sensor_channel_get(dev, SENSOR_CHAN_MAGN_X, &x);
40-
sensor_channel_get(dev, SENSOR_CHAN_MAGN_Y, &y);
41-
sensor_channel_get(dev, SENSOR_CHAN_MAGN_Z, &z);
45+
sensor_channel_get(this->m_dev, SENSOR_CHAN_MAGN_X, &x);
46+
sensor_channel_get(this->m_dev, SENSOR_CHAN_MAGN_Y, &y);
47+
sensor_channel_get(this->m_dev, SENSOR_CHAN_MAGN_Z, &z);
4248

4349
Drv::MagneticField magnetic_readings =
44-
Drv::MagneticField(Drv::sensor_value_to_f64(x), Drv::sensor_value_to_f64(y), Drv::sensor_value_to_f64(z));
50+
Drv::MagneticField(sensor_value_to_double(&x), sensor_value_to_double(&y), sensor_value_to_double(&z));
4551

4652
this->tlmWrite_MagneticField(magnetic_readings);
4753

FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManager.hpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@
66
#ifndef Components_Lis2mdlManager_HPP
77
#define Components_Lis2mdlManager_HPP
88

9-
// clang-format off
10-
// Keep the includes in this order
119
#include "FprimeZephyrReference/Components/Drv/Lis2mdlManager/Lis2mdlManagerComponentAc.hpp"
12-
#include "FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp"
13-
// clang-format on
1410

1511
#include <zephyr/device.h>
1612
#include <zephyr/drivers/sensor.h>
@@ -30,6 +26,14 @@ class Lis2mdlManager final : public Lis2mdlManagerComponentBase {
3026
//! Destroy Lis2mdlManager object
3127
~Lis2mdlManager();
3228

29+
public:
30+
// ----------------------------------------------------------------------
31+
// Helper methods
32+
// ----------------------------------------------------------------------
33+
34+
//! Configure the LIS2MDL device
35+
void configure(const struct device* dev);
36+
3337
private:
3438
// ----------------------------------------------------------------------
3539
// Handler implementations for typed input ports
@@ -44,7 +48,7 @@ class Lis2mdlManager final : public Lis2mdlManagerComponentBase {
4448
// ----------------------------------------------------------------------
4549

4650
//! Zephyr device stores the initialized LIS2MDL sensor
47-
const struct device* dev;
51+
const struct device* m_dev;
4852
};
4953

5054
} // namespace Drv

FprimeZephyrReference/Components/Drv/Lsm6dsoManager/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ register_fprime_library(
1919
"${CMAKE_CURRENT_LIST_DIR}/Lsm6dsoManager.fpp"
2020
SOURCES
2121
"${CMAKE_CURRENT_LIST_DIR}/Lsm6dsoManager.cpp"
22-
DEPENDS
23-
FprimeZephyrReference_Components_Drv_Helpers
22+
# DEPENDS
23+
# FprimeZephyrReference_Components_Drv_Helpers
2424
)
2525

2626
### Unit Tests ###

FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.cpp

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,35 @@ namespace Drv {
1313
// Component construction and destruction
1414
// ----------------------------------------------------------------------
1515

16-
Lsm6dsoManager ::Lsm6dsoManager(const char* const compName) : Lsm6dsoManagerComponentBase(compName) {
17-
dev = DEVICE_DT_GET_ONE(st_lsm6dso);
16+
Lsm6dsoManager ::Lsm6dsoManager(const char* const compName) : Lsm6dsoManagerComponentBase(compName) {}
17+
18+
Lsm6dsoManager ::~Lsm6dsoManager() {}
19+
20+
// ----------------------------------------------------------------------
21+
// Helper methods
22+
// ----------------------------------------------------------------------
23+
24+
void Lsm6dsoManager ::configure(const struct device* dev) {
25+
this->m_dev = dev;
1826

1927
// Configure the sensor
2028
struct sensor_value odr = {.val1 = 12, .val2 = 500000}; // 12.5 Hz
2129

22-
if (sensor_attr_set(dev, SENSOR_CHAN_ACCEL_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &odr) != 0) {
30+
if (sensor_attr_set(this->m_dev, SENSOR_CHAN_ACCEL_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &odr) != 0) {
2331
this->log_WARNING_HI_AccelerometerSamplingFrequencyNotConfigured();
2432
}
2533

26-
if (sensor_attr_set(dev, SENSOR_CHAN_GYRO_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &odr) != 0) {
34+
if (sensor_attr_set(this->m_dev, SENSOR_CHAN_GYRO_XYZ, SENSOR_ATTR_SAMPLING_FREQUENCY, &odr) != 0) {
2735
this->log_WARNING_HI_GyroscopeSamplingFrequencyNotConfigured();
2836
}
2937
}
3038

31-
Lsm6dsoManager ::~Lsm6dsoManager() {}
32-
3339
// ----------------------------------------------------------------------
3440
// Handler implementations for typed input ports
3541
// ----------------------------------------------------------------------
3642

3743
Drv::Acceleration Lsm6dsoManager ::accelerationGet_handler(FwIndexType portNum) {
38-
if (!device_is_ready(dev)) {
44+
if (!device_is_ready(this->m_dev)) {
3945
this->log_WARNING_HI_DeviceNotReady();
4046
return Drv::Acceleration(0.0, 0.0, 0.0);
4147
}
@@ -45,21 +51,21 @@ Drv::Acceleration Lsm6dsoManager ::accelerationGet_handler(FwIndexType portNum)
4551
struct sensor_value y;
4652
struct sensor_value z;
4753

48-
sensor_sample_fetch_chan(dev, SENSOR_CHAN_ACCEL_XYZ);
54+
sensor_sample_fetch_chan(this->m_dev, SENSOR_CHAN_ACCEL_XYZ);
4955

50-
sensor_channel_get(dev, SENSOR_CHAN_ACCEL_X, &x);
51-
sensor_channel_get(dev, SENSOR_CHAN_ACCEL_Y, &y);
52-
sensor_channel_get(dev, SENSOR_CHAN_ACCEL_Z, &z);
56+
sensor_channel_get(this->m_dev, SENSOR_CHAN_ACCEL_X, &x);
57+
sensor_channel_get(this->m_dev, SENSOR_CHAN_ACCEL_Y, &y);
58+
sensor_channel_get(this->m_dev, SENSOR_CHAN_ACCEL_Z, &z);
5359

5460
Drv::Acceleration acceleration =
55-
Drv::Acceleration(Drv::sensor_value_to_f64(x), Drv::sensor_value_to_f64(y), Drv::sensor_value_to_f64(z));
61+
Drv::Acceleration(sensor_value_to_double(&x), sensor_value_to_double(&y), sensor_value_to_double(&z));
5662

5763
this->tlmWrite_Acceleration(acceleration);
5864
return acceleration;
5965
}
6066

6167
Drv::AngularVelocity Lsm6dsoManager ::angularVelocityGet_handler(FwIndexType portNum) {
62-
if (!device_is_ready(dev)) {
68+
if (!device_is_ready(this->m_dev)) {
6369
this->log_WARNING_HI_DeviceNotReady();
6470
return Drv::AngularVelocity(0.0, 0.0, 0.0);
6571
}
@@ -69,35 +75,35 @@ Drv::AngularVelocity Lsm6dsoManager ::angularVelocityGet_handler(FwIndexType por
6975
struct sensor_value y;
7076
struct sensor_value z;
7177

72-
sensor_sample_fetch_chan(dev, SENSOR_CHAN_GYRO_XYZ);
78+
sensor_sample_fetch_chan(this->m_dev, SENSOR_CHAN_GYRO_XYZ);
7379

74-
sensor_channel_get(dev, SENSOR_CHAN_GYRO_X, &x);
75-
sensor_channel_get(dev, SENSOR_CHAN_GYRO_Y, &y);
76-
sensor_channel_get(dev, SENSOR_CHAN_GYRO_Z, &z);
80+
sensor_channel_get(this->m_dev, SENSOR_CHAN_GYRO_X, &x);
81+
sensor_channel_get(this->m_dev, SENSOR_CHAN_GYRO_Y, &y);
82+
sensor_channel_get(this->m_dev, SENSOR_CHAN_GYRO_Z, &z);
7783

7884
Drv::AngularVelocity angular_velocity =
79-
Drv::AngularVelocity(Drv::sensor_value_to_f64(x), Drv::sensor_value_to_f64(y), Drv::sensor_value_to_f64(z));
85+
Drv::AngularVelocity(sensor_value_to_double(&x), sensor_value_to_double(&y), sensor_value_to_double(&z));
8086

8187
this->tlmWrite_AngularVelocity(angular_velocity);
8288
return angular_velocity;
8389
}
8490

8591
F64 Lsm6dsoManager ::temperatureGet_handler(FwIndexType portNum) {
86-
if (!device_is_ready(dev)) {
92+
if (!device_is_ready(this->m_dev)) {
8793
this->log_WARNING_HI_DeviceNotReady();
8894
return 0;
8995
}
9096
this->log_WARNING_HI_DeviceNotReady_ThrottleClear();
9197

9298
struct sensor_value temp;
9399

94-
sensor_sample_fetch_chan(dev, SENSOR_CHAN_DIE_TEMP);
100+
sensor_sample_fetch_chan(this->m_dev, SENSOR_CHAN_DIE_TEMP);
95101

96-
sensor_channel_get(dev, SENSOR_CHAN_DIE_TEMP, &temp);
102+
sensor_channel_get(this->m_dev, SENSOR_CHAN_DIE_TEMP, &temp);
97103

98-
this->tlmWrite_Temperature(Drv::sensor_value_to_f64(temp));
104+
this->tlmWrite_Temperature(sensor_value_to_double(&temp));
99105

100-
return Drv::sensor_value_to_f64(temp);
106+
return sensor_value_to_double(&temp);
101107
}
102108

103109
} // namespace Drv

FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManager.hpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@
66
#ifndef Components_Lsm6dsoManager_HPP
77
#define Components_Lsm6dsoManager_HPP
88

9-
// clang-format off
10-
// Keep the includes in this order
119
#include "FprimeZephyrReference/Components/Drv/Lsm6dsoManager/Lsm6dsoManagerComponentAc.hpp"
12-
#include "FprimeZephyrReference/Components/Drv/Helpers/Helpers.hpp"
13-
// clang-format on
1410

1511
#include <zephyr/device.h>
1612
#include <zephyr/drivers/sensor.h>
@@ -30,6 +26,14 @@ class Lsm6dsoManager final : public Lsm6dsoManagerComponentBase {
3026
//! Destroy Lsm6dsoManager object
3127
~Lsm6dsoManager();
3228

29+
public:
30+
// ----------------------------------------------------------------------
31+
// Helper methods
32+
// ----------------------------------------------------------------------
33+
34+
//! Configure the LSM6DSO device
35+
void configure(const struct device* dev);
36+
3337
private:
3438
// ----------------------------------------------------------------------
3539
// Handler implementations for typed input ports
@@ -52,7 +56,7 @@ class Lsm6dsoManager final : public Lsm6dsoManagerComponentBase {
5256
// ----------------------------------------------------------------------
5357

5458
//! Zephyr device stores the initialized LSM6DSO sensor
55-
const struct device* dev;
59+
const struct device* m_dev;
5660
};
5761

5862
} // namespace Drv

0 commit comments

Comments
 (0)