// 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_WPI_PROTO_KINEMATICS_NPB_H_INCLUDED
#define PB_WPI_PROTO_KINEMATICS_NPB_H_INCLUDED
#include <pb.h>
#include <span>
#include <string_view>
#include "geometry2d.npb.h"

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

/* Struct definitions */
typedef struct _wpi_proto_ProtobufChassisVelocities {
    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;

    double vx;
    double vy;
    double omega;
} wpi_proto_ProtobufChassisVelocities;

typedef struct _wpi_proto_ProtobufChassisAccelerations {
    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;

    double ax;
    double ay;
    double alpha;
} wpi_proto_ProtobufChassisAccelerations;

typedef struct _wpi_proto_ProtobufDifferentialDriveKinematics {
    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;

    double trackwidth;
} wpi_proto_ProtobufDifferentialDriveKinematics;

typedef struct _wpi_proto_ProtobufDifferentialDriveWheelVelocities {
    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;

    double left;
    double right;
} wpi_proto_ProtobufDifferentialDriveWheelVelocities;

typedef struct _wpi_proto_ProtobufDifferentialDriveWheelAccelerations {
    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;

    double left;
    double right;
} wpi_proto_ProtobufDifferentialDriveWheelAccelerations;

typedef struct _wpi_proto_ProtobufDifferentialDriveWheelPositions {
    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;

    double left;
    double right;
} wpi_proto_ProtobufDifferentialDriveWheelPositions;

typedef struct _wpi_proto_ProtobufMecanumDriveKinematics {
    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 front_left;
    pb_callback_t front_right;
    pb_callback_t rear_left;
    pb_callback_t rear_right;
} wpi_proto_ProtobufMecanumDriveKinematics;

typedef struct _wpi_proto_ProtobufMecanumDriveWheelPositions {
    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;

    double front_left;
    double front_right;
    double rear_left;
    double rear_right;
} wpi_proto_ProtobufMecanumDriveWheelPositions;

typedef struct _wpi_proto_ProtobufMecanumDriveWheelVelocities {
    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;

    double front_left;
    double front_right;
    double rear_left;
    double rear_right;
} wpi_proto_ProtobufMecanumDriveWheelVelocities;

typedef struct _wpi_proto_ProtobufMecanumDriveWheelAccelerations {
    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;

    double front_left;
    double front_right;
    double rear_left;
    double rear_right;
} wpi_proto_ProtobufMecanumDriveWheelAccelerations;

typedef struct _wpi_proto_ProtobufSwerveDriveKinematics {
    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 modules;
} wpi_proto_ProtobufSwerveDriveKinematics;

typedef struct _wpi_proto_ProtobufSwerveModulePosition {
    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;

    double distance;
    pb_callback_t angle;
} wpi_proto_ProtobufSwerveModulePosition;

typedef struct _wpi_proto_ProtobufSwerveModuleVelocity {
    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;

    double velocity;
    pb_callback_t angle;
} wpi_proto_ProtobufSwerveModuleVelocity;

typedef struct _wpi_proto_ProtobufSwerveModuleAcceleration {
    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;

    double acceleration;
    pb_callback_t angle;
} wpi_proto_ProtobufSwerveModuleAcceleration;


