// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
/* Automatically generated nanopb header */
/* Generated by nanopb-0.4.9 */

#ifndef PB_MRC_PROTO_MRCCOMM_NPB_H_INCLUDED
#define PB_MRC_PROTO_MRCCOMM_NPB_H_INCLUDED
#include <pb.h>
#include <span>
#include <string_view>

#if PB_PROTO_HEADER_VERSION != 40
#error Regenerate this file with the current version of nanopb generator.
#endif

/* Struct definitions */
typedef struct _mrc_proto_ProtobufFingerData {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    uint32_t X;
    uint32_t Y;
    bool Down;
} mrc_proto_ProtobufFingerData;

typedef struct _mrc_proto_ProtobufTouchpadData {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    pb_callback_t Fingers;
} mrc_proto_ProtobufTouchpadData;

typedef struct _mrc_proto_ProtobufJoystickData {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    uint64_t AvailableButtons;
    uint64_t Buttons;
    uint32_t AvailableAxes;
    pb_callback_t Axes;
    /* Each POV takes up 4 bits
 We can fit 8 in here. */
    uint32_t POVCount;
    uint32_t POVs;
    pb_callback_t Touchpads;
} mrc_proto_ProtobufJoystickData;

typedef struct _mrc_proto_ProtobufControlData {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    int32_t MatchTime;
    pb_callback_t Joysticks;
    uint64_t CurrentOpMode;
    uint32_t ControlWord;
    pb_callback_t GameData;
} mrc_proto_ProtobufControlData;

typedef struct _mrc_proto_ProtobufJoystickDescriptor {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    pb_callback_t JoystickName;
    bool IsGamepad;
    uint32_t GamepadType;
    uint32_t SupportedOutputs;
} mrc_proto_ProtobufJoystickDescriptor;

typedef struct _mrc_proto_ProtobufJoystickDescriptors {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    pb_callback_t Descriptors;
} mrc_proto_ProtobufJoystickDescriptors;

typedef struct _mrc_proto_ProtobufJoystickOutput {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    uint32_t LEDs;
    uint32_t Rumble; /* 16 bits, left msb, right lsb */
    uint32_t TriggerRumble; /* 16 bits, left msb, right lsb */
} mrc_proto_ProtobufJoystickOutput;

typedef struct _mrc_proto_ProtobufJoystickOutputs {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    pb_callback_t Outputs;
} mrc_proto_ProtobufJoystickOutputs;

typedef struct _mrc_proto_ProtobufMatchInfo {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    pb_callback_t EventName;
    int32_t MatchNumber;
    int32_t ReplayNumber;
    int32_t MatchType;
} mrc_proto_ProtobufMatchInfo;

typedef struct _mrc_proto_ProtobufErrorInfo {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    bool IsError;
    int32_t ErrorCode;
    pb_callback_t Details;
    pb_callback_t Location;
    pb_callback_t CallStack;
} mrc_proto_ProtobufErrorInfo;

typedef struct _mrc_proto_ProtobufOpMode {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    uint64_t Hash;
    pb_callback_t Name;
    pb_callback_t Group;
    pb_callback_t Description;
    int32_t TextColor;
    int32_t BackgroundColor;
} mrc_proto_ProtobufOpMode;

typedef struct _mrc_proto_ProtobufAvailableOpModes {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    pb_callback_t Modes;
} mrc_proto_ProtobufAvailableOpModes;

typedef struct _mrc_proto_ProtobufErrorInfoTimestamp {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    pb_callback_t ErrorInfo;
    uint64_t Timestamp;
    int32_t SequenceNumber;
    int32_t NumOccurrences;
} mrc_proto_ProtobufErrorInfoTimestamp;

typedef struct _mrc_proto_ProtobufConsoleLineTimestamp {
    static const pb_msgdesc_t* msg_descriptor(void) noexcept;
    static std::string_view msg_name(void) noexcept;
    static pb_filedesc_t file_descriptor(void) noexcept;

    pb_callback_t ConsoleLine;
    uint64_t Timestamp;
    int32_t SequenceNumber;
} mrc_proto_ProtobufConsoleLineTimestamp;


