WIP: Strange exceptions in Corner:➿ Crashing when accessing _short_neighbours after a corner is finished animating.
This commit is contained in:
33
src/main.cpp
33
src/main.cpp
@ -16,7 +16,7 @@ CRGB leds[LED_COUNT];
|
||||
void setup_layout() {
|
||||
LOGln("Setting up layout...");
|
||||
uint8_t layout[] = LAYOUT;
|
||||
Node* current_node = new Node();
|
||||
Node* current_node = new Node(0);
|
||||
nodes.push_back(current_node);
|
||||
|
||||
for(uint16_t i=0; i<NODE_COUNT-1; i++) {
|
||||
@ -26,14 +26,12 @@ void setup_layout() {
|
||||
|
||||
for(Node* node: nodes) {
|
||||
for(Edge* edge: node->edges) {
|
||||
//LOGln("Edge #%d: %p", i, edge);
|
||||
auto e = std::find(edges.begin(), edges.end(), edge);
|
||||
if (e == edges.end()) {
|
||||
edges.push_back(edge);
|
||||
}
|
||||
}
|
||||
for(Corner* corner: node->corners) {
|
||||
//LOGln("Corner #%d: %p", i, corner);
|
||||
auto c = std::find(corners.begin(), corners.end(), corner);
|
||||
if (c == corners.end()) {
|
||||
corners.push_back(corner);
|
||||
@ -41,6 +39,16 @@ void setup_layout() {
|
||||
}
|
||||
}
|
||||
|
||||
for(Corner* corner: corners) {
|
||||
LOGln("Corner %p:", corner);
|
||||
for(auto c: corner->_long_neighbours) {
|
||||
LOGln(" Long: %p", c);
|
||||
}
|
||||
for(auto c: corner->_short_neighbours) {
|
||||
LOGln(" Short: %p", c);
|
||||
}
|
||||
}
|
||||
|
||||
LOGln("Counts:");
|
||||
LOGln("Nodes: %3d", nodes.size());
|
||||
LOGln("Edges: %3d", edges.size());
|
||||
@ -54,7 +62,7 @@ void setup_fastled() {
|
||||
FastLED.addLeds<WS2812B, 5, GRB>(leds, LEDS_PER_CORNER * CORNERS_PER_PART * NODE_COUNT).setCorrection(TypicalLEDStrip);
|
||||
LOGln("LEDs: %3d", LED_COUNT);
|
||||
FastLED.setBrightness(255);
|
||||
set_all_leds(CRGB(0xFF));
|
||||
set_all_leds(CRGB::Black);
|
||||
}
|
||||
|
||||
void setup() {
|
||||
@ -63,8 +71,25 @@ void setup() {
|
||||
|
||||
setup_layout();
|
||||
setup_fastled();
|
||||
|
||||
LOGln("corners.size(): %d", corners.size());
|
||||
uint16_t cid = random16(corners.size());
|
||||
LOGln("cid: %d", cid);
|
||||
auto i = corners.begin();
|
||||
for(int j=0; j<cid; j++) {
|
||||
i++;
|
||||
}
|
||||
Corner* start = *i;
|
||||
LOGln("start: %p", start);
|
||||
start->blend_to(CRGB(0xFF0000));
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// put your main code here, to run repeatedly:
|
||||
EVERY_N_MILLISECONDS(20) {
|
||||
for(Corner* corner: corners) {
|
||||
corner->loop();
|
||||
}
|
||||
FastLED.show();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user