/* Initializer values for message structs */
#define wpi_proto_ProtobufChassisVelocities_init_default {0, 0, 0}
#define wpi_proto_ProtobufChassisAccelerations_init_default {0, 0, 0}
#define wpi_proto_ProtobufDifferentialDriveKinematics_init_default {0}
#define wpi_proto_ProtobufDifferentialDriveWheelVelocities_init_default {0, 0}
#define wpi_proto_ProtobufDifferentialDriveWheelAccelerations_init_default {0, 0}
#define wpi_proto_ProtobufDifferentialDriveWheelPositions_init_default {0, 0}
#define wpi_proto_ProtobufMecanumDriveKinematics_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define wpi_proto_ProtobufMecanumDriveWheelPositions_init_default {0, 0, 0, 0}
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_init_default {0, 0, 0, 0}
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_init_default {0, 0, 0, 0}
#define wpi_proto_ProtobufSwerveDriveKinematics_init_default {{{NULL}, NULL}}
#define wpi_proto_ProtobufSwerveModulePosition_init_default {0, {{NULL}, NULL}}
#define wpi_proto_ProtobufSwerveModuleVelocity_init_default {0, {{NULL}, NULL}}
#define wpi_proto_ProtobufSwerveModuleAcceleration_init_default {0, {{NULL}, NULL}}
#define wpi_proto_ProtobufChassisVelocities_init_zero {0, 0, 0}
#define wpi_proto_ProtobufChassisAccelerations_init_zero {0, 0, 0}
#define wpi_proto_ProtobufDifferentialDriveKinematics_init_zero {0}
#define wpi_proto_ProtobufDifferentialDriveWheelVelocities_init_zero {0, 0}
#define wpi_proto_ProtobufDifferentialDriveWheelAccelerations_init_zero {0, 0}
#define wpi_proto_ProtobufDifferentialDriveWheelPositions_init_zero {0, 0}
#define wpi_proto_ProtobufMecanumDriveKinematics_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}}
#define wpi_proto_ProtobufMecanumDriveWheelPositions_init_zero {0, 0, 0, 0}
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_init_zero {0, 0, 0, 0}
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_init_zero {0, 0, 0, 0}
#define wpi_proto_ProtobufSwerveDriveKinematics_init_zero {{{NULL}, NULL}}
#define wpi_proto_ProtobufSwerveModulePosition_init_zero {0, {{NULL}, NULL}}
#define wpi_proto_ProtobufSwerveModuleVelocity_init_zero {0, {{NULL}, NULL}}
#define wpi_proto_ProtobufSwerveModuleAcceleration_init_zero {0, {{NULL}, NULL}}

/* Field tags (for use in manual encoding/decoding) */
#define wpi_proto_ProtobufChassisVelocities_vx_tag 1
#define wpi_proto_ProtobufChassisVelocities_vy_tag 2
#define wpi_proto_ProtobufChassisVelocities_omega_tag 3
#define wpi_proto_ProtobufChassisAccelerations_ax_tag 1
#define wpi_proto_ProtobufChassisAccelerations_ay_tag 2
#define wpi_proto_ProtobufChassisAccelerations_alpha_tag 3
#define wpi_proto_ProtobufDifferentialDriveKinematics_trackwidth_tag 1
#define wpi_proto_ProtobufDifferentialDriveWheelVelocities_left_tag 1
#define wpi_proto_ProtobufDifferentialDriveWheelVelocities_right_tag 2
#define wpi_proto_ProtobufDifferentialDriveWheelAccelerations_left_tag 1
#define wpi_proto_ProtobufDifferentialDriveWheelAccelerations_right_tag 2
#define wpi_proto_ProtobufDifferentialDriveWheelPositions_left_tag 1
#define wpi_proto_ProtobufDifferentialDriveWheelPositions_right_tag 2
#define wpi_proto_ProtobufMecanumDriveKinematics_front_left_tag 1
#define wpi_proto_ProtobufMecanumDriveKinematics_front_right_tag 2
#define wpi_proto_ProtobufMecanumDriveKinematics_rear_left_tag 3
#define wpi_proto_ProtobufMecanumDriveKinematics_rear_right_tag 4
#define wpi_proto_ProtobufMecanumDriveWheelPositions_front_left_tag 1
#define wpi_proto_ProtobufMecanumDriveWheelPositions_front_right_tag 2
#define wpi_proto_ProtobufMecanumDriveWheelPositions_rear_left_tag 3
#define wpi_proto_ProtobufMecanumDriveWheelPositions_rear_right_tag 4
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_front_left_tag 1
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_front_right_tag 2
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_rear_left_tag 3
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_rear_right_tag 4
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_front_left_tag 1
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_front_right_tag 2
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_rear_left_tag 3
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_rear_right_tag 4
#define wpi_proto_ProtobufSwerveDriveKinematics_modules_tag 1
#define wpi_proto_ProtobufSwerveModulePosition_distance_tag 1
#define wpi_proto_ProtobufSwerveModulePosition_angle_tag 2
#define wpi_proto_ProtobufSwerveModuleVelocity_velocity_tag 1
#define wpi_proto_ProtobufSwerveModuleVelocity_angle_tag 2
#define wpi_proto_ProtobufSwerveModuleAcceleration_acceleration_tag 1
#define wpi_proto_ProtobufSwerveModuleAcceleration_angle_tag 2

