Skip to content

Commit c8610b8

Browse files
committed
Small improvements to segment names
1 parent 4d89ed7 commit c8610b8

File tree

3 files changed

+35
-41
lines changed

3 files changed

+35
-41
lines changed

wled00/FX_fcn.cpp

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -561,15 +561,6 @@ uint32_t WS2812FX::getLastShow(void) {
561561
return _lastShow;
562562
}
563563

564-
// there is no longer any need for these two
565-
//uint8_t WS2812FX::getColorOrder(void) {
566-
// return COL_ORDER_GRB;
567-
//}
568-
//
569-
//void WS2812FX::setColorOrder(uint8_t co) {
570-
// //bus->SetColorOrder(co);
571-
//}
572-
573564
void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping, uint8_t spacing) {
574565
if (n >= MAX_NUM_SEGMENTS) return;
575566
Segment& seg = _segments[n];
@@ -1031,9 +1022,10 @@ uint32_t WS2812FX::color_from_palette(uint16_t i, bool mapping, bool wrap, uint8
10311022

10321023
//load custom mapping table from JSON file
10331024
void WS2812FX::deserializeMap(uint8_t n) {
1034-
String fileName = String(F("/ledmap"));
1035-
if (n) fileName += String(n);
1036-
fileName += String(F(".json"));
1025+
char fileName[32];
1026+
strcpy_P(fileName, PSTR("/ledmap"));
1027+
if (n) sprintf(fileName +7, "%d", n);
1028+
strcat(fileName, ".json");
10371029
bool isFile = WLED_FS.exists(fileName);
10381030

10391031
if (!isFile) {
@@ -1050,7 +1042,7 @@ void WS2812FX::deserializeMap(uint8_t n) {
10501042
DEBUG_PRINT(F("Reading LED map from "));
10511043
DEBUG_PRINTLN(fileName);
10521044

1053-
if (!readObjectFromFile(fileName.c_str(), nullptr, &doc)) return; //if file does not exist just exit
1045+
if (!readObjectFromFile(fileName, nullptr, &doc)) return; //if file does not exist just exit
10541046

10551047
// erase old custom ledmap
10561048
if (customMappingTable != nullptr) {

wled00/cfg.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
106106
uint16_t length = elm[F("len")] | 1;
107107
uint8_t colorOrder = (int)elm[F("order")];
108108
uint8_t skipFirst = elm[F("skip")];
109-
uint16_t start = elm[F("start")] | 0;
109+
uint16_t start = elm["start"] | 0;
110110
uint8_t ledType = elm["type"] | TYPE_WS2812_RGB;
111111
bool reversed = elm["rev"];
112112

@@ -401,7 +401,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
401401
JsonObject dmx = doc["dmx"];
402402
CJSON(DMXChannels, dmx[F("chan")]);
403403
CJSON(DMXGap,dmx[F("gap")]);
404-
CJSON(DMXStart, dmx[F("start")]);
404+
CJSON(DMXStart, dmx["start"]);
405405
CJSON(DMXStartLED,dmx[F("start-led")]);
406406

407407
JsonArray dmx_fixmap = dmx[F("fixmap")];
@@ -519,7 +519,7 @@ void serializeConfig() {
519519
Bus *bus = busses.getBus(s);
520520
if (!bus || bus->getLength()==0) break;
521521
JsonObject ins = hw_led_ins.createNestedObject();
522-
ins[F("start")] = bus->getStart();
522+
ins["start"] = bus->getStart();
523523
ins[F("len")] = bus->getLength();
524524
JsonArray ins_pin = ins.createNestedArray("pin");
525525
uint8_t pins[5];
@@ -724,7 +724,7 @@ void serializeConfig() {
724724
JsonObject dmx = doc.createNestedObject("dmx");
725725
dmx[F("chan")] = DMXChannels;
726726
dmx[F("gap")] = DMXGap;
727-
dmx[F("start")] = DMXStart;
727+
dmx["start"] = DMXStart;
728728
dmx[F("start-led")] = DMXStartLED;
729729

730730
JsonArray dmx_fixmap = dmx.createNestedArray(F("fixmap"));

wled00/json.cpp

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,33 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
1515
//WS2812FX::Segment prev;
1616
//prev = seg; //make a backup so we can tell if something changed
1717

18-
uint16_t start = elem[F("start")] | seg.start;
18+
uint16_t start = elem["start"] | seg.start;
1919
int stop = elem["stop"] | -1;
2020

21-
if (elem["n"]) {
22-
// name field exists
23-
String name = elem["n"];
24-
if (name.length()) {
25-
if (seg.name) delete seg.name;
26-
seg.name = new char[name.length()+1];
27-
strcpy(seg.name, name.c_str());
28-
} else {
29-
// but is empty
30-
elem.remove("n");
31-
if (seg.name) {
32-
delete seg.name;
33-
seg.name = nullptr;
34-
}
35-
}
36-
} else if (elem[F("start")] || elem["stop"]) {
37-
// clearing or setting segment without name field
38-
if (seg.name) {
39-
delete seg.name;
40-
seg.name = nullptr;
41-
}
21+
if (elem["n"]) {
22+
// name field exists
23+
if (seg.name) { //clear old name
24+
delete[] seg.name;
25+
seg.name = nullptr;
26+
}
27+
28+
const char * name = elem["n"].as<const char*>();
29+
size_t len = 0;
30+
if (name != nullptr) len = strlen(name);
31+
if (len > 0 && len < 33) {
32+
seg.name = new char[len+1];
33+
if (seg.name) strlcpy(seg.name, name, 33);
34+
} else {
35+
// but is empty (already deleted above)
36+
elem.remove("n");
4237
}
38+
} else if (elem["start"] || elem["stop"]) {
39+
// clearing or setting segment without name field
40+
if (seg.name) {
41+
delete[] seg.name;
42+
seg.name = nullptr;
43+
}
44+
}
4345

4446
if (stop < 0) {
4547
uint16_t len = elem[F("len")];
@@ -351,7 +353,7 @@ void serializeSegment(JsonObject& root, WS2812FX::Segment& seg, byte id, bool fo
351353
{
352354
root["id"] = id;
353355
if (segmentBounds) {
354-
root[F("start")] = seg.start;
356+
root["start"] = seg.start;
355357
root["stop"] = seg.stop;
356358
}
357359
if (!forPreset) root[F("len")] = seg.stop - seg.start;
@@ -362,7 +364,7 @@ void serializeSegment(JsonObject& root, WS2812FX::Segment& seg, byte id, bool fo
362364
byte segbri = seg.opacity;
363365
root["bri"] = (segbri) ? segbri : 255;
364366

365-
if (seg.name != nullptr) root["n"] = String(seg.name);
367+
if (seg.name != nullptr) root["n"] = seg.name;
366368

367369
char colstr[70]; colstr[0] = '['; colstr[1] = '\0'; //max len 68 (5 chan, all 255)
368370

0 commit comments

Comments
 (0)