STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
test_flight_state.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4
5#include "flight_state.h"
6
7#define CHECK(condition) \
8 do { \
9 if (!(condition)) { \
10 fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, #condition); \
11 exit(1); \
12 } \
13 } while (0)
14
15/* Every (state, event) pair against the drawio diagram. */
16static void test_table(void) {
17 enum { S = FLIGHT_STATE_COUNT, E = FLIGHT_EVENT_COUNT };
18 flight_state_t want[S][E];
19 for (int s = 0; s < S; ++s) {
20 for (int e = 0; e < E; ++e) {
21 want[s][e] = (flight_state_t)s;
22 }
23 }
29 for (int s = 0; s < S; ++s) {
30 for (int e = 0; e < E; ++e) {
32 want[s][e]);
33 }
34 }
38}
39
40/* At this stage the log starts at ARMED (no launch detection yet). */
49
50static void test_names(void) {
51 CHECK(strcmp(flight_state_name(FLIGHT_ARMED), "ARMED") == 0);
52 CHECK(strcmp(flight_state_name(FLIGHT_RECOVERY), "RECOVERY") == 0);
53 CHECK(strcmp(flight_state_name(FLIGHT_STATE_COUNT), "?") == 0);
54}
55
56int main(void) {
57 test_table();
59 test_names();
60 puts("3 flight state test groups passed");
61 return 0;
62}
flight_state_t
@ FLIGHT_RECOVERY
@ FLIGHT_SELF_TEST
@ FLIGHT_ARMED
@ FLIGHT_IDLE
@ FLIGHT_LAUNCHED
@ FLIGHT_STATE_COUNT
flight_event_t
@ FLIGHT_EV_LAUNCH_DETECTED
@ FLIGHT_EV_ARM
@ FLIGHT_EV_UNARM
@ FLIGHT_EV_APOGEE_DETECTED
@ FLIGHT_EV_SELF_TEST_DONE
@ FLIGHT_EVENT_COUNT
flight_state_t flight_state_next(flight_state_t state, flight_event_t event)
Definition flight_state.c:3
const char * flight_state_name(flight_state_t state)
bool flight_state_logs_to_emmc(flight_state_t state)
int main()
static void test_logging_states(void)
static void test_table(void)
#define CHECK(condition)
static void test_names(void)