mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 00:35:18 +03:00
Protection against too many read / write errors on SD
This commit is contained in:
parent
d08c172860
commit
67b774cc47
1 changed files with 20 additions and 3 deletions
|
@ -76,6 +76,7 @@
|
||||||
#define SD_ST_STBY 6
|
#define SD_ST_STBY 6
|
||||||
#define SD_ST_TRAN 7
|
#define SD_ST_TRAN 7
|
||||||
#define SD_ST_DATA 8
|
#define SD_ST_DATA 8
|
||||||
|
#define SD_ST_ERR 9
|
||||||
|
|
||||||
uint32_t Card_ID[4] ;
|
uint32_t Card_ID[4] ;
|
||||||
uint32_t Card_SCR[2] ;
|
uint32_t Card_SCR[2] ;
|
||||||
|
@ -806,13 +807,14 @@ void sdInit()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t sdErrorCount = 0;
|
||||||
extern FATFS g_FATFS_Obj;
|
extern FATFS g_FATFS_Obj;
|
||||||
void sdPoll10mS()
|
void sdPoll10mS()
|
||||||
{
|
{
|
||||||
if (!CardIsConnected()) {
|
if (!CardIsConnected()) {
|
||||||
Card_state = SD_ST_EMPTY;
|
Card_state = SD_ST_EMPTY;
|
||||||
Sd_rca = 0;
|
Sd_rca = 0;
|
||||||
|
sdErrorCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (Card_state) {
|
switch (Card_state) {
|
||||||
|
@ -859,6 +861,9 @@ void sdPoll10mS()
|
||||||
f_mount(0, &g_FATFS_Obj);
|
f_mount(0, &g_FATFS_Obj);
|
||||||
retrieveAvailableAudioFiles();
|
retrieveAvailableAudioFiles();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SD_ST_ERR:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1116,7 +1121,13 @@ DRESULT disk_read (
|
||||||
}
|
}
|
||||||
} while ( count ) ;
|
} while ( count ) ;
|
||||||
|
|
||||||
return count ? RES_ERROR : RES_OK;
|
if (!count)
|
||||||
|
return RES_OK;
|
||||||
|
|
||||||
|
if (++sdErrorCount > 3)
|
||||||
|
Card_state = SD_ST_ERR;
|
||||||
|
|
||||||
|
return RES_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1152,7 +1163,13 @@ DRESULT disk_write (
|
||||||
}
|
}
|
||||||
} while ( count ) ;
|
} while ( count ) ;
|
||||||
|
|
||||||
return count ? RES_ERROR : RES_OK;
|
if (!count)
|
||||||
|
return RES_OK;
|
||||||
|
|
||||||
|
if (++sdErrorCount > 3)
|
||||||
|
Card_state = SD_ST_ERR;
|
||||||
|
|
||||||
|
return RES_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue