[hal, wpilib] Fix LED key and byte order (#8110)

This commit is contained in:
Thad House
2025-07-22 17:45:10 -07:00
committed by GitHub
parent 60098b0685
commit cd0e7fb7d7
6 changed files with 23 additions and 23 deletions

View File

@@ -12,9 +12,9 @@
/** structure for holding one LED's color data. */
struct HAL_AddressableLEDData {
uint8_t b; ///< blue value
uint8_t g; ///< green value
uint8_t r; ///< red value
uint8_t g; ///< green value
uint8_t b; ///< blue value
};
/**

View File

@@ -26,15 +26,15 @@
using namespace hal;
#define LEDS_PREFIX "/leds/"
#define IO_PREFIX "/io/"
namespace {
constexpr const char* kRawKey = LEDS_PREFIX "raw";
constexpr const char* kLedsKey = IO_PREFIX "leds";
struct AddressableLEDs {
explicit AddressableLEDs(nt::NetworkTableInstance inst)
: rawPub{inst.GetRawTopic(kRawKey).Publish(
: rawPub{inst.GetRawTopic(kLedsKey).Publish(
"raw", {.periodic = 0.005, .sendAll = true})} {}
nt::RawPublisher rawPub;

View File

@@ -78,17 +78,17 @@ TEST(AddressableLEDSimTest, SetData) {
auto cb = sim.RegisterDataCallback(
[&](std::string_view, const unsigned char* buffer, unsigned int count) {
ASSERT_EQ(count, 9u);
EXPECT_EQ(0, buffer[0]);
EXPECT_EQ(255u, buffer[0]);
EXPECT_EQ(0, buffer[1]);
EXPECT_EQ(255u, buffer[2]);
EXPECT_EQ(0, buffer[2]);
EXPECT_EQ(0, buffer[3]);
EXPECT_EQ(255u, buffer[4]);
EXPECT_EQ(0, buffer[5]);
EXPECT_EQ(255u, buffer[6]);
EXPECT_EQ(0, buffer[6]);
EXPECT_EQ(0, buffer[7]);
EXPECT_EQ(0, buffer[8]);
EXPECT_EQ(255u, buffer[8]);
callbackHit = true;
},

View File

@@ -27,9 +27,9 @@ public class AddressableLEDBuffer implements LEDReader, LEDWriter {
*/
@Override
public void setRGB(int index, int r, int g, int b) {
m_buffer[index * 3] = (byte) b;
m_buffer[index * 3] = (byte) r;
m_buffer[(index * 3) + 1] = (byte) g;
m_buffer[(index * 3) + 2] = (byte) r;
m_buffer[(index * 3) + 2] = (byte) b;
}
/**
@@ -50,7 +50,7 @@ public class AddressableLEDBuffer implements LEDReader, LEDWriter {
*/
@Override
public int getRed(int index) {
return m_buffer[index * 3 + 2] & 0xFF;
return m_buffer[index * 3] & 0xFF;
}
/**
@@ -72,7 +72,7 @@ public class AddressableLEDBuffer implements LEDReader, LEDWriter {
*/
@Override
public int getBlue(int index) {
return m_buffer[index * 3] & 0xFF;
return m_buffer[index * 3 + 2] & 0xFF;
}
/**

View File

@@ -24,9 +24,9 @@ class AddressableLEDBufferTest {
var buffer = new AddressableLEDBuffer(1);
buffer.setHSV(0, h, s, v);
assertAll(
() -> assertEquals((byte) r, buffer.m_buffer[2], "R value didn't match"),
() -> assertEquals((byte) r, buffer.m_buffer[0], "R value didn't match"),
() -> assertEquals((byte) g, buffer.m_buffer[1], "G value didn't match"),
() -> assertEquals((byte) b, buffer.m_buffer[0], "B value didn't match"));
() -> assertEquals((byte) b, buffer.m_buffer[2], "B value didn't match"));
}
static Stream<Arguments> hsvToRgbProvider() {

View File

@@ -73,32 +73,32 @@ class AddressableLEDSimTest {
System.out.println(Arrays.toString(data));
assertEquals(9, data.length);
assertEquals((byte) 0, data[0]);
assertEquals((byte) 255, data[0]);
assertEquals((byte) 0, data[1]);
assertEquals((byte) 255, data[2]);
assertEquals((byte) 0, data[2]);
assertEquals((byte) 0, data[3]);
assertEquals((byte) 255, data[4]);
assertEquals((byte) 0, data[5]);
assertEquals((byte) 255, data[6]);
assertEquals((byte) 0, data[6]);
assertEquals((byte) 0, data[7]);
assertEquals((byte) 0, data[8]);
assertEquals((byte) 255, data[8]);
assertTrue(callback.wasTriggered());
data = callback.getSetValue();
assertEquals((byte) 0, data[0]);
assertEquals((byte) 255, data[0]);
assertEquals((byte) 0, data[1]);
assertEquals((byte) 255, data[2]);
assertEquals((byte) 0, data[2]);
assertEquals((byte) 0, data[3]);
assertEquals((byte) 255, data[4]);
assertEquals((byte) 0, data[5]);
assertEquals((byte) 255, data[6]);
assertEquals((byte) 0, data[6]);
assertEquals((byte) 0, data[7]);
assertEquals((byte) 0, data[8]);
assertEquals((byte) 255, data[8]);
}
}
}