// Copyright (c) FIRST and other WPILib contributors. // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. #pragma once #include #include #include #include "hal/simulation/RoboRioData.h" #include "hal/simulation/SimDataValue.h" namespace hal { class RoboRioData { HAL_SIMDATAVALUE_DEFINE_NAME(FPGAButton) HAL_SIMDATAVALUE_DEFINE_NAME(VInVoltage) HAL_SIMDATAVALUE_DEFINE_NAME(VInCurrent) HAL_SIMDATAVALUE_DEFINE_NAME(UserVoltage6V) HAL_SIMDATAVALUE_DEFINE_NAME(UserCurrent6V) HAL_SIMDATAVALUE_DEFINE_NAME(UserActive6V) HAL_SIMDATAVALUE_DEFINE_NAME(UserVoltage5V) HAL_SIMDATAVALUE_DEFINE_NAME(UserCurrent5V) HAL_SIMDATAVALUE_DEFINE_NAME(UserActive5V) HAL_SIMDATAVALUE_DEFINE_NAME(UserVoltage3V3) HAL_SIMDATAVALUE_DEFINE_NAME(UserCurrent3V3) HAL_SIMDATAVALUE_DEFINE_NAME(UserActive3V3) HAL_SIMDATAVALUE_DEFINE_NAME(UserFaults6V) HAL_SIMDATAVALUE_DEFINE_NAME(UserFaults5V) HAL_SIMDATAVALUE_DEFINE_NAME(UserFaults3V3) HAL_SIMDATAVALUE_DEFINE_NAME(BrownoutVoltage) HAL_SIMDATAVALUE_DEFINE_NAME(CPUTemp) HAL_SIMDATAVALUE_DEFINE_NAME(TeamNumber) HAL_SIMCALLBACKREGISTRY_DEFINE_NAME(SerialNumber) HAL_SIMCALLBACKREGISTRY_DEFINE_NAME(Comments); public: SimDataValue fpgaButton{false}; SimDataValue vInVoltage{12.0}; SimDataValue vInCurrent{0.0}; SimDataValue userVoltage6V{6.0}; SimDataValue userCurrent6V{0.0}; SimDataValue userActive6V{ true}; SimDataValue userVoltage5V{5.0}; SimDataValue userCurrent5V{0.0}; SimDataValue userActive5V{ true}; SimDataValue userVoltage3V3{ 3.3}; SimDataValue userCurrent3V3{ 0.0}; SimDataValue userActive3V3{ true}; SimDataValue userFaults6V{0}; SimDataValue userFaults5V{0}; SimDataValue userFaults3V3{0}; SimDataValue brownoutVoltage{ 6.75}; SimDataValue cpuTemp{45.0}; SimDataValue teamNumber{0}; int32_t RegisterSerialNumberCallback(HAL_RoboRioStringCallback callback, void* param, HAL_Bool initialNotify); void CancelSerialNumberCallback(int32_t uid); size_t GetSerialNumber(char* buffer, size_t size); void SetSerialNumber(const char* serialNumber, size_t size); int32_t RegisterCommentsCallback(HAL_RoboRioStringCallback callback, void* param, HAL_Bool initialNotify); void CancelCommentsCallback(int32_t uid); size_t GetComments(char* buffer, size_t size); void SetComments(const char* comments, size_t size); virtual void ResetData(); private: wpi::spinlock m_serialNumberMutex; std::string m_serialNumber; wpi::spinlock m_commentsMutex; std::string m_comments; SimCallbackRegistry m_serialNumberCallbacks; SimCallbackRegistry m_commentsCallbacks; }; extern RoboRioData* SimRoboRioData; } // namespace hal