From c8a796b435313d995a857b1ff42da6c9108f7245 Mon Sep 17 00:00:00 2001 From: Ewoud Date: Tue, 9 Apr 2024 16:05:42 +0200 Subject: [PATCH] E131: channel + offset --- src/User/UserModE131.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/User/UserModE131.h b/src/User/UserModE131.h index c42a48c5..d3872604 100644 --- a/src/User/UserModE131.h +++ b/src/User/UserModE131.h @@ -38,12 +38,13 @@ class UserModE131:public SysModule { default: return false; }}); - JsonObject currentVar = ui->initNumber(parentVar, "dch", 1, 1, 512, false, [](JsonObject var, unsigned8 rowNr, unsigned8 funType) { switch (funType) { //varFun + JsonObject currentVar = ui->initNumber(parentVar, "dch", channel, 1, 512, false, [this](JsonObject var, unsigned8 rowNr, unsigned8 funType) { switch (funType) { //varFun case f_UIFun: ui->setLabel(var, "DMX Channel"); ui->setComment(var, "First channel"); return true; case f_ChangeFun: + channel = var["value"]; for (JsonObject childVar: mdl->varChildren("e131Tbl")) ui->callVarFun(childVar, UINT8_MAX, f_ValueFun); return true; @@ -61,7 +62,7 @@ class UserModE131:public SysModule { ui->initNumber(tableVar, "e131Channel", UINT16_MAX, 1, 512, true, [this](JsonObject var, unsigned8 rowNr, unsigned8 funType) { switch (funType) { //varFun case f_ValueFun: for (forUnsigned8 rowNr = 0; rowNr < varsToWatch.size(); rowNr++) - mdl->setValue(var, varsToWatch[rowNr].channel + mdl->getValue("dch").as(), rowNr); + mdl->setValue(var, channel + varsToWatch[rowNr].channelOffset, rowNr); return true; case f_UIFun: ui->setLabel(var, "Channel"); @@ -134,7 +135,7 @@ class UserModE131:public SysModule { e131Created = true; } else { - // e131.end()??? + // e131.end();//??? e131Created = false; } } @@ -150,7 +151,7 @@ class UserModE131:public SysModule { for (VarToWatch &varToWatch : varsToWatch) { for (int i=0; i < maxChannels; i++) { - if (i == varToWatch.channel) { + if (i == channel + varToWatch.channelOffset) { if (packet.property_values[i] != varToWatch.savedValue) { USER_PRINTF("Universe %u / %u Channels | Packet#: %u / Errors: %u / CH%d: %u -> %u", @@ -177,9 +178,9 @@ class UserModE131:public SysModule { } //!e131.isEmpty() } //loop - void patchChannel(unsigned8 channel, const char * id, unsigned8 max = 255) { + void patchChannel(unsigned8 channelOffset, const char * id, unsigned8 max = 255) { VarToWatch varToWatch; - varToWatch.channel = channel; + varToWatch.channelOffset = channelOffset; varToWatch.id = id; varToWatch.savedValue = 0; // Always reset when (re)patching so variable gets set to DMX value even if unchanged varToWatch.max = max; @@ -198,7 +199,7 @@ class UserModE131:public SysModule { private: struct VarToWatch { - unsigned16 channel; + unsigned16 channelOffset; const char * id = nullptr; unsigned16 max = -1; unsigned8 savedValue = -1; @@ -208,6 +209,7 @@ class UserModE131:public SysModule { ESPAsyncE131 e131; boolean e131Created = false; + unsigned16 channel = 1; unsigned16 universe = 1; unsigned8 universeCount = 1;