Table of Contents | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
🤔 Problem Statement
...
Make sure to allocate enough time for each manager so that its processes have enough time to execute
May have to implement a queue for data
May have to implement interrupts
ZP 3.5b SM Rearchitecture
The purpose of this rearchitecture is to introduce dependency injection such that it is no longer hardware dependant. Will support a gtest friendly build and a hardware friendly build via injection.
The following are the list of present assumptions in place for each interface rearchitectured SM will deal with.
RC Driver:
Will support a
->get()
method in the interfaceStucture of respond currently unknown, for now assume it has roll, pitch, yaw, throttle
Will also support a
->is_data_new()
method in the interface
Inter-Manager Queue Driver:
Will support a
->pop()
,->get()
and a->push()
Only
->push()
is relevant for SMWill push any messages that need to go to AM
Attitude Manager:
Agreed structure for queue messages from SM to AM is attached below:
Code Block | ||
---|---|---|
| ||
typedef struct {
int8_t roll; // Roll percentage
int8_t yaw; // Yaw percentage
int8_t pitch; // Pitch percentage
int8_t throttle; // Throttle percentage
} RCMotorControlMessage_t; |
Reference Material
Link to previous SysManager SysManagers
https://github.com/UWARG/ZeroPilot-SW-3/tree/main/SystemManager
https://github.com/UWARG/efs-zeropilot-3.5/blob/main/SystemManager/Src/SystemManager.cpp
Link to a simple SysManager https://github.com/UWARG/SimpleSystemManager/blob/master/Core/Src/main.cpp
...