From 23c4712bbff5a6ff2b90cafbde09f314f170da4a Mon Sep 17 00:00:00 2001 From: bsongis Date: Sun, 15 Feb 2015 13:39:35 +0100 Subject: [PATCH] Date+Time append to screenshots filenames --- radio/src/bmp.cpp | 20 ++++++++++++++++++-- radio/src/functions.cpp | 2 +- radio/src/gui/Taranis/lcd.h | 2 +- radio/src/logs.cpp | 4 ++-- radio/src/sdcard.h | 9 +++++---- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/radio/src/bmp.cpp b/radio/src/bmp.cpp index 8d4518a7d..b72181c4e 100644 --- a/radio/src/bmp.cpp +++ b/radio/src/bmp.cpp @@ -223,12 +223,28 @@ inline display_t getPixel(unsigned int x, unsigned int y) return (y & 1) ? (*p >> 4) : (*p & 0x0F); } -const char *writeScreenshot(const char *filename) +const char *writeScreenshot() { FIL bmpFile; UINT written; + char filename[48]; // /SCREENSHOTS/screenshot-2013-01-01-12-35-40.bmp + DIR folder; - FRESULT result = f_open(&bmpFile, filename, FA_CREATE_ALWAYS | FA_WRITE); + // check and create folder here + strcpy_P(filename, SCREENSHOTS_PATH); + FRESULT result = f_opendir(&folder, filename); + if (result != FR_OK) { + if (result == FR_NO_PATH) + result = f_mkdir(filename); + if (result != FR_OK) + return SDCARD_ERROR(result); + } + + char *tmp = strAppend(&filename[sizeof(SCREENSHOTS_PATH)-1], "/screenshot"); + tmp = strAppendDate(tmp, true); + strcpy(tmp, BITMAPS_EXT); + + result = f_open(&bmpFile, filename, FA_CREATE_ALWAYS | FA_WRITE); if (result != FR_OK) { return SDCARD_ERROR(result); } diff --git a/radio/src/functions.cpp b/radio/src/functions.cpp index 05462e430..5ec076707 100644 --- a/radio/src/functions.cpp +++ b/radio/src/functions.cpp @@ -546,7 +546,7 @@ void evalFunctions() #if defined(PCBTARANIS) case FUNC_SCREENSHOT: if (!(functionsContext.activeSwitches & switch_mask)) { - writeScreenshot("screenshot.bmp"); + writeScreenshot(); } break; #endif diff --git a/radio/src/gui/Taranis/lcd.h b/radio/src/gui/Taranis/lcd.h index c467a33c1..a04e2dd82 100755 --- a/radio/src/gui/Taranis/lcd.h +++ b/radio/src/gui/Taranis/lcd.h @@ -239,7 +239,7 @@ void lcdOff(); #endif const char *bmpLoad(uint8_t *dest, const char *filename, const unsigned int width, const unsigned int height); -const char *writeScreenshot(const char *filename); +const char *writeScreenshot(); #if defined(BOOT) #define BLINK_ON_PHASE (0) diff --git a/radio/src/logs.cpp b/radio/src/logs.cpp index 9df6fac72..fd9a10220 100644 --- a/radio/src/logs.cpp +++ b/radio/src/logs.cpp @@ -49,7 +49,7 @@ uint8_t logDelay; #define get3PosState(sw) (switchState(SW_ ## sw ## 0) ? -1 : (switchState(SW_ ## sw ## 2) ? 1 : 0)) -const pm_char * openLogs() +const pm_char *openLogs() { // Determine and set log file filename FRESULT result; @@ -59,8 +59,8 @@ const pm_char * openLogs() if (!sdMounted()) return STR_NO_SDCARD; + // check and create folder here strcpy_P(filename, STR_LOGS_PATH); - result = f_opendir(&folder, filename); if (result != FR_OK) { if (result == FR_NO_PATH) diff --git a/radio/src/sdcard.h b/radio/src/sdcard.h index efe91da54..5363507ce 100644 --- a/radio/src/sdcard.h +++ b/radio/src/sdcard.h @@ -40,11 +40,12 @@ #include "FatFs/ff.h" #define ROOT_PATH "/" -#define MODELS_PATH ROOT_PATH "MODELS" -#define LOGS_PATH ROOT_PATH "LOGS" // no trailing slash = important -#define SOUNDS_PATH ROOT_PATH "SOUNDS/en" // no trailing slash = important +#define MODELS_PATH ROOT_PATH "MODELS" // no trailing slash = important +#define LOGS_PATH ROOT_PATH "LOGS" +#define SCREENSHOTS_PATH ROOT_PATH "SCREENSHOTS" +#define SOUNDS_PATH ROOT_PATH "SOUNDS/en" #define SOUNDS_PATH_LNG_OFS (sizeof(SOUNDS_PATH)-3) -#define SYSTEM_SUBDIR "SYSTEM" // no trailing slash = important +#define SYSTEM_SUBDIR "SYSTEM" #define BITMAPS_PATH ROOT_PATH "BMP" #define FIRMWARES_PATH ROOT_PATH "FIRMWARES" #define EEPROMS_PATH ROOT_PATH "EEPROMS"