// 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/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