mirror of
https://github.com/opentx/opentx.git
synced 2025-07-23 16:25:16 +03:00
[Horus] A few SD card / Models storage fixes
This commit is contained in:
parent
787d2ffa92
commit
bca9866675
5 changed files with 54 additions and 36 deletions
|
@ -126,3 +126,21 @@ void storageReadAll()
|
||||||
|
|
||||||
eeLoadModel(g_eeGeneral.currModel);
|
eeLoadModel(g_eeGeneral.currModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void storageEraseAll(bool warn)
|
||||||
|
{
|
||||||
|
TRACE("storageEraseAll()");
|
||||||
|
|
||||||
|
generalDefault();
|
||||||
|
modelDefault(0);
|
||||||
|
|
||||||
|
if (warn) {
|
||||||
|
ALERT(STR_STORAGE_WARNING, STR_BAD_RADIO_DATA, AU_BAD_RADIODATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
MESSAGE(STR_STORAGE_WARNING, STR_STORAGE_FORMAT, NULL, AU_STORAGE_FORMAT);
|
||||||
|
|
||||||
|
storageFormat();
|
||||||
|
storageDirty(EE_GENERAL|EE_MODEL);
|
||||||
|
storageCheck(true);
|
||||||
|
}
|
||||||
|
|
|
@ -36,6 +36,13 @@
|
||||||
|
|
||||||
#include "../opentx.h"
|
#include "../opentx.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)
|
const char * writeFile(const char * filename, const uint8_t * data, uint16_t size)
|
||||||
{
|
{
|
||||||
FIL file;
|
FIL file;
|
||||||
|
@ -71,9 +78,7 @@ const char * writeFile(const char * filename, const uint8_t * data, uint16_t siz
|
||||||
const char * writeModel()
|
const char * writeModel()
|
||||||
{
|
{
|
||||||
char path[256];
|
char path[256];
|
||||||
strcpy(path, STR_MODELS_PATH);
|
getModelPath(path, g_eeGeneral.currModelFilename);
|
||||||
path[sizeof(MODELS_PATH)-1] = '/';
|
|
||||||
strAppend(&path[sizeof(MODELS_PATH)], g_eeGeneral.currModelFilename, sizeof(g_eeGeneral.currModelFilename));
|
|
||||||
return writeFile(path, (uint8_t *)&g_model, sizeof(g_model));
|
return writeFile(path, (uint8_t *)&g_model, sizeof(g_model));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,13 +121,6 @@ const char * loadFile(const char * filename, uint8_t * data, uint16_t maxsize)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 * readModel(const char * filename, uint8_t * buffer, uint32_t size)
|
const char * readModel(const char * filename, uint8_t * buffer, uint32_t size)
|
||||||
{
|
{
|
||||||
char path[256];
|
char path[256];
|
||||||
|
@ -457,12 +455,11 @@ const char * createModel(int category)
|
||||||
|
|
||||||
char filename[LEN_MODEL_FILENAME+1];
|
char filename[LEN_MODEL_FILENAME+1];
|
||||||
memset(filename, 0, sizeof(filename));
|
memset(filename, 0, sizeof(filename));
|
||||||
strcpy(filename, "Model.bin");
|
strcpy(filename, "model.bin");
|
||||||
|
|
||||||
int index = findNextFileIndex(filename, MODELS_PATH);
|
int index = findNextFileIndex(filename, MODELS_PATH);
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
modelDefault(index);
|
modelDefault(index);
|
||||||
TRACE("filename=%s", filename);
|
|
||||||
memcpy(g_eeGeneral.currModelFilename, filename, sizeof(g_eeGeneral.currModelFilename));
|
memcpy(g_eeGeneral.currModelFilename, filename, sizeof(g_eeGeneral.currModelFilename));
|
||||||
storageDirty(EE_GENERAL);
|
storageDirty(EE_GENERAL);
|
||||||
storageDirty(EE_MODEL);
|
storageDirty(EE_MODEL);
|
||||||
|
@ -473,3 +470,21 @@ const char * createModel(int category)
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void storageEraseAll(bool warn)
|
||||||
|
{
|
||||||
|
TRACE("storageEraseAll()");
|
||||||
|
|
||||||
|
generalDefault();
|
||||||
|
modelDefault(1);
|
||||||
|
|
||||||
|
if (warn) {
|
||||||
|
ALERT(STR_STORAGE_WARNING, STR_BAD_RADIO_DATA, AU_BAD_RADIODATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
MESSAGE(STR_STORAGE_WARNING, STR_STORAGE_FORMAT, NULL, AU_STORAGE_FORMAT);
|
||||||
|
|
||||||
|
storageFormat();
|
||||||
|
storageDirty(EE_GENERAL|EE_MODEL);
|
||||||
|
storageCheck(true);
|
||||||
|
}
|
||||||
|
|
|
@ -109,20 +109,3 @@ void postModelLoad(bool newModel)
|
||||||
PLAY_MODEL_NAME();
|
PLAY_MODEL_NAME();
|
||||||
}
|
}
|
||||||
|
|
||||||
void storageEraseAll(bool warn)
|
|
||||||
{
|
|
||||||
TRACE("storageEraseAll()");
|
|
||||||
|
|
||||||
generalDefault();
|
|
||||||
modelDefault(0);
|
|
||||||
|
|
||||||
if (warn) {
|
|
||||||
ALERT(STR_STORAGE_WARNING, STR_BAD_RADIO_DATA, AU_BAD_RADIODATA);
|
|
||||||
}
|
|
||||||
|
|
||||||
MESSAGE(STR_STORAGE_WARNING, STR_STORAGE_FORMAT, NULL, AU_STORAGE_FORMAT);
|
|
||||||
|
|
||||||
storageFormat();
|
|
||||||
storageDirty(EE_GENERAL|EE_MODEL);
|
|
||||||
storageCheck(true);
|
|
||||||
}
|
|
||||||
|
|
|
@ -213,7 +213,7 @@ DRESULT disk_write (
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
Status = SD_WriteBlock((uint8_t *)buff, sector*BLOCK_SIZE, BLOCK_SIZE); // 4GB Compliant
|
Status = SD_WriteBlock((uint8_t *)buff, sector, BLOCK_SIZE); // 4GB Compliant
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Status = SD_WriteMultiBlocks((uint8_t *)buff, sector, BLOCK_SIZE, count); // 4GB Compliant
|
Status = SD_WriteMultiBlocks((uint8_t *)buff, sector, BLOCK_SIZE, count); // 4GB Compliant
|
||||||
|
|
|
@ -1624,10 +1624,11 @@ OPTIMIZE("O0") SD_Error SD_WriteBlock(uint8_t *writebuff, uint32_t WriteAddr, ui
|
||||||
SDIO_DMACmd(ENABLE);
|
SDIO_DMACmd(ENABLE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (CardType == SDIO_HIGH_CAPACITY_SD_CARD)
|
if (CardType == SDIO_HIGH_CAPACITY_SD_CARD) {
|
||||||
{
|
|
||||||
BlockSize = 512;
|
BlockSize = 512;
|
||||||
WriteAddr /= 512;
|
}
|
||||||
|
else {
|
||||||
|
WriteAddr *= 512;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set Block Size for Card */
|
/* Set Block Size for Card */
|
||||||
|
@ -1751,10 +1752,11 @@ OPTIMIZE("O0") SD_Error SD_WriteMultiBlocks(uint8_t *writebuff, uint32_t WriteAd
|
||||||
SD_LowLevel_DMA_TxConfig((uint32_t *)writebuff, (NumberOfBlocks * BlockSize));
|
SD_LowLevel_DMA_TxConfig((uint32_t *)writebuff, (NumberOfBlocks * BlockSize));
|
||||||
SDIO_DMACmd(ENABLE);
|
SDIO_DMACmd(ENABLE);
|
||||||
|
|
||||||
if (CardType == SDIO_HIGH_CAPACITY_SD_CARD)
|
if (CardType == SDIO_HIGH_CAPACITY_SD_CARD) {
|
||||||
{
|
|
||||||
BlockSize = 512;
|
BlockSize = 512;
|
||||||
WriteAddr /= 512;
|
}
|
||||||
|
else {
|
||||||
|
WriteAddr *= 512;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set Block Size for Card */
|
/* Set Block Size for Card */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue