// 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 "hal/simulation/EncoderData.h" #include "hal/simulation/SimDataValue.h" namespace hal { class EncoderData { HAL_SIMDATAVALUE_DEFINE_NAME(Initialized) HAL_SIMDATAVALUE_DEFINE_NAME(Count) HAL_SIMDATAVALUE_DEFINE_NAME(Period) HAL_SIMDATAVALUE_DEFINE_NAME(Reset) HAL_SIMDATAVALUE_DEFINE_NAME(MaxPeriod) HAL_SIMDATAVALUE_DEFINE_NAME(Direction) HAL_SIMDATAVALUE_DEFINE_NAME(ReverseDirection) HAL_SIMDATAVALUE_DEFINE_NAME(SamplesToAverage) HAL_SIMDATAVALUE_DEFINE_NAME(DistancePerPulse) public: std::atomic digitalChannelA{0}; std::atomic digitalChannelB{0}; SimDataValue initialized{ false}; std::atomic simDevice; SimDataValue count{0}; SimDataValue period{ (std::numeric_limits::max)()}; SimDataValue reset{false}; SimDataValue maxPeriod{0}; SimDataValue direction{false}; SimDataValue reverseDirection{false}; SimDataValue samplesToAverage{ 0}; SimDataValue distancePerPulse{1}; virtual void ResetData(); }; extern EncoderData* SimEncoderData; } // namespace hal