@@ -83,43 +83,50 @@ void appendGPIOinfo(Print& settingsScript) {
8383 // usermod pin reservations will become unnecessary when settings pages will read cfg.json directly
8484 if (requestJSONBufferLock (6 )) {
8585 // if we can't allocate JSON buffer ignore usermod pins
86- JsonObject mods = pDoc->createNestedObject (F ( " um" ) );
86+ JsonObject mods = pDoc->createNestedObject (" um" );
8787 UsermodManager::addToConfig (mods);
8888 if (!mods.isNull ()) fillUMPins (settingsScript, mods);
8989 releaseJSONBufferLock ();
9090 }
9191 settingsScript.print (F (" ];" ));
9292
9393 // add reserved (unusable) pins
94+ bool firstPin = true ;
9495 settingsScript.print (F (" d.rsvd=[" ));
9596 for (unsigned i = 0 ; i < WLED_NUM_PINS; i++) {
9697 if (!PinManager::isPinOk (i, false )) { // include readonly pins
97- settingsScript.print (i); settingsScript.print (" ," );
98+ if (!firstPin) settingsScript.print (' ,' );
99+ settingsScript.print (i);
100+ firstPin = false ;
98101 }
99102 }
100103 #ifdef WLED_ENABLE_DMX
101- settingsScript.print (F (" 2," )); // DMX hardcoded pin
104+ if (!firstPin) settingsScript.print (' ,' );
105+ settingsScript.print (2 ); // DMX hardcoded pin
106+ firstPin = false ;
102107 #endif
103108 #if defined(WLED_DEBUG) && !defined(WLED_DEBUG_HOST)
104- settingsScript.printf_P (PSTR (" ,%d" ),hardwareTX); // debug output (TX) pin
109+ if (!firstPin) settingsScript.print (' ,' );
110+ settingsScript.print (hardwareTX); // debug output (TX) pin
111+ firstPin = false ;
105112 #endif
106- // Note: Using pin 3 (RX) disables Adalight / Serial JSON
107113 #ifdef WLED_USE_ETHERNET
108114 if (ethernetType != WLED_ETH_NONE && ethernetType < WLED_NUM_ETH_TYPES) {
109- for (unsigned p=0 ; p<WLED_ETH_RSVD_PINS_COUNT; p++) { settingsScript.printf (" ,%d" , esp32_nonconfigurable_ethernet_pins[p].pin ); }
110- if (ethernetBoards[ethernetType].eth_power >=0 ) { settingsScript.printf (" ,%d" , ethernetBoards[ethernetType].eth_power ); }
111- if (ethernetBoards[ethernetType].eth_mdc >=0 ) { settingsScript.printf (" ,%d" , ethernetBoards[ethernetType].eth_mdc ); }
112- if (ethernetBoards[ethernetType].eth_mdio >=0 ) { settingsScript.printf (" ,%d" , ethernetBoards[ethernetType].eth_mdio ); }
113- switch (ethernetBoards[ethernetType].eth_clk_mode ) {
115+ if (!firstPin) settingsScript.print (' ,' );
116+ for (unsigned p=0 ; p<WLED_ETH_RSVD_PINS_COUNT; p++) { settingsScript.printf (" %d," ,esp32_nonconfigurable_ethernet_pins[p].pin ); }
117+ if (ethernetBoards[ethernetType].eth_power >= 0 ) { settingsScript.printf (" %d," ,ethernetBoards[ethernetType].eth_power ); }
118+ if (ethernetBoards[ethernetType].eth_mdc >= 0 ) { settingsScript.printf (" %d," ,ethernetBoards[ethernetType].eth_mdc ); }
119+ if (ethernetBoards[ethernetType].eth_mdio >= 0 ) { settingsScript.printf (" %d," ,ethernetBoards[ethernetType].eth_mdio ); }
120+ switch (ethernetBoards[ethernetType].eth_clk_mode ) {
114121 case ETH_CLOCK_GPIO0_IN:
115122 case ETH_CLOCK_GPIO0_OUT:
116- settingsScript.print (F ( " 0 " ) );
123+ settingsScript.print (0 );
117124 break ;
118125 case ETH_CLOCK_GPIO16_OUT:
119- settingsScript.print (F ( " 16 " ) );
126+ settingsScript.print (16 );
120127 break ;
121128 case ETH_CLOCK_GPIO17_OUT:
122- settingsScript.print (F ( " 17 " ) );
129+ settingsScript.print (17 );
123130 break ;
124131 }
125132 }
@@ -128,21 +135,19 @@ void appendGPIOinfo(Print& settingsScript) {
128135
129136 // add info for read-only GPIO
130137 settingsScript.print (F (" d.ro_gpio=[" ));
131- bool firstPin = true ;
138+ firstPin = true ;
132139 for (unsigned i = 0 ; i < WLED_NUM_PINS; i++) {
133140 if (PinManager::isReadOnlyPin (i)) {
134141 // No comma before the first pin
135- if (!firstPin) settingsScript.print (F ( " , " ) );
142+ if (!firstPin) settingsScript.print (' , ' );
136143 settingsScript.print (i);
137144 firstPin = false ;
138145 }
139146 }
140147 settingsScript.print (F (" ];" ));
141148
142149 // add info about max. # of pins
143- settingsScript.print (F (" d.max_gpio=" ));
144- settingsScript.print (WLED_NUM_PINS);
145- settingsScript.print (F (" ;" ));
150+ settingsScript.printf_P (PSTR (" d.max_gpio=%d;" ),WLED_NUM_PINS);
146151}
147152
148153// get values for settings form in javascript
@@ -152,6 +157,7 @@ void getSettingsJS(byte subPage, Print& settingsScript)
152157 DEBUG_PRINTF_P (PSTR (" settings resp %u\n " ), (unsigned )subPage);
153158
154159 if (subPage <0 || subPage >10 ) return ;
160+ char nS[32 ];
155161
156162 if (subPage == SUBPAGE_MENU)
157163 {
@@ -259,11 +265,9 @@ void getSettingsJS(byte subPage, Print& settingsScript)
259265
260266 if (subPage == SUBPAGE_LEDS)
261267 {
262- char nS[32 ];
263-
264268 appendGPIOinfo (settingsScript);
265269
266- settingsScript.print ( F (" d.ledTypes=" )); settingsScript. print ( BusManager::getLEDTypesJSONString ().c_str ()); settingsScript. print ( " ; " );
270+ settingsScript.printf_P ( PSTR (" d.ledTypes=%s; " ), BusManager::getLEDTypesJSONString ().c_str ());
267271
268272 // set limits
269273 settingsScript.printf_P (PSTR (" bLimits(%d,%d,%d,%d,%d,%d,%d,%d);" ),
@@ -399,7 +403,6 @@ void getSettingsJS(byte subPage, Print& settingsScript)
399403
400404 if (subPage == SUBPAGE_SYNC)
401405 {
402- [[maybe_unused]] char nS[32 ];
403406 printSetFormValue (settingsScript,PSTR (" UP" ),udpPort);
404407 printSetFormValue (settingsScript,PSTR (" U2" ),udpPort2);
405408 #ifndef WLED_DISABLE_ESPNOW
@@ -637,7 +640,7 @@ void getSettingsJS(byte subPage, Print& settingsScript)
637640 #if defined(ARDUINO_ARCH_ESP32)
638641 ESP.getChipModel (),
639642 #else
640- F ( " esp8266" ) ,
643+ " esp8266" ,
641644 #endif
642645 VERSION);
643646
@@ -648,8 +651,7 @@ void getSettingsJS(byte subPage, Print& settingsScript)
648651 {
649652 printSetFormValue (settingsScript,PSTR (" SOMP" ),strip.isMatrix );
650653 #ifndef WLED_DISABLE_2D
651- settingsScript.printf_P (PSTR (" maxPanels=%d;" ),WLED_MAX_PANELS);
652- settingsScript.print (F (" resetPanels();" ));
654+ settingsScript.printf_P (PSTR (" maxPanels=%d;resetPanels();" ),WLED_MAX_PANELS);
653655 if (strip.isMatrix ) {
654656 if (strip.panels >0 ){
655657 printSetFormValue (settingsScript,PSTR (" PW" ),strip.panel [0 ].width ); // Set generator Width and Height to first panel size for convenience
@@ -658,12 +660,9 @@ void getSettingsJS(byte subPage, Print& settingsScript)
658660 printSetFormValue (settingsScript,PSTR (" MPC" ),strip.panels );
659661 // panels
660662 for (unsigned i=0 ; i<strip.panels ; i++) {
661- char n[5 ];
662- settingsScript.print (F (" addPanel(" ));
663- settingsScript.print (itoa (i,n,10 ));
664- settingsScript.print (F (" );" ));
663+ settingsScript.printf_P (PSTR (" addPanel(%d);" ), i);
665664 char pO[8 ] = { ' \0 ' };
666- snprintf_P (pO, 7 , PSTR (" P%d" ), i); // MAX_PANELS is 64 so pO will always only be 4 characters or less
665+ snprintf_P (pO, 7 , PSTR (" P%d" ), i); // WLED_MAX_PANELS is 18 so pO will always only be 4 characters or less
667666 pO[7 ] = ' \0 ' ;
668667 unsigned l = strlen (pO);
669668 // create P0B, P1B, ..., P63B, etc for other PxxX
0 commit comments