/* Initializer values for message structs */
#define mrc_proto_ProtobufFingerData_init_default {0, 0, 0}
#define mrc_proto_ProtobufTouchpadData_init_default {{{NULL}, NULL}}
#define mrc_proto_ProtobufJoystickData_init_default {0, 0, 0, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}}
#define mrc_proto_ProtobufControlData_init_default {0, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}}
#define mrc_proto_ProtobufJoystickDescriptor_init_default {{{NULL}, NULL}, 0, 0, 0}
#define mrc_proto_ProtobufJoystickDescriptors_init_default {{{NULL}, NULL}}
#define mrc_proto_ProtobufJoystickOutput_init_default {0, 0, 0}
#define mrc_proto_ProtobufJoystickOutputs_init_default {{{NULL}, NULL}}
#define mrc_proto_ProtobufMatchInfo_init_default {{{NULL}, NULL}, 0, 0, 0}
#define mrc_proto_ProtobufErrorInfo_init_default {0, 0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define mrc_proto_ProtobufOpMode_init_default    {0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0}
#define mrc_proto_ProtobufAvailableOpModes_init_default {{{NULL}, NULL}}
#define mrc_proto_ProtobufErrorInfoTimestamp_init_default {{{NULL}, NULL}, 0, 0, 0}
#define mrc_proto_ProtobufConsoleLineTimestamp_init_default {{{NULL}, NULL}, 0, 0}
#define mrc_proto_ProtobufFingerData_init_zero   {0, 0, 0}
#define mrc_proto_ProtobufTouchpadData_init_zero {{{NULL}, NULL}}
#define mrc_proto_ProtobufJoystickData_init_zero {0, 0, 0, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}}
#define mrc_proto_ProtobufControlData_init_zero  {0, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}}
#define mrc_proto_ProtobufJoystickDescriptor_init_zero {{{NULL}, NULL}, 0, 0, 0}
#define mrc_proto_ProtobufJoystickDescriptors_init_zero {{{NULL}, NULL}}
#define mrc_proto_ProtobufJoystickOutput_init_zero {0, 0, 0}
#define mrc_proto_ProtobufJoystickOutputs_init_zero {{{NULL}, NULL}}
#define mrc_proto_ProtobufMatchInfo_init_zero    {{{NULL}, NULL}, 0, 0, 0}
#define mrc_proto_ProtobufErrorInfo_init_zero    {0, 0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define mrc_proto_ProtobufOpMode_init_zero       {0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0}
#define mrc_proto_ProtobufAvailableOpModes_init_zero {{{NULL}, NULL}}
#define mrc_proto_ProtobufErrorInfoTimestamp_init_zero {{{NULL}, NULL}, 0, 0, 0}
#define mrc_proto_ProtobufConsoleLineTimestamp_init_zero {{{NULL}, NULL}, 0, 0}

