Change ESP32 pin allocation part 4

This commit is contained in:
Theo Arends 2020-05-01 16:47:41 +02:00
parent 91df6c5ed3
commit 7177c7d8e0
6 changed files with 108 additions and 120 deletions

View File

@ -1211,24 +1211,15 @@ gpio_flag ModuleFlag(void)
{ {
gpio_flag flag; gpio_flag flag;
#ifdef ESP8266
if (USER_MODULE == Settings.module) { if (USER_MODULE == Settings.module) {
flag = Settings.user_template.flag; flag = Settings.user_template.flag;
} else { } else {
#ifdef ESP8266
memcpy_P(&flag, &kModules[Settings.module].flag, sizeof(gpio_flag)); memcpy_P(&flag, &kModules[Settings.module].flag, sizeof(gpio_flag));
}
#else // ESP32 #else // ESP32
if (USER_MODULE == Settings.module) { memcpy_P(&flag, &kModules.flag, sizeof(gpio_flag));
/*
gpio_flag gpio_adc0;
memcpy_P(&gpio_adc0, &Settings.user_template.gp + ADC0_PIN - MIN_FLASH_PINS, sizeof(gpio_flag));
flag = Settings.user_template.flag.data + gpio_adc0.data;
*/
memcpy_P(&flag, &Settings.user_template.gp + ADC0_PIN - MIN_FLASH_PINS, sizeof(gpio_flag));
} else {
memcpy_P(&flag, &kModules.gp + ADC0_PIN - MIN_FLASH_PINS, sizeof(gpio_flag));
}
#endif // ESP8266 - ESP32 #endif // ESP8266 - ESP32
}
return flag; return flag;
} }
@ -1285,12 +1276,14 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio)
#endif // ESP8266 - ESP32 #endif // ESP8266 - ESP32
} }
#ifdef ESP8266
bool ValidAdc(void) bool ValidAdc(void)
{ {
gpio_flag flag = ModuleFlag(); gpio_flag flag = ModuleFlag();
uint32_t template_adc0 = flag.data &15; uint32_t template_adc0 = flag.data &15;
return (ADC0_USER == template_adc0); return (ADC0_USER == template_adc0);
} }
#endif // ESP8266
#ifdef ESP8266 #ifdef ESP8266
bool GetUsedInModule(uint32_t val, uint8_t *arr) bool GetUsedInModule(uint32_t val, uint8_t *arr)

View File

@ -1371,6 +1371,7 @@ void GpioInit(void)
my_module.io[i] = def_gp.io[i]; // Force Template override my_module.io[i] = def_gp.io[i]; // Force Template override
} }
} }
#ifdef ESP8266
if ((Settings.my_adc0 >= ADC0_END) && (Settings.my_adc0 < ADC0_USER)) { if ((Settings.my_adc0 >= ADC0_END) && (Settings.my_adc0 < ADC0_USER)) {
Settings.my_adc0 = ADC0_NONE; // Fix not supported sensor ids in module Settings.my_adc0 = ADC0_NONE; // Fix not supported sensor ids in module
} }
@ -1382,6 +1383,7 @@ void GpioInit(void)
if ((template_adc0 > ADC0_NONE) && (template_adc0 < ADC0_USER)) { if ((template_adc0 > ADC0_NONE) && (template_adc0 < ADC0_USER)) {
my_adc0 = template_adc0; // Force Template override my_adc0 = template_adc0; // Force Template override
} }
#endif
#ifdef LEGACY_GPIO_ARRAY #ifdef LEGACY_GPIO_ARRAY
InitAllPins(); InitAllPins();

View File

