Skip to content

Commit 834890e

Browse files
committed
Presets starting with 1 , maxpower from board presets
1 parent bf5c6e7 commit 834890e

File tree

8 files changed

+18477
-11248
lines changed

8 files changed

+18477
-11248
lines changed

interface/src/lib/components/moonbase/MultiInput.svelte

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
clearInterval(interval);
4040
});
4141
42-
4342
let dragSource: { row: number; col: number } | null = null;
4443
4544
function handleDragStart(event: DragEvent, row: number, col: number) {
@@ -268,9 +267,9 @@
268267
{#if x + y * property.width < value.count}
269268
<button
270269
class="btn btn-square w-{property.size} h-{property.size} text-xl rounded-lg {value.selected ==
271-
x + y * property.width
270+
x + y * property.width + 1
272271
? `btn-error`
273-
: Array.isArray(value.list) && value.list.includes(x + y * property.width)
272+
: Array.isArray(value.list) && value.list.includes(x + y * property.width + 1)
274273
? `btn-success`
275274
: 'btn-primary'}"
276275
type="button"
@@ -282,7 +281,7 @@
282281
preventClick = false;
283282
clickTimeout = setTimeout(() => {
284283
if (!preventClick) {
285-
value.select = x + y * property.width;
284+
value.select = x + y * property.width + 1;
286285
console.log('click', y, x, value.select);
287286
value.selected = value.select;
288287
value.action = 'click';
@@ -294,35 +293,35 @@
294293
on:dblclick={(event: any) => {
295294
preventClick = true;
296295
clearTimeout(clickTimeout);
297-
value.select = x + y * property.width;
296+
value.select = x + y * property.width + 1;
298297
console.log('dblclick', y, x, value.select);
299298
value.action = 'dblclick';
300299
onChange(event);
301300
}}
302301
on:mouseenter={(event: any) => {
303302
// console.log("mousenter", rowIndex, colIndex, cell, value);
304303
if (property.hoverToServer) {
305-
value.select = x + y * property.width;
304+
value.select = x + y * property.width + 1;
306305
value.action = 'mouseenter';
307306
onChange(event);
308307
} else
309308
handleMouseEnter(
310-
x + y * property.width,
309+
x + y * property.width + 1,
311310
event,
312-
value.list.includes(x + y * property.width)
311+
value.list.includes(x + y * property.width + 1)
313312
);
314313
}}
315314
on:mouseleave={(event: any) => {
316315
// console.log("mouseleave", rowIndex, colIndex, cell, value);
317316
if (property.hoverToServer) {
318-
value.select = x + y * property.width;
317+
value.select = x + y * property.width + 1;
319318
value.action = 'mouseleave';
320319
onChange(event);
321320
} else handleMouseLeave();
322321
}}
323322
>
324-
{x + y * property.width}
325-
{#if popupCell === x + y * property.width}
323+
{x + y * property.width + 1}
324+
{#if popupCell === x + y * property.width + 1}
326325
<div
327326
class="fixed z-50 bg-neutral-100 p-6 rounded shadow-lg mt-2 min-h-0 text-left inline-block min-w-0"
328327
style="left: {popupX}px; top: {popupY}px;"

lib/framework/WWWData.h

Lines changed: 18420 additions & 11187 deletions
Large diffs are not rendered by default.

src/MoonBase/Nodes.cpp

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,6 @@ I2SClocklessLedDriver ledsDriver;
338338
#endif
339339

340340
void DriverNode::setup() {
341-
addControl(maxPower, "maxPower", "number", 0, 500, false, "Watt");
342341
JsonObject property = addControl(lightPreset, "lightPreset", "select");
343342
JsonArray values = property["values"].to<JsonArray>();
344343
values.add("RGB");
@@ -357,28 +356,29 @@ void DriverNode::setup() {
357356
}
358357

359358
void DriverNode::loop() {
360-
LightsHeader* header = &layer->layerP->lights.header;
359+
LightsHeader* header = &layerP.lights.header;
361360

362361
// use ledsDriver LUT for super efficient leds dimming 🔥 (used by reOrderAndDimRGBW)
363362

364363
uint8_t brightness = (header->offsetBrightness == UINT8_MAX) ? header->brightness : 255; // set brightness to 255 if offsetBrightness is set (fixture will do its own brightness)
365364

366-
if (brightness != brightnessSaved) {
365+
if (brightness != brightnessSaved || layerP.maxPower != maxPowerSaved) {
367366
// Use FastLED for setMaxPowerInMilliWatts stuff
368-
uint8_t correctedBrightness = calculate_max_brightness_for_power_mW((CRGB*)&layer->layerP->lights.channels, layer->layerP->lights.header.nrOfLights, brightness, maxPower * 1000);
369-
// EXT_LOGD(ML_TAG, "setBrightness b:%d + p:%d -> cb:%d", brightness, maxPower, correctedBrightness);
367+
uint8_t correctedBrightness = calculate_max_brightness_for_power_mW((CRGB*)&layerP.lights.channels, layerP.lights.header.nrOfLights, brightness, layerP.maxPower * 1000);
368+
// EXT_LOGD(ML_TAG, "setBrightness b:%d + p:%d -> cb:%d", brightness, layerP.maxPower, correctedBrightness);
370369
ledsDriver.setBrightness(correctedBrightness);
371370
brightnessSaved = brightness;
371+
maxPowerSaved = layerP.maxPower;
372372
}
373373

374374
#if HP_ALL_DRIVERS
375-
if (savedColorCorrection.red != layer->layerP->lights.header.red || savedColorCorrection.green != layer->layerP->lights.header.green || savedColorCorrection.blue != layer->layerP->lights.header.blue) {
376-
ledsDriver.setGamma(layer->layerP->lights.header.red / 255.0, layer->layerP->lights.header.blue / 255.0, layer->layerP->lights.header.green / 255.0, 1.0);
377-
// EXT_LOGD(ML_TAG, "setColorCorrection r:%d, g:%d, b:%d (%d %d %d)", layer->layerP->lights.header.red, layer->layerP->lights.header.green, layer->layerP->lights.header.blue,
375+
if (savedColorCorrection.red != layerP.lights.header.red || savedColorCorrection.green != layerP.lights.header.green || savedColorCorrection.blue != layerP.lights.header.blue) {
376+
ledsDriver.setGamma(layerP.lights.header.red / 255.0, layerP.lights.header.blue / 255.0, layerP.lights.header.green / 255.0, 1.0);
377+
// EXT_LOGD(ML_TAG, "setColorCorrection r:%d, g:%d, b:%d (%d %d %d)", layerP.lights.header.red, layerP.lights.header.green, layerP.lights.header.blue,
378378
// savedColorCorrection.red, savedColorCorrection.green, savedColorCorrection.blue);
379-
savedColorCorrection.red = layer->layerP->lights.header.red;
380-
savedColorCorrection.green = layer->layerP->lights.header.green;
381-
savedColorCorrection.blue = layer->layerP->lights.header.blue;
379+
savedColorCorrection.red = layerP.lights.header.red;
380+
savedColorCorrection.green = layerP.lights.header.green;
381+
savedColorCorrection.blue = layerP.lights.header.blue;
382382
}
383383
#else // ESP32_LEDSDRIVER
384384
CRGB correction;
@@ -396,12 +396,7 @@ void DriverNode::onUpdate(String& oldValue, JsonObject control) {
396396

397397
EXT_LOGD(ML_TAG, "%s: %s ", control["name"].as<String>().c_str(), control["value"].as<String>().c_str());
398398

399-
if (control["name"] == "maxPower") {
400-
uint8_t brightness = (header->offsetBrightness == UINT8_MAX) ? header->brightness : 255; // set brightness to 255 if offsetBrightness is set (fixture will do its own brightness)
401-
uint8_t correctedBrightness = calculate_max_brightness_for_power_mW((CRGB*)&layer->layerP->lights.channels, layer->layerP->lights.header.nrOfLights, brightness, maxPower * 1000);
402-
EXT_LOGD(ML_TAG, "setBrightness b:%d + p:%d -> cb:%d", brightness, maxPower, correctedBrightness);
403-
ledsDriver.setBrightness(correctedBrightness);
404-
} else if (control["name"] == "lightPreset") {
399+
if (control["name"] == "lightPreset") {
405400
uint8_t oldChannelsPerLight = header->channelsPerLight;
406401

407402
header->resetOffsets();

src/MoonBase/Nodes.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ static LedsDriver ledsDriver; // only the core driver, for setBrightness and
242242
#endif
243243

244244
class DriverNode : public Node {
245-
uint16_t maxPower = 10;
246245
uint8_t brightnessSaved = UINT8_MAX;
246+
uint16_t maxPowerSaved = UINT16_MAX;
247247

248248
protected:
249249
bool lightPresetSaved = false; // initLeds can only start if this has been saved

src/MoonLight/Layers/PhysicalLayer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,11 @@ class PhysicalLayer {
129129
void nextPin(); // if more pins are defined, the next lights will be assigned to the next pin
130130
void onLayoutPost();
131131

132+
//from board presets
132133
uint8_t ledPins[MAXLEDPINS];
133134
uint16_t ledsPerPin[MAXLEDPINS];
134135
uint8_t nrOfLedPins = 0;
136+
uint16_t maxPower = 0;
135137

136138
// an effect is using a virtual layer: tell the effect in which layer to run...
137139

src/MoonLight/Modules/ModuleDrivers.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ class ModuleDrivers : public NodeManager {
3838
memset(layerP.ledPins, UINT8_MAX, sizeof(layerP.ledPins));
3939
layerP.nrOfLedPins = 0;
4040

41-
EXT_LOGD(ML_TAG, "maxPower %d", state.data["maxPower"].as<uint16_t>());
41+
layerP.maxPower = state.data["maxPower"];
42+
EXT_LOGD(ML_TAG, "maxPower %d", layerP.maxPower);
43+
4244
// serializeJson(state.data["pins"], Serial);Serial.println();
4345
for (JsonObject pinObject : state.data["pins"].as<JsonArray>()) {
4446
uint8_t pinFunction = pinObject["pinFunction"];

src/MoonLight/Modules/ModuleLightsControl.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,10 @@ class ModuleLightsControl : public Module {
122122

123123
property = addControl(root, "presetLoop", "slider");
124124
property["default"] = 0;
125-
property = addControl(root, "firstPreset", "slider", 0, 63);
126-
property["default"] = 0;
127-
property = addControl(root, "lastPreset", "slider", 0, 63);
128-
property["default"] = 63;
125+
property = addControl(root, "firstPreset", "slider", 1, 64);
126+
property["default"] = 1;
127+
property = addControl(root, "lastPreset", "slider", 1, 64);
128+
property["default"] = 64;
129129

130130
#if FT_ENABLED(FT_MONITOR)
131131
property = addControl(root, "monitorOn", "checkbox");

src/MoonLight/Nodes/Drivers/D_FastLED.h

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ class FastLEDDriver : public Node {
3333
static uint8_t dim() { return _NoD; }
3434
static const char* tags() { return "☸️"; }
3535

36-
uint16_t maxPower = 10;
3736
char chipSet[20] = TOSTRING(ML_CHIPSET);
3837
char version[20] = TOSTRING(FASTLED_VERSION); // "." TOSTRING(FASTLED_VERSION_MINOR) "." TOSTRING(FASTLED_VERSION_PATCH);
3938
char colorOrder[20] = TOSTRING(ML_COLOR_ORDER);
@@ -49,28 +48,34 @@ class FastLEDDriver : public Node {
4948
#endif
5049

5150
void setup() override {
52-
addControl(maxPower, "maxPower", "number", 0, 100);
5351
addControl(version, "Version", "text", 0, 20, true);
5452
addControl(chipSet, "chipSet", "text", 0, 20, true);
5553
addControl(colorOrder, "colorOrder", "text", 0, 20, true);
5654
addControl(usesI2S, "usesI2S", "checkbox", 0, 20, true);
5755
addControl(usesRMT5, "usesRMT5", "checkbox", 0, 20, true);
5856
}
5957

58+
uint16_t savedMaxPower = UINT16_MAX;
6059
void loop() override {
6160
if (FastLED.count()) {
62-
if (FastLED.getBrightness() != layer->layerP->lights.header.brightness) {
63-
EXT_LOGD(ML_TAG, "setBrightness %d", layer->layerP->lights.header.brightness);
64-
FastLED.setBrightness(layer->layerP->lights.header.brightness);
61+
if (FastLED.getBrightness() != layerP.lights.header.brightness) {
62+
EXT_LOGD(ML_TAG, "setBrightness %d", layerP.lights.header.brightness);
63+
FastLED.setBrightness(layerP.lights.header.brightness);
64+
}
65+
66+
if (layerP.maxPower != savedMaxPower) {
67+
EXT_LOGD(ML_TAG, "setMaxPower %d watt", layerP.maxPower);
68+
FastLED.setMaxPowerInMilliWatts(1000 * layerP.maxPower); // 5v, 2000mA, to protect usb while developing
69+
savedMaxPower = layerP.maxPower;
6570
}
6671

6772
// FastLED Led Controllers
68-
CRGB correction = CRGB(layer->layerP->lights.header.red, layer->layerP->lights.header.green, layer->layerP->lights.header.blue);
73+
CRGB correction = CRGB(layerP.lights.header.red, layerP.lights.header.green, layerP.lights.header.blue);
6974
CLEDController* pCur = CLEDController::head();
7075
while (pCur) {
7176
// ++x;
7277
if (pCur->getCorrection() != correction) {
73-
EXT_LOGD(ML_TAG, "setColorCorrection r:%d, g:%d, b:%d (#:%d)", layer->layerP->lights.header.red, layer->layerP->lights.header.green, layer->layerP->lights.header.blue, pCur->size());
78+
EXT_LOGD(ML_TAG, "setColorCorrection r:%d, g:%d, b:%d (#:%d)", layerP.lights.header.red, layerP.lights.header.green, layerP.lights.header.blue, pCur->size());
7479
pCur->setCorrection(correction);
7580
}
7681
// pCur->size();
@@ -83,26 +88,26 @@ class FastLEDDriver : public Node {
8388

8489
bool hasOnLayout() const override { return true; }
8590
void onLayout() override {
86-
if (layer->layerP->pass == 1 && !layer->layerP->monitorPass) { // physical
91+
if (layerP.pass == 1 && !layerP.monitorPass) { // physical
8792
// if (safeModeMB) {
8893
// EXT_LOGW(ML_TAG, "Safe mode enabled, not adding FastLED driver");
8994
// return;
9095
// }
9196

92-
if (layer->layerP->nrOfLedPins == 0) return;
97+
if (layerP.nrOfLedPins == 0) return;
9398

94-
EXT_LOGD(ML_TAG, "nrOfLedPins #:%d", layer->layerP->nrOfLedPins);
99+
EXT_LOGD(ML_TAG, "nrOfLedPins #:%d", layerP.nrOfLedPins);
95100

96101
uint16_t startLed = 0;
97-
for (uint8_t pinIndex = 0; pinIndex < layer->layerP->nrOfLedPins && pinIndex < 4; pinIndex++) { // FastLED RMT supports max 4 pins!
98-
EXT_LOGD(ML_TAG, "ledPin s:%d #:%d p:%d", pinIndex, layer->layerP->ledsPerPin[pinIndex]);
102+
for (uint8_t pinIndex = 0; pinIndex < layerP.nrOfLedPins && pinIndex < 4; pinIndex++) { // FastLED RMT supports max 4 pins!
103+
EXT_LOGD(ML_TAG, "ledPin s:%d #:%d p:%d", pinIndex, layerP.ledsPerPin[pinIndex]);
99104

100-
uint16_t nrOfLights = layer->layerP->ledsPerPin[pinIndex];
105+
uint16_t nrOfLights = layerP.ledsPerPin[pinIndex];
101106

102-
CRGB* leds = (CRGB*)layer->layerP->lights.channels;
107+
CRGB* leds = (CRGB*)layerP.lights.channels;
103108

104-
if (GPIO_IS_VALID_OUTPUT_GPIO(layer->layerP->ledPins[pinIndex])) {
105-
switch (layer->layerP->ledPins[pinIndex]) {
109+
if (GPIO_IS_VALID_OUTPUT_GPIO(layerP.ledPins[pinIndex])) {
110+
switch (layerP.ledPins[pinIndex]) {
106111
#if CONFIG_IDF_TARGET_ESP32
107112
case 0:
108113
FastLED.addLeds<ML_CHIPSET, 0 COLOR_ORDER_ARG>(leds, startLed, nrOfLights).setCorrection(TypicalLEDStrip) RGBW_CALL;
@@ -523,24 +528,17 @@ class FastLEDDriver : public Node {
523528
#endif // CONFIG_IDF_TARGET_ESP32S3
524529

525530
default:
526-
EXT_LOGW(ML_TAG, "FastLEDPin assignment: pin not supported %d", layer->layerP->ledPins[pinIndex]);
531+
EXT_LOGW(ML_TAG, "FastLEDPin assignment: pin not supported %d", layerP.ledPins[pinIndex]);
527532
} // switch pinNr
528533
} else
529-
EXT_LOGW(ML_TAG, "Pin %d (%d lights) not added as not valid for output", layer->layerP->ledPins[pinIndex], layer->layerP->ledsPerPin[pinIndex]);
534+
EXT_LOGW(ML_TAG, "Pin %d (%d lights) not added as not valid for output", layerP.ledPins[pinIndex], layerP.ledsPerPin[pinIndex]);
530535

531-
startLed += layer->layerP->ledsPerPin[pinIndex];
536+
startLed += layerP.ledsPerPin[pinIndex];
532537

533538
} // sortedPins
534539
}
535540

536-
FastLED.setMaxPowerInMilliWatts(1000 * maxPower); // 5v, 2000mA, to protect usb while developing
537-
}
538-
539-
void onUpdate(String& oldValue, JsonObject control) override {
540-
if (control["name"] == "maxPower") {
541-
EXT_LOGD(ML_TAG, "setMaxPowerInMilliWatts %d", maxPower);
542-
FastLED.setMaxPowerInMilliWatts(1000 * maxPower); // 5v, 2000mA, to protect usb while developing
543-
}
541+
FastLED.setMaxPowerInMilliWatts(1000 * layerP.maxPower); // 5v, 2000mA, to protect usb while developing
544542
}
545543
};
546544

0 commit comments

Comments
 (0)