mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[hal, wpilib] Fix LED key and byte order (#8110)
This commit is contained in:
@@ -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
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user