55
66#include " SystemManager.hpp"
77
8+ #include < iostream>
9+
10+ #include " FreeRTOS.h"
11+ #include " GroundStationCommunication.hpp"
12+ #include " TelemetryManager.hpp"
13+ #include " cmsis_os.h"
814#include " drivers_config.hpp"
915#include " independent_watchdog.h"
1016#include " rcreceiver_datatypes.h"
1117#include " sbus_defines.h"
1218#include " sbus_receiver.hpp"
1319#include " tim.h"
14- #include " GroundStationCommunication.hpp"
15- #include " TelemetryManager.hpp"
16- #include " GroundStationCommunication.hpp"
17- #include " TelemetryManager.hpp"
18- #include " cmsis_os.h"
19- #include " FreeRTOS.h"
20- #include < iostream>
2120
2221extern " C" {
23- #include " app_fatfs.h"
24- #include " log_util.h"
22+ #include " app_fatfs.h"
23+ #include " log_util.h"
2524}
2625
27- #define TIMEOUT_CYCLES 250000 // 25k = 1 sec fro testing 10/14/2023 => 250k = 10 sec
28- #define TIMOUT_MS 10000 // 10 sec
26+ #define TIMEOUT_CYCLES 250000 // 25k = 1 sec fro testing 10/14/2023 => 250k = 10 sec
27+ #define TIMOUT_MS 10000 // 10 sec
2928
3029// 0 - AM, 1 - TM, 2 - PM
3130static TaskHandle_t taskHandles[3 ];
@@ -52,6 +51,7 @@ SystemManager::SystemManager()
5251 TMStateData stateData;
5352
5453 // values to be assigned to stateData
54+ // THIS IS JUST A PLACEHOLDER, THE MEMORY ADDRESSES NEED TO LIVE LONGER THAN THE SM CONSTRUCTOR
5555 int32_t alt = 0 ;
5656 int32_t lat = 0 ;
5757 int32_t lon = 0 ;
@@ -69,41 +69,41 @@ SystemManager::SystemManager()
6969 float yawspeed = 0 ;
7070
7171 // use the memory address of the above, since stateData uses pointers
72- stateData.alt = &alt;
73- stateData.lat = ⪫
74- stateData.lon = &lon;
75- stateData.relative_alt = &relative_alt;
76- stateData.vx = &vx;
77- stateData.vy = &vy;
78- stateData.vz = &vz;
79- stateData.hdg = &hdg;
80- stateData.time_boot_ms = &time_boot_ms;
81- stateData.roll = &roll;
82- stateData.pitch = &pitch;
83- stateData.yaw = &yaw;
84- stateData.rollspeed = &rollspeed;
85- stateData.pitchspeed = &pitchspeed;
86- stateData.yawspeed = &yawspeed;
72+ stateData.set_alt ( &alt) ;
73+ stateData.set_lat ( &lat) ;
74+ stateData.set_lon ( &lon) ;
75+ stateData.set_relative_alt ( &relative_alt) ;
76+ stateData.set_vx ( &vx) ;
77+ stateData.set_vy ( &vy) ;
78+ stateData.set_vz ( &vz) ;
79+ stateData.set_hdg ( &hdg) ;
80+ stateData.set_time_boot_ms ( &time_boot_ms) ;
81+ stateData.set_roll ( &roll) ;
82+ stateData.set_pitch ( &pitch) ;
83+ stateData.set_yaw ( &yaw) ;
84+ stateData.set_rollspeed ( &rollspeed) ;
85+ stateData.set_pitchspeed ( &pitchspeed) ;
86+ stateData.set_yawspeed ( &yawspeed) ;
8787
8888 MAV_STATE mavState = MAV_STATE::MAV_STATE_STANDBY;
8989 MAV_MODE_FLAG mavMode = MAV_MODE_FLAG::MAV_MODE_FLAG_MANUAL_INPUT_ENABLED;
9090
91- // Creating parameters for the GroundStationCommunication that will be passed to telemetryManager
91+ // Creating parameters for the GroundStationCommunication that will be passed to
92+ // telemetryManager
9293 TMCircularBuffer DMAReceiveBuffer = *(new TMCircularBuffer (rfd900_circular_buffer));
9394
94-
9595 // the buffer that stores non_routine/low_priority bytes (ex. Battery Voltage) to be sent to the
9696 // ground station.
97- uint8_t * lowPriorityTransmitBuffer = new uint8_t [RFD900_BUF_SIZE];
97+ uint8_t * lowPriorityTransmitBuffer = new uint8_t [RFD900_BUF_SIZE];
9898
9999 // the buffer that stores routine/high_priority bytes (ex. heading, general state data) to be
100100 // sent to the ground station.
101- uint8_t * highPriorityTransmitBuffer = new uint8_t [RFD900_BUF_SIZE];
101+ uint8_t * highPriorityTransmitBuffer = new uint8_t [RFD900_BUF_SIZE];
102102
103- GroundStationCommunication GSC = *(new GroundStationCommunication (DMAReceiveBuffer, lowPriorityTransmitBuffer,
104- highPriorityTransmitBuffer, RFD900_BUF_SIZE));
103+ GroundStationCommunication GSC = *(new GroundStationCommunication (
104+ DMAReceiveBuffer, lowPriorityTransmitBuffer, highPriorityTransmitBuffer, RFD900_BUF_SIZE));
105105
106- // the buffer that stores the bytes received from the ground station.
106+ // the buffer that stores the bytes received from the ground station.
107107 MavlinkTranslator MT;
108108
109109 this ->telemetryManager = new TelemetryManager (stateData, mavState, mavMode, GSC, MT);
@@ -112,14 +112,14 @@ SystemManager::SystemManager()
112112 // REGULAR INTERVAL AS IT DEALS WITH MESSAGE DECODING AND LOW PRIORITY DATA TRANSMISSION
113113}
114114
115-
116- // wrapper functions are needed as FreeRTOS xTaskCreate function does not accept functions that have "this" pointers
117- void SystemManager::attitudeManagerTaskWrapper (void * pvParameters){
118- SystemManager *systemManagerInstance = static_cast <SystemManager *>(pvParameters);
115+ // wrapper functions are needed as FreeRTOS xTaskCreate function does not accept functions that have
116+ // "this" pointers
117+ void SystemManager::attitudeManagerTaskWrapper (void * pvParameters) {
118+ SystemManager *systemManagerInstance = static_cast <SystemManager *>(pvParameters);
119119 systemManagerInstance->attitudeManagerTask ();
120120}
121121
122- void SystemManager::telemetryManagerTaskWrapper (void * pvParameters){
122+ void SystemManager::telemetryManagerTaskWrapper (void * pvParameters) {
123123 SystemManager *systemManagerInstance = static_cast <SystemManager *>(pvParameters);
124124 systemManagerInstance->telemetryManagerTask ();
125125}
@@ -129,13 +129,13 @@ void SystemManager::pathManagerTaskWrapper(void *pvParameters) {
129129 systemManagerInstance->pathManagerTask ();
130130}
131131
132- void SystemManager::systemManagerTask (){
132+ void SystemManager::systemManagerTask () {
133133 TickType_t xNextWakeTime = xTaskGetTickCount ();
134134 uint16_t frequency = 5 ;
135135
136- for (;;){
136+ for (;;) {
137137 printf (" SM called\r\n " );
138- HAL_GPIO_TogglePin (GPIOB, GPIO_PIN_7); // toggle led light for testing
138+ HAL_GPIO_TogglePin (GPIOB, GPIO_PIN_7); // toggle led light for testing
139139
140140 this ->rcInputs_ = rcController_->GetRCControl ();
141141
@@ -177,42 +177,42 @@ void SystemManager::systemManagerTask(){
177177 this ->invertedRollMotorChannel_ .set (SBUS_MAX / 2 );
178178 }
179179
180- vTaskDelayUntil (&xNextWakeTime, 1000 / frequency);
180+ vTaskDelayUntil (&xNextWakeTime, 1000 / frequency);
181181 }
182182}
183183
184- void SystemManager::attitudeManagerTask (){
184+ void SystemManager::attitudeManagerTask () {
185185 TickType_t xNextWakeTime = xTaskGetTickCount ();
186186 uint16_t frequency = 5 ;
187187
188- for (;;){
189- // call AM
188+ for (;;) {
189+ // call AM
190190
191191 printf (" AM called\r\n " );
192- HAL_GPIO_TogglePin (GPIOC, GPIO_PIN_7); // toggle led light for testing
193- vTaskDelayUntil (&xNextWakeTime, 1000 / frequency);
192+ HAL_GPIO_TogglePin (GPIOC, GPIO_PIN_7); // toggle led light for testing
193+ vTaskDelayUntil (&xNextWakeTime, 1000 / frequency);
194194 }
195195}
196196
197- void SystemManager::telemetryManagerTask (){
197+ void SystemManager::telemetryManagerTask () {
198198 TickType_t xNextWakeTime = xTaskGetTickCount ();
199199 uint16_t frequency = 5 ;
200200
201- for (;;){
202- // call TM
201+ for (;;) {
202+ // call TM
203203
204204 printf (" TM called\r\n " );
205- HAL_GPIO_TogglePin (GPIOA, GPIO_PIN_9); // toggle led light for testing
206- vTaskDelayUntil (&xNextWakeTime, 1000 / frequency);
205+ HAL_GPIO_TogglePin (GPIOA, GPIO_PIN_9); // toggle led light for testing
206+ vTaskDelayUntil (&xNextWakeTime, 1000 / frequency);
207207 }
208208}
209209
210- void SystemManager::pathManagerTask (){
210+ void SystemManager::pathManagerTask () {
211211 TickType_t xNextWakeTime = xTaskGetTickCount ();
212212 uint16_t frequency = 5 ;
213213
214- for (;;){
215- // call PM
214+ for (;;) {
215+ // call PM
216216
217217 printf (" PM called\r\n " );
218218 vTaskDelayUntil (&xNextWakeTime, 1000 / frequency);
@@ -226,14 +226,18 @@ void SystemManager::startSystemManager() {
226226 if (MX_FATFS_Init () != APP_OK) {
227227 Error_Handler ();
228228 }
229- logInit ();
230-
231- // BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, const char * const pcName, configSTACK_DEPTH_TYPE usStackDepth, void * pvParameters, UBaseType_t uxPriority, TaskHandle_t * pxCreatedTask );
232- // function's name description size of stack to allocate parameters for task priority handler
229+ logInit ();
230+
231+ // BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, const char * const pcName,
232+ // configSTACK_DEPTH_TYPE usStackDepth, void * pvParameters, UBaseType_t uxPriority,
233+ // TaskHandle_t * pxCreatedTask );
234+ // function's name description size of
235+ // stack to allocate parameters for task priority
236+ // handler
233237 xTaskCreate (attitudeManagerTaskWrapper, " AM TASK" , 800U , this , osPriorityNormal, taskHandles);
234- xTaskCreate (telemetryManagerTaskWrapper, " TM TASK" , 800U , this , osPriorityNormal, taskHandles + 1 );
238+ xTaskCreate (telemetryManagerTaskWrapper, " TM TASK" , 800U , this , osPriorityNormal,
239+ taskHandles + 1 );
235240 // xTaskCreate(pathManagerTaskWrapper, "PM TASK", 800U, this, osPriorityNormal, taskHandles +2);
236241
237242 systemManagerTask ();
238-
239243}
0 commit comments