Skip to content

Commit db50701

Browse files
committed
Fix AddressableLEDSim getData/setData, remove HAL type
1 parent 428a793 commit db50701

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

subprojects/robotpy-wpilib/semiwrap/AddressableLED.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ classes:
2121
ColorOrder:
2222
frc::AddressableLED::LEDData:
2323
force_no_trampoline: true
24-
base_qualnames:
25-
HAL_AddressableLEDData: ::HAL_AddressableLEDData
24+
ignored_bases:
25+
- HAL_AddressableLEDData
2626
methods:
2727
LEDData:
2828
overloads:
@@ -41,4 +41,11 @@ classes:
4141
overloads:
4242
const Color&:
4343
const Color8Bit&:
44-
44+
inline_code: |
45+
.def_readwrite("r", &frc::AddressableLED::LEDData::r)
46+
.def_readwrite("g", &frc::AddressableLED::LEDData::g)
47+
.def_readwrite("b", &frc::AddressableLED::LEDData::b)
48+
.def("__eq__", [](frc::AddressableLED::LEDData &self, frc::AddressableLED::LEDData &other) {
49+
return self.r == other.r && self.g == other.g && self.b == other.b;
50+
})
51+
;

subprojects/robotpy-wpilib/semiwrap/simulation/AddressableLEDSim.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ classes:
55
frc::sim::AddressableLEDSim:
66
force_type_casters:
77
- std::function
8+
- std::span
9+
- std::vector
810
methods:
911
AddressableLEDSim:
1012
overloads:
@@ -26,4 +28,21 @@ classes:
2628
SetRunning:
2729
RegisterDataCallback:
2830
GetData:
31+
param_override:
32+
data:
33+
ignore: true
34+
cpp_code: |
35+
[](frc::sim::AddressableLEDSim &self) {
36+
int len = self.GetData(nullptr);
37+
std::vector<frc::AddressableLED::LEDData> data(len);
38+
self.GetData(data.data());
39+
return data;
40+
}
2941
SetData:
42+
param_override:
43+
length:
44+
ignore: true
45+
cpp_code: |
46+
[](frc::sim::AddressableLEDSim &self, std::span<frc::AddressableLED::LEDData> &data) {
47+
self.SetData(data.data(), data.size());
48+
}

subprojects/robotpy-wpilib/tests/test_wpilib_simulation.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,23 @@
33

44
def test_wpilib_simulation():
55
pass
6+
7+
8+
def test_addressableled_sim():
9+
sim = wpilib.simulation.AddressableLEDSim.createForIndex(0)
10+
led = wpilib.AddressableLED(0)
11+
assert not sim.getRunning()
12+
led.start()
13+
assert sim.getRunning()
14+
15+
data = [
16+
wpilib.AddressableLED.LEDData(1, 2, 3),
17+
wpilib.AddressableLED.LEDData(4, 5, 6),
18+
]
19+
20+
led.setLength(len(data))
21+
led.setData(data)
22+
assert sim.getData() == data
23+
24+
led.stop()
25+
assert not sim.getRunning()

0 commit comments

Comments
 (0)