mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
This updates the hal headers and ni libraries for image v19. There were very few changes this time around, only some network communications stuff. Also updated the minimum version number in the build properties to the new image version Change-Id: Ic8cb384b92c54d938dec36df34fc609626b4cd5d
65 lines
2.9 KiB
C++
65 lines
2.9 KiB
C++
// CANSessionMux.h
|
|
//
|
|
// Defines the API for building a CAN Interface Plugin to support
|
|
// PWM-cable-free CAN motor control on FRC robots. This allows you
|
|
// to connect any CAN interface to the secure Jaguar CAN driver.
|
|
//
|
|
|
|
#ifndef __CANSessionMux_h__
|
|
#define __CANSessionMux_h__
|
|
|
|
#if defined(__vxworks)
|
|
#include <vxWorks.h>
|
|
#else
|
|
#include <stdint.h>
|
|
#endif
|
|
|
|
#define CAN_SEND_PERIOD_NO_REPEAT 0
|
|
#define CAN_SEND_PERIOD_STOP_REPEATING -1
|
|
|
|
/* Flags in the upper bits of the messageID */
|
|
#define CAN_IS_FRAME_REMOTE 0x80000000
|
|
#define CAN_IS_FRAME_11BIT 0x40000000
|
|
|
|
#define ERR_CANSessionMux_InvalidBuffer -44086
|
|
#define ERR_CANSessionMux_MessageNotFound -44087
|
|
#define WARN_CANSessionMux_NoToken 44087
|
|
#define ERR_CANSessionMux_NotAllowed -44088
|
|
#define ERR_CANSessionMux_NotInitialized -44089
|
|
#define ERR_CANSessionMux_SessionOverrun 44050
|
|
|
|
struct tCANStreamMessage{
|
|
uint32_t messageID;
|
|
uint32_t timeStamp;
|
|
uint8_t data[8];
|
|
uint8_t dataSize;
|
|
};
|
|
|
|
namespace nCANSessionMux
|
|
{
|
|
void sendMessage_wrapper(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t periodMs, int32_t *status);
|
|
void receiveMessage_wrapper(uint32_t *messageID, uint32_t messageIDMask, uint8_t *data, uint8_t *dataSize, uint32_t *timeStamp, int32_t *status);
|
|
void openStreamSession(uint32_t *sessionHandle, uint32_t messageID, uint32_t messageIDMask, uint32_t maxMessages, int32_t *status);
|
|
void closeStreamSession(uint32_t sessionHandle);
|
|
void readStreamSession(uint32_t sessionHandle, struct tCANStreamMessage *messages, uint32_t messagesToRead, uint32_t *messagesRead, int32_t *status);
|
|
void getCANStatus(float *percentBusUtilization, uint32_t *busOffCount, uint32_t *txFullCount, uint32_t *receiveErrorCount, uint32_t *transmitErrorCount, int32_t *status);
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
void FRC_NetworkCommunication_CANSessionMux_sendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t periodMs, int32_t *status);
|
|
void FRC_NetworkCommunication_CANSessionMux_receiveMessage(uint32_t *messageID, uint32_t messageIDMask, uint8_t *data, uint8_t *dataSize, uint32_t *timeStamp, int32_t *status);
|
|
void FRC_NetworkCommunication_CANSessionMux_openStreamSession(uint32_t *sessionHandle, uint32_t messageID, uint32_t messageIDMask, uint32_t maxMessages, int32_t *status);
|
|
void FRC_NetworkCommunication_CANSessionMux_closeStreamSession(uint32_t sessionHandle);
|
|
void FRC_NetworkCommunication_CANSessionMux_readStreamSession(uint32_t sessionHandle, struct tCANStreamMessage *messages, uint32_t messagesToRead, uint32_t *messagesRead, int32_t *status);
|
|
void FRC_NetworkCommunication_CANSessionMux_getCANStatus(float *percentBusUtilization, uint32_t *busOffCount, uint32_t *txFullCount, uint32_t *receiveErrorCount, uint32_t *transmitErrorCount, int32_t *status);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // __CANSessionMux_h__
|