mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
[hal, wpilib] Update Addressable LED support (#8100)
This commit is contained in:
@@ -18,7 +18,7 @@ TEST(AddressableLEDSimTest, InitializationCallback) {
|
||||
HAL_Initialize(500, 0);
|
||||
|
||||
BooleanCallback callback;
|
||||
AddressableLEDSim sim;
|
||||
AddressableLEDSim sim{0};
|
||||
auto cb = sim.RegisterInitializedCallback(callback.GetCallback(), false);
|
||||
|
||||
EXPECT_FALSE(callback.WasTriggered());
|
||||
@@ -29,6 +29,26 @@ TEST(AddressableLEDSimTest, InitializationCallback) {
|
||||
EXPECT_TRUE(callback.GetLastValue());
|
||||
}
|
||||
|
||||
TEST(AddressableLEDSimTest, SetStart) {
|
||||
HAL_Initialize(500, 0);
|
||||
|
||||
AddressableLED led{0};
|
||||
AddressableLEDSim sim{led};
|
||||
IntCallback callback;
|
||||
|
||||
auto cb = sim.RegisterStartCallback(callback.GetCallback(), false);
|
||||
|
||||
EXPECT_EQ(0, sim.GetStart()); // Defaults to 0
|
||||
|
||||
std::array<AddressableLED::LEDData, 50> ledData;
|
||||
led.SetStart(1);
|
||||
led.SetData(ledData);
|
||||
|
||||
EXPECT_EQ(1, sim.GetStart());
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_EQ(1, callback.GetLastValue());
|
||||
}
|
||||
|
||||
TEST(AddressableLEDSimTest, SetLength) {
|
||||
HAL_Initialize(500, 0);
|
||||
|
||||
@@ -38,7 +58,7 @@ TEST(AddressableLEDSimTest, SetLength) {
|
||||
|
||||
auto cb = sim.RegisterLengthCallback(callback.GetCallback(), false);
|
||||
|
||||
EXPECT_EQ(1, sim.GetLength()); // Defaults to 1 led
|
||||
EXPECT_EQ(0, sim.GetLength()); // Defaults to 0 leds
|
||||
|
||||
std::array<AddressableLED::LEDData, 50> ledData;
|
||||
led.SetLength(ledData.max_size());
|
||||
@@ -49,51 +69,26 @@ TEST(AddressableLEDSimTest, SetLength) {
|
||||
EXPECT_EQ(50, callback.GetLastValue());
|
||||
}
|
||||
|
||||
TEST(AddressableLEDSimTest, SetRunning) {
|
||||
HAL_Initialize(500, 0);
|
||||
|
||||
AddressableLEDSim sim = AddressableLEDSim::CreateForIndex(0);
|
||||
BooleanCallback callback;
|
||||
auto cb = sim.RegisterRunningCallback(callback.GetCallback(), false);
|
||||
AddressableLED led{0};
|
||||
|
||||
EXPECT_FALSE(sim.GetRunning());
|
||||
|
||||
led.Start();
|
||||
EXPECT_TRUE(sim.GetRunning());
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_TRUE(callback.GetLastValue());
|
||||
|
||||
callback.Reset();
|
||||
led.Stop();
|
||||
EXPECT_FALSE(sim.GetRunning());
|
||||
EXPECT_TRUE(callback.WasTriggered());
|
||||
EXPECT_FALSE(callback.GetLastValue());
|
||||
}
|
||||
|
||||
TEST(AddressableLEDSimTest, SetData) {
|
||||
AddressableLED led{0};
|
||||
AddressableLEDSim sim = AddressableLEDSim::CreateForChannel(0);
|
||||
AddressableLEDSim sim{0};
|
||||
|
||||
bool callbackHit = false;
|
||||
std::array<AddressableLED::LEDData, 3> setData;
|
||||
auto cb = sim.RegisterDataCallback(
|
||||
[&](std::string_view, const unsigned char* buffer, unsigned int count) {
|
||||
ASSERT_EQ(count, 12u);
|
||||
ASSERT_EQ(count, 9u);
|
||||
EXPECT_EQ(0, buffer[0]);
|
||||
EXPECT_EQ(0, buffer[1]);
|
||||
EXPECT_EQ(255u, buffer[2]);
|
||||
|
||||
EXPECT_EQ(0, buffer[3]);
|
||||
EXPECT_EQ(255u, buffer[4]);
|
||||
EXPECT_EQ(0, buffer[5]);
|
||||
|
||||
EXPECT_EQ(0, buffer[4]);
|
||||
EXPECT_EQ(255u, buffer[5]);
|
||||
EXPECT_EQ(0, buffer[6]);
|
||||
EXPECT_EQ(255u, buffer[6]);
|
||||
EXPECT_EQ(0, buffer[7]);
|
||||
|
||||
EXPECT_EQ(255u, buffer[8]);
|
||||
EXPECT_EQ(0, buffer[9]);
|
||||
EXPECT_EQ(0, buffer[10]);
|
||||
EXPECT_EQ(0, buffer[11]);
|
||||
EXPECT_EQ(0, buffer[8]);
|
||||
|
||||
callbackHit = true;
|
||||
},
|
||||
@@ -115,17 +110,14 @@ TEST(AddressableLEDSimTest, SetData) {
|
||||
EXPECT_EQ(0xFF, simData[0].r);
|
||||
EXPECT_EQ(0x00, simData[0].g);
|
||||
EXPECT_EQ(0x00, simData[0].b);
|
||||
EXPECT_EQ(0x00, simData[0].padding);
|
||||
|
||||
EXPECT_EQ(0x00, simData[1].r);
|
||||
EXPECT_EQ(0xFF, simData[1].g);
|
||||
EXPECT_EQ(0x00, simData[1].b);
|
||||
EXPECT_EQ(0x00, simData[1].padding);
|
||||
|
||||
EXPECT_EQ(0x00, simData[2].r);
|
||||
EXPECT_EQ(0x00, simData[2].g);
|
||||
EXPECT_EQ(0xFF, simData[2].b);
|
||||
EXPECT_EQ(0x00, simData[2].padding);
|
||||
}
|
||||
|
||||
} // namespace frc::sim
|
||||
|
||||
@@ -37,5 +37,5 @@ TEST(SimInitializationTest, AllInitialize) {
|
||||
(void)rrsim;
|
||||
DutyCycleSim dcsim = DutyCycleSim::CreateForChannel(0);
|
||||
(void)dcsim;
|
||||
AddressableLEDSim adLED;
|
||||
AddressableLEDSim adLED{0};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user