Skip to content

Commit f110ce2

Browse files
committed
Reading magnetic field data
1 parent b4203c9 commit f110ce2

File tree

4 files changed

+26
-18
lines changed

4 files changed

+26
-18
lines changed

FprimeZephyrReference/Components/Imu/Imu.cpp

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,25 @@ Imu ::~Imu() {}
2727
// ----------------------------------------------------------------------
2828

2929
void Imu ::run_handler(FwIndexType portNum, U32 context) {
30-
this->imuCallCount++;
31-
this->tlmWrite_ImuCalls(this->imuCallCount);
32-
this->log_ACTIVITY_HI_ImuTestEvent();
33-
30+
// Fetch new data sample
3431
sensor_sample_fetch_chan(lis2mdl, SENSOR_CHAN_MAGN_XYZ);
35-
sensor_channel_get(lis2mdl, SENSOR_CHAN_MAGN_X, &magnetic_field_x);
36-
sensor_channel_get(lis2mdl, SENSOR_CHAN_MAGN_Y, &magnetic_field_y);
37-
sensor_channel_get(lis2mdl, SENSOR_CHAN_MAGN_Z, &magnetic_field_z);
32+
33+
// Extract the data from the sample
34+
struct sensor_value magnetic_data_x;
35+
struct sensor_value magnetic_data_y;
36+
struct sensor_value magnetic_data_z;
37+
sensor_channel_get(lis2mdl, SENSOR_CHAN_MAGN_X, &magnetic_data_x);
38+
sensor_channel_get(lis2mdl, SENSOR_CHAN_MAGN_Y, &magnetic_data_y);
39+
sensor_channel_get(lis2mdl, SENSOR_CHAN_MAGN_Z, &magnetic_data_z);
40+
41+
// Convert to float values in gauss
42+
float magnetic_field_x = magnetic_data_x.val1 + magnetic_data_x.val2 / 1000000.0f;
43+
float magnetic_field_y = magnetic_data_y.val1 + magnetic_data_y.val2 / 1000000.0f;
44+
float magnetic_field_z = magnetic_data_z.val1 + magnetic_data_z.val2 / 1000000.0f;
45+
46+
// Output the magnetic field values via telemetry
47+
this->tlmWrite_MagneticField(Components::Imu_MagneticField(
48+
static_cast<F64>(magnetic_field_x), static_cast<F64>(magnetic_field_y), static_cast<F64>(magnetic_field_z)));
3849
}
3950

4051
} // namespace Components

FprimeZephyrReference/Components/Imu/Imu.fpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ module Components {
33
passive component Imu {
44
sync input port run: Svc.Sched
55

6-
telemetry ImuCalls: U64
7-
8-
event ImuTestEvent() \
9-
severity activity high \
10-
format "WOAH WHATS HAPPENING IS THIS WORKING HELLO"
6+
struct MagneticField {
7+
x: F64
8+
y: F64
9+
z: F64
10+
}
11+
telemetry MagneticField: MagneticField
1112

1213
###############################################################################
1314
# Standard AC Ports: Required for Channels, Events, Commands, and Parameters #

FprimeZephyrReference/Components/Imu/Imu.hpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,7 @@ class Imu final : public ImuComponentBase {
4040
U32 context //!< The call order
4141
) override;
4242

43-
U64 imuCallCount;
4443
const struct device* lis2mdl;
45-
struct sensor_value magnetic_field_x;
46-
struct sensor_value magnetic_field_y;
47-
struct sensor_value magnetic_field_z;
4844
};
4945

5046
} // namespace Components

FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentPackets.fppi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ telemetry packets ReferenceDeploymentPackets {
3333
packet Led id 5 group 4 {
3434
ReferenceDeployment.watchdog.WatchdogTransitions
3535
}
36-
36+
3737
packet Imu id 6 group 4 {
38-
ReferenceDeployment.imu.ImuCalls
38+
ReferenceDeployment.imu.MagneticField
3939
}
4040

4141

0 commit comments

Comments
 (0)