/*----------------------------------------------------------------------------*/ /* Copyright (c) 2019-2020 FIRST. 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 the root directory of */ /* the project. */ /*----------------------------------------------------------------------------*/ #pragma once #include #include #include "hal/simulation/AddressableLEDData.h" #include "hal/simulation/SimCallbackRegistry.h" #include "hal/simulation/SimDataValue.h" namespace hal { class AddressableLEDData { HAL_SIMDATAVALUE_DEFINE_NAME(Initialized) HAL_SIMDATAVALUE_DEFINE_NAME(OutputPort) HAL_SIMDATAVALUE_DEFINE_NAME(Length) HAL_SIMDATAVALUE_DEFINE_NAME(Running) HAL_SIMDATAVALUE_DEFINE_NAME(Data) wpi::recursive_spinlock m_dataMutex; HAL_AddressableLEDData m_data[HAL_kAddressableLEDMaxLength]; public: void SetData(const HAL_AddressableLEDData* d, int32_t len); int32_t GetData(HAL_AddressableLEDData* d); SimDataValue initialized{ false}; SimDataValue outputPort{-1}; SimDataValue length{1}; SimDataValue running{false}; SimCallbackRegistry data; void ResetData(); }; extern AddressableLEDData* SimAddressableLEDData; } // namespace hal