{
    "version": 1,
    "structs": {
        "Telemetry::GroundStation::SensorData": {
            "port": 3001,
            "kind": "struct",
            "type": "Telemetry::GroundStation::SensorData",
            "fields": [
                {
                    "name": "gnss_data",
                    "kind": "struct",
                    "type": "Telemetry::GroundStation::GNSS_DATA",
                    "fields": [
                        {
                            "name": "data_valid",
                            "kind": "primitive",
                            "type": "unsigned char",
                            "format_string": "<B"
                        },
                        {
                            "name": "numSV",
                            "kind": "primitive",
                            "type": "unsigned char",
                            "format_string": "<B"
                        },
                        {
                            "name": "lat",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "lon",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "hMSL",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "gSpeed",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "headMot",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "hAcc",
                            "kind": "primitive",
                            "type": "unsigned int",
                            "format_string": "<I"
                        },
                        {
                            "name": "vAcc",
                            "kind": "primitive",
                            "type": "unsigned int",
                            "format_string": "<I"
                        },
                        {
                            "name": "velN",
                            "kind": "primitive",
                            "type": "int",
                            "format_string": "<i"
                        },
                        {
                            "name": "velE",
                            "kind": "primitive",
                            "type": "int",
                            "format_string": "<i"
                        },
                        {
                            "name": "velD",
                            "kind": "primitive",
                            "type": "int",
                            "format_string": "<i"
                        }
                    ],
                    "format_string": "<BBdddddIIiii"
                },
                {
                    "name": "bme_data",
                    "kind": "struct",
                    "type": "Telemetry::GroundStation::BME280_DATA",
                    "fields": [
                        {
                            "name": "valid",
                            "kind": "primitive",
                            "type": "unsigned char",
                            "format_string": "<B"
                        },
                        {
                            "name": "temperature",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "pressure",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "humidity",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "timestamp",
                            "kind": "primitive",
                            "type": "unsigned int",
                            "format_string": "<I"
                        }
                    ],
                    "format_string": "<BfffI"
                },
                {
                    "name": "ms_data",
                    "kind": "struct",
                    "type": "Telemetry::GroundStation::MS5611_DATA",
                    "fields": [
                        {
                            "name": "valid",
                            "kind": "primitive",
                            "type": "unsigned char",
                            "format_string": "<B"
                        },
                        {
                            "name": "temperature",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "pressure",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "timestamp",
                            "kind": "primitive",
                            "type": "unsigned int",
                            "format_string": "<I"
                        }
                    ],
                    "format_string": "<BffI"
                },
                {
                    "name": "icm_data",
                    "kind": "struct",
                    "type": "Telemetry::Shared::ImuData",
                    "fields": [
                        {
                            "name": "temperature_C",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "gyro",
                            "kind": "struct",
                            "type": "Telemetry::Shared::GyroData",
                            "fields": [
                                {
                                    "name": "gyro_x",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "gyro_y",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "gyro_z",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                }
                            ],
                            "format_string": "<fff"
                        },
                        {
                            "name": "acc",
                            "kind": "struct",
                            "type": "Telemetry::Shared::AccelerationData",
                            "fields": [
                                {
                                    "name": "acc_x_m_per_ss",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "acc_y_m_per_ss",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "acc_z_m_per_ss",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                }
                            ],
                            "format_string": "<fff"
                        },
                        {
                            "name": "timestamp",
                            "kind": "primitive",
                            "type": "unsigned long",
                            "format_string": "<L"
                        }
                    ],
                    "format_string": "<fffffffL"
                },
                {
                    "name": "mmc_data",
                    "kind": "struct",
                    "type": "Telemetry::Shared::MagnetometerData",
                    "fields": [
                        {
                            "name": "mag_x_gauss",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "mag_y_gauss",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "mag_z_gauss",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        }
                    ],
                    "format_string": "<fff"
                },
                {
                    "name": "stim_data",
                    "kind": "struct",
                    "type": "Telemetry::GroundStation::STIM377H_DATA",
                    "fields": [
                        {
                            "name": "acc",
                            "kind": "struct",
                            "type": "Telemetry::Shared::AccelerationData",
                            "fields": [
                                {
                                    "name": "acc_x_m_per_ss",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "acc_y_m_per_ss",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "acc_z_m_per_ss",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                }
                            ],
                            "format_string": "<fff"
                        },
                        {
                            "name": "gyro",
                            "kind": "struct",
                            "type": "Telemetry::Shared::GyroData",
                            "fields": [
                                {
                                    "name": "gyro_x",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "gyro_y",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "gyro_z",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                }
                            ],
                            "format_string": "<fff"
                        }
                    ],
                    "format_string": "<ffffff"
                },
                {
                    "name": "pressure_data",
                    "kind": "struct",
                    "type": "Telemetry::GroundStation::PressureData",
                    "fields": [
                        {
                            "name": "flotation_pressure",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "separation_pressure",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        }
                    ],
                    "format_string": "<ff"
                }
            ],
            "format_string": "<BBdddddIIiiiBfffIBffIfffffffLfffffffffff"
        },
        "Telemetry::GroundStation::KalmanData": {
            "port": 3002,
            "kind": "struct",
            "type": "Telemetry::GroundStation::KalmanData",
            "fields": [
                {
                    "name": "altitude",
                    "kind": "primitive",
                    "type": "double",
                    "format_string": "<d"
                },
                {
                    "name": "velocity",
                    "kind": "primitive",
                    "type": "double",
                    "format_string": "<d"
                }
            ],
            "format_string": "<dd"
        },
        "Telemetry::GroundStation::SystemStatus": {
            "port": 3003,
            "kind": "struct",
            "type": "Telemetry::GroundStation::SystemStatus",
            "fields": [
                {
                    "name": "actuators",
                    "kind": "struct",
                    "type": "Telemetry::GroundStation::ActuatorStatus",
                    "fields": [
                        {
                            "name": "separation_filling_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "flotation_filling_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "flotation_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "separation_servo_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        }
                    ],
                    "format_string": "<????"
                },
                {
                    "name": "sensors",
                    "kind": "struct",
                    "type": "Telemetry::GroundStation::SensorStatus",
                    "fields": [
                        {
                            "name": "bme_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "ms_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "gnss_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "icm_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "mmc_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "stim_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "pressure_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        }
                    ],
                    "format_string": "<???????"
                },
                {
                    "name": "hardware",
                    "kind": "struct",
                    "type": "Telemetry::GroundStation::HardwareStatus",
                    "fields": [
                        {
                            "name": "pcan1_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "pcan2_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "networking_thread_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "kalman_thread_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "sensor_thread_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "fsm_thread_online",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        }
                    ],
                    "format_string": "<??????"
                },
                {
                    "name": "current_state",
                    "kind": "enum",
                    "type": "STATE_NAME",
                    "format_string": "<I"
                }
            ],
            "format_string": "<?????????????????I"
        },
        "Telemetry::GroundStation::BMS_Data": {
            "port": 6967,
            "kind": "struct",
            "type": "Telemetry::GroundStation::BMS_Data",
            "fields": [
                {
                    "name": "charger",
                    "kind": "struct",
                    "type": "ChargerData",
                    "fields": [
                        {
                            "name": "vac",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "vbat",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "vsys",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "iac",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "ibat",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "temperature",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "charging",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "power_good",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "faults",
                            "kind": "primitive",
                            "type": "unsigned char",
                            "format_string": "<B"
                        },
                        {
                            "name": "state",
                            "kind": "enum",
                            "type": "ChargingStatus",
                            "format_string": "<B"
                        }
                    ],
                    "format_string": "<dddddd??BB"
                },
                {
                    "name": "battery",
                    "kind": "struct",
                    "type": "BatteryPackData",
                    "fields": [
                        {
                            "name": "cell",
                            "kind": "array",
                            "type": "float[6]",
                            "element": {
                                "kind": "primitive",
                                "type": "float",
                                "format_string": "<f"
                            },
                            "count": 6,
                            "format_string": "<ffffff"
                        },
                        {
                            "name": "voltage",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "current",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "die_temperature",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "balancing_mask",
                            "kind": "primitive",
                            "type": "unsigned char",
                            "format_string": "<B"
                        },
                        {
                            "name": "alert",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        },
                        {
                            "name": "comms_ok",
                            "kind": "primitive",
                            "type": "bool",
                            "format_string": "<?"
                        }
                    ],
                    "format_string": "<fffffffffB??"
                },
                {
                    "name": "rail",
                    "kind": "struct",
                    "type": "RailData",
                    "fields": [
                        {
                            "name": "vbat",
                            "kind": "struct",
                            "type": "RailMeasurement",
                            "fields": [
                                {
                                    "name": "current",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "volts",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "shunt_voltage",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "power",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                }
                            ],
                            "format_string": "<ffff"
                        },
                        {
                            "name": "v_12",
                            "kind": "struct",
                            "type": "RailMeasurement",
                            "fields": [
                                {
                                    "name": "current",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "volts",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "shunt_voltage",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "power",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                }
                            ],
                            "format_string": "<ffff"
                        },
                        {
                            "name": "v_24",
                            "kind": "struct",
                            "type": "RailMeasurement",
                            "fields": [
                                {
                                    "name": "current",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "volts",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "shunt_voltage",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                },
                                {
                                    "name": "power",
                                    "kind": "primitive",
                                    "type": "float",
                                    "format_string": "<f"
                                }
                            ],
                            "format_string": "<ffff"
                        }
                    ],
                    "format_string": "<ffffffffffff"
                }
            ],
            "format_string": "<dddddd??BBfffffffffB??ffffffffffff"
        }
    },
    "enums": {
        "STATE_NAME": {
            "NONE": 0,
            "IDLE": 1,
            "READY": 2,
            "FILLING": 3,
            "SEPARATION_FILLING": 4,
            "FLOTATION_FILLING": 5,
            "OPEN_SEPARATION_SERVO": 6,
            "THRUSTING": 7,
            "COASTING": 8,
            "SEPARATION": 9,
            "FLOTATION": 10,
            "SHUTDOWN": 11
        },
        "ChargingStatus": {
            "NotCharging": 0,
            "TrickleCharge": 1,
            "PreCharge": 2,
            "FastCharge": 3,
            "TaperCharge": 4,
            "Reserved": 5,
            "TopOffTimerCharge": 6,
            "ChargeTermination": 7
        }
    }
}
