Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions can_bus/hexray/CRIT/CRIT_tx.json
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,24 @@
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRun10HzCpuUsageMax": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRun10HzCpuUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRun10HzStackUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
}
},
"data_capture": {
Expand Down
18 changes: 18 additions & 0 deletions can_bus/hexray/FSM/FSM_tx.json
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,24 @@
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuCpuUsageMax": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuCpuUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuStackUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
}
},
"data_capture": {
Expand Down
18 changes: 18 additions & 0 deletions can_bus/hexray/RSM/RSM_tx.json
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,24 @@
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuCpuUsageMax": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuCpuUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuStackUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
}
},
"data_capture": {
Expand Down
36 changes: 36 additions & 0 deletions can_bus/hexray/VC/VC_tx.json
Original file line number Diff line number Diff line change
Expand Up @@ -1149,6 +1149,42 @@
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuCpuUsageMax": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuCpuUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunImuStackUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunSbgEllipseCpuUsageMax": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunSbgEllipseCpuUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"TaskRunSbgEllipseStackUsage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
}
},
"data_capture": {
Expand Down
4 changes: 4 additions & 0 deletions firmware/hexray/BMS/src/tasks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,10 @@ void tasks_init()

jobs_init();
BMS_StartAllTasks();
if (static_cast<size_t>(uxTaskGetNumberOfTasks()) != TASK_COUNT)
{
LOG_ERROR("Amount of tasks OS is handling does not match TASK_COUNT");
}
osKernelStart();
Error_Handler();
}
Expand Down
14 changes: 12 additions & 2 deletions firmware/hexray/CRIT/src/tasks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include "hw_bootup.hpp"
#include "hw_runTimeStat.hpp"

static constexpr size_t TASK_COUNT = 5;
static constexpr size_t TASK_COUNT = 6;
[[noreturn]] static void tasks_run1Hz(void *arg);
[[noreturn]] static void tasks_run100Hz(void *arg);
[[noreturn]] static void tasks_run10Hz(void *arg);
Expand All @@ -37,7 +37,7 @@ static hw::rtos::StaticTask::StaticTaskStack<512> TaskCanTxStack;
static hw::rtos::StaticTask Task1kHz(osPriorityRealtime, "Task1kHz", tasks_run1kHz, Task1kHzStack);
static hw::rtos::StaticTask Task1Hz(osPriorityAboveNormal, "Task1Hz", tasks_run1Hz, Task1HzStack);
static hw::rtos::StaticTask Task100Hz(osPriorityHigh, "Task100Hz", tasks_run100Hz, Task100HzStack);
static hw::rtos::StaticTask Task10Hz(osPriorityHigh, "Task100Hz", tasks_run10Hz, Task10HzStack);
static hw::rtos::StaticTask Task10Hz(osPriorityHigh, "Task10Hz", tasks_run10Hz, Task10HzStack);
static hw::rtos::StaticTask TaskCanRx(osPriorityNormal, "TaskCanRx", tasks_runCanRx, TaskCanRxStack);
static hw::rtos::StaticTask TaskCanTx(osPriorityNormal, "TaskCanTx", tasks_runCanTx, TaskCanTxStack);

Expand Down Expand Up @@ -77,6 +77,12 @@ static hw::runtimeStat::monitor<TASK_COUNT> runtimeMonitor(
app::can_tx::CRIT_TaskRunCanTxCpuUsageMax_set,
app::can_tx::CRIT_TaskRunCanTxStackUsage_set,
},
{
Task10Hz,
app::can_tx::CRIT_TaskRun10HzCpuUsage_set,
app::can_tx::CRIT_TaskRun10HzCpuUsageMax_set,
app::can_tx::CRIT_TaskRun10HzStackUsage_set,
},
} });

static hw::watchdog::monitor<TASK_COUNT> monitor{
Expand Down Expand Up @@ -246,6 +252,10 @@ void tasks_init()

jobs_init();
CRIT_StartAllTasks();
if (static_cast<size_t>(uxTaskGetNumberOfTasks()) != TASK_COUNT)
{
LOG_ERROR("Amount of tasks OS is handling does not match TASK_COUNT");
}
osKernelStart();
forever {}
}
Expand Down
4 changes: 4 additions & 0 deletions firmware/hexray/DAM/src/tasks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,10 @@ void tasks_init()

