Module/Gpio re-design - consolidate internal templates - phase 3

Module/Gpio re-design - consolidate internal templates - phase 3
This commit is contained in:
Theo Arends 2020-08-22 18:03:20 +02:00
parent 3c612c4fca
commit 2d8916a9fa
2 changed files with 1000 additions and 1183 deletions

View File

@ -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