Skip to content

Commit 60d6633

Browse files
committed
Added loadDevice to LoadContainer for FSM
1 parent 204c42b commit 60d6633

3 files changed

Lines changed: 12 additions & 8 deletions

File tree

include/LoadContainer.hpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include "LoadConfig.hpp"
66
#include "LoadTasks.hpp"
7+
#include "MCP23008T.hpp"
78

89
/**
910
* @brief Class to manage the container for load data
@@ -51,7 +52,7 @@ class LoadContainer {
5152
TID_LOG
5253
};
5354

54-
LoadContainer() = default;
55+
LoadContainer(MCP23008T &loadDevice) : loadDevice(loadDevice) {}
5556
~LoadContainer() = default;
5657

5758
inline bool getSafetyFlag() const { return safetyFlag; }
@@ -66,10 +67,13 @@ class LoadContainer {
6667
inline void updatePowerPositive(bool powerPositive) {
6768
this->powerPositive = powerPositive;
6869
}
70+
inline void setLoadGPIO(uint_fast8_t value) {
71+
loadDevice.setGPIO((uint32_t)value);
72+
}
6973

7074
private:
7175
// INA260&
72-
// loa&
76+
MCP23008T &loadDevice;
7377

7478
bool safetyFlag = false; // todo
7579
bool powerPositive = false;

include/LoadFSM.hpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class LoadFSM {
7878
vTaskSuspend(load.mainTaskDescriptions
7979
[LoadContainer::TASK_IDS::TID_ADJUST_LOAD]
8080
.pxHandle);
81-
// todo: turn off load
81+
load.setLoadGPIO(0b0000'0000); // todo: one inverted?
8282

8383
return UPDATE_RESULT::STATE_CHANGED;
8484
} else if ((currentState == FSMCommon::States::sESTOP) &&
@@ -97,7 +97,7 @@ class LoadFSM {
9797
vTaskSuspend(load.mainTaskDescriptions
9898
[LoadContainer::TASK_IDS::TID_ADJUST_LOAD]
9999
.pxHandle);
100-
// todo: turn off load (possibly a second time)
100+
load.setLoadGPIO(0b0000'0000); // todo: one inverted?
101101

102102
return UPDATE_RESULT::STATE_CHANGED;
103103
} else if ((currentState == FSMCommon::States::sRST) &&
@@ -123,8 +123,7 @@ class LoadFSM {
123123
currentState = FSMCommon::States::sRunLoad;
124124

125125
// Nacelle can detect this on it's own
126-
// TODO: enable load
127-
vTaskResume(
126+
vTaskResume( // todo: check load logic
128127
load.mainTaskDescriptions
129128
[LoadContainer::TASK_IDS::TID_ADJUST_LOAD]
130129
.pxHandle); // todo: better way to signal load task?

src/main.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,15 @@ AdapterWLAN adapterWLAN;
4242
AdapterESPNow adapterESPNow;
4343
// SyncedClock netClock = SyncedClock(adapterESPNow); // todo
4444
SyncedClock netClock(adapterESPNow); // todo
45-
LoadContainer load;
46-
LoadFSM loadFSM(load);
4745

4846
Adafruit_NeoPixel leds(1, UM_PROS3::LED_DATA_PIN, NEO_GRB + NEO_KHZ800);
4947
MCP23008T loadDevice(static_cast<MCP23008T::I2C_ADDRESS>(LOAD::I2C_ADDRESS),
5048
&Wire);
5149
bool loadConfigured = false;
5250

51+
LoadContainer load(loadDevice);
52+
LoadFSM loadFSM(load);
53+
5354
// todo: move
5455
bool configureLoad() {
5556
if (!loadDevice.begin()) {

0 commit comments

Comments
 (0)