Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| /*----------------------------------------------------------------------------*/ | |
| /* Copyright (c) FIRST 2013. All Rights Reserved. */ | |
| /* Open Source Software - may be modified and shared by FRC teams. The code */ | |
| /* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ | |
| /*----------------------------------------------------------------------------*/ | |
| #pragma once | |
| #include <stdint.h> | |
| #include <cmath> | |
| #include "Accelerometer.hpp" | |
| #include "Analog.hpp" | |
| #include "Compressor.hpp" | |
| #include "Digital.hpp" | |
| #include "Solenoid.hpp" | |
| #include "Notifier.hpp" | |
| #include "Interrupts.hpp" | |
| #include "Errors.hpp" | |
| #include "PDP.hpp" | |
| #include "Power.hpp" | |
| #include "SerialPort.hpp" | |
| #include "Utilities.hpp" | |
| #include "Semaphore.hpp" | |
| #include "Task.hpp" | |
| #define HAL_IO_CONFIG_DATA_SIZE 32 | |
| #define HAL_SYS_STATUS_DATA_SIZE 44 | |
| #define HAL_USER_STATUS_DATA_SIZE (984 - HAL_IO_CONFIG_DATA_SIZE - HAL_SYS_STATUS_DATA_SIZE) | |
| #define HALFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Input 17 | |
| #define HALFRC_NetworkCommunication_DynamicType_DSEnhancedIO_Output 18 | |
| #define HALFRC_NetworkCommunication_DynamicType_Kinect_Header 19 | |
| #define HALFRC_NetworkCommunication_DynamicType_Kinect_Extra1 20 | |
| #define HALFRC_NetworkCommunication_DynamicType_Kinect_Vertices1 21 | |
| #define HALFRC_NetworkCommunication_DynamicType_Kinect_Extra2 22 | |
| #define HALFRC_NetworkCommunication_DynamicType_Kinect_Vertices2 23 | |
| #define HALFRC_NetworkCommunication_DynamicType_Kinect_Joystick 24 | |
| #define HALFRC_NetworkCommunication_DynamicType_Kinect_Custom 25 | |
| namespace HALUsageReporting | |
| { | |
| enum tResourceType | |
| { | |
| kResourceType_Controller, | |
| kResourceType_Module, | |
| kResourceType_Language, | |
| kResourceType_CANPlugin, | |
| kResourceType_Accelerometer, | |
| kResourceType_ADXL345, | |
| kResourceType_AnalogChannel, | |
| kResourceType_AnalogTrigger, | |
| kResourceType_AnalogTriggerOutput, | |
| kResourceType_CANJaguar, | |
| kResourceType_Compressor, | |
| kResourceType_Counter, | |
| kResourceType_Dashboard, | |
| kResourceType_DigitalInput, | |
| kResourceType_DigitalOutput, | |
| kResourceType_DriverStationCIO, | |
| kResourceType_DriverStationEIO, | |
| kResourceType_DriverStationLCD, | |
| kResourceType_Encoder, | |
| kResourceType_GearTooth, | |
| kResourceType_Gyro, | |
| kResourceType_I2C, | |
| kResourceType_Framework, | |
| kResourceType_Jaguar, | |
| kResourceType_Joystick, | |
| kResourceType_Kinect, | |
| kResourceType_KinectStick, | |
| kResourceType_PIDController, | |
| kResourceType_Preferences, | |
| kResourceType_PWM, | |
| kResourceType_Relay, | |
| kResourceType_RobotDrive, | |
| kResourceType_SerialPort, | |
| kResourceType_Servo, | |
| kResourceType_Solenoid, | |
| kResourceType_SPI, | |
| kResourceType_Task, | |
| kResourceType_Ultrasonic, | |
| kResourceType_Victor, | |
| kResourceType_Button, | |
| kResourceType_Command, | |
| kResourceType_AxisCamera, | |
| kResourceType_PCVideoServer, | |
| kResourceType_SmartDashboard, | |
| kResourceType_Talon, | |
| kResourceType_HiTechnicColorSensor, | |
| kResourceType_HiTechnicAccel, | |
| kResourceType_HiTechnicCompass, | |
| kResourceType_SRF08, | |
| kResourceType_AnalogOutput, | |
| kResourceType_VictorSP, | |
| kResourceType_TalonSRX, | |
| kResourceType_CANTalonSRX, | |
| kResourceType_ADXL362, | |
| kResourceType_ADXRS450, | |
| kResourceType_RevSPARK, | |
| kResourceType_MindsensorsSD540, | |
| kResourceType_DigitalFilter, | |
| }; | |
| enum tInstances | |
| { | |
| kLanguage_LabVIEW = 1, | |
| kLanguage_CPlusPlus = 2, | |
| kLanguage_Java = 3, | |
| kLanguage_Python = 4, | |
| kCANPlugin_BlackJagBridge = 1, | |
| kCANPlugin_2CAN = 2, | |
| kFramework_Iterative = 1, | |
| kFramework_Sample = 2, | |
| kFramework_CommandControl = 3, | |
| kRobotDrive_ArcadeStandard = 1, | |
| kRobotDrive_ArcadeButtonSpin = 2, | |
| kRobotDrive_ArcadeRatioCurve = 3, | |
| kRobotDrive_Tank = 4, | |
| kRobotDrive_MecanumPolar = 5, | |
| kRobotDrive_MecanumCartesian = 6, | |
| kDriverStationCIO_Analog = 1, | |
| kDriverStationCIO_DigitalIn = 2, | |
| kDriverStationCIO_DigitalOut = 3, | |
| kDriverStationEIO_Acceleration = 1, | |
| kDriverStationEIO_AnalogIn = 2, | |
| kDriverStationEIO_AnalogOut = 3, | |
| kDriverStationEIO_Button = 4, | |
| kDriverStationEIO_LED = 5, | |
| kDriverStationEIO_DigitalIn = 6, | |
| kDriverStationEIO_DigitalOut = 7, | |
| kDriverStationEIO_FixedDigitalOut = 8, | |
| kDriverStationEIO_PWM = 9, | |
| kDriverStationEIO_Encoder = 10, | |
| kDriverStationEIO_TouchSlider = 11, | |
| kADXL345_SPI = 1, | |
| kADXL345_I2C = 2, | |
| kCommand_Scheduler = 1, | |
| kSmartDashboard_Instance = 1, | |
| }; | |
| } | |
| struct HALControlWord { | |
| 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; | |
| }; | |
| enum HALAllianceStationID { | |
| kHALAllianceStationID_red1, | |
| kHALAllianceStationID_red2, | |
| kHALAllianceStationID_red3, | |
| kHALAllianceStationID_blue1, | |
| kHALAllianceStationID_blue2, | |
| kHALAllianceStationID_blue3, | |
| }; | |
| /* The maximum number of axes that will be stored in a single HALJoystickAxes | |
| struct. This is used for allocating buffers, not bounds checking, since | |
| there are usually less axes in practice. */ | |
| static const size_t kMaxJoystickAxes = 12; | |
| static const size_t kMaxJoystickPOVs = 12; | |
| struct HALJoystickAxes { | |
| uint16_t count; | |
| int16_t axes[kMaxJoystickAxes]; | |
| }; | |
| struct HALJoystickPOVs { | |
| uint16_t count; | |
| int16_t povs[kMaxJoystickPOVs]; | |
| }; | |
| struct HALJoystickButtons { | |
| uint32_t buttons; | |
| uint8_t count; | |
| }; | |
| struct HALJoystickDescriptor { | |
| uint8_t isXbox; | |
| uint8_t type; | |
| char name[256]; | |
| uint8_t axisCount; | |
| uint8_t axisTypes[kMaxJoystickAxes]; | |
| uint8_t buttonCount; | |
| uint8_t povCount; | |
| }; | |
| inline float intToFloat(int value) | |
| { | |
| return (float)value; | |
| } | |
| inline int floatToInt(float value) | |
| { | |
| return round(value); | |
| } | |
| extern "C" | |
| { | |
| extern const uint32_t dio_kNumSystems; | |
| extern const uint32_t solenoid_kNumDO7_0Elements; | |
| extern const uint32_t interrupt_kNumSystems; | |
| extern const uint32_t kSystemClockTicksPerMicrosecond; | |
| void* getPort(uint8_t pin); | |
| void* getPortWithModule(uint8_t module, uint8_t pin); | |
| void freePort(void* port); | |
| const char* getHALErrorMessage(int32_t code); | |
| uint16_t getFPGAVersion(int32_t *status); | |
| uint32_t getFPGARevision(int32_t *status); | |
| uint64_t getFPGATime(int32_t *status); | |
| bool getFPGAButton(int32_t *status); | |
| int HALSetErrorData(const char *errors, int errorsLength, int wait_ms); | |
| int HALSendError(int isError, int32_t errorCode, int isLVCode, | |
| const char *details, const char *location, const char *callStack, | |
| int printMsg); | |
| int HALGetControlWord(HALControlWord *data); | |
| int HALGetAllianceStation(enum HALAllianceStationID *allianceStation); | |
| int HALGetJoystickAxes(uint8_t joystickNum, HALJoystickAxes *axes); | |
| int HALGetJoystickPOVs(uint8_t joystickNum, HALJoystickPOVs *povs); | |
| int HALGetJoystickButtons(uint8_t joystickNum, HALJoystickButtons *buttons); | |
| int HALGetJoystickDescriptor(uint8_t joystickNum, HALJoystickDescriptor *desc); | |
| int HALGetJoystickIsXbox(uint8_t joystickNum); | |
| int HALGetJoystickType(uint8_t joystickNum); | |
| char* HALGetJoystickName(uint8_t joystickNum); | |
| int HALGetJoystickAxisType(uint8_t joystickNum, uint8_t axis); | |
| int HALSetJoystickOutputs(uint8_t joystickNum, uint32_t outputs, uint16_t leftRumble, uint16_t rightRumble); | |
| int HALGetMatchTime(float *matchTime); | |
| void HALSetNewDataSem(MULTIWAIT_ID sem); | |
| bool HALGetSystemActive(int32_t *status); | |
| bool HALGetBrownedOut(int32_t *status); | |
| int HALInitialize(int mode = 0); | |
| void HALNetworkCommunicationObserveUserProgramStarting(); | |
| void HALNetworkCommunicationObserveUserProgramDisabled(); | |
| void HALNetworkCommunicationObserveUserProgramAutonomous(); | |
| void HALNetworkCommunicationObserveUserProgramTeleop(); | |
| void HALNetworkCommunicationObserveUserProgramTest(); | |
| uint32_t HALReport(uint8_t resource, uint8_t instanceNumber, uint8_t context = 0, | |
| const char *feature = NULL); | |
| } | |
| // TODO: HACKS for now... | |
| extern "C" | |
| { | |
| void NumericArrayResize(); | |
| void RTSetCleanupProc(); | |
| void EDVR_CreateReference(); | |
| void Occur(); | |
| } |