@ -165,7 +165,7 @@ uint8_t devices_present = 0; // Max number of devices supported
uint8_t seriallog_level; // Current copy of Settings.seriallog_level uint8_t seriallog_level; // Current copy of Settings.seriallog_level
uint8_t syslog_level; // Current copy of Settings.syslog_level uint8_t syslog_level; // Current copy of Settings.syslog_level
uint8_t my_module_type; // Current copy of Settings.module or user template type uint8_t my_module_type; // Current copy of Settings.module or user template type
uint8_t my_adc0; // Active copy of Module ADC0 uint8_t my_adc0 = 0; // Active copy of Module ADC0
uint8_t last_source = 0; // Last command source uint8_t last_source = 0; // Last command source
uint8_t shutters_present = 0; // Number of actual define shutters uint8_t shutters_present = 0; // Number of actual define shutters
uint8_t prepped_loglevel = 0; // Delayed log level message uint8_t prepped_loglevel = 0; // Delayed log level message
@ -286,16 +286,17 @@ void setup(void)
for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) {
Settings.my_gp.io[i] = GPIO_NONE; // Reset user defined GPIO disabling sensors Settings.my_gp.io[i] = GPIO_NONE; // Reset user defined GPIO disabling sensors
} }
#ifdef ESP8266
Settings.my_adc0 = ADC0_NONE; // Reset user defined ADC0 disabling sensors Settings.my_adc0 = ADC0_NONE; // Reset user defined ADC0 disabling sensors
#endif
} }
if (RtcReboot.fast_reboot_count > Settings.param[P_BOOT_LOOP_OFFSET] +4) { // Restarted 6 times if (RtcReboot.fast_reboot_count > Settings.param[P_BOOT_LOOP_OFFSET] +4) { // Restarted 6 times
#ifdef ESP8266 #ifdef ESP8266
Settings.module = SONOFF_BASIC; // Reset module to Sonoff Basic Settings.module = SONOFF_BASIC; // Reset module to Sonoff Basic
// Settings.last_module = SONOFF_BASIC; // Settings.last_module = SONOFF_BASIC;
#endif // ESP8266 #else // ESP32
#ifdef ESP32
Settings.module = WEMOS; // Reset module to Wemos Settings.module = WEMOS; // Reset module to Wemos
#endif // ESP32 #endif // ESP8266 - ESP32
} }
AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_LOG_SOME_SETTINGS_RESET " (%d)"), RtcReboot.fast_reboot_count); AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_LOG_SOME_SETTINGS_RESET " (%d)"), RtcReboot.fast_reboot_count);
} }

View File

@ -190,7 +190,6 @@ enum UserSelectablePins {
GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor
GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX
GPIO_AS3935, GPIO_AS3935,
/*
ADC0_INPUT, // Analog input ADC0_INPUT, // Analog input
ADC0_TEMP, // Thermistor ADC0_TEMP, // Thermistor
ADC0_LIGHT, // Light sensor ADC0_LIGHT, // Light sensor
@ -198,7 +197,6 @@ enum UserSelectablePins {
ADC0_BUTTON_INV, ADC0_BUTTON_INV,
ADC0_RANGE, // Range ADC0_RANGE, // Range
ADC0_CT_POWER, // Current ADC0_CT_POWER, // Current
*/
GPIO_SENSOR_END }; GPIO_SENSOR_END };
enum ProgramSelectablePins { enum ProgramSelectablePins {
@ -284,13 +282,11 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_HRXL_RX "|" D_SENSOR_HRXL_RX "|"
D_SENSOR_ELECTRIQ_MOODL "|" D_SENSOR_ELECTRIQ_MOODL "|"
D_SENSOR_AS3935 "|" D_SENSOR_AS3935 "|"
/*
D_ANALOG_INPUT "|" D_ANALOG_INPUT "|"
D_TEMPERATURE "|" D_LIGHT "|" D_TEMPERATURE "|" D_LIGHT "|"
D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|" D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|"
D_RANGE "|" D_RANGE "|"
D_CT_POWER "|" D_CT_POWER "|"
*/
; ;
const char kSensorNamesFixed[] PROGMEM = const char kSensorNamesFixed[] PROGMEM =
@ -583,54 +579,23 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_AS3935), AGPIO(GPIO_AS3935),
#endif #endif
/* /*
ADC0_INPUT, // Analog input #ifndef USE_ADC_VCC
ADC0_TEMP, // Thermistor AGPIO(ADC0_INPUT), // Analog input
ADC0_LIGHT, // Light sensor AGPIO(ADC0_TEMP), // Thermistor
ADC0_BUTTON, // Button AGPIO(ADC0_LIGHT), // Light sensor
ADC0_BUTTON_INV, AGPIO(ADC0_BUTTON), // Button
ADC0_RANGE, // Range AGPIO(ADC0_BUTTON_INV),
ADC0_CT_POWER, // Current AGPIO(ADC0_RANGE), // Range
AGPIO(ADC0_CT_POWER), // Current
#endif
*/ */
}; };
//******************************************************************************************** //********************************************************************************************
// User selectable ADC0 functionality
enum UserSelectableAdc0 {
ADC0_NONE, // Not used
ADC0_INPUT, // Analog input
ADC0_TEMP, // Thermistor
ADC0_LIGHT, // Light sensor
ADC0_BUTTON, // Button
ADC0_BUTTON_INV,
ADC0_RANGE, // Range
ADC0_CT_POWER, // Current
// ADC0_SWITCH, // Switch
// ADC0_SWITCH_INV,
ADC0_END };
// Programmer selectable ADC0 functionality
enum ProgramSelectableAdc0 {
ADC0_FIX_START = 14,
ADC0_USER, // User configurable needs to be 15
ADC0_MAX };
// Text in webpage Module Parameters and commands ADC
const char kAdc0Names[] PROGMEM =
D_SENSOR_NONE "|" D_ANALOG_INPUT "|"
D_TEMPERATURE "|" D_LIGHT "|"
D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|"
D_RANGE "|"
D_CT_POWER "|"
// D_SENSOR_SWITCH "|" D_SENSOR_SWITCH "i|"
;
//********************************************************************************************
#define MAX_GPIO_PIN 40 // Number of supported GPIO #define MAX_GPIO_PIN 40 // Number of supported GPIO
#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) #define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11)
#define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS #define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS
#define ADC0_PIN 33 // Pin number of ADC0
#define WEMOS_MODULE 0 // Wemos module #define WEMOS_MODULE 0 // Wemos module
// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839 // 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839

