committed by
Bertrand Songis
parent
bb2ca31dad
commit
8b4d2b698d
@@ -22,13 +22,6 @@
|
||||
#include "modelslist.h"
|
||||
#include "conversions/conversions.h"
|
||||
|
||||
void getModelPath(char * path, const char * filename)
|
||||
{
|
||||
strcpy(path, STR_MODELS_PATH);
|
||||
path[sizeof(MODELS_PATH)-1] = '/';
|
||||
strcpy(&path[sizeof(MODELS_PATH)], filename);
|
||||
}
|
||||
|
||||
const char * writeFile(const char * filename, const uint8_t * data, uint16_t size)
|
||||
{
|
||||
TRACE("writeFile(%s)", filename);
|
||||
@@ -91,6 +84,8 @@ const char * openFile(const char * fullpath, FIL * file, uint16_t * size, uint8_
|
||||
return SDCARD_ERROR(result);
|
||||
}
|
||||
|
||||
//TODO: move this code into some checkCompatibleFormat()
|
||||
|
||||
*version = (uint8_t)buf[4];
|
||||
if (*(uint32_t*)&buf[0] != OTX_FOURCC || *version < FIRST_CONV_EEPROM_VER || *version > EEPROM_VER || buf[5] != 'M') {
|
||||
f_close(file);
|
||||
@@ -131,32 +126,6 @@ const char * readModel(const char * filename, uint8_t * buffer, uint32_t size, u
|
||||
return loadFile(path, buffer, size, version);
|
||||
}
|
||||
|
||||
const char * loadModel(const char * filename, bool alarms)
|
||||
{
|
||||
uint8_t version;
|
||||
|
||||
preModelLoad();
|
||||
|
||||
const char * error = readModel(filename, (uint8_t *)&g_model, sizeof(g_model), &version);
|
||||
if (error) {
|
||||
TRACE("loadModel error=%s", error);
|
||||
}
|
||||
|
||||
if (error) {
|
||||
modelDefault(0) ;
|
||||
storageCheck(true);
|
||||
alarms = false;
|
||||
}
|
||||
#if defined(EEPROM_CONVERSIONS)
|
||||
else if (version < EEPROM_VER) {
|
||||
convertModelData(version);
|
||||
}
|
||||
#endif
|
||||
|
||||
postModelLoad(alarms);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
const char * loadRadioSettings(const char * path)
|
||||
{
|
||||
@@ -188,55 +157,6 @@ const char * writeGeneralSettings()
|
||||
return writeFile(RADIO_SETTINGS_PATH, (uint8_t *)&g_eeGeneral, sizeof(g_eeGeneral));
|
||||
}
|
||||
|
||||
void storageCheck(bool immediately)
|
||||
{
|
||||
if (storageDirtyMsk & EE_GENERAL) {
|
||||
TRACE("Storage write general");
|
||||
storageDirtyMsk -= EE_GENERAL;
|
||||
const char * error = writeGeneralSettings();
|
||||
if (error) {
|
||||
TRACE("writeGeneralSettings error=%s", error);
|
||||
}
|
||||
}
|
||||
|
||||
if (storageDirtyMsk & EE_MODEL) {
|
||||
TRACE("Storage write current model");
|
||||
storageDirtyMsk -= EE_MODEL;
|
||||
const char * error = writeModel();
|
||||
if (error) {
|
||||
TRACE("writeModel error=%s", error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void storageReadAll()
|
||||
{
|
||||
TRACE("storageReadAll");
|
||||
|
||||
if (loadRadioSettings() != nullptr) {
|
||||
storageEraseAll(true);
|
||||
}
|
||||
|
||||
for (uint8_t i = 0; languagePacks[i] != nullptr; i++) {
|
||||
if (!strncmp(g_eeGeneral.ttsLanguage, languagePacks[i]->id, 2)) {
|
||||
currentLanguagePackIdx = i;
|
||||
currentLanguagePack = languagePacks[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (loadModel(g_eeGeneral.currModelFilename, false) != nullptr) {
|
||||
sdCheckAndCreateDirectory(MODELS_PATH);
|
||||
createModel();
|
||||
}
|
||||
|
||||
// Wipe models list in case
|
||||
// it's being reloaded after USB connection
|
||||
modelslist.clear();
|
||||
|
||||
// and reload the list
|
||||
modelslist.load();
|
||||
}
|
||||
|
||||
void storageCreateModelsList()
|
||||
{
|
||||
FIL file;
|
||||
@@ -247,54 +167,3 @@ void storageCreateModelsList()
|
||||
f_close(&file);
|
||||
}
|
||||
}
|
||||
|
||||
void storageFormat()
|
||||
{
|
||||
sdCheckAndCreateDirectory(RADIO_PATH);
|
||||
sdCheckAndCreateDirectory(MODELS_PATH);
|
||||
storageCreateModelsList();
|
||||
}
|
||||
|
||||
const char * createModel()
|
||||
{
|
||||
preModelLoad();
|
||||
|
||||
char filename[LEN_MODEL_FILENAME+1];
|
||||
memset(filename, 0, sizeof(filename));
|
||||
strcpy(filename, "model.bin");
|
||||
|
||||
unsigned int index = findNextFileIndex(filename, LEN_MODEL_FILENAME, MODELS_PATH);
|
||||
if (index > 0) {
|
||||
modelDefault(index);
|
||||
memcpy(g_eeGeneral.currModelFilename, filename, sizeof(g_eeGeneral.currModelFilename));
|
||||
storageDirty(EE_GENERAL);
|
||||
storageDirty(EE_MODEL);
|
||||
storageCheck(true);
|
||||
}
|
||||
postModelLoad(false);
|
||||
|
||||
return g_eeGeneral.currModelFilename;
|
||||
}
|
||||
|
||||
void storageEraseAll(bool warn)
|
||||
{
|
||||
TRACE("storageEraseAll");
|
||||
|
||||
#if defined(LIBOPENUI)
|
||||
// the theme has not been loaded before
|
||||
static_cast<ThemeBase*>(theme)->load();
|
||||
#endif
|
||||
|
||||
generalDefault();
|
||||
modelDefault(1);
|
||||
|
||||
if (warn) {
|
||||
ALERT(STR_STORAGE_WARNING, STR_BAD_RADIO_DATA, AU_BAD_RADIODATA);
|
||||
}
|
||||
|
||||
RAISE_ALERT(STR_STORAGE_WARNING, STR_STORAGE_FORMAT, NULL, AU_NONE);
|
||||
|
||||
storageFormat();
|
||||
storageDirty(EE_GENERAL|EE_MODEL);
|
||||
storageCheck(true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user