From dc89d2d630c73021353c2bf7be4ff2a7ce738881 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Tue, 21 Mar 2017 19:47:41 +0100 Subject: [PATCH] Projectkk2glider/performance tests (#4658) * Transparency and fonts gtests added (Horus) * Added to CLI: Graphics performance test, memory speed test (Horus) * Gtests fixes --- radio/src/cli.cpp | 300 ++++++++++++++++++++++- radio/src/tasks_arm.cpp | 11 +- radio/src/tests/fonts_480x272.png | Bin 0 -> 10423 bytes radio/src/tests/lcd_480x272.cpp | 59 ++++- radio/src/tests/transparency_480x272.png | Bin 0 -> 6126 bytes 5 files changed, 366 insertions(+), 4 deletions(-) create mode 100644 radio/src/tests/fonts_480x272.png create mode 100644 radio/src/tests/transparency_480x272.png diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index 63dec054b..fd31784ac 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -346,6 +346,296 @@ int cliTestNew() return 0; } +#if defined(COLORLCD) + +extern bool perMainEnabled; +typedef void (*graphichTestFunc)(void); + +void testDrawSolidFilledRectangle() +{ + lcdDrawFilledRect(0, 0, LCD_W, LCD_H, SOLID, TEXT_BGCOLOR); +} + +void testDrawFilledRectangle() +{ + lcdDrawFilledRect(0, 0, LCD_W, LCD_H, DOTTED, TEXT_BGCOLOR); +} + +void testDrawSolidFilledRoundedRectangle() +{ + lcdDrawFilledRect(0, 0, LCD_W/2, LCD_H/2, SOLID, ROUND|TEXT_BGCOLOR); +} + +void testDrawBlackOverlay() +{ + lcdDrawBlackOverlay(); +} + +void testDrawSolidHorizontalLine1() +{ + lcdDrawSolidHorizontalLine(0, 0, 1, 0); +} + +void testDrawSolidHorizontalLine2() +{ + lcdDrawSolidHorizontalLine(0, 0, LCD_W, 0); +} + +void testDrawSolidVerticalLine1() +{ + lcdDrawSolidVerticalLine(0, 0, 1, 0); +} + +void testDrawSolidVerticalLine2() +{ + lcdDrawSolidVerticalLine(0, 0, LCD_H, 0); +} + +void testDrawDiagonalLine() +{ + lcdDrawLine(0,0, LCD_W, LCD_H, SOLID, TEXT_COLOR); +} + +void testEmpty() +{ +} + +void testDrawRect() +{ + lcdDrawRect(0, 0, LCD_W, LCD_H, 2, SOLID, TEXT_COLOR); +} + +void testDrawText() +{ + lcdDrawText(0, LCD_H/2, "The quick brown fox jumps over the lazy dog", TEXT_COLOR); +} + +void testDrawTextVertical() +{ + lcdDrawText(30, LCD_H, "The quick brown fox ", TEXT_COLOR|VERTICAL|NO_FONTCACHE); +} + +void testClear() +{ + lcdClear(); +} + +#define GRAPHICS_TEST_RUN_STEP 100 +#define RUN_GRAPHICS_TEST(name, runtime) runGraphicsTest(name, #name, runtime) + +float runGraphicsTest(graphichTestFunc func, const char * name, uint32_t runtime) +{ + uint32_t start = (uint32_t)CoGetOSTime(); + uint32_t noRuns = 0; + while (((uint32_t)CoGetOSTime() - start) < runtime/2 ) { + for (int n=0; n " }, { "stackinfo", cliStackInfo, "" }, { "meminfo", cliMemoryInfo, "" }, - { "test", cliTest, "new | std::exception" }, + { "test", cliTest, "new | std::exception | graphics | memspd" }, { "trace", cliTrace, "on | off" }, #if defined(PCBFLAMENCO) { "read_bq24195", cliReadBQ24195, "" }, diff --git a/radio/src/tasks_arm.cpp b/radio/src/tasks_arm.cpp index 264d88db2..2617a5153 100644 --- a/radio/src/tasks_arm.cpp +++ b/radio/src/tasks_arm.cpp @@ -206,6 +206,10 @@ void scheduleNextMixerCalculation(uint8_t module, uint16_t delay) #define MENU_TASK_PERIOD_TICKS 25 // 50ms +#if defined(COLORLCD) && defined(CLI) +bool perMainEnabled = true; +#endif + void menusTask(void * pdata) { opentxInit(); @@ -225,8 +229,13 @@ void menusTask(void * pdata) #endif uint32_t start = (uint32_t)CoGetOSTime(); DEBUG_TIMER_START(debugTimerPerMain); - DEBUG_TIMER_SAMPLE(debugTimerPerMainPeriod); +#if defined(COLORLCD) && defined(CLI) + if (perMainEnabled) { + perMain(); + } +#else perMain(); +#endif DEBUG_TIMER_STOP(debugTimerPerMain); // TODO remove completely massstorage from sky9x firmware uint32_t runtime = ((uint32_t)CoGetOSTime() - start); diff --git a/radio/src/tests/fonts_480x272.png b/radio/src/tests/fonts_480x272.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd77c3949f74f81e35f7aea039baf1e749d1605 GIT binary patch literal 10423 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 - lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", CURVE_AXIS_COLOR); - lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", TEXT_COLOR); + lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", CURVE_AXIS_COLOR|NO_FONTCACHE); + lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", TEXT_COLOR|NO_FONTCACHE); lcdDrawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR); lcdDrawFilledRect(50, 30, 30, 30, DOTTED, TEXT_COLOR); @@ -116,4 +116,59 @@ TEST(Lcd_480x272, primitives) EXPECT_TRUE(checkScreenshot_480x272("primitives")); } +TEST(Lcd_480x272, transparency) +{ + lcd->clear(TEXT_BGCOLOR); + lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", TEXT_COLOR|OPACITY(4)|NO_FONTCACHE); + lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", TEXT_COLOR|OPACITY(12)|NO_FONTCACHE); + + lcdDrawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR|OPACITY(8)); + lcdDrawFilledRect(50, 30, 30, 30, DOTTED, TEXT_COLOR|OPACITY(10)); + lcdDrawFilledRect(90, 30, 30, 30, SOLID, ROUND|TITLE_BGCOLOR|OPACITY(12)); + lcdDrawRect(130, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR|OPACITY(8)); + lcdDrawRect(170, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR|OPACITY(8)); + lcdDrawRect(210, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR|OPACITY(8)); + + lcdDrawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR|OPACITY(2)); + lcdDrawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR|OPACITY(6)); + lcdDrawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR|OPACITY(10)); + lcdDrawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR|OPACITY(OPACITY_MAX)); + + lcdDrawHorizontalLine(30, 70, 100, SOLID, TEXT_COLOR|OPACITY(2)); + lcdDrawHorizontalLine(30, 75, 90, SOLID, TEXT_COLOR|OPACITY(6)); + lcdDrawHorizontalLine(30, 80, 80, SOLID, TEXT_COLOR|OPACITY(10)); + lcdDrawHorizontalLine(30, 85, 70, SOLID, TEXT_COLOR|OPACITY(OPACITY_MAX)); + + + for(int n=0; n<10; n++) { + int x = 120 + n * 20; + int y = 80 + n * 10; + int color = COLOR(n/2 + 5); + int size = 100; + lcdDrawFilledRect(x, y, size, size, SOLID, color|OPACITY(8)); + + } + + EXPECT_TRUE(checkScreenshot_480x272("transparency")); +} + +TEST(Lcd_480x272, fonts) +{ + loadFontCache(); + lcd->clear(TEXT_BGCOLOR); + + lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", TEXT_COLOR|OPACITY(4)); + lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", TEXT_COLOR|OPACITY(12)); + + lcdDrawText(10, 200, "The quick", TEXT_COLOR|VERTICAL|NO_FONTCACHE); + lcdDrawText(30, 200, "The quick brown fox", TEXT_COLOR|VERTICAL|NO_FONTCACHE); + // lcdDrawText(50, 200, "The quick brown fox jumps over the lazy dog", TEXT_COLOR|VERTICAL|NO_FONTCACHE); + + lcdDrawText(8, 208, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(4)); + lcdDrawText(5, 205, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(12)); + + EXPECT_TRUE(checkScreenshot_480x272("fonts")); +} + + #endif \ No newline at end of file diff --git a/radio/src/tests/transparency_480x272.png b/radio/src/tests/transparency_480x272.png new file mode 100644 index 0000000000000000000000000000000000000000..18fa167cf1985e86aaae5abafe14faf71440516c GIT binary patch literal 6126 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