Skip to content

Commit 8c3abf2

Browse files
committed
Skip querying folder items when not needed
1 parent 8869524 commit 8c3abf2

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

radio/src/targets/flysky/tools/elrs.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -517,9 +517,9 @@ static void paramUnifiedDisplay(Parameter * param, uint8_t y, uint8_t attr) {
517517
static void paramFolderLoad(Parameter * param, uint8_t * data, uint8_t offset) {
518518
param->firstChildId = data[offset];
519519
while (data[offset] != 0xFF) {
520+
param->lastChildId = data[offset];
520521
offset++;
521522
}
522-
param->lastChildId = data[offset - 1];
523523
//TRACE("folder load %d-%d", param->firstChildId, param->lastChildId);
524524
}
525525

@@ -696,7 +696,15 @@ static void parseParameterInfoMessage(uint8_t* data, uint8_t length) {
696696
if (paramId == lastParamId) { // if we have loaded all params
697697
allParamsLoaded = 1;
698698
} else if (allParamsLoaded == 0) {
699-
paramId++; // paramId = 1 + (paramId % (paramsLen-1));
699+
if (param->type == TYPE_FOLDER) {
700+
if (param->lastChildId + 1 > lastParamId) { // prevent overflow
701+
allParamsLoaded = 1;
702+
} else {
703+
paramId = param->lastChildId + 1; // skip folder items
704+
}
705+
} else {
706+
paramId++;
707+
}
700708
}
701709
paramTimeout = getTime() + 200;
702710
} else {

0 commit comments

Comments
 (0)