1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-21 15:25:17 +03:00
This commit is contained in:
bsongis 2015-02-14 18:26:08 +01:00
parent ae16191e76
commit 895bc26f77
6 changed files with 67 additions and 0 deletions

View file

@ -869,6 +869,8 @@ QString CustomFunctionData::funcToString()
return QObject::tr("Volume");
else if (func == FuncBacklight)
return QObject::tr("Backlight");
else if (func == FuncScreenshot)
return QObject::tr("Screenshot");
else if (func == FuncBackgroundMusic)
return QObject::tr("Background Music");
else if (func == FuncBackgroundMusicPause)

View file

@ -641,6 +641,7 @@ enum AssignFunc {
FuncLogs,
FuncVolume,
FuncBacklight,
FuncScreenshot,
FuncBackgroundMusic,
FuncBackgroundMusicPause,
FuncAdjustGV1,

View file

@ -1911,6 +1911,8 @@ class CustomFunctionsConversionTable: public ConversionTable {
if (board == BOARD_GRUVIN9X || IS_ARM(board) )
addConversion(FuncLogs, val++);
addConversion(FuncBacklight, val++);
if (IS_TARANIS(board))
addConversion(FuncScreenshot, val++);
}
else {
addConversion(FuncPlaySound, val++);

View file

@ -203,3 +203,54 @@ const pm_char * bmpLoad(uint8_t *bmp, const char *filename, const unsigned int w
f_close(&bmpFile);
return 0;
}
const uint8_t bmpHeader[] = {
0x42, 0x4d, 0xF8, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x28, 0x00,
0x00, 0x00, 212, 0x00, 0x00, 0x00, 64, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0xbc, 0x38, 0x00, 0x00, 0xbc, 0x38, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x00, 0x22, 0x22,
0x22, 0x00, 0x33, 0x33, 0x33, 0x00, 0x44, 0x44, 0x44, 0x00, 0x55, 0x55, 0x55, 0x00, 0x66, 0x66,
0x66, 0x00, 0x77, 0x77, 0x77, 0x00, 0x88, 0x88, 0x88, 0x00, 0x99, 0x99, 0x99, 0x00, 0xaa, 0xaa,
0xaa, 0x00, 0xbb, 0xbb, 0xbb, 0x00, 0xcc, 0xcc, 0xcc, 0x00, 0xdd, 0xdd, 0xdd, 0x00, 0xee, 0xee,
0xee, 0x00, 0xff, 0xff, 0xff, 0x00
};
inline display_t getPixel(int x, int y)
{
if (x>=LCD_W || y>=LCD_H)
return 0;
display_t * p = &displayBuf[y / 2 * LCD_W + x];
return (y & 1) ? (*p >> 4) : (*p & 0x0F);
}
const char *writeScreenshot(const char *filename)
{
FIL bmpFile;
UINT written;
FRESULT result = f_open(&bmpFile, filename, FA_CREATE_ALWAYS | FA_WRITE);
if (result != FR_OK) {
return SDCARD_ERROR(result);
}
result = f_write(&bmpFile, bmpHeader, sizeof(bmpHeader), &written);
if (result != FR_OK || written != sizeof(bmpHeader)) {
f_close(&bmpFile);
return SDCARD_ERROR(result);
}
for (int y=LCD_H-1; y>=0; y-=1) {
for (int x=0; x<8*((LCD_W+7)/8); x+=2) {
uint8_t byte = getPixel(x+1, y) + (getPixel(x, y) << 4);
f_write(&bmpFile, &byte, 1, &written);
if (result != FR_OK || written != 1) {
f_close(&bmpFile);
return SDCARD_ERROR(result);
}
}
}
f_close(&bmpFile);
return NULL;
}

View file

@ -543,6 +543,14 @@ void evalFunctions()
newActiveFunctions |= (1 << FUNCTION_BACKLIGHT);
break;
#if defined(PCBTARANIS)
case FUNC_SCREENSHOT:
if (!(functionsContext.activeSwitches & switch_mask)) {
writeScreenshot("screenshot.bmp");
}
break;
#endif
#if defined(DEBUG)
case FUNC_TEST:
testFunc();

View file

@ -488,6 +488,9 @@ enum Functions {
FUNC_LOGS,
#endif
FUNC_BACKLIGHT,
#if defined(PCBTARANIS)
FUNC_SCREENSHOT,
#endif
#if defined(DEBUG)
FUNC_TEST, // should remain the last before MAX as not added in companion9x
#endif