Skip to content

Commit 335e50b

Browse files
committed
(kinda) implement command
as far as i can tell i should have everything set up for the command to work, but for some reason it doesn't show up in the gds
1 parent 7b2fae4 commit 335e50b

File tree

7 files changed

+45
-8
lines changed

7 files changed

+45
-8
lines changed

FprimeZephyrReference/Components/Drv/MagnetorquerManager/MagnetorquerManager.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,22 @@ MagnetorquerManager ::MagnetorquerManager(const char* const compName) : Magnetor
2020

2121
MagnetorquerManager ::~MagnetorquerManager() {}
2222

23+
void MagnetorquerManager ::START_PLAYBACK_TEST_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) {
24+
if (!device_is_ready(dev)) {
25+
this->log_WARNING_HI_DeviceNotReady();
26+
return;
27+
}
28+
drv2605_haptic_config(this->dev, DRV2605_HAPTICS_SOURCE_ROM, (union drv2605_config_data*)&this->rom);
29+
}
30+
31+
void MagnetorquerManager ::START_PLAYBACK_TEST2_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) {
32+
if (!device_is_ready(dev)) {
33+
this->log_WARNING_HI_DeviceNotReady();
34+
return;
35+
}
36+
37+
struct drv2605_rom_data rom2 = {.library = DRV2605_LIBRARY_TS2200_A, .seq_regs = {50, 0, 0, 0, 0, 0, 0, 0}};
38+
drv2605_haptic_config(this->dev, DRV2605_HAPTICS_SOURCE_ROM, (union drv2605_config_data*)&rom2);
39+
}
40+
2341
} // namespace Drv

FprimeZephyrReference/Components/Drv/MagnetorquerManager/MagnetorquerManager.fpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ module Drv {
22
@ Component for F Prime FSW framework.
33
passive component MagnetorquerManager {
44

5-
##############################################################################
6-
#### Uncomment the following examples to start customizing your component ####
7-
##############################################################################
5+
@ Event for reporting DRV2605 not ready error
6+
event DeviceNotReady() severity warning high format "DRV2605 device not ready" throttle 5
87

9-
# @ Example async command
10-
# async command COMMAND_NAME(param_name: U32)
8+
@ Start DRV2605 playback with effect #47
9+
sync command START_PLAYBACK_TEST()
10+
11+
@ Start DRV2605 playback with effect #50
12+
sync command START_PLAYBACK_TEST2()
1113

1214
# @ Example telemetry counter
1315
# telemetry ExampleCounter: U64
@@ -52,4 +54,4 @@ module Drv {
5254
param set port prmSetOut
5355

5456
}
55-
}
57+
}

FprimeZephyrReference/Components/Drv/MagnetorquerManager/MagnetorquerManager.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#include <zephyr/drivers/sensor.h>
1414
#include <zephyr/kernel.h>
1515

16+
#include <zephyr/drivers/haptics/drv2605.h>
17+
1618
namespace Drv {
1719

1820
class MagnetorquerManager final : public MagnetorquerManagerComponentBase {
@@ -31,6 +33,10 @@ class MagnetorquerManager final : public MagnetorquerManagerComponentBase {
3133
private:
3234
//! Zephyr device to store initialized DRV2605
3335
const struct device* dev;
36+
struct drv2605_rom_data rom = {.library = DRV2605_LIBRARY_TS2200_A, .seq_regs = {47, 0, 0, 0, 0, 0, 0, 0}};
37+
38+
void START_PLAYBACK_TEST_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;
39+
void START_PLAYBACK_TEST2_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) override;
3440
};
3541

3642
} // namespace Drv

FprimeZephyrReference/ReferenceDeployment/Top/ReferenceDeploymentPackets.fppi

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ telemetry packets ReferenceDeploymentPackets {
4444
ReferenceDeployment.watchdog.WatchdogTransitions
4545
}
4646

47-
packet Imu id 6 group 4 {
47+
packet Magnetorquer id 6 group 4 {
4848
ReferenceDeployment.lsm6dsoManager.Acceleration
4949
ReferenceDeployment.lsm6dsoManager.AngularVelocity
5050
ReferenceDeployment.lsm6dsoManager.Temperature
@@ -61,6 +61,10 @@ telemetry packets ReferenceDeploymentPackets {
6161
ReferenceDeployment.antennaDeployer.LastDistance
6262
}
6363

64+
packet BDotDetumble id 9 group 4 {
65+
ReferenceDeployment.bDotDetumble.DipoleMoment
66+
}
67+
6468
} omit {
6569
CdhCore.cmdDisp.CommandErrors
6670
# Only has one library, no custom versions

FprimeZephyrReference/ReferenceDeployment/Top/instances.fpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,8 @@ module ReferenceDeployment {
8989
instance antennaDeployer: Components.AntennaDeployer base id 0x10029000
9090

9191
instance fsSpace: Components.FsSpace base id 0x10030000
92+
93+
instance detumbleManager: Components.DetumbleManager base id 0x10031000
94+
95+
instance bDotDetumble: Drv.BDotDetumble base id 0x10032000
9296
}

FprimeZephyrReference/ReferenceDeployment/Top/topology.fpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ module ReferenceDeployment {
4444
# For UART sideband communication
4545
instance comDriver
4646
instance fsSpace
47+
instance bDotDetumble
48+
instance detumbleManager
4749

4850

4951
# ----------------------------------------------------------------------
@@ -160,6 +162,7 @@ module ReferenceDeployment {
160162
DetumbleManager.angularVelocityGet -> lsm6dsoManager.angularVelocityGet
161163
DetumbleManager.magneticFieldGet -> lis2mdlManager.magneticFieldGet
162164
DetumbleManager.temperatureGet -> lsm6dsoManager.temperatureGet
165+
DetumbleManager.dipoleMomentGet -> bDotDetumble.dipoleMomentGet
163166
}
164167
}
165168
}

FprimeZephyrReference/project/config/TlmPacketizerCfg.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include <Fw/FPrimeBasicTypes.hpp>
1717

1818
namespace Svc {
19-
static const FwChanIdType MAX_PACKETIZER_PACKETS = 8;
19+
static const FwChanIdType MAX_PACKETIZER_PACKETS = 9;
2020
static const FwChanIdType TLMPACKETIZER_NUM_TLM_HASH_SLOTS =
2121
15; // !< Number of slots in the hash table.
2222
// Works best when set to about twice the number of components producing telemetry

0 commit comments

Comments
 (0)