jobs_init();
DAM_StartAllTasks();
if (static_cast<size_t>(uxTaskGetNumberOfTasks()) != TASK_COUNT)
{
LOG_ERROR("Amount of tasks OS is handling does not match TASK_COUNT");
}
osKernelStart();
forever {}
}
Expand Down
14 changes: 12 additions & 2 deletions firmware/hexray/FSM/src/tasks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include "hw_adcs.hpp"
#include "hw_runTimeStat.hpp"

constexpr size_t TASK_COUNT = 5;
constexpr size_t TASK_COUNT = 6;
[[noreturn]] static void tasks_run1Hz(void *arg);
[[noreturn]] static void tasks_run100Hz(void *arg);
[[noreturn]] static void tasks_run1kHz(void *arg);
Expand All @@ -42,7 +42,7 @@ static hw::rtos::StaticTask TaskImu(osPriorityHigh, "TaskImu", tasks_runImu, Tas
static hw::rtos::StaticTask TaskCanTx(osPriorityNormal, "TaskCanTx", tasks_runCanTx, TaskCanTxStack);
static hw::rtos::StaticTask TaskCanRx(osPriorityNormal, "TaskCanRx", tasks_runCanRx, TaskCanRxStack);

static hw::runtimeStat::monitor<5> runtimeMonitor{
static hw::runtimeStat::monitor<TASK_COUNT> runtimeMonitor{
{ app::can_tx::FSM_CoreCpuUsage_set, app::can_tx::FSM_CoreCpuUsageMax_set },
{ { {
Task1kHz,
Expand Down Expand Up @@ -73,6 +73,12 @@ static hw::runtimeStat::monitor<5> runtimeMonitor{
app::can_tx::FSM_TaskRunCanRxCpuUsage_set,
app::can_tx::FSM_TaskRunCanRxCpuUsageMax_set,
app::can_tx::FSM_TaskRunCanRxStackUsage_set,
},
{
TaskImu,
app::can_tx::FSM_TaskRunImuCpuUsage_set,
app::can_tx::FSM_TaskRunImuCpuUsageMax_set,
app::can_tx::FSM_TaskRunImuStackUsage_set,
} } },
};

Expand Down Expand Up @@ -248,6 +254,10 @@ void tasks_preInit()

jobs_init();
FSM_StartAllTasks();
if (static_cast<size_t>(uxTaskGetNumberOfTasks()) != TASK_COUNT)
{
LOG_ERROR("Amount of tasks OS is handling does not match TASK_COUNT");
}
osKernelStart();
forever {}
}
Expand Down
10 changes: 8 additions & 2 deletions firmware/hexray/RSM/src/tasks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#include "hw_bootup.hpp"
#include "hw_runTimeStat.hpp"

constexpr size_t TASK_COUNT = 5;
constexpr size_t TASK_COUNT = 6;
[[noreturn]] static void tasks_run1Hz(void *arg);
[[noreturn]] static void tasks_run100Hz(void *arg);
[[noreturn]] static void tasks_run1kHz(void *arg);
Expand Down Expand Up @@ -57,7 +57,9 @@ static hw::runtimeStat::monitor<TASK_COUNT> runtimeMonitor{
{ TaskCanRx, app::can_tx::RSM_TaskRunCanRxCpuUsage_set, app::can_tx::RSM_TaskRunCanRxCpuUsageMax_set,
app::can_tx::RSM_TaskRunCanRxStackUsage_set },
{ TaskCanTx, app::can_tx::RSM_TaskRunCanTxCpuUsage_set, app::can_tx::RSM_TaskRunCanTxCpuUsageMax_set,
app::can_tx::RSM_TaskRunCanTxStackUsage_set } },
app::can_tx::RSM_TaskRunCanTxStackUsage_set },
{ TaskImu, app::can_tx::RSM_TaskRunImuCpuUsage_set, app::can_tx::RSM_TaskRunImuCpuUsageMax_set,
app::can_tx::RSM_TaskRunImuStackUsage_set } },
},
};

