types/
mailbox.rs

1//! All mailbox related types.
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
7pub enum MailboxMessageType {
8    Log,
9    Image,
10    GPTelemetry,
11    GNCTelemetry,
12    TargetFound,
13    Error,
14}
15
16#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
17pub struct MailboxMessage {
18    pub msg_type: MailboxMessageType,
19    pub data: Value,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct Image {
24    pub title: String,
25    pub file_path: String,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct GPTelemetry {
30    // General-Purpose Telemetry
31    pub header: String,
32    pub content: String,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct GNCTelemetry {
37    pub header: String,
38    pub lat: f64,
39    pub long: f64,
40    pub alt: f64,
41    pub heading: f64,
42    pub time: f64, // Assuming GNC sends us the time from its RTC, we can generate timestamps here if that does not work.
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct Log {
47    pub timestamp: i64,
48    pub content: String,
49}