{
    "version": 1,
    "structs": {
        "BldcCommands::OpenCloseBldcPayload": {
            "id": 64,
            "kind": "struct",
            "type": "BldcCommands::OpenCloseBldcPayload",
            "fields": [
                {
                    "name": "id",
                    "kind": "enum",
                    "type": "actuators::bldc::Id",
                    "format_string": "<B"
                },
                {
                    "name": "open_close",
                    "kind": "enum",
                    "type": "BldcCommands::OpenClose",
                    "format_string": "<B"
                }
            ],
            "format_string": "<BB"
        },
        "BldcCommands::SetBldcPayload": {
            "id": 65,
            "kind": "struct",
            "type": "BldcCommands::SetBldcPayload",
            "fields": [
                {
                    "name": "id",
                    "kind": "enum",
                    "type": "actuators::bldc::Id",
                    "format_string": "<B"
                },
                {
                    "name": "angle_deg",
                    "kind": "primitive",
                    "type": "float",
                    "format_string": "<f"
                }
            ],
            "format_string": "<Bf"
        },
        "BldcCommands::CalibratePayload": {
            "id": 66,
            "kind": "struct",
            "type": "BldcCommands::CalibratePayload",
            "fields": [
                {
                    "name": "id",
                    "kind": "enum",
                    "type": "actuators::bldc::Id",
                    "format_string": "<B"
                }
            ],
            "format_string": "<B"
        },
        "BldcCommands::ConfigureBldcPayload": {
            "id": 67,
            "kind": "struct",
            "type": "BldcCommands::ConfigureBldcPayload",
            "fields": [
                {
                    "name": "id",
                    "kind": "enum",
                    "type": "actuators::bldc::Id",
                    "format_string": "<B"
                },
                {
                    "name": "config",
                    "kind": "struct",
                    "type": "actuators::bldc::ControllerConfig",
                    "fields": [
                        {
                            "name": "pressurize_pid_gains",
                            "kind": "struct",
                            "type": "actuators::bldc::PidGains",
                            "fields": [
                                {
                                    "name": "p",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "i",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "d",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "normalization_factor",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "integral_clamp",
                                    "kind": "primitive",
                                    "type": "bool",
                                    "format_string": "<?"
                                },
                                {
                                    "name": "integral_clamp_max",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "integral_clamp_min",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                }
                            ],
                            "format_string": "<dddd?dd"
                        },
                        {
                            "name": "run_pid_gains",
                            "kind": "struct",
                            "type": "actuators::bldc::PidGains",
                            "fields": [
                                {
                                    "name": "p",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "i",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "d",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "normalization_factor",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "integral_clamp",
                                    "kind": "primitive",
                                    "type": "bool",
                                    "format_string": "<?"
                                },
                                {
                                    "name": "integral_clamp_max",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "integral_clamp_min",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                }
                            ],
                            "format_string": "<dddd?dd"
                        },
                        {
                            "name": "minimum_position",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "maximum_position",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "valve_encoder_offset",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "can_watchdog_timeout",
                            "kind": "primitive",
                            "type": "unsigned long long",
                            "format_string": "<Q"
                        },
                        {
                            "name": "end_pressure_ref",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "pressurizing_time",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "gear_ratio",
                            "kind": "primitive",
                            "type": "float",
                            "format_string": "<f"
                        },
                        {
                            "name": "max_torque",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "dvdt_nominal",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "cv_max",
                            "kind": "primitive",
                            "type": "double",
                            "format_string": "<d"
                        },
                        {
                            "name": "control_valve_curve_pressurization",
                            "kind": "struct",
                            "type": "SigmoidParameters",
                            "fields": [
                                {
                                    "name": "a",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "b",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                }
                            ],
                            "format_string": "<dd"
                        },
                        {
                            "name": "control_valve_curve_run",
                            "kind": "struct",
                            "type": "SigmoidParameters",
                            "fields": [
                                {
                                    "name": "a",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "b",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                }
                            ],
                            "format_string": "<dd"
                        },
                        {
                            "name": "main_valve_curve",
                            "kind": "struct",
                            "type": "SigmoidParameters",
                            "fields": [
                                {
                                    "name": "a",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                },
                                {
                                    "name": "b",
                                    "kind": "primitive",
                                    "type": "double",
                                    "format_string": "<d"
                                }
                            ],
                            "format_string": "<dd"
                        }
                    ],
                    "format_string": "<dddd?dddddd?dddddQddfddddddddd"
                }
            ],
            "format_string": "<Bdddd?dddddd?dddddQddfddddddddd"
        },
        "FsmCommands::NextStatePayload": {
            "id": 32,
            "kind": "struct",
            "type": "FsmCommands::NextStatePayload",
            "fields": [
                {
                    "name": "current_state",
                    "kind": "enum",
                    "type": "StateId",
                    "format_string": "<B"
                }
            ],
            "format_string": "<B"
        },
        "FsmCommands::PreviousStatePayload": {
            "id": 33,
            "kind": "struct",
            "type": "FsmCommands::PreviousStatePayload",
            "fields": [
                {
                    "name": "current_state",
                    "kind": "enum",
                    "type": "StateId",
                    "format_string": "<B"
                }
            ],
            "format_string": "<B"
        },
        "FsmCommands::AbortPayload": {
            "id": 34,
            "kind": "struct",
            "type": "FsmCommands::AbortPayload",
            "fields": [
                {
                    "name": "reserved",
                    "kind": "primitive",
                    "type": "unsigned char",
                    "format_string": "<B"
                }
            ],
            "format_string": "<B"
        },
        "FsmCommands::StatusPayload": {
            "id": 35,
            "kind": "struct",
            "type": "FsmCommands::StatusPayload",
            "fields": [
                {
                    "name": "reserved",
                    "kind": "primitive",
                    "type": "unsigned char",
                    "format_string": "<B"
                }
            ],
            "format_string": "<B"
        },
        "ServoCommands::OpenCloseServoPayload": {
            "id": 48,
            "kind": "struct",
            "type": "ServoCommands::OpenCloseServoPayload",
            "fields": [
                {
                    "name": "servo_id",
                    "kind": "enum",
                    "type": "actuators::servo::Id",
                    "format_string": "<B"
                },
                {
                    "name": "open_close",
                    "kind": "enum",
                    "type": "ServoCommands::OpenClose",
                    "format_string": "<B"
                },
                {
                    "name": "duration_ms",
                    "kind": "primitive",
                    "type": "unsigned short",
                    "format_string": "<H"
                },
                {
                    "name": "delay_ms",
                    "kind": "primitive",
                    "type": "unsigned short",
                    "format_string": "<H"
                },
                {
                    "name": "position_mode",
                    "kind": "enum",
                    "type": "actuators::servo::PositionMode",
                    "format_string": "<B"
                },
                {
                    "name": "start_policy",
                    "kind": "enum",
                    "type": "actuators::servo::StartPolicy",
                    "format_string": "<B"
                }
            ],
            "format_string": "<BBHHBB"
        },
        "ServoCommands::SetServoPayload": {
            "id": 49,
            "kind": "struct",
            "type": "ServoCommands::SetServoPayload",
            "fields": [
                {
                    "name": "servo_id",
                    "kind": "enum",
                    "type": "actuators::servo::Id",
                    "format_string": "<B"
                },
                {
                    "name": "angle_deg",
                    "kind": "primitive",
                    "type": "float",
                    "format_string": "<f"
                },
                {
                    "name": "duration_ms",
                    "kind": "primitive",
                    "type": "unsigned short",
                    "format_string": "<H"
                },
                {
                    "name": "delay_ms",
                    "kind": "primitive",
                    "type": "unsigned short",
                    "format_string": "<H"
                },
                {
                    "name": "position_mode",
                    "kind": "enum",
                    "type": "actuators::servo::PositionMode",
                    "format_string": "<B"
                },
                {
                    "name": "start_policy",
                    "kind": "enum",
                    "type": "actuators::servo::StartPolicy",
                    "format_string": "<B"
                }
            ],
            "format_string": "<BfHHBB"
        },
        "SolenoidCommands::OpenCloseSolenoidPayload": {
            "id": 80,
            "kind": "struct",
            "type": "SolenoidCommands::OpenCloseSolenoidPayload",
            "fields": [
                {
                    "name": "solenoid_id",
                    "kind": "enum",
                    "type": "actuators::solenoid::Id",
                    "format_string": "<B"
                },
                {
                    "name": "opening_type",
                    "kind": "enum",
                    "type": "SolenoidCommands::OpeningType",
                    "format_string": "<B"
                }
            ],
            "format_string": "<BB"
        },
        "ControlPolicyCommands::SetManualPolicyPayload": {
            "id": 96,
            "kind": "struct",
            "type": "ControlPolicyCommands::SetManualPolicyPayload",
            "fields": [
                {
                    "name": "value",
                    "kind": "enum",
                    "type": "ControlPolicyCommands::PolicyValue",
                    "format_string": "<B"
                }
            ],
            "format_string": "<B"
        },
        "LinkMonitorCommands::MarkSeenPayload": {
            "id": 128,
            "kind": "struct",
            "type": "LinkMonitorCommands::MarkSeenPayload",
            "fields": [
                {
                    "name": "payload",
                    "kind": "primitive",
                    "type": "unsigned char",
                    "format_string": "<B"
                }
            ],
            "format_string": "<B"
        },
        "RegulatorCommands::SetEnabledPayload": {
            "id": 112,
            "kind": "struct",
            "type": "RegulatorCommands::SetEnabledPayload",
            "fields": [
                {
                    "name": "regulator_id",
                    "kind": "enum",
                    "type": "regulator::Id",
                    "format_string": "<B"
                },
                {
                    "name": "value",
                    "kind": "enum",
                    "type": "RegulatorCommands::RegulatorValue",
                    "format_string": "<B"
                }
            ],
            "format_string": "<BB"
        },
        "RegulatorCommands::SetSetpointPayload": {
            "id": 113,
            "kind": "struct",
            "type": "RegulatorCommands::SetSetpointPayload",
            "fields": [
                {
                    "name": "regulator_id",
                    "kind": "enum",
                    "type": "regulator::Id",
                    "format_string": "<B"
                },
                {
                    "name": "setpoint",
                    "kind": "primitive",
                    "type": "float",
                    "format_string": "<f"
                }
            ],
            "format_string": "<Bf"
        },
        "RegulatorCommands::SetGainsPayload": {
            "id": 114,
            "kind": "struct",
            "type": "RegulatorCommands::SetGainsPayload",
            "fields": [
                {
                    "name": "regulator_id",
                    "kind": "enum",
                    "type": "regulator::Id",
                    "format_string": "<B"
                },
                {
                    "name": "kp",
                    "kind": "primitive",
                    "type": "float",
                    "format_string": "<f"
                },
                {
                    "name": "ki",
                    "kind": "primitive",
                    "type": "float",
                    "format_string": "<f"
                },
                {
                    "name": "kd",
                    "kind": "primitive",
                    "type": "float",
                    "format_string": "<f"
                }
            ],
            "format_string": "<Bfff"
        },
        "StorageCommands::FormatStoragePayload": {
            "id": 144,
            "kind": "struct",
            "type": "StorageCommands::FormatStoragePayload",
            "fields": [
                {
                    "name": "storage_id",
                    "kind": "enum",
                    "type": "storage::Id",
                    "format_string": "<B"
                }
            ],
            "format_string": "<B"
        },
        "StorageCommands::StartTransferPayload": {
            "id": 145,
            "kind": "struct",
            "type": "StorageCommands::StartTransferPayload",
            "fields": [
                {
                    "name": "source_id",
                    "kind": "enum",
                    "type": "storage::Id",
                    "format_string": "<B"
                },
                {
                    "name": "destination_id",
                    "kind": "enum",
                    "type": "storage::Id",
                    "format_string": "<B"
                }
            ],
            "format_string": "<BB"
        }
    },
    "enums": {
        "actuators::bldc::Id": {
            "Fuel": 0,
            "Ox": 1,
            "Count": 2
        },
        "BldcCommands::OpenClose": {
            "Open": 0,
            "Close": 1
        },
        "StateId": {
            "Safe": 0,
            "N2Fill": 1,
            "PostN2Fill": 2,
            "OxFill": 3,
            "PostOxFill": 4,
            "Pressurized": 5,
            "Armed": 6,
            "Burn": 7,
            "Shutdown": 8,
            "Purge": 9,
            "Hold": 10
        },
        "actuators::servo::Id": {
            "MainFuel": 0,
            "MainOx": 1,
            "OxFill": 2,
            "OxBoiloff": 3,
            "OxPrechill": 4,
            "Purge": 5,
            "Count": 6
        },
        "ServoCommands::OpenClose": {
            "Open": 0,
            "Close": 1
        },
        "actuators::servo::PositionMode": {
            "Absolute": 0,
            "Relative": 1
        },
        "actuators::servo::StartPolicy": {
            "Preempt": 0,
            "NoInterrupt": 1
        },
        "actuators::solenoid::Id": {
            "FuelVent": 0,
            "OxVent": 1,
            "N2Fill": 2,
            "Count": 3
        },
        "SolenoidCommands::OpeningType": {
            "Open": 0,
            "Close": 1
        },
        "ControlPolicyCommands::PolicyValue": {
            "Disable": 0,
            "Enable": 1
        },
        "regulator::Id": {
            "OxBoiloff": 0,
            "Count": 1
        },
        "RegulatorCommands::RegulatorValue": {
            "Disable": 0,
            "Enable": 1
        },
        "storage::Id": {
            "SdCard": 0,
            "NandFlash": 1,
            "Count": 2
        }
    }
}
