Skip to content

Commit

Permalink
E131: channel + offset
Browse files Browse the repository at this point in the history
  • Loading branch information
ewoudwijma committed Apr 9, 2024
1 parent 7bcfc62 commit c8a796b
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/User/UserModE131.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<unsigned8>(), rowNr);
mdl->setValue(var, channel + varsToWatch[rowNr].channelOffset, rowNr);
return true;
case f_UIFun:
ui->setLabel(var, "Channel");
Expand Down Expand Up @@ -134,7 +135,7 @@ class UserModE131:public SysModule {
e131Created = true;
}
else {
// e131.end()???
// e131.end();//???
e131Created = false;
}
}
Expand All @@ -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",
Expand All @@ -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;
Expand All @@ -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;
Expand All @@ -208,6 +209,7 @@ class UserModE131:public SysModule {

ESPAsyncE131 e131;
boolean e131Created = false;
unsigned16 channel = 1;
unsigned16 universe = 1;
unsigned8 universeCount = 1;

Expand Down

0 comments on commit c8a796b

Please sign in to comment.