/** * @file ctre_frames.h * CAN Encoder/Decoder Structures for CTRE devices. */ #ifndef CTRE_FRAMES_H #define CTRE_FRAMES_H /** control */ typedef struct _TALON_Control_1_General_10ms_t { unsigned TokenH:8; unsigned TokenL:8; unsigned DemandH:8; unsigned DemandM:8; unsigned DemandL:8; unsigned ProfileSlotSelect:1; unsigned FeedbackDeviceSelect:4; unsigned OverrideLimitSwitchEn:3; unsigned RevFeedbackSensor:1; unsigned RevMotDuringCloseLoopEn:1; unsigned OverrideBrakeType:2; unsigned ModeSelect:4; unsigned RampThrottle:8; } TALON_Control_1_General_10ms_t ; /* TALON_Control_2_Rates_OneShot_t removed since it has been deprecated */ typedef struct _TALON_Control_3_ClearFlags_OneShot_t { unsigned ZeroFeedbackSensor:1; unsigned ClearStickyFaults:1; } TALON_Control_3_ClearFlags_OneShot_t ; typedef struct _TALON_Control_5_General_10ms_t { unsigned ThrottleBump_h3:3; unsigned ReservedZero:5; unsigned ThrottleBump_l8:8; unsigned DemandH:8; unsigned DemandM:8; unsigned DemandL:8; unsigned ProfileSlotSelect:1; unsigned FeedbackDeviceSelect:4; unsigned OverrideLimitSwitchEn:3; unsigned RevFeedbackSensor:1; unsigned RevMotDuringCloseLoopEn:1; unsigned OverrideBrakeType:2; unsigned ModeSelect:4; unsigned RampThrottle:8; } TALON_Control_5_General_10ms_t ; typedef struct _TALON_Control_6_MotProfAddTrajPoint_t { unsigned huffCode:2; //!< Compression coding unsigned NextPt_VelOnly:1; unsigned NextPt_IsLast:1; unsigned reserved0:2; unsigned NextPt_ZeroPosition:1; unsigned NextPt_ProfileSlotSelect:1; unsigned Idx:4; unsigned reserved1:4; unsigned restOfFrame0:8; unsigned restOfFrame1:8; unsigned restOfFrame2:8; unsigned restOfFrame3:8; unsigned restOfFrame4:8; unsigned restOfFrame5:8; } TALON_Control_6_MotProfAddTrajPoint_t; typedef struct _TALON_Control_6_MotProfAddTrajPoint_huff0_t { unsigned huffCode_expect_0:2; //!< Compression coding unsigned NextPt_VelOnly:1; unsigned NextPt_IsLast:1; unsigned reserved0:2; unsigned NextPt_ZeroPosition:1; unsigned NextPt_ProfileSlotSelect:1; unsigned Idx:4; unsigned reserved1:4; unsigned NextPt_DurationMs:8; unsigned NextPt_VelocityH:8; unsigned NextPt_VelocityL:8; unsigned NextPt_PositionH:8; unsigned NextPt_PositionM:8; unsigned NextPt_PositionL:8; } TALON_Control_6_MotProfAddTrajPoint_huff0_t; typedef struct _TALON_Control_6_MotProfAddTrajPoint_huff1_t { unsigned huffCode_expect_1:2; //!< Compression coding unsigned NextPt_VelOnly:1; unsigned NextPt_IsLast:1; unsigned reserved0:2; unsigned NextPt_ZeroPosition:1; unsigned NextPt_ProfileSlotSelect:1; unsigned Idx:4; unsigned reserved1:4; unsigned NextPt_DurationMs:8; unsigned NextPt_SameVelocityH:8; unsigned NextPt_SameVelocityL:8; unsigned NextPt_DeltaPositionH:8; unsigned NextPt_DeltaPositionL:8; unsigned NextPt_Count:8; } TALON_Control_6_MotProfAddTrajPoint_huff1_t; /** status */ typedef struct _TALON_Status_1_General_10ms_t { unsigned CloseLoopErrH:8; unsigned CloseLoopErrM:8; unsigned CloseLoopErrL:8; unsigned AppliedThrottle_h3:3; unsigned Fault_RevSoftLim:1; unsigned Fault_ForSoftLim:1; unsigned TokLocked:1; unsigned LimitSwitchClosedRev:1; unsigned LimitSwitchClosedFor:1; unsigned AppliedThrottle_l8:8; unsigned ModeSelect_h1:1; unsigned FeedbackDeviceSelect:4; unsigned LimitSwitchEn:3; unsigned Fault_HardwareFailure:1; unsigned Fault_RevLim:1; unsigned Fault_ForLim:1; unsigned Fault_UnderVoltage:1; unsigned Fault_OverTemp:1; unsigned ModeSelect_b3:3; unsigned TokenSeed:8; } TALON_Status_1_General_10ms_t ; typedef struct _TALON_Status_2_Feedback_20ms_t { unsigned SensorPositionH:8; unsigned SensorPositionM:8; unsigned SensorPositionL:8; unsigned SensorVelocityH:8; unsigned SensorVelocityL:8; unsigned Current_h8:8; unsigned StckyFault_RevSoftLim:1; unsigned StckyFault_ForSoftLim:1; unsigned StckyFault_RevLim:1; unsigned StckyFault_ForLim:1; unsigned StckyFault_UnderVoltage:1; unsigned StckyFault_OverTemp:1; unsigned Current_l2:2; unsigned reserved:3; unsigned Cmd5Allowed:1; unsigned VelDiv4:1; unsigned PosDiv8:1; unsigned ProfileSlotSelect:1; unsigned BrakeIsEnabled:1; } TALON_Status_2_Feedback_20ms_t ; typedef struct _TALON_Status_3_Enc_100ms_t { unsigned EncPositionH:8; unsigned EncPositionM:8; unsigned EncPositionL:8; unsigned EncVelH:8; unsigned EncVelL:8; unsigned EncIndexRiseEventsH:8; unsigned EncIndexRiseEventsL:8; unsigned reserved:3; unsigned VelDiv4:1; unsigned PosDiv8:1; unsigned QuadIdxpin:1; unsigned QuadBpin:1; unsigned QuadApin:1; } TALON_Status_3_Enc_100ms_t ; typedef struct _TALON_Status_4_AinTempVbat_100ms_t { unsigned AnalogInWithOvH:8; unsigned AnalogInWithOvM:8; unsigned AnalogInWithOvL:8; unsigned AnalogInVelH:8; unsigned AnalogInVelL:8; unsigned Temp:8; unsigned BatteryV:8; unsigned reserved:6; unsigned VelDiv4:1; unsigned PosDiv8:1; } TALON_Status_4_AinTempVbat_100ms_t ; typedef struct _TALON_Status_5_Startup_OneShot_t { unsigned ResetCountH:8; unsigned ResetCountL:8; unsigned ResetFlagsH:8; unsigned ResetFlagsL:8; unsigned FirmVersH:8; unsigned FirmVersL:8; } TALON_Status_5_Startup_OneShot_t ; typedef struct _TALON_Status_6_Eol_t { unsigned currentAdcUncal_h2:2; unsigned reserved1:5; unsigned SpiCsPin_GadgeteerPin6:1; unsigned currentAdcUncal_l8:8; unsigned tempAdcUncal_h2:2; unsigned reserved2:6; unsigned tempAdcUncal_l8:8; unsigned vbatAdcUncal_h2:2; unsigned reserved3:6; unsigned vbatAdcUncal_l8:8; unsigned analogAdcUncal_h2:2; unsigned reserved4:6; unsigned analogAdcUncal_l8:8; } TALON_Status_6_Eol_t ; typedef struct _TALON_Status_7_Debug_200ms_t { unsigned TokenizationFails_h8:8; unsigned TokenizationFails_l8:8; unsigned LastFailedToken_h8:8; unsigned LastFailedToken_l8:8; unsigned TokenizationSucceses_h8:8; unsigned TokenizationSucceses_l8:8; } TALON_Status_7_Debug_200ms_t ; typedef struct _TALON_Status_8_PulseWid_100ms_t { unsigned PulseWidPositionH:8; unsigned PulseWidPositionM:8; unsigned PulseWidPositionL:8; unsigned reserved:6; unsigned VelDiv4:1; unsigned PosDiv8:1; unsigned PeriodUsM8:8; unsigned PeriodUsL8:8; unsigned PulseWidVelH:8; unsigned PulseWidVelL:8; } TALON_Status_8_PulseWid_100ms_t ; typedef struct _TALON_Status_9_MotProfBuffer_100ms_t { unsigned ActTraj_IsValid:1; //!< '1' if other ActTraj_* signals are valid. '0' if there is no active trajectory pt. unsigned ActTraj_ProfileSlotSelect:1; unsigned ActTraj_VelOnly:1; unsigned ActTraj_IsLast:1; unsigned OutputType:2; unsigned HasUnderrun:1; unsigned IsUnderrun:1; unsigned NextID:4; unsigned reserved1:3; unsigned BufferIsFull:1; unsigned Count:8; unsigned ActTraj_VelocityH:8; unsigned ActTraj_VelocityL:8; unsigned ActTraj_PositionH:8; unsigned ActTraj_PositionM:8; unsigned ActTraj_PositionL:8; } TALON_Status_9_MotProfBuffer_100ms_t ; typedef struct _TALON_Param_Request_t { unsigned ParamEnum:8; } TALON_Param_Request_t ; typedef struct _TALON_Param_Response_t { unsigned ParamEnum:8; unsigned ParamValueL:8; unsigned ParamValueML:8; unsigned ParamValueMH:8; unsigned ParamValueH:8; } TALON_Param_Response_t ; #endif /* CTRE_FRAMES_H */