/* Field tags (for use in manual encoding/decoding) */
#define mrc_proto_ProtobufFingerData_X_tag       1
#define mrc_proto_ProtobufFingerData_Y_tag       2
#define mrc_proto_ProtobufFingerData_Down_tag    3
#define mrc_proto_ProtobufTouchpadData_Fingers_tag 1
#define mrc_proto_ProtobufJoystickData_AvailableButtons_tag 1
#define mrc_proto_ProtobufJoystickData_Buttons_tag 2
#define mrc_proto_ProtobufJoystickData_AvailableAxes_tag 3
#define mrc_proto_ProtobufJoystickData_Axes_tag  4
#define mrc_proto_ProtobufJoystickData_POVCount_tag 5
#define mrc_proto_ProtobufJoystickData_POVs_tag  6
#define mrc_proto_ProtobufJoystickData_Touchpads_tag 7
#define mrc_proto_ProtobufControlData_MatchTime_tag 2
#define mrc_proto_ProtobufControlData_Joysticks_tag 3
#define mrc_proto_ProtobufControlData_CurrentOpMode_tag 4
#define mrc_proto_ProtobufControlData_ControlWord_tag 5
#define mrc_proto_ProtobufControlData_GameData_tag 6
#define mrc_proto_ProtobufJoystickDescriptor_JoystickName_tag 1
#define mrc_proto_ProtobufJoystickDescriptor_IsGamepad_tag 2
#define mrc_proto_ProtobufJoystickDescriptor_GamepadType_tag 3
#define mrc_proto_ProtobufJoystickDescriptor_SupportedOutputs_tag 4
#define mrc_proto_ProtobufJoystickDescriptors_Descriptors_tag 1
#define mrc_proto_ProtobufJoystickOutput_LEDs_tag 1
#define mrc_proto_ProtobufJoystickOutput_Rumble_tag 2
#define mrc_proto_ProtobufJoystickOutput_TriggerRumble_tag 3
#define mrc_proto_ProtobufJoystickOutputs_Outputs_tag 1
#define mrc_proto_ProtobufMatchInfo_EventName_tag 1
#define mrc_proto_ProtobufMatchInfo_MatchNumber_tag 2
#define mrc_proto_ProtobufMatchInfo_ReplayNumber_tag 3
#define mrc_proto_ProtobufMatchInfo_MatchType_tag 4
#define mrc_proto_ProtobufErrorInfo_IsError_tag  1
#define mrc_proto_ProtobufErrorInfo_ErrorCode_tag 2
#define mrc_proto_ProtobufErrorInfo_Details_tag  3
#define mrc_proto_ProtobufErrorInfo_Location_tag 4
#define mrc_proto_ProtobufErrorInfo_CallStack_tag 5
#define mrc_proto_ProtobufOpMode_Hash_tag        1
#define mrc_proto_ProtobufOpMode_Name_tag        2
#define mrc_proto_ProtobufOpMode_Group_tag       3
#define mrc_proto_ProtobufOpMode_Description_tag 4
#define mrc_proto_ProtobufOpMode_TextColor_tag   5
#define mrc_proto_ProtobufOpMode_BackgroundColor_tag 6
#define mrc_proto_ProtobufAvailableOpModes_Modes_tag 1
#define mrc_proto_ProtobufErrorInfoTimestamp_ErrorInfo_tag 1
#define mrc_proto_ProtobufErrorInfoTimestamp_Timestamp_tag 2
#define mrc_proto_ProtobufErrorInfoTimestamp_SequenceNumber_tag 3
#define mrc_proto_ProtobufErrorInfoTimestamp_NumOccurrences_tag 4
#define mrc_proto_ProtobufConsoleLineTimestamp_ConsoleLine_tag 1
#define mrc_proto_ProtobufConsoleLineTimestamp_Timestamp_tag 2
#define mrc_proto_ProtobufConsoleLineTimestamp_SequenceNumber_tag 3

/* Struct field encoding specification for nanopb */
#define mrc_proto_ProtobufFingerData_FIELDLIST(X_, a) \
X_(a, STATIC,   SINGULAR, UINT32,   X,                 1) \
X_(a, STATIC,   SINGULAR, UINT32,   Y,                 2) \
X_(a, STATIC,   SINGULAR, BOOL,     Down,              3)
#define mrc_proto_ProtobufFingerData_CALLBACK NULL
#define mrc_proto_ProtobufFingerData_DEFAULT NULL

#define mrc_proto_ProtobufTouchpadData_FIELDLIST(X, a) \
X(a, CALLBACK, REPEATED, MESSAGE,  Fingers,           1)
#define mrc_proto_ProtobufTouchpadData_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufTouchpadData_DEFAULT NULL
#define mrc_proto_ProtobufTouchpadData_Fingers_MSGTYPE mrc_proto_ProtobufFingerData