View File

@ -228,26 +228,24 @@ const char HTTP_SCRIPT_CONSOL[] PROGMEM =
"wl(h);"; // Add console command key eventlistener after name has been synced with id (= wl(jd)) "wl(h);"; // Add console command key eventlistener after name has been synced with id (= wl(jd))
const char HTTP_MODULE_TEMPLATE_REPLACE[] PROGMEM = const char HTTP_MODULE_TEMPLATE_REPLACE[] PROGMEM =
"}2%d'>%s (%d)}3"; // }2 and }3 are used in below os.replace "}2%d'>%s (%d}3"; // }2 and }3 are used in below os.replace
const char HTTP_MODULE_TEMPLATE_NO_INDEX_REPLACE[] PROGMEM =
"}2%d'>%s}3"; // }2 and }3 are used in below os.replace
const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM = const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM =
#ifdef ESP8266 #ifdef ESP8266
"var os;" "var os;"
"function sk(s,g){" // s = value, g = id and name "function sk(s,g){" // s = value, g = id and name
"var o=os.replace(/}2/g,\"<option value='\").replace(/}3/g,\"</option>\");" "var o=os.replace(/}2/g,\"<option value='\").replace(/}3/g,\")</option>\");"
"eb('g'+g).innerHTML=o;" "eb('g'+g).innerHTML=o;"
"eb('g'+g).value=s;" "eb('g'+g).value=s;"
"}" "}";
#else // ESP32 #else // ESP32
#ifndef FINAL_ESP32 #ifndef FINAL_ESP32
"var os;" "var os;"
"function sk(s,g){" // s = value, g = id and name "function sk(s,g){" // s = value, g = id and name
"var o=os.replace(/}2/g,\"<option value='\").replace(/}3/g,\"</option>\");" "var o=os.replace(/}2/g,\"<option value='\").replace(/}3/g,\")</option>\");"
"eb('g'+g).innerHTML=o;" "eb('g'+g).innerHTML=o;"
"eb('g'+g).value=s;" "eb('g'+g).value=s;"
"}" "}";
#else // FINAL_ESP32 #else // FINAL_ESP32
"var os,hs;" "var os,hs;"
"function ce(i,q){" // Create index select "function ce(i,q){" // Create index select
@ -265,14 +263,15 @@ const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM =
"t.style.visibility=(hs[s]>0)?'':'hidden';" "t.style.visibility=(hs[s]>0)?'':'hidden';"
"}" "}"
"function sk(s,g){" // s = value, g = id and name "function sk(s,g){" // s = value, g = id and name
"var o=os.replace(/}2/g,\"<option value='\").replace(/}3/g,\"</option>\");" "var o=os.replace(/}2/g,\"<option value='\").replace(/}3/g,\")</option>\");"
"eb('g'+g).innerHTML=o;" "eb('g'+g).innerHTML=o;"
"eb('g'+g).value=s&0xffe0;" "eb('g'+g).value=(g<99)?s&0xffe0:s;"
"if(g<99){ot(g,s);}" "if(g<99){ot(g,s);}"
"}" "}";
#endif // FINAL_ESP32 #endif // FINAL_ESP32
#endif // ESP8266 - ESP32 #endif // ESP8266 - ESP32
const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
"function ld(u,f){" "function ld(u,f){"
"var x=new XMLHttpRequest();" "var x=new XMLHttpRequest();"
"x.onreadystatechange=function(){" "x.onreadystatechange=function(){"
@ -282,9 +281,7 @@ const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM =
"};" "};"
"x.open('GET',u,true);" "x.open('GET',u,true);"
"x.send();" "x.send();"
"}"; "}"
const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
"var c;" // Need a global for BASE "var c;" // Need a global for BASE
"function x1(b){" "function x1(b){"
"var i,j,g,k,o;" "var i,j,g,k,o;"
@ -296,7 +293,6 @@ const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
"g=o.shift().split(',');" // GPIO - Array separator "g=o.shift().split(',');" // GPIO - Array separator
"os=\""; // }2'0'>None (0)}3}2'17'>Button1 (17)}3... "os=\""; // }2'0'>None (0)}3}2'17'>Button1 (17)}3...
const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM = const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM =
"\";"
"j=0;" "j=0;"
"for(i=0;i<" STR(MAX_USER_PINS) ";i++){" // Supports 13 GPIOs "for(i=0;i<" STR(MAX_USER_PINS) ";i++){" // Supports 13 GPIOs
"if(6==i){j=9;}" "if(6==i){j=9;}"
@ -304,12 +300,12 @@ const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM =
"sk(g[i],j);" // Set GPIO "sk(g[i],j);" // Set GPIO
"j++;" "j++;"
"}" "}"
"g=o.shift();" // FLAG "g=o.shift();"; // FLAG
"os=\""; // }2'0'>None (0)}3}2'17'>Analog (17)}3...
const char HTTP_SCRIPT_TEMPLATE3[] PROGMEM = const char HTTP_SCRIPT_TEMPLATE3[] PROGMEM =
"\";" "\";"
"sk(g&15," STR(ADC0_PIN) ");" // Set ADC0 "sk(g&15," STR(ADC0_PIN) ");" // Set ADC0
"g>>=4;" "g>>=4;";
const char HTTP_SCRIPT_TEMPLATE4[] PROGMEM =
"for(i=0;i<" STR(GPIO_FLAG_USED) ";i++){" "for(i=0;i<" STR(GPIO_FLAG_USED) ";i++){"
"p=(g>>i)&1;" "p=(g>>i)&1;"
"eb('c'+i).checked=p;" // Set FLAG checkboxes "eb('c'+i).checked=p;" // Set FLAG checkboxes
@ -324,10 +320,9 @@ const char HTTP_SCRIPT_TEMPLATE3[] PROGMEM =
"var a='tp?t='+t;" "var a='tp?t='+t;"
"ld(a,x1);" // ?t related to WebGetArg("t", stemp, sizeof(stemp)); "ld(a,x1);" // ?t related to WebGetArg("t", stemp, sizeof(stemp));
"}" "}"
"function sl(){" "function sl(){"
"os=\""; // }2'0'>Sonoff Basic (1)}3... "os=\""; // }2'0'>Sonoff Basic (1)}3...
const char HTTP_SCRIPT_TEMPLATE4[] PROGMEM = const char HTTP_SCRIPT_TEMPLATE5[] PROGMEM =
"\";" "\";"
"sk(" STR(WEMOS_MODULE) ",99);" // 17 = WEMOS "sk(" STR(WEMOS_MODULE) ",99);" // 17 = WEMOS
"st(" STR(USER_MODULE) ");" "st(" STR(USER_MODULE) ");"
@ -1477,13 +1472,32 @@ void HandleTemplateConfiguration(void)
uint32_t midx = pgm_read_byte(kGpioNiceList + i); uint32_t midx = pgm_read_byte(kGpioNiceList + i);
uint32_t ridx = midx; uint32_t ridx = midx;
#else // FINAL_ESP32 #else // FINAL_ESP32
uint32_t ridx = pgm_read_word(kGpioNiceList + i); uint32_t ridx = pgm_read_word(kGpioNiceList + i) & 0xFFE0;
uint32_t midx = ridx >> 5; uint32_t midx = ridx >> 5;
#endif // FINAL_ESP32 #endif // FINAL_ESP32
#endif // ESP8266 - ESP32 #endif // ESP8266 - ESP32
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ridx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames), ridx); WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ridx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames), ridx);
} }
WSContentSend_P(PSTR("\";"));
#ifdef ESP32
#ifdef FINAL_ESP32
WSContentSend_P(PSTR("hs=["));
bool first_done = false;
for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) {
uint32_t midx = pgm_read_word(kGpioNiceList + i) & 0x001F;
if (first_done) { WSContentSend_P(PSTR(",")); }
WSContentSend_P(PSTR("%d"), midx);
first_done = true;
}
WSContentSend_P(PSTR("];"));
#endif // FINAL_ESP32
#endif // ESP32
WSContentSend_P(HTTP_SCRIPT_TEMPLATE2); WSContentSend_P(HTTP_SCRIPT_TEMPLATE2);
#ifdef ESP8266
WSContentSend_P(PSTR("os=\""));
for (uint32_t i = 0; i < ADC0_END; i++) { // FLAG: }2'0'>None (0)}3}2'17'>Analog (17)}3... for (uint32_t i = 0; i < ADC0_END; i++) { // FLAG: }2'0'>None (0)}3}2'17'>Analog (17)}3...
if (1 == i) { if (1 == i) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ADC0_USER, D_SENSOR_USER, ADC0_USER); // }2'15'>User (15)}3 WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ADC0_USER, D_SENSOR_USER, ADC0_USER); // }2'15'>User (15)}3
@ -1491,11 +1505,14 @@ void HandleTemplateConfiguration(void)
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, i, GetTextIndexed(stemp, sizeof(stemp), i, kAdc0Names), i); WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, i, GetTextIndexed(stemp, sizeof(stemp), i, kAdc0Names), i);
} }
WSContentSend_P(HTTP_SCRIPT_TEMPLATE3); WSContentSend_P(HTTP_SCRIPT_TEMPLATE3);
#endif
WSContentSend_P(HTTP_SCRIPT_TEMPLATE4);
for (uint32_t i = 0; i < sizeof(kModuleNiceList); i++) { // "}2'%d'>%s (%d)}3" - "}2'0'>Sonoff Basic (1)}3" for (uint32_t i = 0; i < sizeof(kModuleNiceList); i++) { // "}2'%d'>%s (%d)}3" - "}2'0'>Sonoff Basic (1)}3"
uint32_t midx = pgm_read_byte(kModuleNiceList + i); uint32_t midx = pgm_read_byte(kModuleNiceList + i);
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, midx, AnyModuleName(midx).c_str(), midx +1); WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, midx, AnyModuleName(midx).c_str(), midx +1);
} }
WSContentSend_P(HTTP_SCRIPT_TEMPLATE4); WSContentSend_P(HTTP_SCRIPT_TEMPLATE5);
WSContentSendStyle(); WSContentSendStyle();
WSContentSend_P(HTTP_FORM_TEMPLATE); WSContentSend_P(HTTP_FORM_TEMPLATE);
@ -1507,18 +1524,35 @@ void HandleTemplateConfiguration(void)
WSContentSend_P(HTTP_TABLE100); WSContentSend_P(HTTP_TABLE100);
for (uint32_t i = 0; i < MAX_GPIO_PIN; i++) { for (uint32_t i = 0; i < MAX_GPIO_PIN; i++) {
if (!FlashPin(i)) { if (!FlashPin(i)) {
#ifdef ESP8266
WSContentSend_P(PSTR("<tr><td><b><font color='#%06x'>" D_GPIO "%d</font></b></td><td%s><select id='g%d'></select></td></tr>"), WSContentSend_P(PSTR("<tr><td><b><font color='#%06x'>" D_GPIO "%d</font></b></td><td%s><select id='g%d'></select></td></tr>"),
((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? " style='width:200px'" : "", i); ((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? " style='width:200px'" : "", i);
#else // ESP32
#ifndef FINAL_ESP32
WSContentSend_P(PSTR("<tr><td><b><font color='#%06x'>" D_GPIO "%d</font></b></td><td%s><select id='g%d'></select></td></tr>"),
((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? " style='width:200px'" : "", i);
#else // FINAL_ESP32
WSContentSend_P(PSTR("<tr><td><b><font color='#%06x'>" D_GPIO "%d</font></b></td><td%s><select id='g%d' onchange='ot(%d,this.value)'></select></td>"),
((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? " style='width:150px'" : "", i, i);
WSContentSend_P(PSTR("<td style='width:50px'><select id='h%d'></select></td></tr>"), i);
#endif // FINAL_ESP32
#endif // ESP8266
} }
} }
#ifdef ESP8266 #ifdef ESP8266
WSContentSend_P(PSTR("<tr><td><b><font color='#%06x'>" D_ADC "0</font></b></td><td><select id='g17'></select></td></tr>"), WebColor(COL_TEXT)); WSContentSend_P(PSTR("<tr><td><b><font color='#%06x'>" D_ADC "0</font></b></td><td><select id='g17'></select></td></tr>"), WebColor(COL_TEXT));
#endif #endif
WSContentSend_P(PSTR("</table>")); WSContentSend_P(PSTR("</table>"));
gpio_flag flag = ModuleFlag(); gpio_flag flag = ModuleFlag();
#ifdef ESP8266
if (flag.data > ADC0_USER) { if (flag.data > ADC0_USER) {
#else // ESP32
if (flag.data) {
#endif // ESP32
WSContentSend_P(HTTP_FORM_TEMPLATE_FLAG); WSContentSend_P(HTTP_FORM_TEMPLATE_FLAG);
} }
WSContentSend_P(HTTP_FORM_END); WSContentSend_P(HTTP_FORM_END);
WSContentSpaceButton(BUTTON_CONFIGURATION); WSContentSpaceButton(BUTTON_CONFIGURATION);
WSContentStop(); WSContentStop();
@ -1540,12 +1574,26 @@ void TemplateSaveSettings(void)
snprintf_P(webindex, sizeof(webindex), PSTR("g%d"), j); snprintf_P(webindex, sizeof(webindex), PSTR("g%d"), j);
WebGetArg(webindex, tmp, sizeof(tmp)); // GPIO WebGetArg(webindex, tmp, sizeof(tmp)); // GPIO
uint32_t gpio = atoi(tmp); uint32_t gpio = atoi(tmp);
#ifdef ESP32
#ifdef FINAL_ESP32
char tmp2[8]; // WebGetArg numbers only
char webindex2[5]; // WebGetArg name
snprintf_P(webindex2, sizeof(webindex2), PSTR("h%d"), j);
WebGetArg(webindex2, tmp2, sizeof(tmp2));
uint32_t value2 = (!strlen(tmp2)) ? 0 : atoi(tmp2) -1;
gpio += value2;
#endif // FINAL_ESP32
#endif // ESP32
snprintf_P(svalue, sizeof(svalue), PSTR("%s%s%d"), svalue, (i>0)?",":"", gpio); snprintf_P(svalue, sizeof(svalue), PSTR("%s%s%d"), svalue, (i>0)?",":"", gpio);
j++; j++;
} }
#ifdef ESP8266
WebGetArg("g" STR(ADC0_PIN), tmp, sizeof(tmp)); // FLAG - ADC0 WebGetArg("g" STR(ADC0_PIN), tmp, sizeof(tmp)); // FLAG - ADC0
uint32_t flag = atoi(tmp); uint32_t flag = atoi(tmp);
#else // ESP32
uint32_t flag = 0;
#endif // ESP32
for (uint32_t i = 0; i < GPIO_FLAG_USED; i++) { for (uint32_t i = 0; i < GPIO_FLAG_USED; i++) {
snprintf_P(webindex, sizeof(webindex), PSTR("c%d"), i); snprintf_P(webindex, sizeof(webindex), PSTR("c%d"), i);
uint32_t state = Webserver->hasArg(webindex) << i +4; // FLAG uint32_t state = Webserver->hasArg(webindex) << i +4; // FLAG
@ -1597,24 +1645,18 @@ void HandleModuleConfiguration(void)
#ifdef ESP8266 #ifdef ESP8266
midx = pgm_read_byte(kGpioNiceList + i); midx = pgm_read_byte(kGpioNiceList + i);
uint32_t ridx = midx; uint32_t ridx = midx;
if (!GetUsedInModule(midx, cmodule.io)) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ridx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames), ridx);
}
#else // ESP32 #else // ESP32
#ifndef FINAL_ESP32 #ifndef FINAL_ESP32
midx = pgm_read_byte(kGpioNiceList + i); midx = pgm_read_byte(kGpioNiceList + i);
uint32_t ridx = midx; uint32_t ridx = midx;
if (!GetUsedInModule(midx, cmodule.io)) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ridx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames), ridx);
}
#else // FINAL_ESP32 #else // FINAL_ESP32
uint32_t ridx = pgm_read_word(kGpioNiceList + i) & 0xFFE0; uint32_t ridx = pgm_read_word(kGpioNiceList + i) & 0xFFE0;
midx = ridx >> 5; midx = ridx >> 5;
if (!GetUsedInModule(midx, cmodule.io)) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_NO_INDEX_REPLACE, ridx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames));
}
#endif // FINAL_ESP32 #endif // FINAL_ESP32
#endif // ESP8266 - ESP32 #endif // ESP8266 - ESP32
if (!GetUsedInModule(midx, cmodule.io)) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ridx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames), ridx);
}
} }
WSContentSend_P(PSTR("\";")); WSContentSend_P(PSTR("\";"));
@ -1646,16 +1688,6 @@ void HandleModuleConfiguration(void)
} }
WSContentSend_P(PSTR("\";sk(%d," STR(ADC0_PIN) ");"), Settings.my_adc0); WSContentSend_P(PSTR("\";sk(%d," STR(ADC0_PIN) ");"), Settings.my_adc0);
#endif // USE_ADC_VCC #endif // USE_ADC_VCC
#else // ESP32
#ifndef FINAL_ESP32
#ifndef USE_ADC_VCC
WSContentSend_P(PSTR("os=\""));
for (uint32_t j = 0; j < ADC0_END; j++) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, j, GetTextIndexed(stemp, sizeof(stemp), j, kAdc0Names), j);
}
WSContentSend_P(PSTR("\";sk(%d," STR(ADC0_PIN) ");"), Settings.my_adc0);
#endif // USE_ADC_VCC
#endif // No FINAL_ESP32
#endif // ESP8266 - ESP32 #endif // ESP8266 - ESP32
WSContentSend_P(PSTR("}wl(sl);")); WSContentSend_P(PSTR("}wl(sl);"));
@ -1675,10 +1707,10 @@ void HandleModuleConfiguration(void)
WSContentSend_P(PSTR("<tr><td style='width:140px'>%s <b>" D_GPIO "%d</b></td><td style='width:176px'><select id='g%d'></select></td></tr>"), WSContentSend_P(PSTR("<tr><td style='width:140px'>%s <b>" D_GPIO "%d</b></td><td style='width:176px'><select id='g%d'></select></td></tr>"),
(WEMOS==my_module_type)?stemp:"", i, i); (WEMOS==my_module_type)?stemp:"", i, i);
#else // FINAL_ESP32 #else // FINAL_ESP32
WSContentSend_P(PSTR("<tr><td style='width:110px'>%s <b>" D_GPIO "%d</b></td><td style='width:156px'><select id='g%d' onchange='ot(%d,this.value)'></select></td>"), WSContentSend_P(PSTR("<tr><td style='width:116px'>%s <b>" D_GPIO "%d</b></td><td style='width:150px'><select id='g%d' onchange='ot(%d,this.value)'></select></td>"),
(WEMOS==my_module_type)?stemp:"", i, i, i); (WEMOS==my_module_type)?stemp:"", i, i, i);
WSContentSend_P(PSTR("<td style='width:50px'><select id='h%d'></select></td></tr>"), i); WSContentSend_P(PSTR("<td style='width:50px'><select id='h%d'></select></td></tr>"), i);
#endif // #endif // FINAL_ESP32
#endif // ESP8266 #endif // ESP8266
} }
} }
@ -1716,36 +1748,23 @@ void ModuleSaveSettings(void)
snprintf_P(webindex, sizeof(webindex), PSTR("g%d"), i); snprintf_P(webindex, sizeof(webindex), PSTR("g%d"), i);
WebGetArg(webindex, tmp, sizeof(tmp)); WebGetArg(webindex, tmp, sizeof(tmp));
uint32_t value = (!strlen(tmp)) ? 0 : atoi(tmp); uint32_t value = (!strlen(tmp)) ? 0 : atoi(tmp);
#ifdef ESP8266 #ifdef ESP32
Settings.my_gp.io[i] = value; #ifdef FINAL_ESP32
#else // ESP32
#ifndef FINAL_ESP32
if (i == ADC0_PIN) {
Settings.my_adc0 = value;
} else {
Settings.my_gp.io[i] = value;
}
#else // FINAL_ESP32
char tmp2[8]; // WebGetArg numbers only char tmp2[8]; // WebGetArg numbers only
char webindex2[5]; // WebGetArg name char webindex2[5]; // WebGetArg name
snprintf_P(webindex2, sizeof(webindex2), PSTR("h%d"), i); snprintf_P(webindex2, sizeof(webindex2), PSTR("h%d"), i);
WebGetArg(webindex2, tmp2, sizeof(tmp2)); WebGetArg(webindex2, tmp2, sizeof(tmp2));
uint32_t value2 = (!strlen(tmp2)) ? 0 : atoi(tmp2) -1; uint32_t value2 = (!strlen(tmp2)) ? 0 : atoi(tmp2) -1;
value += value2; value += value2;
if (i == ADC0_PIN) {
Settings.my_adc0 = value;
} else {
Settings.my_gp.io[i] = value;
}
#endif // FINAL_ESP32 #endif // FINAL_ESP32
#endif // ESP8266 - ESP32 #endif // ESP8266 - ESP32
Settings.my_gp.io[i] = value;
gpios += F(", " D_GPIO ); gpios += String(i); gpios += F(" "); gpios += String(value); gpios += F(", " D_GPIO ); gpios += String(i); gpios += F(" "); gpios += String(value);
} }
} }
} }
#ifdef ESP8266 #ifdef ESP8266
#ifndef USE_ADC_VCC #ifndef USE_ADC_VCC
// WebGetArg("g17", tmp, sizeof(tmp));
WebGetArg("g" STR(ADC0_PIN), tmp, sizeof(tmp)); WebGetArg("g" STR(ADC0_PIN), tmp, sizeof(tmp));
Settings.my_adc0 = (!strlen(tmp)) ? 0 : atoi(tmp); Settings.my_adc0 = (!strlen(tmp)) ? 0 : atoi(tmp);
gpios += F(", " D_ADC "0 "); gpios += String(Settings.my_adc0); gpios += F(", " D_ADC "0 "); gpios += String(Settings.my_adc0);