/* Struct field encoding specification for nanopb */
#define wpi_proto_ProtobufChassisVelocities_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   vx,                1) \
X(a, STATIC,   SINGULAR, DOUBLE,   vy,                2) \
X(a, STATIC,   SINGULAR, DOUBLE,   omega,             3)
#define wpi_proto_ProtobufChassisVelocities_CALLBACK NULL
#define wpi_proto_ProtobufChassisVelocities_DEFAULT NULL

#define wpi_proto_ProtobufChassisAccelerations_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   ax,                1) \
X(a, STATIC,   SINGULAR, DOUBLE,   ay,                2) \
X(a, STATIC,   SINGULAR, DOUBLE,   alpha,             3)
#define wpi_proto_ProtobufChassisAccelerations_CALLBACK NULL
#define wpi_proto_ProtobufChassisAccelerations_DEFAULT NULL

#define wpi_proto_ProtobufDifferentialDriveKinematics_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   trackwidth,        1)
#define wpi_proto_ProtobufDifferentialDriveKinematics_CALLBACK NULL
#define wpi_proto_ProtobufDifferentialDriveKinematics_DEFAULT NULL

#define wpi_proto_ProtobufDifferentialDriveWheelVelocities_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   left,              1) \
X(a, STATIC,   SINGULAR, DOUBLE,   right,             2)
#define wpi_proto_ProtobufDifferentialDriveWheelVelocities_CALLBACK NULL
#define wpi_proto_ProtobufDifferentialDriveWheelVelocities_DEFAULT NULL

#define wpi_proto_ProtobufDifferentialDriveWheelAccelerations_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   left,              1) \
X(a, STATIC,   SINGULAR, DOUBLE,   right,             2)
#define wpi_proto_ProtobufDifferentialDriveWheelAccelerations_CALLBACK NULL
#define wpi_proto_ProtobufDifferentialDriveWheelAccelerations_DEFAULT NULL

#define wpi_proto_ProtobufDifferentialDriveWheelPositions_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   left,              1) \
X(a, STATIC,   SINGULAR, DOUBLE,   right,             2)
#define wpi_proto_ProtobufDifferentialDriveWheelPositions_CALLBACK NULL
#define wpi_proto_ProtobufDifferentialDriveWheelPositions_DEFAULT NULL

#define wpi_proto_ProtobufMecanumDriveKinematics_FIELDLIST(X, a) \
X(a, CALLBACK, OPTIONAL, MESSAGE,  front_left,        1) \
X(a, CALLBACK, OPTIONAL, MESSAGE,  front_right,       2) \
X(a, CALLBACK, OPTIONAL, MESSAGE,  rear_left,         3) \
X(a, CALLBACK, OPTIONAL, MESSAGE,  rear_right,        4)
#define wpi_proto_ProtobufMecanumDriveKinematics_CALLBACK pb_default_field_callback
#define wpi_proto_ProtobufMecanumDriveKinematics_DEFAULT NULL
#define wpi_proto_ProtobufMecanumDriveKinematics_front_left_MSGTYPE wpi_proto_ProtobufTranslation2d
#define wpi_proto_ProtobufMecanumDriveKinematics_front_right_MSGTYPE wpi_proto_ProtobufTranslation2d
#define wpi_proto_ProtobufMecanumDriveKinematics_rear_left_MSGTYPE wpi_proto_ProtobufTranslation2d
#define wpi_proto_ProtobufMecanumDriveKinematics_rear_right_MSGTYPE wpi_proto_ProtobufTranslation2d

#define wpi_proto_ProtobufMecanumDriveWheelPositions_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   front_left,        1) \
X(a, STATIC,   SINGULAR, DOUBLE,   front_right,       2) \
X(a, STATIC,   SINGULAR, DOUBLE,   rear_left,         3) \
X(a, STATIC,   SINGULAR, DOUBLE,   rear_right,        4)
#define wpi_proto_ProtobufMecanumDriveWheelPositions_CALLBACK NULL
#define wpi_proto_ProtobufMecanumDriveWheelPositions_DEFAULT NULL

