mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 18:56:38 +00:00
Module/Gpio re-design - consolidate internal templates - phase 3
Module/Gpio re-design - consolidate internal templates - phase 3
This commit is contained in:
parent
3c612c4fca
commit
2d8916a9fa
@ -1206,6 +1206,39 @@ String ModuleName(void)
|
||||
return AnyModuleName(Settings.module);
|
||||
}
|
||||
|
||||
void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) {
|
||||
uint8_t module_template = pgm_read_byte(kModuleTemplateList + module);
|
||||
|
||||
// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Template %d, Option %d"), module_template, option);
|
||||
|
||||
uint8_t internal_template[sizeof(mytmplt)] = { GPIO_NONE };
|
||||
if (module_template < TMP_WEMOS) {
|
||||
memcpy_P(&internal_template, &kModules8266[module_template], 6);
|
||||
memcpy_P(&internal_template[8], &kModules8266[module_template].gp.io[6], 6);
|
||||
} else {
|
||||
memcpy_P(&internal_template, &kModules8285[module_template - TMP_WEMOS], sizeof(mytmplt));
|
||||
}
|
||||
|
||||
// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&internal_template, sizeof(mytmplt));
|
||||
|
||||
uint32_t index = 0;
|
||||
uint32_t size = sizeof(mycfgio); // kmodule[module_template].gp
|
||||
switch (option) {
|
||||
case 2: {
|
||||
index = sizeof(internal_template) -1; // kModules[module_template].flag
|
||||
size = 1;
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
size = sizeof(internal_template); // kmodule[module_template]
|
||||
break;
|
||||
}
|
||||
}
|
||||
memcpy(ptr, &internal_template[index], size);
|
||||
|
||||
// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)ptr, size);
|
||||
}
|
||||
|
||||
void ModuleGpios(myio *gp)
|
||||
{
|
||||
#ifdef ESP8266
|
||||
@ -1221,8 +1254,7 @@ void ModuleGpios(myio *gp)
|
||||
memcpy(&src, &Settings.user_template.gp, sizeof(mycfgio));
|
||||
} else {
|
||||
#ifdef ESP8266
|
||||
uint8_t module_template = pgm_read_byte(kModuleTemplateList + Settings.module);
|
||||
memcpy_P(&src, &kModules[module_template].gp, sizeof(mycfgio));
|
||||
GetInternalTemplate(&src, Settings.module, 1);
|
||||
#else // ESP32
|
||||
memcpy_P(&src, &kModules.gp, sizeof(mycfgio));
|
||||
#endif // ESP8266 - ESP32
|
||||
@ -1251,8 +1283,7 @@ gpio_flag ModuleFlag(void)
|
||||
flag = Settings.user_template.flag;
|
||||
} else {
|
||||
#ifdef ESP8266
|
||||
uint8_t module_template = pgm_read_byte(kModuleTemplateList + Settings.module);
|
||||
memcpy_P(&flag, &kModules[module_template].flag, sizeof(gpio_flag));
|
||||
GetInternalTemplate(&flag, Settings.module, 2);
|
||||
#else // ESP32
|
||||
memcpy_P(&flag, &kModules.flag, sizeof(gpio_flag));
|
||||
#endif // ESP8266 - ESP32
|
||||
@ -1268,8 +1299,7 @@ void ModuleDefault(uint32_t module)
|
||||
char name[TOPSZ];
|
||||
SettingsUpdateText(SET_TEMPLATE_NAME, GetTextIndexed(name, sizeof(name), module, kModuleNames));
|
||||
#ifdef ESP8266
|
||||
uint8_t module_template = pgm_read_byte(kModuleTemplateList + module);
|
||||
memcpy_P(&Settings.user_template, &kModules[module_template], sizeof(mytmplt));
|
||||
GetInternalTemplate(&Settings.user_template, module, 3);
|
||||
#else // ESP32
|
||||
memcpy_P(&Settings.user_template, &kModules, sizeof(mytmplt));
|
||||
#endif // ESP8266 - ESP32
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user