-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPayloadStructs.h
More file actions
136 lines (114 loc) · 4.25 KB
/
Copy pathPayloadStructs.h
File metadata and controls
136 lines (114 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/** @file PayloadStructs.h
Structs for compound message types.
*/
#ifndef PayloadStructs_h
#define PayloadStructs_h
#include <Arduino.h>
/** An Altitude message. */
struct altitudeMessage {
float sealevel; /**< Altitude above sea level. */
float surface; /**< Surface altitude at current position. */
} __attribute__((packed));
/** An Apsides message. */
struct apsidesMessage {
float periapsis; /**< Current vessel's orbital periapsis. */
float apoapsis; /**< Current vessel's orbital apoapsis. */
} __attribute__((packed));
/** An Apsides Time message. */
struct apsidesTimeMessage {
int32_t periapsis; /** Time until the current vessel's orbital periapsis, in seconds. */
int32_t apoapsis; /** Time until the current vessel's orbital apoapsis, in seconds. */
} __attribute__((packed));
/** A Resource message.
All resource messages use this struct for sending data. */
struct resourceMessage {
float total; /**< Maximum capacity of the resource. */
float available; /**< Current resource level. */
} __attribute__((packed));
/** A Velocity message. */
struct velocityMessage {
float orbital; /**< Orbital velocity. */
float surface; /**< Surface velocity. */
float vertical; /**< Vertical velocity. */
} __attribute__((packed));
/** A Target information message. */
struct targetMessage {
float distance; /**< Distance to target. */
float velocity; /**< Velocity relative to target. */
} __attribute__((packed));
/** An Airspeed information message. */
struct airspeedMessage {
float IAS; /**< Indicated airspeed. */
float mach; /**< Mach number. */
} __attribute__((packed));
/** A vessel rotation message.
This struct contains information about vessel rotation commands. */
struct rotationMessage {
int16_t pitch; /**< Vessel pitch. */
int16_t roll; /**< Vessel roll. */
int16_t yaw; /**< Vessel yaw. */
/** The mask indicates which elements are intentionally set. Unset elements
should be ignored. It should be one or more of:
- 1: pitch
- 2: roll
- 4: yaw
*/
byte mask;
} __attribute__((packed));
/** A vessel translation message.
This struct contains information about vessel translation commands. */
struct translationMessage {
int16_t X; /**< Translation along the X axis. */
int16_t Y; /**< Translation along the Y axis. */
int16_t Z; /**< Translation along the Z axis. */
/** The mask indicates which elements are intentionally set. Unset elements
should be ignored. It should be one or more of:
- 1: X
- 2: Y
- 4: Z
*/
byte mask;
} __attribute__((packed));
/** A wheel control message.
This sturct contains information about wheel steering and throttle. */
struct wheelMessage {
int16_t steer; /**< Wheel steer. */
int16_t throttle; /**< Wheel throttle. */
/** The mask indicates which elements are intentionally set. Unset elements
should be ignored. It should be one or more of:
- 1: steer
- 2: throttle
*/
byte mask;
} __attribute__((packed));
// Message parsing functions
/** Parse a message containing Altitude data.
@param msg The byte array of the message body.
@returns altitudeMessage A formatted altitudeMessage struct.
*/
altitudeMessage parseAltitude(byte msg[]);
/** Parse a message containing Apsides data.
@returns apsidesMessage A formatted apsidesMessage struct.
*/
apsidesMessage parseApsides(byte msg[]);
/** Parse a message containing Apsides Time data.
@returns apsidesTimeMessage A formatted apsidesTimeMessage struct.
*/
apsidesTimeMessage parseApsidesTime(byte msg[]);
/** Parse a message countaining Resource data.
@returns resourceMessage A formatted resourceMessage struct.
*/
resourceMessage parseResource(byte msg[]);
/** Parse a message containing Velocity data.
@returns velocityMessage A formatted velocityMessage struct.
*/
velocityMessage parseVelocity(byte msg[]);
/** Parse a message containing Target data.
@returns targetMessage A formatted targetMessage struct.
*/
targetMessage parseTarget(byte msg[]);
/** Parse a message containing Airspeed data.
@returns airspeedMessage a formatted airspeedMessage struct.
*/
airspeedMessage parseAirspeed(byte msg[]);
#endif