mirror of https://github.com/arendst/Tasmota.git
Increase ESP32 compatibility
Increase ESP32 compatibility (breaks current ESP32 configuration!)
This commit is contained in:
parent
315d3db863
commit
ad1054a6ae
|
@ -1127,8 +1127,13 @@ void ModuleGpios(myio *gp)
|
|||
|
||||
uint32_t j = 0;
|
||||
for (uint32_t i = 0; i < sizeof(mycfgio); i++) {
|
||||
#ifdef ESP8266
|
||||
if (6 == i) { j = 9; }
|
||||
if (8 == i) { j = 12; }
|
||||
#endif // ESP8266
|
||||
#ifdef ESP32
|
||||
if (6 == i) { j = 12; }
|
||||
#endif // ESP32
|
||||
dest[j] = src[i];
|
||||
j++;
|
||||
}
|
||||
|
@ -1166,7 +1171,12 @@ void SetModuleType(void)
|
|||
|
||||
bool FlashPin(uint32_t pin)
|
||||
{
|
||||
#ifdef ESP8266
|
||||
return (((pin > 5) && (pin < 9)) || (11 == pin));
|
||||
#endif // ESP8266
|
||||
#ifdef ESP32
|
||||
return ((pin > 5) && (pin < 12));
|
||||
#endif // ESP32
|
||||
}
|
||||
|
||||
uint8_t ValidPin(uint32_t pin, uint32_t gpio)
|
||||
|
@ -1175,12 +1185,14 @@ uint8_t ValidPin(uint32_t pin, uint32_t gpio)
|
|||
return GPIO_NONE; // Disable flash pins GPIO6, GPIO7, GPIO8 and GPIO11
|
||||
}
|
||||
|
||||
#ifdef ESP8266
|
||||
// if (!is_8285 && !Settings.flag3.user_esp8285_enable) { // SetOption51 - Enable ESP8285 user GPIO's
|
||||
if ((WEMOS == Settings.module) && !Settings.flag3.user_esp8285_enable) { // SetOption51 - Enable ESP8285 user GPIO's
|
||||
if ((pin == 9) || (pin == 10)) {
|
||||
return GPIO_NONE; // Disable possible flash GPIO9 and GPIO10
|
||||
}
|
||||
}
|
||||
#endif // ESP8266
|
||||
|
||||
return gpio;
|
||||
}
|
||||
|
@ -1264,7 +1276,7 @@ bool JsonTemplate(const char* dataBuf)
|
|||
|
||||
if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks
|
||||
|
||||
StaticJsonBuffer<400> jb; // 331 from https://arduinojson.org/v5/assistant/
|
||||
StaticJsonBuffer<600> jb; // 331 from https://arduinojson.org/v5/assistant/
|
||||
JsonObject& obj = jb.parseObject(dataBuf);
|
||||
if (!obj.success()) { return false; }
|
||||
|
||||
|
|
|
@ -1087,8 +1087,13 @@ void CmndTemplate(void)
|
|||
SettingsUpdateText(SET_TEMPLATE_NAME, "Merged");
|
||||
uint32_t j = 0;
|
||||
for (uint32_t i = 0; i < sizeof(mycfgio); i++) {
|
||||
#ifdef ESP8266
|
||||
if (6 == i) { j = 9; }
|
||||
if (8 == i) { j = 12; }
|
||||
#endif // ESP8266
|
||||
#ifdef ESP32
|
||||
if (6 == i) { j = 12; }
|
||||
#endif // ESP32
|
||||
if (my_module.io[j] > GPIO_NONE) {
|
||||
Settings.user_template.gp.io[i] = my_module.io[j];
|
||||
}
|
||||
|
|
|
@ -703,6 +703,8 @@ const char kAdc0Names[] PROGMEM =
|
|||
|
||||
#define MAX_GPIO_PIN 17 // Number of supported GPIO
|
||||
#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11)
|
||||
#define ADC0_PIN 17 // Pin number of ADC0
|
||||
#define WEMOS_MODULE 17 // Wemos module
|
||||
|
||||
const char PINS_WEMOS[] PROGMEM = "D3TXD4RXD2D1flashcFLFLolD6D7D5D8D0A0";
|
||||
|
||||
|
@ -710,13 +712,17 @@ const char PINS_WEMOS[] PROGMEM = "D3TXD4RXD2D1flashcFLFLolD6D7D5D8D0A0";
|
|||
|
||||
// esp32 has more pins
|
||||
#define USER_MODULE 255
|
||||
#define MAX_GPIO_PIN 44 // Number of supported GPIO
|
||||
#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11)
|
||||
#define MAX_GPIO_PIN 40 // Number of supported GPIO
|
||||
#define MIN_FLASH_PINS 6 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8, 9, 10 and 11)
|
||||
#define ADC0_PIN 36 // Pin number of ADC0
|
||||
#define WEMOS_MODULE 0 // Wemos module
|
||||
|
||||
const char PINS_WEMOS[] PROGMEM = "00010203040506070809101112131415161718192021222324252627282930313233343536373839";
|
||||
const char PINS_WEMOS[] PROGMEM = "00TX02RX04050607080910111213141516171819202122232425262728293031A4A5A6A7A03738A3";
|
||||
|
||||
#endif // ESP8266
|
||||
|
||||
#define MAX_USER_PINS MAX_GPIO_PIN-MIN_FLASH_PINS
|
||||
|
||||
/********************************************************************************************/
|
||||
|
||||
typedef struct MYIO {
|
||||
|
|
|
@ -71,12 +71,12 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
|
|||
GPIO_USER, //3 IO RXD0 GPIO3, U0RXD, CLK_OUT2
|
||||
GPIO_USER, //4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER
|
||||
GPIO_USER, //5 IO GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK
|
||||
0, //6
|
||||
0, //7
|
||||
0, //8
|
||||
0, //9
|
||||
0, //10
|
||||
0, //11
|
||||
// 0, //6
|
||||
// 0, //7
|
||||
// 0, //8
|
||||
// 0, //9
|
||||
// 0, //10
|
||||
// 0, //11
|
||||
GPIO_USER, //12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.)
|
||||
GPIO_USER, //13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER
|
||||
GPIO_USER, //14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2
|
||||
|
@ -113,12 +113,12 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
|
|||
GPIO_USER, //3 IO RXD0 GPIO3, U0RXD, CLK_OUT2
|
||||
GPIO_USER, //4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER
|
||||
GPIO_USER, //5 IO GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK
|
||||
0, //6
|
||||
0, //7
|
||||
0, //8
|
||||
0, //9
|
||||
0, //10
|
||||
0, //11
|
||||
// 0, //6
|
||||
// 0, //7
|
||||
// 0, //8
|
||||
// 0, //9
|
||||
// 0, //10
|
||||
// 0, //11
|
||||
GPIO_USER, //12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.)
|
||||
GPIO_USER, //13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER
|
||||
GPIO_USER, //14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2
|
||||
|
|
|
@ -261,15 +261,22 @@ const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
|
|||
"as=o.shift();" // Complete ADC0 list
|
||||
"g=o.shift().split(',');" // Array separator
|
||||
"j=0;"
|
||||
"for(i=0;i<13;i++){" // Supports 13 GPIOs
|
||||
// "for(i=0;i<13;i++){" // Supports 13 GPIOs
|
||||
"for(i=0;i<" STR(MAX_USER_PINS) ";i++){" // Supports 13 GPIOs
|
||||
#ifdef ESP8266
|
||||
"if(6==i){j=9;}"
|
||||
"if(8==i){j=12;}"
|
||||
#endif
|
||||
#ifdef ESP32
|
||||
"if(6==i){j=12;}"
|
||||
#endif
|
||||
"sk(g[i],j);" // Set GPIO
|
||||
"j++;"
|
||||
"}"
|
||||
"g=o.shift();" // FLAG
|
||||
"os=as;"
|
||||
"sk(g&15,17);" // Set ADC0
|
||||
// "sk(g&15,17);" // Set ADC0
|
||||
"sk(g&15," STR(ADC0_PIN) ");" // Set ADC0
|
||||
"g>>=4;"
|
||||
"for(i=0;i<" STR(GPIO_FLAG_USED) ";i++){"
|
||||
"p=(g>>i)&1;"
|
||||
|
@ -288,7 +295,8 @@ const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
|
|||
|
||||
"function x2(a){"
|
||||
"os=a.responseText;"
|
||||
"sk(17,99);" // 17 = WEMOS
|
||||
// "sk(17,99);" // 17 = WEMOS
|
||||
"sk(" STR(WEMOS_MODULE) ",99);" // 17 = WEMOS
|
||||
"st(" STR(USER_MODULE) ");"
|
||||
"}"
|
||||
|
||||
|
@ -313,12 +321,14 @@ const char HTTP_SCRIPT_MODULE2[] PROGMEM =
|
|||
"}"
|
||||
"function x3(a){" // ADC0
|
||||
"os=a.responseText;"
|
||||
"sk(%d,17);"
|
||||
// "sk(%d,17);"
|
||||
"sk(%d," STR(ADC0_PIN) ");"
|
||||
"}"
|
||||
"function sl(){"
|
||||
"ld('md?m=1',x1);" // ?m related to WebServer->hasArg("m")
|
||||
"ld('md?g=1',x2);" // ?g related to WebServer->hasArg("g")
|
||||
"if(eb('g17')){"
|
||||
// "if(eb('g17')){"
|
||||
"if(eb('g" STR(ADC0_PIN) "')){"
|
||||
"ld('md?a=1',x3);" // ?a related to WebServer->hasArg("a")
|
||||
"}"
|
||||
"}"
|
||||
|
@ -1467,7 +1477,8 @@ void HandleTemplateConfiguration(void)
|
|||
WSContentSend_P(PSTR("}1")); // Field separator
|
||||
|
||||
for (uint32_t i = 0; i < sizeof(cmodule); i++) { // 17,148,29,149,7,255,255,255,138,255,139,255,255
|
||||
if ((i < 6) || ((i > 8) && (i != 11))) { // Ignore flash pins GPIO06, 7, 8 and 11
|
||||
// if ((i < 6) || ((i > 8) && (i != 11))) { // Ignore flash pins GPIO06, 7, 8 and 11
|
||||
if (!FlashPin(i)) {
|
||||
WSContentSend_P(PSTR("%s%d"), (i>0)?",":"", cmodule.io[i]);
|
||||
}
|
||||
}
|
||||
|
@ -1489,13 +1500,16 @@ void HandleTemplateConfiguration(void)
|
|||
"</table>"
|
||||
"<hr/>"));
|
||||
WSContentSend_P(HTTP_TABLE100);
|
||||
for (uint32_t i = 0; i < 17; i++) {
|
||||
if ((i < 6) || ((i > 8) && (i != 11))) { // Ignore flash pins GPIO06, 7, 8 and 11
|
||||
for (uint32_t i = 0; i < MAX_GPIO_PIN; i++) {
|
||||
// if ((i < 6) || ((i > 8) && (i != 11))) { // Ignore flash pins GPIO06, 7, 8 and 11
|
||||
if (!FlashPin(i)) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
#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));
|
||||
#endif
|
||||
WSContentSend_P(PSTR("</table>"));
|
||||
gpio_flag flag = ModuleFlag();
|
||||
if (flag.data > ADC0_USER) {
|
||||
|
@ -1510,15 +1524,20 @@ void TemplateSaveSettings(void)
|
|||
{
|
||||
char tmp[TOPSZ]; // WebGetArg NAME and GPIO/BASE/FLAG byte value
|
||||
char webindex[5]; // WebGetArg name
|
||||
char svalue[200]; // Template command string
|
||||
char svalue[300]; // Template command string
|
||||
|
||||
WebGetArg("s1", tmp, sizeof(tmp)); // NAME
|
||||
snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_TEMPLATE " {\"" D_JSON_NAME "\":\"%s\",\"" D_JSON_GPIO "\":["), tmp);
|
||||
|
||||
uint32_t j = 0;
|
||||
for (uint32_t i = 0; i < sizeof(Settings.user_template.gp); i++) {
|
||||
#ifdef ESP8266
|
||||
if (6 == i) { j = 9; }
|
||||
if (8 == i) { j = 12; }
|
||||
#endif // ESP8266
|
||||
#ifdef ESP32
|
||||
if (6 == i) { j = 12; }
|
||||
#endif // ESP32
|
||||
snprintf_P(webindex, sizeof(webindex), PSTR("g%d"), j);
|
||||
WebGetArg(webindex, tmp, sizeof(tmp)); // GPIO
|
||||
uint8_t gpio = atoi(tmp);
|
||||
|
@ -1526,7 +1545,8 @@ void TemplateSaveSettings(void)
|
|||
j++;
|
||||
}
|
||||
|
||||
WebGetArg("g17", tmp, sizeof(tmp)); // FLAG - ADC0
|
||||
// WebGetArg("g17", tmp, sizeof(tmp)); // FLAG - ADC0
|
||||
WebGetArg("g" STR(ADC0_PIN), tmp, sizeof(tmp)); // FLAG - ADC0
|
||||
uint32_t flag = atoi(tmp);
|
||||
for (uint32_t i = 0; i < GPIO_FLAG_USED; i++) {
|
||||
snprintf_P(webindex, sizeof(webindex), PSTR("c%d"), i);
|
||||
|
@ -1656,7 +1676,8 @@ void ModuleSaveSettings(void)
|
|||
}
|
||||
}
|
||||
#ifndef USE_ADC_VCC
|
||||
WebGetArg("g17", tmp, sizeof(tmp));
|
||||
// WebGetArg("g17", tmp, sizeof(tmp));
|
||||
WebGetArg("g" STR(ADC0_PIN), tmp, sizeof(tmp));
|
||||
Settings.my_adc0 = (!strlen(tmp)) ? 0 : atoi(tmp);
|
||||
gpios += F(", " D_ADC "0 "); gpios += String(Settings.my_adc0);
|
||||
#endif // USE_ADC_VCC
|
||||
|
|
Loading…
Reference in New Issue