mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-29 05:36:39 +00:00
Change ESP32 pin allocation part 4
This commit is contained in:
parent
91df6c5ed3
commit
7177c7d8e0
@ -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)
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user