mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-01 02:41:48 +00:00
Renamed folders for consistency, using sim/athena/shared schema (#27)
Rename the following folders: hal/lib/Athena -> hal/lib/athena hal/lib/Desktop -> hal/lib/sim hal/lib/Shared -> hal/lib/shared wpilibc/Athena -> wpilibc/athena wpilibc/simulation -> wpilibc/sim Windows users may need to run gradlew clean after updating.
This commit is contained in:
committed by
Peter Johnson
parent
54092378e9
commit
e71f454b9d
20
wpilibc/athena/include/NetworkCommunication/AICalibration.h
Normal file
20
wpilibc/athena/include/NetworkCommunication/AICalibration.h
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
#ifndef __AICalibration_h__
|
||||
#define __AICalibration_h__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
uint32_t FRC_NetworkCommunication_nAICalibration_getLSBWeight(
|
||||
const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status);
|
||||
int32_t FRC_NetworkCommunication_nAICalibration_getOffset(
|
||||
const uint32_t aiSystemIndex, const uint32_t channel, int32_t *status);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __AICalibration_h__
|
||||
109
wpilibc/athena/include/NetworkCommunication/CANInterfacePlugin.h
Normal file
109
wpilibc/athena/include/NetworkCommunication/CANInterfacePlugin.h
Normal file
@@ -0,0 +1,109 @@
|
||||
// CANInterfacePlugin.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 __CANInterfacePlugin_h__
|
||||
#define __CANInterfacePlugin_h__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define CAN_IS_FRAME_REMOTE 0x80000000
|
||||
#define CAN_IS_FRAME_11BIT 0x40000000
|
||||
#define CAN_29BIT_MESSAGE_ID_MASK 0x1FFFFFFF
|
||||
#define CAN_11BIT_MESSAGE_ID_MASK 0x000007FF
|
||||
|
||||
class CANInterfacePlugin {
|
||||
public:
|
||||
CANInterfacePlugin() {}
|
||||
virtual ~CANInterfacePlugin() {}
|
||||
|
||||
/**
|
||||
* This entry-point of the CANInterfacePlugin is passed a message that the
|
||||
* driver needs to send to
|
||||
* a device on the CAN bus.
|
||||
*
|
||||
* This function may be called from multiple contexts and must therefore be
|
||||
* reentrant.
|
||||
*
|
||||
* @param messageID The 29-bit CAN message ID in the lsbs. The msb can
|
||||
* indicate a remote frame.
|
||||
* @param data A pointer to a buffer containing between 0 and 8 bytes to send
|
||||
* with the message. May be nullptr if dataSize is 0.
|
||||
* @param dataSize The number of bytes to send with the message.
|
||||
* @return Return any error code. On success return 0.
|
||||
*/
|
||||
virtual int32_t sendMessage(uint32_t messageID, const uint8_t *data,
|
||||
uint8_t dataSize) = 0;
|
||||
|
||||
/**
|
||||
* This entry-point of the CANInterfacePlugin is passed buffers which should
|
||||
* be populated with
|
||||
* any received messages from devices on the CAN bus.
|
||||
*
|
||||
* This function is always called by a single task in the Jaguar driver, so it
|
||||
* need not be reentrant.
|
||||
*
|
||||
* This function is expected to block for some period of time waiting for a
|
||||
* message from the CAN bus.
|
||||
* It may timeout periodically (returning non-zero to indicate no message was
|
||||
* populated) to allow for
|
||||
* shutdown and unloading of the plugin.
|
||||
*
|
||||
* @param messageID A reference to be populated with a received 29-bit CAN
|
||||
* message ID in the lsbs.
|
||||
* @param data A pointer to a buffer of 8 bytes to be populated with data
|
||||
* received with the message.
|
||||
* @param dataSize A reference to be populated with the size of the data
|
||||
* received (0 - 8 bytes).
|
||||
* @return This should return 0 if a message was populated, non-0 if no
|
||||
* message was not populated.
|
||||
*/
|
||||
virtual int32_t receiveMessage(uint32_t &messageID, uint8_t *data,
|
||||
uint8_t &dataSize) = 0;
|
||||
|
||||
#if defined(__linux)
|
||||
/**
|
||||
* This entry-point of the CANInterfacePlugin returns status of the CAN bus.
|
||||
*
|
||||
* This function may be called from multiple contexts and must therefore be
|
||||
* reentrant.
|
||||
*
|
||||
* This function will return detailed hardware status if available for
|
||||
* diagnostics of the CAN interface.
|
||||
*
|
||||
* @param busOffCount The number of times that sendMessage failed with a
|
||||
* busOff error indicating that messages
|
||||
* are not successfully transmitted on the bus.
|
||||
* @param txFullCount The number of times that sendMessage failed with a
|
||||
* txFifoFull error indicating that messages
|
||||
* are not successfully received by any CAN device.
|
||||
* @param receiveErrorCount The count of receive errors as reported by the CAN
|
||||
* driver.
|
||||
* @param transmitErrorCount The count of transmit errors as reported by the
|
||||
* CAN driver.
|
||||
* @return This should return 0 if all status was retrieved successfully or an
|
||||
* error code if not.
|
||||
*/
|
||||
virtual int32_t getStatus(uint32_t &busOffCount, uint32_t &txFullCount,
|
||||
uint32_t &receiveErrorCount,
|
||||
uint32_t &transmitErrorCount) {
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
* This function allows you to register a CANInterfacePlugin to provide access a
|
||||
* CAN bus.
|
||||
*
|
||||
* @param interface A pointer to an object that inherits from CANInterfacePlugin
|
||||
* and implements
|
||||
* the pure virtual interface. If nullptr, unregister the current plugin.
|
||||
*/
|
||||
void FRC_NetworkCommunication_CANSessionMux_registerInterface(
|
||||
CANInterfacePlugin *interface);
|
||||
|
||||
#endif // __CANInterfacePlugin_h__
|
||||
81
wpilibc/athena/include/NetworkCommunication/CANSessionMux.h
Normal file
81
wpilibc/athena/include/NetworkCommunication/CANSessionMux.h
Normal file
@@ -0,0 +1,81 @@
|
||||
// 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__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#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__
|
||||
130
wpilibc/athena/include/NetworkCommunication/FRCComm.h
Normal file
130
wpilibc/athena/include/NetworkCommunication/FRCComm.h
Normal file
@@ -0,0 +1,130 @@
|
||||
/*************************************************************
|
||||
* NOTICE
|
||||
*
|
||||
* These are the only externally exposed functions to the
|
||||
* NetworkCommunication library
|
||||
*
|
||||
* This is an implementation of FRC Spec for Comm Protocol
|
||||
* Revision 4.5, June 30, 2008
|
||||
*
|
||||
* Copyright (c) National Instruments 2008. All Rights Reserved.
|
||||
*
|
||||
*************************************************************/
|
||||
|
||||
#ifndef __FRC_COMM_H__
|
||||
#define __FRC_COMM_H__
|
||||
|
||||
#ifdef SIMULATION
|
||||
#include <vxWorks_compat.h>
|
||||
#ifdef USE_THRIFT
|
||||
#define EXPORT_FUNC
|
||||
#else
|
||||
#define EXPORT_FUNC __declspec(dllexport) __cdecl
|
||||
#endif
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#include <pthread.h>
|
||||
#define EXPORT_FUNC
|
||||
#endif
|
||||
|
||||
#define ERR_FRCSystem_NetCommNotResponding -44049
|
||||
#define ERR_FRCSystem_NoDSConnection -44018
|
||||
|
||||
enum AllianceStationID_t {
|
||||
kAllianceStationID_red1,
|
||||
kAllianceStationID_red2,
|
||||
kAllianceStationID_red3,
|
||||
kAllianceStationID_blue1,
|
||||
kAllianceStationID_blue2,
|
||||
kAllianceStationID_blue3,
|
||||
};
|
||||
|
||||
enum MatchType_t {
|
||||
kMatchType_none,
|
||||
kMatchType_practice,
|
||||
kMatchType_qualification,
|
||||
kMatchType_elimination,
|
||||
};
|
||||
|
||||
struct ControlWord_t {
|
||||
uint32_t enabled : 1;
|
||||
uint32_t autonomous : 1;
|
||||
uint32_t test : 1;
|
||||
uint32_t eStop : 1;
|
||||
uint32_t fmsAttached : 1;
|
||||
uint32_t dsAttached : 1;
|
||||
uint32_t control_reserved : 26;
|
||||
};
|
||||
|
||||
struct JoystickAxes_t {
|
||||
uint16_t count;
|
||||
int16_t axes[1];
|
||||
};
|
||||
|
||||
struct JoystickPOV_t {
|
||||
uint16_t count;
|
||||
int16_t povs[1];
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
int EXPORT_FUNC FRC_NetworkCommunication_Reserve(void *instance);
|
||||
#ifndef SIMULATION
|
||||
void EXPORT_FUNC
|
||||
getFPGAHardwareVersion(uint16_t *fpgaVersion, uint32_t *fpgaRevision);
|
||||
#endif
|
||||
int EXPORT_FUNC setStatusData(float battery, uint8_t dsDigitalOut,
|
||||
uint8_t updateNumber, const char *userDataHigh,
|
||||
int userDataHighLength, const char *userDataLow,
|
||||
int userDataLowLength, int wait_ms);
|
||||
int EXPORT_FUNC setErrorData(const char *errors, int errorsLength, int wait_ms);
|
||||
|
||||
#ifdef SIMULATION
|
||||
void EXPORT_FUNC setNewDataSem(HANDLE);
|
||||
#else
|
||||
void EXPORT_FUNC setNewDataSem(pthread_cond_t *);
|
||||
#endif
|
||||
|
||||
// this uint32_t is really a LVRefNum
|
||||
int EXPORT_FUNC setNewDataOccurRef(uint32_t refnum);
|
||||
|
||||
int EXPORT_FUNC
|
||||
FRC_NetworkCommunication_getControlWord(struct ControlWord_t *controlWord);
|
||||
int EXPORT_FUNC FRC_NetworkCommunication_getAllianceStation(
|
||||
enum AllianceStationID_t *allianceStation);
|
||||
int EXPORT_FUNC FRC_NetworkCommunication_getMatchTime(float *matchTime);
|
||||
int EXPORT_FUNC
|
||||
FRC_NetworkCommunication_getJoystickAxes(uint8_t joystickNum,
|
||||
struct JoystickAxes_t *axes,
|
||||
uint8_t maxAxes);
|
||||
int EXPORT_FUNC FRC_NetworkCommunication_getJoystickButtons(uint8_t joystickNum,
|
||||
uint32_t *buttons,
|
||||
uint8_t *count);
|
||||
int EXPORT_FUNC
|
||||
FRC_NetworkCommunication_getJoystickPOVs(uint8_t joystickNum,
|
||||
struct JoystickPOV_t *povs,
|
||||
uint8_t maxPOVs);
|
||||
int EXPORT_FUNC
|
||||
FRC_NetworkCommunication_setJoystickOutputs(uint8_t joystickNum,
|
||||
uint32_t hidOutputs,
|
||||
uint16_t leftRumble,
|
||||
uint16_t rightRumble);
|
||||
int EXPORT_FUNC
|
||||
FRC_NetworkCommunication_getJoystickDesc(uint8_t joystickNum, uint8_t *isXBox,
|
||||
uint8_t *type, char *name,
|
||||
uint8_t *axisCount, uint8_t *axisTypes,
|
||||
uint8_t *buttonCount,
|
||||
uint8_t *povCount);
|
||||
|
||||
void EXPORT_FUNC FRC_NetworkCommunication_getVersionString(char *version);
|
||||
int EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramStarting(void);
|
||||
void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramDisabled(void);
|
||||
void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramAutonomous(void);
|
||||
void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTeleop(void);
|
||||
void EXPORT_FUNC FRC_NetworkCommunication_observeUserProgramTest(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
57
wpilibc/athena/include/NetworkCommunication/LoadOut.h
Normal file
57
wpilibc/athena/include/NetworkCommunication/LoadOut.h
Normal file
@@ -0,0 +1,57 @@
|
||||
|
||||
#ifndef __LoadOut_h__
|
||||
#define __LoadOut_h__
|
||||
|
||||
#ifdef SIMULATION
|
||||
#include <vxWorks_compat.h>
|
||||
#define EXPORT_FUNC __declspec(dllexport) __cdecl
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#define EXPORT_FUNC
|
||||
#endif
|
||||
|
||||
#define kMaxModuleNumber 2
|
||||
namespace nLoadOut {
|
||||
#if defined(SIMULATION)
|
||||
typedef enum {
|
||||
kModuleType_Unknown = 0x00,
|
||||
kModuleType_Analog = 0x01,
|
||||
kModuleType_Digital = 0x02,
|
||||
kModuleType_Solenoid = 0x03,
|
||||
} tModuleType;
|
||||
bool EXPORT_FUNC
|
||||
getModulePresence(tModuleType moduleType, uint8_t moduleNumber);
|
||||
#endif
|
||||
typedef enum {
|
||||
kTargetClass_Unknown = 0x00,
|
||||
kTargetClass_FRC1 = 0x10,
|
||||
kTargetClass_FRC2 = 0x20,
|
||||
kTargetClass_FRC3 = 0x30,
|
||||
kTargetClass_RoboRIO = 0x40,
|
||||
#if defined(SIMULATION)
|
||||
kTargetClass_FRC2_Analog = kTargetClass_FRC2 | kModuleType_Analog,
|
||||
kTargetClass_FRC2_Digital = kTargetClass_FRC2 | kModuleType_Digital,
|
||||
kTargetClass_FRC2_Solenoid = kTargetClass_FRC2 | kModuleType_Solenoid,
|
||||
#endif
|
||||
kTargetClass_FamilyMask = 0xF0,
|
||||
kTargetClass_ModuleMask = 0x0F,
|
||||
} tTargetClass;
|
||||
tTargetClass EXPORT_FUNC getTargetClass();
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(SIMULATION)
|
||||
uint32_t EXPORT_FUNC
|
||||
FRC_NetworkCommunication_nLoadOut_getModulePresence(uint32_t moduleType,
|
||||
uint8_t moduleNumber);
|
||||
#endif
|
||||
uint32_t EXPORT_FUNC FRC_NetworkCommunication_nLoadOut_getTargetClass();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __LoadOut_h__
|
||||
19
wpilibc/athena/include/NetworkCommunication/symModuleLink.h
Normal file
19
wpilibc/athena/include/NetworkCommunication/symModuleLink.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#ifndef __SYM_MODULE_LINK_H__
|
||||
#define __SYM_MODULE_LINK_H__
|
||||
|
||||
#include "HAL/HAL.hpp"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern STATUS moduleNameFindBySymbolName(
|
||||
const char* symbol, /* symbol name to look for */
|
||||
char* module /* where to return module name */
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user