Use simple scheme with direct model slot to model filename

This commit is contained in:
Raphael Coeffic
2021-11-10 11:07:00 +01:00
parent 96b256cbdb
commit c696313a4e
21 changed files with 284 additions and 659 deletions
+19 -17
View File
@@ -26,10 +26,6 @@
#include "conversions/conversions.h"
#include "model_init.h"
//#if !defined(EEPROM_SDCARD)
ModelHeader modelHeaders[MAX_MODELS];
//#endif
// defined either in sdcard_raw.cpp or sdcard_yaml.cpp
void storageCreateModelsList();
@@ -71,7 +67,9 @@ void storageFormat()
{
sdCheckAndCreateDirectory(RADIO_PATH);
sdCheckAndCreateDirectory(MODELS_PATH);
#if defined(STORAGE_MODELSLIST)
storageCreateModelsList();
#endif
generalDefault();
}
@@ -96,6 +94,7 @@ void storageCheck(bool immediately)
}
}
#if defined(STORAGE_MODELSLIST)
const char * createModel()
{
preModelLoad();
@@ -108,6 +107,7 @@ const char * createModel()
if (index > 0) {
setModelDefaults(index);
memcpy(g_eeGeneral.currModelFilename, filename, sizeof(g_eeGeneral.currModelFilename));
storageDirty(EE_GENERAL);
storageDirty(EE_MODEL);
storageCheck(true);
@@ -116,6 +116,7 @@ const char * createModel()
return g_eeGeneral.currModelFilename;
}
#endif
const char * loadModel(const char * filename, bool alarms)
{
@@ -150,13 +151,20 @@ void storageReadAll()
{
TRACE("storageReadAll");
#if defined(STORAGE_MODELSLIST)
// Wipe models list in case
// it's being reloaded after USB connection
modelslist.clear();
#endif
if (loadRadioSettings() != nullptr) {
storageEraseAll(true);
}
#if !defined(STORAGE_MODELSLIST)
else {
loadModelHeaders();
}
#endif
for (uint8_t i = 0; languagePacks[i] != nullptr; i++) {
if (!strncmp(g_eeGeneral.ttsLanguage, languagePacks[i]->id, 2)) {
@@ -166,6 +174,7 @@ void storageReadAll()
}
}
#if defined(STORAGE_MODELSLIST)
// and reload the list
modelslist.load();
@@ -185,24 +194,17 @@ void storageReadAll()
if (loadModel(g_eeGeneral.currModelFilename, false) != nullptr) {
TRACE("No current model or SD card error");
}
#else
if (loadModel(g_eeGeneral.currModel, false) != nullptr) {
TRACE("No current model or SD card error");
}
#endif
}
#if !defined(COLORLCD)
void checkModelIdUnique(uint8_t index, uint8_t module)
{
if (isModuleXJTD8(module))
return;
char * warn_buf = reusableBuffer.moduleSetup.msg;
// cannot rely exactly on WARNING_LINE_LEN so using WARNING_LINE_LEN-2
size_t warn_buf_len = sizeof(reusableBuffer.moduleSetup.msg) - WARNING_LINE_LEN - 2;
if (!modelslist.isModelIdUnique(module,warn_buf,warn_buf_len)) {
if (warn_buf[0] != 0) {
POPUP_WARNING(STR_MODELIDUSED);
SET_WARNING_INFO(warn_buf, sizeof(reusableBuffer.moduleSetup.msg), 0);
}
}
//TODO
}
#endif