Skip to content

Commit a6c36f7

Browse files
author
dave
committed
ESP Amplifier example improved.
1 parent 243f1a3 commit a6c36f7

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

examples/esp32Amplifier/esp32Amplifier_main.cpp

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ EepromAuthenticatorManager authManager;
2828
TitleWidget wifiWidget(iconsWifi, 5, 16, 12, nullptr);
2929
AmplifierController controller;
3030

31+
const char* simFilesForList[] = { "SuperFile1.txt", "CustomFile.cpp", "SuperDuper.h", "File303.cpp", "File123443.h" };
32+
#define SIM_FILES_ARRAY_SIZE 5
33+
34+
3135
void prepareWifiForUse();
3236

3337
void setup() {
@@ -94,7 +98,7 @@ void setup() {
9498
dlg->show(pgmVersionHeader, false);
9599
});
96100

97-
menuStatusDataList.setNumberOfRows(5);
101+
menuStatusDataList.setNumberOfRows(SIM_FILES_ARRAY_SIZE);
98102

99103
// If your app relies on getting the callbacks after a menuMgr.load(..) has finished then this does the callbacks
100104
triggerAllChangedCallbacks();
@@ -164,6 +168,11 @@ void CALLBACK_FUNCTION onShowDialogs(int id) {
164168
}
165169

166170
int CALLBACK_FUNCTION fnStatusDataListRtCall(RuntimeMenuItem* item, uint8_t row, RenderFnMode mode, char* buffer, int bufferSize) {
171+
if(row > SIM_FILES_ARRAY_SIZE && row != LIST_PARENT_ITEM_POS) {
172+
// you wouldn't need this in a production build, it is for our debugging to do bounds checking.
173+
serdebugF2("picked row > max!! ", row);
174+
return false;
175+
}
167176
switch(mode) {
168177
case RENDERFN_INVOKE:
169178
if(row != LIST_PARENT_ITEM_POS && renderer.getDialog() && !renderer.getDialog()->isInUse()) {
@@ -175,11 +184,21 @@ int CALLBACK_FUNCTION fnStatusDataListRtCall(RuntimeMenuItem* item, uint8_t row,
175184
}
176185
return true;
177186
case RENDERFN_NAME:
178-
ltoaClrBuff(buffer, row, 3, NOT_PADDED, bufferSize);
187+
if(row == LIST_PARENT_ITEM_POS) {
188+
strcpy(buffer, "Sim Files");
189+
}
190+
else{
191+
ltoaClrBuff(buffer, row, 3, NOT_PADDED, bufferSize);
192+
}
179193
return true;
180194
case RENDERFN_VALUE:
181-
buffer[0] = 'V'; buffer[1]=0;
182-
fastltoa(buffer, row, 3, NOT_PADDED, bufferSize);
195+
if(row == LIST_PARENT_ITEM_POS) {
196+
strcpy(buffer, ">>");
197+
}
198+
else {
199+
strncpy(buffer, simFilesForList[row], bufferSize);
200+
buffer[bufferSize - 1] = 0;
201+
}
183202
return true;
184203
case RENDERFN_EEPROM_POS: return 0xffff; // lists are generally not saved to EEPROM
185204
default: return false;

0 commit comments

Comments
 (0)