#define mrc_proto_ProtobufJoystickData_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, UINT64,   AvailableButtons,   1) \
X(a, STATIC,   SINGULAR, UINT64,   Buttons,           2) \
X(a, STATIC,   SINGULAR, UINT32,   AvailableAxes,     3) \
X(a, CALLBACK, REPEATED, SINT32,   Axes,              4) \
X(a, STATIC,   SINGULAR, UINT32,   POVCount,          5) \
X(a, STATIC,   SINGULAR, UINT32,   POVs,              6) \
X(a, CALLBACK, REPEATED, MESSAGE,  Touchpads,         7)
#define mrc_proto_ProtobufJoystickData_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufJoystickData_DEFAULT NULL
#define mrc_proto_ProtobufJoystickData_Touchpads_MSGTYPE mrc_proto_ProtobufTouchpadData

#define mrc_proto_ProtobufControlData_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, INT32,    MatchTime,         2) \
X(a, CALLBACK, REPEATED, MESSAGE,  Joysticks,         3) \
X(a, STATIC,   SINGULAR, FIXED64,  CurrentOpMode,     4) \
X(a, STATIC,   SINGULAR, UINT32,   ControlWord,       5) \
X(a, CALLBACK, SINGULAR, STRING,   GameData,          6)
#define mrc_proto_ProtobufControlData_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufControlData_DEFAULT NULL
#define mrc_proto_ProtobufControlData_Joysticks_MSGTYPE mrc_proto_ProtobufJoystickData

#define mrc_proto_ProtobufJoystickDescriptor_FIELDLIST(X, a) \
X(a, CALLBACK, SINGULAR, STRING,   JoystickName,      1) \
X(a, STATIC,   SINGULAR, BOOL,     IsGamepad,         2) \
X(a, STATIC,   SINGULAR, UINT32,   GamepadType,       3) \
X(a, STATIC,   SINGULAR, UINT32,   SupportedOutputs,   4)
#define mrc_proto_ProtobufJoystickDescriptor_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufJoystickDescriptor_DEFAULT NULL

#define mrc_proto_ProtobufJoystickDescriptors_FIELDLIST(X, a) \
X(a, CALLBACK, REPEATED, MESSAGE,  Descriptors,       1)
#define mrc_proto_ProtobufJoystickDescriptors_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufJoystickDescriptors_DEFAULT NULL
#define mrc_proto_ProtobufJoystickDescriptors_Descriptors_MSGTYPE mrc_proto_ProtobufJoystickDescriptor

#define mrc_proto_ProtobufJoystickOutput_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, UINT32,   LEDs,              1) \
X(a, STATIC,   SINGULAR, UINT32,   Rumble,            2) \
X(a, STATIC,   SINGULAR, UINT32,   TriggerRumble,     3)
#define mrc_proto_ProtobufJoystickOutput_CALLBACK NULL
#define mrc_proto_ProtobufJoystickOutput_DEFAULT NULL

#define mrc_proto_ProtobufJoystickOutputs_FIELDLIST(X, a) \
X(a, CALLBACK, REPEATED, MESSAGE,  Outputs,           1)
#define mrc_proto_ProtobufJoystickOutputs_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufJoystickOutputs_DEFAULT NULL
#define mrc_proto_ProtobufJoystickOutputs_Outputs_MSGTYPE mrc_proto_ProtobufJoystickOutput

#define mrc_proto_ProtobufMatchInfo_FIELDLIST(X, a) \
X(a, CALLBACK, SINGULAR, STRING,   EventName,         1) \
X(a, STATIC,   SINGULAR, INT32,    MatchNumber,       2) \
X(a, STATIC,   SINGULAR, INT32,    ReplayNumber,      3) \
X(a, STATIC,   SINGULAR, INT32,    MatchType,         4)
#define mrc_proto_ProtobufMatchInfo_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufMatchInfo_DEFAULT NULL