#define wpi_proto_ProtobufMecanumDriveWheelVelocities_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   front_left,        1) \
X(a, STATIC,   SINGULAR, DOUBLE,   front_right,       2) \
X(a, STATIC,   SINGULAR, DOUBLE,   rear_left,         3) \
X(a, STATIC,   SINGULAR, DOUBLE,   rear_right,        4)
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_CALLBACK NULL
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_DEFAULT NULL

#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   front_left,        1) \
X(a, STATIC,   SINGULAR, DOUBLE,   front_right,       2) \
X(a, STATIC,   SINGULAR, DOUBLE,   rear_left,         3) \
X(a, STATIC,   SINGULAR, DOUBLE,   rear_right,        4)
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_CALLBACK NULL
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_DEFAULT NULL

#define wpi_proto_ProtobufSwerveDriveKinematics_FIELDLIST(X, a) \
X(a, CALLBACK, REPEATED, MESSAGE,  modules,           1)
#define wpi_proto_ProtobufSwerveDriveKinematics_CALLBACK pb_default_field_callback
#define wpi_proto_ProtobufSwerveDriveKinematics_DEFAULT NULL
#define wpi_proto_ProtobufSwerveDriveKinematics_modules_MSGTYPE wpi_proto_ProtobufTranslation2d

#define wpi_proto_ProtobufSwerveModulePosition_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   distance,          1) \
X(a, CALLBACK, OPTIONAL, MESSAGE,  angle,             2)
#define wpi_proto_ProtobufSwerveModulePosition_CALLBACK pb_default_field_callback
#define wpi_proto_ProtobufSwerveModulePosition_DEFAULT NULL
#define wpi_proto_ProtobufSwerveModulePosition_angle_MSGTYPE wpi_proto_ProtobufRotation2d

#define wpi_proto_ProtobufSwerveModuleVelocity_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   velocity,          1) \
X(a, CALLBACK, OPTIONAL, MESSAGE,  angle,             2)
#define wpi_proto_ProtobufSwerveModuleVelocity_CALLBACK pb_default_field_callback
#define wpi_proto_ProtobufSwerveModuleVelocity_DEFAULT NULL
#define wpi_proto_ProtobufSwerveModuleVelocity_angle_MSGTYPE wpi_proto_ProtobufRotation2d

#define wpi_proto_ProtobufSwerveModuleAcceleration_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, DOUBLE,   acceleration,      1) \
X(a, CALLBACK, OPTIONAL, MESSAGE,  angle,             2)
#define wpi_proto_ProtobufSwerveModuleAcceleration_CALLBACK pb_default_field_callback
#define wpi_proto_ProtobufSwerveModuleAcceleration_DEFAULT NULL
#define wpi_proto_ProtobufSwerveModuleAcceleration_angle_MSGTYPE wpi_proto_ProtobufRotation2d

/* Maximum encoded size of messages (where known) */
/* wpi_proto_ProtobufMecanumDriveKinematics_size depends on runtime parameters */
/* wpi_proto_ProtobufSwerveDriveKinematics_size depends on runtime parameters */
/* wpi_proto_ProtobufSwerveModulePosition_size depends on runtime parameters */
/* wpi_proto_ProtobufSwerveModuleVelocity_size depends on runtime parameters */
/* wpi_proto_ProtobufSwerveModuleAcceleration_size depends on runtime parameters */
#define WPI_PROTO_KINEMATICS_NPB_H_MAX_SIZE      wpi_proto_ProtobufMecanumDriveWheelPositions_size
#define wpi_proto_ProtobufChassisAccelerations_size 27
#define wpi_proto_ProtobufChassisVelocities_size 27
#define wpi_proto_ProtobufDifferentialDriveKinematics_size 9
#define wpi_proto_ProtobufDifferentialDriveWheelAccelerations_size 18
#define wpi_proto_ProtobufDifferentialDriveWheelPositions_size 18
#define wpi_proto_ProtobufDifferentialDriveWheelVelocities_size 18
#define wpi_proto_ProtobufMecanumDriveWheelAccelerations_size 36
#define wpi_proto_ProtobufMecanumDriveWheelPositions_size 36
#define wpi_proto_ProtobufMecanumDriveWheelVelocities_size 36


#endif