View File

@ -317,11 +317,18 @@ void AdcShow(bool json)
\*********************************************************************************************/ \*********************************************************************************************/
const char kAdcCommands[] PROGMEM = "|" // No prefix const char kAdcCommands[] PROGMEM = "|" // No prefix
D_CMND_ADC "|" D_CMND_ADCS "|" D_CMND_ADCPARAM; #ifdef ESP8266
D_CMND_ADC "|" D_CMND_ADCS "|"
#endif // ESP8266
D_CMND_ADCPARAM;
void (* const AdcCommand[])(void) PROGMEM = { void (* const AdcCommand[])(void) PROGMEM = {
&CmndAdc, &CmndAdcs, &CmndAdcParam }; #ifdef ESP8266
&CmndAdc, &CmndAdcs,
#endif // ESP8266
&CmndAdcParam };
#ifdef ESP8266
void CmndAdc(void) void CmndAdc(void)
{ {
if (ValidAdc() && (XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < ADC0_END)) { if (ValidAdc() && (XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < ADC0_END)) {
@ -346,6 +353,7 @@ void CmndAdcs(void)
} }
ResponseJsonEndEnd(); ResponseJsonEndEnd();
} }
#endif // ESP8266
void CmndAdcParam(void) void CmndAdcParam(void)
{ {