1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 01:35:21 +03:00

SD File Manager

This commit is contained in:
bsongis 2012-06-24 08:17:42 +00:00
parent dcde118437
commit f6a8ff9f2a
2 changed files with 6 additions and 10 deletions

View file

@ -603,11 +603,7 @@ void menuProcSd(uint8_t event)
if (count < 7) { if (count < 7) {
reusableBuffer.sd.flags[count] = (fno.fattrib & AM_DIR); reusableBuffer.sd.flags[count] = (fno.fattrib & AM_DIR);
char * line = reusableBuffer.sd.lines[count]; strncpy(reusableBuffer.sd.lines[count], fn, SD_SCREEN_FILE_LENGTH);
memset(line, 0, SD_SCREEN_FILE_LENGTH);
for (uint8_t i=0; i<SD_SCREEN_FILE_LENGTH-1 && fn[i]; i++) {
line[i] = fn[i];
}
count++; count++;
} }
} }
@ -628,13 +624,14 @@ void menuProcSd(uint8_t event)
if (result) { if (result) {
uint8_t index = m_posVert-1-s_pgOfs; uint8_t index = m_posVert-1-s_pgOfs;
if (result == STR_DELETE_FILE) { if (result == STR_DELETE_FILE) {
f_getcwd(lfn, _MAX_LFN); f_getcwd(lfn, SD_SCREEN_FILE_LENGTH);
strcat_P(lfn, "/"); strcat_P(lfn, "/");
strcat_P(lfn, reusableBuffer.sd.lines[index]); strcat_P(lfn, reusableBuffer.sd.lines[index]);
f_unlink(lfn); f_unlink(lfn);
strcpy(statusLineMsg, reusableBuffer.sd.lines[index]); strncpy(statusLineMsg, reusableBuffer.sd.lines[index], 13);
strcpy_P(statusLineMsg+min((uint8_t)strlen(statusLineMsg), (uint8_t)13), PSTR(" removed")); strcpy_P(statusLineMsg+min((uint8_t)strlen(statusLineMsg), (uint8_t)13), PSTR(" removed"));
showStatusLine(); showStatusLine();
if (m_posVert == reusableBuffer.sd.count) m_posVert--;
reusableBuffer.sd.offset = s_pgOfs-1; reusableBuffer.sd.offset = s_pgOfs-1;
} }
} }

View file

@ -900,7 +900,7 @@ enum AUDIO_SOUNDS {
#endif #endif
// Re-useable byte array to save having multiple buffers // Re-useable byte array to save having multiple buffers
#define SD_SCREEN_FILE_LENGTH 20 #define SD_SCREEN_FILE_LENGTH (32)
union ReusableBuffer union ReusableBuffer
{ {
/* 128 bytes on stock */ /* 128 bytes on stock */
@ -927,10 +927,9 @@ union ReusableBuffer
#if defined(SDCARD) #if defined(SDCARD)
struct struct
{ {
char lines[7][SD_SCREEN_FILE_LENGTH]; char lines[7][SD_SCREEN_FILE_LENGTH+1];
uint8_t flags[7]; uint8_t flags[7];
uint32_t available; uint32_t available;
uint8_t level;
uint16_t offset; uint16_t offset;
uint16_t count; uint16_t count;
} sd; } sd;