Provide ESP32 base module support

This commit is contained in:
Theo Arends 2020-04-17 16:17:01 +02:00
parent 39440e56c2
commit 09599bb4a1
4 changed files with 81 additions and 67 deletions

View File

@ -100,7 +100,7 @@ uint32_t ResetReason(void)
REASON_EXT_SYS_RST = 6 // "External System" external system reset
*/
#ifdef ESP8266
return resetInfo.reason; // Returns Tasmota reason codes
return resetInfo.reason;
#else
return ESP_ResetInfoReason();
#endif
@ -1131,7 +1131,11 @@ void ModuleGpios(myio *gp)
if (USER_MODULE == Settings.module) {
memcpy(&src, &Settings.user_template.gp, sizeof(mycfgio));
} else {
#ifdef ESP8266
memcpy_P(&src, &kModules[Settings.module].gp, sizeof(mycfgio));
#else // ESP32
memcpy_P(&src, &kModules.gp, sizeof(mycfgio));
#endif // ESP8266 - ESP32
}
// 11 85 00 85 85 00 00 00 15 38 85 00 00 81
@ -1142,10 +1146,9 @@ void ModuleGpios(myio *gp)
#ifdef ESP8266
if (6 == i) { j = 9; }
if (8 == i) { j = 12; }
#endif // ESP8266
#ifdef ESP32
#else // ESP32
if (6 == i) { j = 12; }
#endif // ESP32
#endif // ESP8266 - ESP32
dest[j] = src[i];
j++;
}
@ -1158,11 +1161,24 @@ gpio_flag ModuleFlag(void)
{
gpio_flag flag;
#ifdef ESP8266
if (USER_MODULE == Settings.module) {
flag = Settings.user_template.flag;
} else {
memcpy_P(&flag, &kModules[Settings.module].flag, sizeof(gpio_flag));
}
#else // ESP32
if (USER_MODULE == Settings.module) {
/*
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
return flag;
}
@ -1173,7 +1189,11 @@ void ModuleDefault(uint32_t module)
Settings.user_template_base = module;
char name[TOPSZ];
SettingsUpdateText(SET_TEMPLATE_NAME, GetTextIndexed(name, sizeof(name), module, kModuleNames));
#ifdef ESP8266
memcpy_P(&Settings.user_template, &kModules[module], sizeof(mytmplt));
#else // ESP32
memcpy_P(&Settings.user_template, &kModules, sizeof(mytmplt));
#endif // ESP8266 - ESP32
}
void SetModuleType(void)

View File

@ -1117,10 +1117,9 @@ void CmndTemplate(void)
#ifdef ESP8266
if (6 == i) { j = 9; }
if (8 == i) { j = 12; }
#endif // ESP8266
#ifdef ESP32
#else // ESP32
if (6 == i) { j = 12; }
#endif // ESP32
#endif // ESP8266 - ESP32
if (my_module.io[j] > GPIO_NONE) {
Settings.user_template.gp.io[i] = my_module.io[j];
}

View File

@ -45,16 +45,19 @@
/********************************************************************************************/
// Supported hardware modules
enum SupportedModules {
WEMOS,
MAXMODULE
};
WEMOS, ESP32_CAM_AITHINKER,
MAXMODULE};
const char kModuleNames[] PROGMEM = "ESP32-DevKit";
const char kModuleNames[] PROGMEM =
"ESP32-DevKit|ESP32 Cam AiThinker";
// Default module settings
const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { WEMOS };
const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = {
WEMOS,
ESP32_CAM_AITHINKER
};
const mytmplt kModules[MAXMODULE] PROGMEM = {
const mytmplt kModules PROGMEM =
{ // WEMOS - Espressif ESP32-DevKitC - Any ESP32 device like WeMos and NodeMCU hardware (ESP32)
GPIO_USER, //0 (I)O GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK
GPIO_USER, //1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
@ -95,8 +98,8 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_USER, //36 I NO PULLUP GPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0
0, //37 NO PULLUP
0, //38 NO PULLUP
GPIO_USER //39 I NO PULLUP GPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3
}
GPIO_USER, //39 I NO PULLUP GPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3
0 // Flag
};
#endif // ESP32

View File

@ -261,21 +261,18 @@ 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<" STR(MAX_USER_PINS) ";i++){" // Supports 13 GPIOs
#ifdef ESP8266
"if(6==i){j=9;}"
"if(8==i){j=12;}"
#endif
#ifdef ESP32
#else // ESP32
"if(6==i){j=12;}"
#endif
#endif // ESP8266 - ESP32
"sk(g[i],j);" // Set GPIO
"j++;"
"}"
"g=o.shift();" // FLAG
"os=as;"
// "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++){"
@ -295,7 +292,6 @@ const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
"function x2(a){"
"os=a.responseText;"
// "sk(17,99);" // 17 = WEMOS
"sk(" STR(WEMOS_MODULE) ",99);" // 17 = WEMOS
"st(" STR(USER_MODULE) ");"
"}"
@ -321,13 +317,11 @@ const char HTTP_SCRIPT_MODULE2[] PROGMEM =
"}"
"function x3(a){" // ADC0
"os=a.responseText;"
// "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('g" STR(ADC0_PIN) "')){"
"ld('md?a=1',x3);" // ?a related to Webserver->hasArg("a")
"}"
@ -1532,10 +1526,9 @@ void TemplateSaveSettings(void)
#ifdef ESP8266
if (6 == i) { j = 9; }
if (8 == i) { j = 12; }
#endif // ESP8266
#ifdef ESP32
#else // ESP32
if (6 == i) { j = 12; }
#endif // ESP32
#endif // ESP8266 - ESP32
snprintf_P(webindex, sizeof(webindex), PSTR("g%d"), j);
WebGetArg(webindex, tmp, sizeof(tmp)); // GPIO
uint8_t gpio = atoi(tmp);
@ -1543,7 +1536,6 @@ void TemplateSaveSettings(void)
j++;
}
// 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++) {