diff --git a/docs/hardware_2Barometer_8cpp_source.html b/docs/hardware_2Barometer_8cpp_source.html index e0e1a48..eca4a1f 100644 --- a/docs/hardware_2Barometer_8cpp_source.html +++ b/docs/hardware_2Barometer_8cpp_source.html @@ -101,13 +101,14 @@
24
25 /*
26 * TODO: Switch to latest version of library (0.3.9) when we get hardware to verify
-
27 */
-
28 float pressure = static_cast<float>(MS.getPressure() * 0.01 + 26.03);
-
29 float temperature = static_cast<float>(MS.getTemperature() * 0.01);
-
30 float altitude = static_cast<float>(-log(pressure * 0.000987) * (temperature + 273.15) * 29.254);
-
31
-
32 return Barometer(temperature, pressure, altitude);
-
33}
+
27 * Equation derived from https://en.wikipedia.org/wiki/Atmospheric_pressure#Altitude_variation
+
28 */
+
29 float pressure = static_cast<float>(MS.getPressure() * 0.01 + 26.03); // getPressure is in milibars so it's milibars * 0.01?
+
30 float temperature = static_cast<float>(MS.getTemperature() * 0.01); // Celcius
+
31 float altitude = static_cast<float>(-log(pressure * 0.000987) * (temperature + 273.15) * 29.254);
+
32
+
33 return Barometer(temperature, pressure, altitude);
+
34}
ErrorCode
ErrorCode
list of all error codes that can arise
Definition: errors.h:8
NoError
@ NoError
Definition: errors.h:9
MS
MS5611 MS(MS5611_CS)
diff --git a/docs/hardware_2main_8cpp_source.html b/docs/hardware_2main_8cpp_source.html index f257e19..7d52c01 100644 --- a/docs/hardware_2main_8cpp_source.html +++ b/docs/hardware_2main_8cpp_source.html @@ -187,7 +187,7 @@
RocketSystems::log_sink
LogSink & log_sink
Definition: systems.h:49
SerialPatch::println
void println(T t)
Definition: arduino_emulation.h:14
SerialPatch::begin
void begin(int baudrate)
Definition: arduino_emulation.cpp:11
-
begin_systems
void begin_systems(RocketSystems *config)
Initializes the systems, and then creates and starts the thread for each system. If initialization fa...
Definition: systems.cpp:224
+
begin_systems
void begin_systems(RocketSystems *config)
Initializes the systems, and then creates and starts the thread for each system. If initialization fa...
Definition: systems.cpp:242
systems.h
diff --git a/docs/sensor__data_8h_source.html b/docs/sensor__data_8h_source.html index e7ea5cc..375a3cd 100644 --- a/docs/sensor__data_8h_source.html +++ b/docs/sensor__data_8h_source.html @@ -161,9 +161,9 @@
108};
109
115struct Barometer {
-
116 float temperature = 0;
-
117 float pressure = 0;
-
118 float altitude = 0;
+
116 float temperature = 0; // Temperature in Celcius
+
117 float pressure = 0; // Pressure in millibars
+
118 float altitude = 0; // Altitude in meters (above sea level?)
119
120 Barometer() = default;
121 Barometer(float t, float p, float a) : temperature(t), pressure(p), altitude(a) {}
diff --git a/docs/silsim_2main_8cpp_source.html b/docs/silsim_2main_8cpp_source.html index 0221ae6..dda9d8f 100644 --- a/docs/silsim_2main_8cpp_source.html +++ b/docs/silsim_2main_8cpp_source.html @@ -188,7 +188,7 @@
SimulatedRocket::velocity
double velocity
Definition: simulation.h:36
Simulation
Definition: simulation.h:45
VoltageSensor
Definition: sensors.h:58
-
begin_systems
void begin_systems(RocketSystems *config)
Initializes the systems, and then creates and starts the thread for each system. If initialization fa...
Definition: systems.cpp:224
+
begin_systems
void begin_systems(RocketSystems *config)
Initializes the systems, and then creates and starts the thread for each system. If initialization fa...
Definition: systems.cpp:242
systems.h
diff --git a/docs/systems_8cpp.html b/docs/systems_8cpp.html index 3a0409f..fd6603d 100644 --- a/docs/systems_8cpp.html +++ b/docs/systems_8cpp.html @@ -146,7 +146,7 @@

-

Definition at line 190 of file systems.cpp.

+

Definition at line 208 of file systems.cpp.

@@ -169,7 +169,7 @@

Definition at line 224 of file systems.cpp.

+

Definition at line 242 of file systems.cpp.

@@ -199,7 +199,7 @@

-

Definition at line 38 of file systems.cpp.

+

Definition at line 56 of file systems.cpp.

@@ -259,7 +259,7 @@

-

Definition at line 119 of file systems.cpp.

+

Definition at line 137 of file systems.cpp.

@@ -289,7 +289,7 @@

-

Definition at line 99 of file systems.cpp.

+

Definition at line 117 of file systems.cpp.

@@ -319,7 +319,7 @@

-

Definition at line 72 of file systems.cpp.

+

Definition at line 90 of file systems.cpp.

@@ -349,7 +349,7 @@

-

Definition at line 127 of file systems.cpp.

+

Definition at line 145 of file systems.cpp.

@@ -412,7 +412,7 @@

-

Definition at line 63 of file systems.cpp.

+

Definition at line 81 of file systems.cpp.

@@ -442,7 +442,7 @@

-

Definition at line 52 of file systems.cpp.

+

Definition at line 70 of file systems.cpp.

@@ -472,7 +472,7 @@

-

Definition at line 164 of file systems.cpp.

+

Definition at line 182 of file systems.cpp.

@@ -494,7 +494,7 @@

Definition at line 196 of file systems.cpp.

+

Definition at line 214 of file systems.cpp.

diff --git a/docs/systems_8cpp_source.html b/docs/systems_8cpp_source.html index 07f5ab9..2fe23df 100644 --- a/docs/systems_8cpp_source.html +++ b/docs/systems_8cpp_source.html @@ -109,233 +109,251 @@
28}
29
30DECLARE_THREAD(barometer, RocketSystems* arg) {
-
31 while (true) {
-
32 Barometer reading = arg->sensors.barometer.read();
-
33 arg->rocket_data.barometer.update(reading);
-
34 THREAD_SLEEP(6);
-
35 }
-
36}
-
37
-
38DECLARE_THREAD(accelerometers, RocketSystems* arg) {
+
31 // Reject single rogue barometer readings that are very different from the immediately prior reading
+
32 // Will only reject a certain number of readings in a row
+
33 Barometer prev_reading;
+
34 constexpr float altChgThreshold = 200; // meters
+
35 constexpr float presChgThreshold = 500; // milibars
+
36 constexpr float tempChgThreshold = 10; // degrees C
+
37 constexpr unsigned int maxConsecutiveRejects = 3;
+
38 unsigned int rejects = maxConsecutiveRejects; // Always accept first reading
39 while (true) {
-
40#ifdef IS_SUSTAINER
-
41 LowGData lowg = arg->sensors.low_g.read();
-
42 arg->rocket_data.low_g.update(lowg);
-
43#endif
-
44 LowGLSM lowglsm = arg->sensors.low_g_lsm.read();
-
45 arg->rocket_data.low_g_lsm.update(lowglsm);
-
46 HighGData highg = arg->sensors.high_g.read();
-
47 arg->rocket_data.high_g.update(highg);
-
48 THREAD_SLEEP(2);
-
49 }
-
50}
-
51
-
52DECLARE_THREAD(orientation, RocketSystems* arg) {
-
53 while (true) {
-
54 Orientation reading = arg->sensors.orientation.read();
-
55 if (reading.has_data) {
-
56 arg->rocket_data.orientation.update(reading);
-
57 }
-
58
-
59 THREAD_SLEEP(100);
-
60 }
-
61}
-
62
-
63DECLARE_THREAD(magnetometer, RocketSystems* arg) {
-
64 while (true) {
-
65 Magnetometer reading = arg->sensors.magnetometer.read();
-
66 arg->rocket_data.magnetometer.update(reading);
-
67 THREAD_SLEEP(50); //data rate is 155hz so 7 is closest
-
68 }
-
69}
-
70
-
71// Ever device which communicates over i2c is on this thread to avoid interference
- -
73 int i = 0;
-
74
-
75 while (true) {
-
76 if (i % 10 == 0) {
-
77 GPS reading = arg->sensors.gps.read();
-
78 arg->rocket_data.gps.update(reading);
-
79
-
80 FSMState current_state = arg->rocket_data.fsm_state.getRecentUnsync();
-
81 PyroState new_pyro_state = arg->sensors.pyro.tick(current_state, arg->rocket_data.orientation.getRecentUnsync());
-
82 arg->rocket_data.pyro.update(new_pyro_state);
-
83
-
84 Continuity reading2 = arg->sensors.continuity.read();
-
85 arg->rocket_data.continuity.update(reading2);
-
86
-
87 Voltage reading3 = arg->sensors.voltage.read();
-
88 arg->rocket_data.voltage.update(reading3);
-
89 }
-
90
-
91 arg->led.update();
-
92 i += 1;
-
93
-
94 THREAD_SLEEP(10);
-
95 }
-
96}
+
40 Barometer reading = arg->sensors.barometer.read();
+
41 bool is_rogue = std::abs(prev_reading.altitude - reading.altitude) > altChgThreshold;
+
42 //std::abs(prev_reading.pressure - reading.pressure) > presChgThreshold ||
+
43 //std::abs(prev_reading.temperature - reading.temperature) > tempChgThreshold;
+
44 // TODO: Log when we receive a rejection!
+
45 if (is_rogue && rejects++ < maxConsecutiveRejects)
+
46 arg->rocket_data.barometer.update(prev_reading); // Reuse old reading, reject new reading
+
47 else {
+
48 rejects = 0;
+
49 arg->rocket_data.barometer.update(reading);
+
50 prev_reading = reading; // Only update prev_reading with accepted readings
+
51 }
+
52 THREAD_SLEEP(6);
+
53 }
+
54}
+
55
+
56DECLARE_THREAD(accelerometers, RocketSystems* arg) {
+
57 while (true) {
+
58#ifdef IS_SUSTAINER
+
59 LowGData lowg = arg->sensors.low_g.read();
+
60 arg->rocket_data.low_g.update(lowg);
+
61#endif
+
62 LowGLSM lowglsm = arg->sensors.low_g_lsm.read();
+
63 arg->rocket_data.low_g_lsm.update(lowglsm);
+
64 HighGData highg = arg->sensors.high_g.read();
+
65 arg->rocket_data.high_g.update(highg);
+
66 THREAD_SLEEP(2);
+
67 }
+
68}
+
69
+
70DECLARE_THREAD(orientation, RocketSystems* arg) {
+
71 while (true) {
+
72 Orientation reading = arg->sensors.orientation.read();
+
73 if (reading.has_data) {
+
74 arg->rocket_data.orientation.update(reading);
+
75 }
+
76
+
77 THREAD_SLEEP(100);
+
78 }
+
79}
+
80
+
81DECLARE_THREAD(magnetometer, RocketSystems* arg) {
+
82 while (true) {
+
83 Magnetometer reading = arg->sensors.magnetometer.read();
+
84 arg->rocket_data.magnetometer.update(reading);
+
85 THREAD_SLEEP(50); //data rate is 155hz so 7 is closest
+
86 }
+
87}
+
88
+
89// Ever device which communicates over i2c is on this thread to avoid interference
+ +
91 int i = 0;
+
92
+
93 while (true) {
+
94 if (i % 10 == 0) {
+
95 GPS reading = arg->sensors.gps.read();
+
96 arg->rocket_data.gps.update(reading);
97
-
98// This thread has a bit of extra logic since it needs to play a tune exactly once the sustainer ignites
- -
100 FSM fsm{};
-
101 bool already_played_freebird = false;
-
102 while (true) {
-
103 FSMState current_state = arg->rocket_data.fsm_state.getRecentUnsync();
-
104 StateEstimate state_estimate(arg->rocket_data);
-
105
-
106 FSMState next_state = fsm.tick_fsm(current_state, state_estimate);
-
107
-
108 arg->rocket_data.fsm_state.update(next_state);
-
109
-
110 if (current_state == FSMState::STATE_SUSTAINER_IGNITION && !already_played_freebird) {
- -
112 already_played_freebird = true;
-
113 }
-
114
-
115 THREAD_SLEEP(50);
-
116 }
-
117}
-
118
- +
98 FSMState current_state = arg->rocket_data.fsm_state.getRecentUnsync();
+
99 PyroState new_pyro_state = arg->sensors.pyro.tick(current_state, arg->rocket_data.orientation.getRecentUnsync());
+
100 arg->rocket_data.pyro.update(new_pyro_state);
+
101
+
102 Continuity reading2 = arg->sensors.continuity.read();
+
103 arg->rocket_data.continuity.update(reading2);
+
104
+
105 Voltage reading3 = arg->sensors.voltage.read();
+
106 arg->rocket_data.voltage.update(reading3);
+
107 }
+
108
+
109 arg->led.update();
+
110 i += 1;
+
111
+
112 THREAD_SLEEP(10);
+
113 }
+
114}
+
115
+
116// This thread has a bit of extra logic since it needs to play a tune exactly once the sustainer ignites
+ +
118 FSM fsm{};
+
119 bool already_played_freebird = false;
120 while (true) {
-
121 arg->buzzer.tick();
-
122
-
123 THREAD_SLEEP(10);
-
124 }
-
125}
-
126
- -
128 // Orientation initial_orientation = arg->rocket_data.orientation.getRecent();
-
129 // Barometer initial_barom_buf = arg->rocket_data.barometer.getRecent();
-
130 // LowGData initial_accelerometer = arg->rocket_data.low_g.getRecent();
-
131 //yessir.initialize(initial_orientation, initial_barom_buf, initial_accelerations);
-
132 yessir.initialize(arg);
- -
134
-
135 while (true) {
- -
137 yessir.initialize(arg);
- -
139 yessir.should_reinit = false;
-
140 }
-
141 // add the tick update function
-
142 Barometer current_barom_buf = arg->rocket_data.barometer.getRecent();
-
143 Orientation current_orientation = arg->rocket_data.orientation.getRecent();
-
144 HighGData current_accelerometer = arg->rocket_data.high_g.getRecent();
-
145 FSMState FSM_state = arg->rocket_data.fsm_state.getRecent();
-
146 Acceleration current_accelerations = {
-
147 .ax = current_accelerometer.ax,
-
148 .ay = current_accelerometer.ay,
-
149 .az = current_accelerometer.az
-
150 };
-
151 float dt = pdTICKS_TO_MS(xTaskGetTickCount() - last) / 1000.0f;
-
152
-
153 yessir.tick(dt, 13.0, current_barom_buf, current_accelerations, current_orientation, FSM_state);
-
154 KalmanData current_state = yessir.getState();
-
155
-
156 arg->rocket_data.kalman.update(current_state);
-
157
-
158 last = xTaskGetTickCount();
-
159
-
160 THREAD_SLEEP(50);
-
161 }
-
162}
-
163
- -
165 while (true) {
-
166 arg->tlm.transmit(arg->rocket_data, arg->led);
-
167
-
168 FSMState current_state = arg->rocket_data.fsm_state.getRecentUnsync();
-
169 if (current_state == FSMState(STATE_IDLE)) {
-
170 TelemetryCommand command;
-
171 if (arg->tlm.receive(&command, 2000)) {
-
172 if(command.valid()) {
- -
174 switch(command.command) {
- -
176 yessir.should_reinit = true;
-
177 break;
-
178 default:
-
179 break;
-
180 }
-
181 }
-
182
-
183 }
-
184 } else {
-
185 THREAD_SLEEP(1);
-
186 }
-
187 }
-
188}
-
189
-
190#define INIT_SYSTEM(s) do { ErrorCode code = (s).init(); if (code != NoError) { return code; } } while (0)
-
191
- -
197 gpioDigitalWrite(LED_ORANGE, HIGH);
-
198#ifdef IS_SUSTAINER
- - -
201#endif
- - - - - - - - - - - - -
214 gpioDigitalWrite(LED_ORANGE, LOW);
-
215 return NoError;
-
216}
-
217#undef INIT_SYSTEM
-
218
-
219
-
224[[noreturn]] void begin_systems(RocketSystems* config) {
-
225 Serial.println("Starting Systems...");
-
226 ErrorCode init_error_code = init_systems(*config);
-
227 if (init_error_code != NoError) {
-
228 // todo some message probably
-
229 while (true) {
-
230 Serial.print("Had Error: ");
-
231 Serial.print((int) init_error_code);
-
232 Serial.print("\n");
-
233 Serial.flush();
-
234 update_error_LED(init_error_code);
-
235 }
-
236 }
+
121 FSMState current_state = arg->rocket_data.fsm_state.getRecentUnsync();
+
122 StateEstimate state_estimate(arg->rocket_data);
+
123
+
124 FSMState next_state = fsm.tick_fsm(current_state, state_estimate);
+
125
+
126 arg->rocket_data.fsm_state.update(next_state);
+
127
+
128 if (current_state == FSMState::STATE_SUSTAINER_IGNITION && !already_played_freebird) {
+ +
130 already_played_freebird = true;
+
131 }
+
132
+
133 THREAD_SLEEP(50);
+
134 }
+
135}
+
136
+ +
138 while (true) {
+
139 arg->buzzer.tick();
+
140
+
141 THREAD_SLEEP(10);
+
142 }
+
143}
+
144
+ +
146 // Orientation initial_orientation = arg->rocket_data.orientation.getRecent();
+
147 // Barometer initial_barom_buf = arg->rocket_data.barometer.getRecent();
+
148 // LowGData initial_accelerometer = arg->rocket_data.low_g.getRecent();
+
149 //yessir.initialize(initial_orientation, initial_barom_buf, initial_accelerations);
+
150 yessir.initialize(arg);
+ +
152
+
153 while (true) {
+ +
155 yessir.initialize(arg);
+ +
157 yessir.should_reinit = false;
+
158 }
+
159 // add the tick update function
+
160 Barometer current_barom_buf = arg->rocket_data.barometer.getRecent();
+
161 Orientation current_orientation = arg->rocket_data.orientation.getRecent();
+
162 HighGData current_accelerometer = arg->rocket_data.high_g.getRecent();
+
163 FSMState FSM_state = arg->rocket_data.fsm_state.getRecent();
+
164 Acceleration current_accelerations = {
+
165 .ax = current_accelerometer.ax,
+
166 .ay = current_accelerometer.ay,
+
167 .az = current_accelerometer.az
+
168 };
+
169 float dt = pdTICKS_TO_MS(xTaskGetTickCount() - last) / 1000.0f;
+
170
+
171 yessir.tick(dt, 13.0, current_barom_buf, current_accelerations, current_orientation, FSM_state);
+
172 KalmanData current_state = yessir.getState();
+
173
+
174 arg->rocket_data.kalman.update(current_state);
+
175
+
176 last = xTaskGetTickCount();
+
177
+
178 THREAD_SLEEP(50);
+
179 }
+
180}
+
181
+ +
183 while (true) {
+
184 arg->tlm.transmit(arg->rocket_data, arg->led);
+
185
+
186 FSMState current_state = arg->rocket_data.fsm_state.getRecentUnsync();
+
187 if (current_state == FSMState(STATE_IDLE)) {
+
188 TelemetryCommand command;
+
189 if (arg->tlm.receive(&command, 2000)) {
+
190 if(command.valid()) {
+ +
192 switch(command.command) {
+ +
194 yessir.should_reinit = true;
+
195 break;
+
196 default:
+
197 break;
+
198 }
+
199 }
+
200
+
201 }
+
202 } else {
+
203 THREAD_SLEEP(1);
+
204 }
+
205 }
+
206}
+
207
+
208#define INIT_SYSTEM(s) do { ErrorCode code = (s).init(); if (code != NoError) { return code; } } while (0)
+
209
+ +
215 gpioDigitalWrite(LED_ORANGE, HIGH);
+
216#ifdef IS_SUSTAINER
+ + +
219#endif
+ + + + + + + + + + + + +
232 gpioDigitalWrite(LED_ORANGE, LOW);
+
233 return NoError;
+
234}
+
235#undef INIT_SYSTEM
+
236
237
-
238#ifdef IS_SUSTAINER
-
239 START_THREAD(orientation, SENSOR_CORE, config, 10);
-
240#endif
-
241
-
242 START_THREAD(logger, DATA_CORE, config, 15);
-
243 START_THREAD(accelerometers, SENSOR_CORE, config, 13);
-
244 START_THREAD(barometer, SENSOR_CORE, config, 12);
-
245 START_THREAD(i2c, SENSOR_CORE, config, 9);
-
246 START_THREAD(magnetometer, SENSOR_CORE, config, 11);
-
247 START_THREAD(kalman, SENSOR_CORE, config, 7);
-
248 START_THREAD(fsm, SENSOR_CORE, config, 8);
-
249 START_THREAD(buzzer, SENSOR_CORE, config, 6);
-
250 START_THREAD(telemetry, SENSOR_CORE, config, 15);
-
251
- -
253
-
254 while (true) {
-
255 THREAD_SLEEP(1000);
-
256 Serial.print("Running (Log Latency: ");
- -
258 Serial.println(")");
-
259 }
-
260}
-
261
-
262//void vApplicationStackOverflowHook(TaskHandle_t xTask, signed char* pcTaskName){
-
263// Serial.println("OVERFLOW");
-
264// Serial.println((char*)pcTaskName);
-
265//}
+
242[[noreturn]] void begin_systems(RocketSystems* config) {
+
243 Serial.println("Starting Systems...");
+
244 ErrorCode init_error_code = init_systems(*config);
+
245 if (init_error_code != NoError) {
+
246 // todo some message probably
+
247 while (true) {
+
248 Serial.print("Had Error: ");
+
249 Serial.print((int) init_error_code);
+
250 Serial.print("\n");
+
251 Serial.flush();
+
252 update_error_LED(init_error_code);
+
253 }
+
254 }
+
255
+
256#ifdef IS_SUSTAINER
+
257 START_THREAD(orientation, SENSOR_CORE, config, 10);
+
258#endif
+
259
+
260 START_THREAD(logger, DATA_CORE, config, 15);
+
261 START_THREAD(accelerometers, SENSOR_CORE, config, 13);
+
262 START_THREAD(barometer, SENSOR_CORE, config, 12);
+
263 START_THREAD(i2c, SENSOR_CORE, config, 9);
+
264 START_THREAD(magnetometer, SENSOR_CORE, config, 11);
+
265 START_THREAD(kalman, SENSOR_CORE, config, 7);
+
266 START_THREAD(fsm, SENSOR_CORE, config, 8);
+
267 START_THREAD(buzzer, SENSOR_CORE, config, 6);
+
268 START_THREAD(telemetry, SENSOR_CORE, config, 15);
+
269
+ +
271
+
272 while (true) {
+
273 THREAD_SLEEP(1000);
+
274 Serial.print("Running (Log Latency: ");
+ +
276 Serial.println(")");
+
277 }
+
278}
+
279
+
280//void vApplicationStackOverflowHook(TaskHandle_t xTask, signed char* pcTaskName){
+
281// Serial.println("OVERFLOW");
+
282// Serial.println((char*)pcTaskName);
+
283//}
SerialPatch Serial
Sound free_bird[FREE_BIRD_LENGTH]
free bird solo song, to be played on startup/ second stage iginition
Definition: buzzer.cpp:98
#define FREE_BIRD_LENGTH
Definition: buzzer.h:42
@@ -373,6 +391,7 @@
Barometer read()
Reads the pressure and temperature from the MS5611.
Definition: Barometer.cpp:22
data from the barometer
Definition: sensor_data.h:115
+
float altitude
Definition: sensor_data.h:118
void play_tune(Sound *tune, uint32_t length)
starts playing a new song
Definition: buzzer.cpp:12
void tick()
public interface to tick the buzzer
Definition: buzzer.cpp:22
Continuity read()
Reads the value of the ADC.
Definition: Continuity.cpp:24
@@ -434,9 +453,9 @@
CommandType command
Voltage read()
Reads the value of the given analog pin and converts it to a battery voltage with the assumption that...
Definition: Voltage.cpp:21
data about battery voltage
Definition: sensor_data.h:139
-
#define INIT_SYSTEM(s)
Definition: systems.cpp:190
-
void begin_systems(RocketSystems *config)
Initializes the systems, and then creates and starts the thread for each system. If initialization fa...
Definition: systems.cpp:224
-
ErrorCode init_systems(RocketSystems &systems)
Initializes all systems in order, returning early if a system's initialization process errors out....
Definition: systems.cpp:196
+
#define INIT_SYSTEM(s)
Definition: systems.cpp:208
+
void begin_systems(RocketSystems *config)
Initializes the systems, and then creates and starts the thread for each system. If initialization fa...
Definition: systems.cpp:242
+
ErrorCode init_systems(RocketSystems &systems)
Initializes all systems in order, returning early if a system's initialization process errors out....
Definition: systems.cpp:214
DECLARE_THREAD(logger, RocketSystems *arg)
These are all the functions that will run in each task Each function has a while (true) loop within t...
Definition: systems.cpp:19
diff --git a/docs/systems_8h.html b/docs/systems_8h.html index 9b7e119..13db60a 100644 --- a/docs/systems_8h.html +++ b/docs/systems_8h.html @@ -134,7 +134,7 @@

Definition at line 224 of file systems.cpp.

+

Definition at line 242 of file systems.cpp.

diff --git a/docs/systems_8h_source.html b/docs/systems_8h_source.html index 8a43d26..e344d70 100644 --- a/docs/systems_8h_source.html +++ b/docs/systems_8h_source.html @@ -173,7 +173,7 @@
Pyro pyro
Definition: systems.h:37
MagnetometerSensor magnetometer
Definition: systems.h:36
-
void begin_systems(RocketSystems *config)
Initializes the systems, and then creates and starts the thread for each system. If initialization fa...
Definition: systems.cpp:224
+
void begin_systems(RocketSystems *config)
Initializes the systems, and then creates and starts the thread for each system. If initialization fa...
Definition: systems.cpp:242