#define mrc_proto_ProtobufErrorInfo_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, BOOL,     IsError,           1) \
X(a, STATIC,   SINGULAR, SINT32,   ErrorCode,         2) \
X(a, CALLBACK, SINGULAR, STRING,   Details,           3) \
X(a, CALLBACK, SINGULAR, STRING,   Location,          4) \
X(a, CALLBACK, SINGULAR, STRING,   CallStack,         5)
#define mrc_proto_ProtobufErrorInfo_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufErrorInfo_DEFAULT NULL

#define mrc_proto_ProtobufOpMode_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, FIXED64,  Hash,              1) \
X(a, CALLBACK, SINGULAR, STRING,   Name,              2) \
X(a, CALLBACK, SINGULAR, STRING,   Group,             3) \
X(a, CALLBACK, SINGULAR, STRING,   Description,       4) \
X(a, STATIC,   SINGULAR, INT32,    TextColor,         5) \
X(a, STATIC,   SINGULAR, INT32,    BackgroundColor,   6)
#define mrc_proto_ProtobufOpMode_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufOpMode_DEFAULT NULL

#define mrc_proto_ProtobufAvailableOpModes_FIELDLIST(X, a) \
X(a, CALLBACK, REPEATED, MESSAGE,  Modes,             1)
#define mrc_proto_ProtobufAvailableOpModes_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufAvailableOpModes_DEFAULT NULL
#define mrc_proto_ProtobufAvailableOpModes_Modes_MSGTYPE mrc_proto_ProtobufOpMode

#define mrc_proto_ProtobufErrorInfoTimestamp_FIELDLIST(X, a) \
X(a, CALLBACK, OPTIONAL, MESSAGE,  ErrorInfo,         1) \
X(a, STATIC,   SINGULAR, UINT64,   Timestamp,         2) \
X(a, STATIC,   SINGULAR, INT32,    SequenceNumber,    3) \
X(a, STATIC,   SINGULAR, INT32,    NumOccurrences,    4)
#define mrc_proto_ProtobufErrorInfoTimestamp_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufErrorInfoTimestamp_DEFAULT NULL
#define mrc_proto_ProtobufErrorInfoTimestamp_ErrorInfo_MSGTYPE mrc_proto_ProtobufErrorInfo

#define mrc_proto_ProtobufConsoleLineTimestamp_FIELDLIST(X, a) \
X(a, CALLBACK, SINGULAR, STRING,   ConsoleLine,       1) \
X(a, STATIC,   SINGULAR, UINT64,   Timestamp,         2) \
X(a, STATIC,   SINGULAR, INT32,    SequenceNumber,    3)
#define mrc_proto_ProtobufConsoleLineTimestamp_CALLBACK pb_default_field_callback
#define mrc_proto_ProtobufConsoleLineTimestamp_DEFAULT NULL

/* Maximum encoded size of messages (where known) */
/* mrc_proto_ProtobufTouchpadData_size depends on runtime parameters */
/* mrc_proto_ProtobufJoystickData_size depends on runtime parameters */
/* mrc_proto_ProtobufControlData_size depends on runtime parameters */
/* mrc_proto_ProtobufJoystickDescriptor_size depends on runtime parameters */
/* mrc_proto_ProtobufJoystickDescriptors_size depends on runtime parameters */
/* mrc_proto_ProtobufJoystickOutputs_size depends on runtime parameters */
/* mrc_proto_ProtobufMatchInfo_size depends on runtime parameters */
/* mrc_proto_ProtobufErrorInfo_size depends on runtime parameters */
/* mrc_proto_ProtobufOpMode_size depends on runtime parameters */
/* mrc_proto_ProtobufAvailableOpModes_size depends on runtime parameters */
/* mrc_proto_ProtobufErrorInfoTimestamp_size depends on runtime parameters */
/* mrc_proto_ProtobufConsoleLineTimestamp_size depends on runtime parameters */
#define MRC_PROTO_MRCCOMM_NPB_H_MAX_SIZE         mrc_proto_ProtobufJoystickOutput_size
#define mrc_proto_ProtobufFingerData_size        14
#define mrc_proto_ProtobufJoystickOutput_size    18


#endif
