diff --git a/hal/lib/athena/FRC_NetworkCommunication/AICalibration.h b/hal/include/FRC_NetworkCommunication/AICalibration.h similarity index 100% rename from hal/lib/athena/FRC_NetworkCommunication/AICalibration.h rename to hal/include/FRC_NetworkCommunication/AICalibration.h diff --git a/hal/lib/athena/FRC_NetworkCommunication/CANInterfacePlugin.h b/hal/include/FRC_NetworkCommunication/CANInterfacePlugin.h similarity index 100% rename from hal/lib/athena/FRC_NetworkCommunication/CANInterfacePlugin.h rename to hal/include/FRC_NetworkCommunication/CANInterfacePlugin.h diff --git a/hal/lib/athena/FRC_NetworkCommunication/CANSessionMux.h b/hal/include/FRC_NetworkCommunication/CANSessionMux.h similarity index 100% rename from hal/lib/athena/FRC_NetworkCommunication/CANSessionMux.h rename to hal/include/FRC_NetworkCommunication/CANSessionMux.h diff --git a/hal/lib/athena/FRC_NetworkCommunication/FRCComm.h b/hal/include/FRC_NetworkCommunication/FRCComm.h similarity index 100% rename from hal/lib/athena/FRC_NetworkCommunication/FRCComm.h rename to hal/include/FRC_NetworkCommunication/FRCComm.h diff --git a/hal/lib/athena/FRC_NetworkCommunication/LoadOut.h b/hal/include/FRC_NetworkCommunication/LoadOut.h similarity index 100% rename from hal/lib/athena/FRC_NetworkCommunication/LoadOut.h rename to hal/include/FRC_NetworkCommunication/LoadOut.h diff --git a/wpilibc/athena/include/CANJaguar.h b/wpilibc/athena/include/CANJaguar.h index 7ac25ce301..41f8c17b23 100644 --- a/wpilibc/athena/include/CANJaguar.h +++ b/wpilibc/athena/include/CANJaguar.h @@ -15,12 +15,12 @@ #include "CAN/can_proto.h" #include "CANSpeedController.h" #include "ErrorBase.h" +#include "FRC_NetworkCommunication/CANSessionMux.h" #include "HAL/cpp/Semaphore.h" #include "HAL/cpp/priority_mutex.h" #include "LiveWindow/LiveWindowSendable.h" #include "MotorSafety.h" #include "MotorSafetyHelper.h" -#include "NetworkCommunication/CANSessionMux.h" #include "PIDOutput.h" #include "Resource.h" #include "tables/ITableListener.h" diff --git a/wpilibc/athena/include/NetworkCommunication/AICalibration.h b/wpilibc/athena/include/NetworkCommunication/AICalibration.h deleted file mode 100644 index c4a8f75965..0000000000 --- a/wpilibc/athena/include/NetworkCommunication/AICalibration.h +++ /dev/null @@ -1,20 +0,0 @@ - -#ifndef __AICalibration_h__ -#define __AICalibration_h__ - -#include - -#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__ diff --git a/wpilibc/athena/include/NetworkCommunication/CANInterfacePlugin.h b/wpilibc/athena/include/NetworkCommunication/CANInterfacePlugin.h deleted file mode 100644 index 18759804fc..0000000000 --- a/wpilibc/athena/include/NetworkCommunication/CANInterfacePlugin.h +++ /dev/null @@ -1,109 +0,0 @@ -// 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 - -#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__ diff --git a/wpilibc/athena/include/NetworkCommunication/CANSessionMux.h b/wpilibc/athena/include/NetworkCommunication/CANSessionMux.h deleted file mode 100644 index 9cd9a3ff7f..0000000000 --- a/wpilibc/athena/include/NetworkCommunication/CANSessionMux.h +++ /dev/null @@ -1,81 +0,0 @@ -// 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 - -#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__ diff --git a/wpilibc/athena/include/NetworkCommunication/FRCComm.h b/wpilibc/athena/include/NetworkCommunication/FRCComm.h deleted file mode 100644 index 588c8ca62b..0000000000 --- a/wpilibc/athena/include/NetworkCommunication/FRCComm.h +++ /dev/null @@ -1,130 +0,0 @@ -/************************************************************* - * 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 -#ifdef USE_THRIFT -#define EXPORT_FUNC -#else -#define EXPORT_FUNC __declspec(dllexport) __cdecl -#endif -#else -#include -#include -#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 diff --git a/wpilibc/athena/include/NetworkCommunication/LoadOut.h b/wpilibc/athena/include/NetworkCommunication/LoadOut.h deleted file mode 100644 index 5a1174913c..0000000000 --- a/wpilibc/athena/include/NetworkCommunication/LoadOut.h +++ /dev/null @@ -1,57 +0,0 @@ - -#ifndef __LoadOut_h__ -#define __LoadOut_h__ - -#ifdef SIMULATION -#include -#define EXPORT_FUNC __declspec(dllexport) __cdecl -#else -#include -#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__ diff --git a/wpilibc/athena/include/NetworkCommunication/symModuleLink.h b/wpilibc/athena/include/NetworkCommunication/symModuleLink.h deleted file mode 100644 index 621cbb6dc6..0000000000 --- a/wpilibc/athena/include/NetworkCommunication/symModuleLink.h +++ /dev/null @@ -1,19 +0,0 @@ -#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 diff --git a/wpilibc/athena/src/CANJaguar.cpp b/wpilibc/athena/src/CANJaguar.cpp index dd32123e7c..5aa961245f 100644 --- a/wpilibc/athena/src/CANJaguar.cpp +++ b/wpilibc/athena/src/CANJaguar.cpp @@ -10,9 +10,9 @@ #include #include +#include "FRC_NetworkCommunication/CANSessionMux.h" #include "HAL/HAL.h" #include "LiveWindow/LiveWindow.h" -#include "NetworkCommunication/CANSessionMux.h" #include "Timer.h" #include "WPIErrors.h" diff --git a/wpilibc/athena/src/DriverStation.cpp b/wpilibc/athena/src/DriverStation.cpp index fa582dabbb..1822d6e8bc 100644 --- a/wpilibc/athena/src/DriverStation.cpp +++ b/wpilibc/athena/src/DriverStation.cpp @@ -8,9 +8,9 @@ #include "DriverStation.h" #include #include "AnalogInput.h" +#include "FRC_NetworkCommunication/FRCComm.h" #include "Log.h" #include "MotorSafetyHelper.h" -#include "NetworkCommunication/FRCComm.h" #include "Timer.h" #include "Utility.h" #include "WPIErrors.h" diff --git a/wpilibc/athena/src/SensorBase.cpp b/wpilibc/athena/src/SensorBase.cpp index 41075e002c..a55c60b5e6 100644 --- a/wpilibc/athena/src/SensorBase.cpp +++ b/wpilibc/athena/src/SensorBase.cpp @@ -7,9 +7,9 @@ #include "SensorBase.h" +#include "FRC_NetworkCommunication/LoadOut.h" #include "HAL/HAL.h" #include "HAL/Port.h" -#include "NetworkCommunication/LoadOut.h" #include "WPIErrors.h" const uint32_t SensorBase::kDigitalChannels;