Expand Down Expand Up @@ -229,6 +231,10 @@ void tasks_init()

jobs_init();
RSM_StartAllTasks();
if (static_cast<size_t>(uxTaskGetNumberOfTasks()) != TASK_COUNT)
{
LOG_ERROR("Amount of tasks OS is handling does not match TASK_COUNT");
}
osKernelStart();
forever {}
}
Expand Down
30 changes: 14 additions & 16 deletions firmware/hexray/VC/src/tasks.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
[[noreturn]] static void tasks_sbgEllipse(void *arg);

// Define the task with StaticTask Class
constexpr size_t TASK_COUNT = 7; // IMU, Batt Mon, Power Mon ADD
constexpr size_t TASK_COUNT = 9; // every task VC_StartAllTasks() starts
static hw::rtos::StaticTask::StaticTaskStack<8096> Task100HzStack;
static hw::rtos::StaticTask::StaticTaskStack<512> Task1kHzStack;
static hw::rtos::StaticTask::StaticTaskStack<512> Task1HzStack;
Expand Down Expand Up @@ -80,8 +80,13 @@ static hw::runtimeStat::monitor<TASK_COUNT> runtimeMonitor{
app::can_tx::VC_TaskRunCan2TxStackUsage_set },
{ TaskPowerMonitoring, app::can_tx::VC_TaskRunPowerMonitoringCpuUsage_set,
app::can_tx::VC_TaskRunPowerMonitoringCpuUsageMax_set,
app::can_tx::VC_TaskRunPowerMonitoringStackUsage_set } },
// Battery Monitoring and IMU...
app::can_tx::VC_TaskRunPowerMonitoringStackUsage_set },
{ TaskImu, app::can_tx::VC_TaskRunImuCpuUsage_set, app::can_tx::VC_TaskRunImuCpuUsageMax_set,
app::can_tx::VC_TaskRunImuStackUsage_set },
{ TaskSbgEllipse, app::can_tx::VC_TaskRunSbgEllipseCpuUsage_set,
app::can_tx::VC_TaskRunSbgEllipseCpuUsageMax_set,
app::can_tx::VC_TaskRunSbgEllipseStackUsage_set } },
// TaskBatteryMonitoring is declared but not started, so it is deliberately not registered here.
},
};

Expand All @@ -101,7 +106,7 @@ void tasks_run1Hz(void *arg)
{
jobs_run1Hz_tick();
watchdog1hz.checkIn();
// runtimeMonitor.checkin();
runtimeMonitor.checkin();
start_ticks += period_ms;
io::time::delayUntil(start_ticks);
osDelayUntil(start_ticks);
Expand Down Expand Up @@ -308,18 +313,6 @@ void tasks_init()
hw::bootup::setBootRequest(boot_request);
}

// TODO this should surely be managed by the power manager??
// dam_en.writePin(true);
// rsm_en.writePin(true);
// front_en.writePin(true);
// bms_en.writePin(true);
// rl_pump_en.writePin(true);
// rr_pump_en.writePin(true);
// f_inv_en.writePin(true);
// r_inv_en.writePin(true);
// r_rad_fan_en.writePin(true);
// l_rad_fan_en.writePin(true);
// misc_fuse_en.writePin(true);
ResetReason reason = hw::resetReason::get();
app::can_tx::VC_ResetReason_set(static_cast<app::can_utils::CanResetReason>(reason));
if (reason == RESET_REASON_WATCHDOG)
Expand All @@ -331,6 +324,11 @@ void tasks_init()
jobs_init();
adcChipsInit();
VC_StartAllTasks();
if (static_cast<size_t>(uxTaskGetNumberOfTasks()) != TASK_COUNT)
{
LOG_ERROR("Amount of tasks OS is handling does not match TASK_COUNT");
assert(false);
}
osKernelStart();
forever {}
}
Expand Down
Loading
Loading