Merge branch '2.4' into 3djc/diag-touch

This commit is contained in:
3djc
2021-04-16 11:59:11 +02:00
28 changed files with 2042 additions and 190 deletions
+37
View File
@@ -0,0 +1,37 @@
name: OpenTX Commit Tests
on:
push:
branches: [ 2.4 ]
pull_request:
branches: [ 2.4 ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- COMPANION
- ARM9X
- X9LITE
- X7
- XLITE
- X9
- COLORLCD
container:
image: ghcr.io/raphaelcoeffic/opentx-commit-tests
volumes:
- ${{ github.workspace }}:/src
steps:
-
name: Check out the repo
uses: actions/checkout@v2
with:
submodules: true
-
name: Test ${{ matrix.target }}
env:
FLAVOR: ${{ matrix.target }}
run: |
echo "Running commit tests"
./tools/commit-tests.sh
+1 -1
View File
@@ -47,7 +47,7 @@ before_install:
- sudo ln -sf /usr/bin/python3 /usr/bin/python
- python3 -m pip install pip==20.3.3
- sudo apt-get install python3-setuptools
- python3 -m pip install pillow clang
- python3 -m pip install pillow==7.2.0 clang
script:
- ./tools/commit-tests.sh
+12
View File
@@ -2225,3 +2225,15 @@ Radomir Sterba
Ignacio Barrio
Bradley Murchie
Emmanuel Balintec
Rowell Torres
Christopher Kokis
Ken Bryan
Eric Yoder
Olav Roth
Rowell Torres
Christopher Kokis
Ken Bryan
Glenn Noonan
Michael Jakob
Dean Berg
David Hankins
+23
View File
@@ -0,0 +1,23 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#pragma once
void loadFonts();
+1 -1
View File
@@ -49,7 +49,7 @@ class MainViewSlider : public Window
void checkEvents() override
{
Window::checkEvents();
int8_t newValue = getValue();
int16_t newValue = getValue();
if (value != newValue) {
value = newValue;
invalidate();
+6
View File
@@ -485,8 +485,10 @@ const char * FrskyDeviceFirmwareUpdate::flashFirmware(const char * filename, Pro
INTERNAL_MODULE_OFF();
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
uint8_t extPwr = IS_EXTERNAL_MODULE_ON();
EXTERNAL_MODULE_OFF();
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
uint8_t spuPwr = IS_SPORT_UPDATE_POWER_ON();
@@ -529,10 +531,12 @@ const char * FrskyDeviceFirmwareUpdate::flashFirmware(const char * filename, Pro
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
if (extPwr) {
EXTERNAL_MODULE_ON();
setupPulsesExternalModule();
}
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
if (spuPwr) {
@@ -797,10 +801,12 @@ const char * FrskyChipFirmwareUpdate::flashFirmware(const char * filename, Progr
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
if (extPwr) {
EXTERNAL_MODULE_ON();
setupPulsesExternalModule();
}
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
if (spuPwr) {
+6
View File
@@ -128,7 +128,9 @@ class MultiExternalUpdateDriver: public MultiFirmwareUpdateDriver
void sendByte(uint8_t byte) const override
{
#if defined(HARDWARE_EXTERNAL_MODULE)
extmoduleSendInvertedByte(byte);
#endif
}
void clear() const override
@@ -595,8 +597,10 @@ bool MultiDeviceFirmwareUpdate::flashFirmware(const char * filename, ProgressHan
INTERNAL_MODULE_OFF();
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
uint8_t extPwr = IS_EXTERNAL_MODULE_ON();
EXTERNAL_MODULE_OFF();
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
uint8_t spuPwr = IS_SPORT_UPDATE_POWER_ON();
@@ -642,10 +646,12 @@ bool MultiDeviceFirmwareUpdate::flashFirmware(const char * filename, ProgressHan
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
if (extPwr) {
EXTERNAL_MODULE_ON();
setupPulsesExternalModule();
}
#endif
#if defined(SPORT_UPDATE_PWR_GPIO)
if (spuPwr) {
+4
View File
@@ -218,6 +218,7 @@ uint8_t getRequiredProtocol(uint8_t module)
return protocol;
}
#if defined(HARDWARE_EXTERNAL_MODULE)
void enablePulsesExternalModule(uint8_t protocol)
{
// start new protocol hardware here
@@ -444,6 +445,7 @@ bool setupPulsesExternalModule(uint8_t protocol)
return false;
}
}
#endif
#if defined(HARDWARE_INTERNAL_MODULE)
static void enablePulsesInternalModule(uint8_t protocol)
@@ -601,6 +603,7 @@ bool setupPulsesInternalModule()
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
void stopPulsesExternalModule()
{
if (moduleState[EXTERNAL_MODULE].protocol != PROTOCOL_CHANNELS_UNINITIALIZED) {
@@ -625,6 +628,7 @@ bool setupPulsesExternalModule()
return setupPulsesExternalModule(protocol);
}
}
#endif
void setCustomFailsafe(uint8_t moduleIndex)
{
@@ -169,7 +169,7 @@ void intmoduleSendBuffer(const uint8_t * data, uint8_t size)
void intmoduleSendNextFrame()
{
switch(moduleState[INTERNAL_MODULE].protocol) {
switch (moduleState[INTERNAL_MODULE].protocol) {
#if defined(PXX2)
case PROTOCOL_CHANNELS_PXX2_HIGHSPEED:
intmoduleSendBuffer(intmodulePulsesData.pxx2.getData(), intmodulePulsesData.pxx2.getSize());
+4 -1
View File
@@ -463,7 +463,6 @@ set(TARGET_SRC
${TARGET_SRC}
${LED_DRIVER}
backlight_driver.cpp
extmodule_driver.cpp
trainer_driver.cpp
../common/arm/stm32/timers_driver.cpp
../common/arm/stm32/audio_dac_driver.cpp
@@ -523,6 +522,10 @@ if(INTERNAL_MODULE_PPM)
endif()
if(EXTERNAL_MODULE)
set(TARGET_SRC
${TARGET_SRC}
extmodule_driver.cpp
)
add_definitions(-DHARDWARE_EXTERNAL_MODULE)
endif()
+2
View File
@@ -102,10 +102,12 @@ void sendSynchronousPulses(uint8_t runMask)
}
#endif
#if defined(HARDWARE_EXTERNAL_MODULE)
if ((runMask & (1 << EXTERNAL_MODULE)) && isModuleSynchronous(EXTERNAL_MODULE)) {
if (setupPulsesExternalModule())
extmoduleSendNextFrame();
}
#endif
}
uint32_t nextMixerTime[NUM_MODULES];
+2 -2
View File
@@ -9,8 +9,8 @@ if(GTEST_INCDIR AND GTEST_SRCDIR AND Qt5Widgets_FOUND)
set(TESTS_BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR})
configure_file(${RADIO_SRC_DIR}/tests/location.h.in ${CMAKE_CURRENT_BINARY_DIR}/location.h @ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_DEBUG} -O0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${WARNING_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_DEBUG} -O0 -fsanitize=address")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_DEBUG} -O0 ${WARNING_FLAGS} -fsanitize=address")
use_cxx11() # ensure gnu++11 in CXX_FLAGS with CMake < 3.1
if(PCB STREQUAL X12S OR PCB STREQUAL X10)
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

+252
View File
@@ -0,0 +1,252 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <math.h>
#include <gtest/gtest.h>
#define SWAP_DEFINED
#include "opentx.h"
#include "location.h"
#if defined(COLORLCD)
#include "gui/colorlcd/fonts.h"
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb_image_write.h"
void convert_RGB565_to_RGB888(uint8_t * dst, const uint16_t * src, unsigned pixels)
{
while(pixels--) {
RGB_SPLIT(*src, r, g, b); src++;
*(dst++) = (uint8_t)(r << 3);
*(dst++) = (uint8_t)(g << 2);
*(dst++) = (uint8_t)(b << 3);
}
}
void dumpImage(const std::string& filename, const BitmapBuffer* dc)
{
std::string fullpath = TESTS_PATH "/failed_" + filename;
TRACE("dumping image '%s'", fullpath.c_str());
// allocate enough for 3 channels
auto pixels = dc->width() * dc->height();
auto stride = dc->width() * 3;
uint8_t * img = (uint8_t *)malloc(pixels * 3);
convert_RGB565_to_RGB888(img, dc->getPixelPtr(0,0), pixels);
stbi_write_png(fullpath.c_str(), dc->width(), dc->height(), 3, img, stride);
free(img);
}
bool checkScreenshot_colorlcd(const BitmapBuffer* dc, const char* test)
{
if (dc->width() != LCD_W || dc->height() != LCD_H) {
return false;
}
std::string filename = std::string(test);
filename += '_' + std::to_string(LCD_W);
filename += 'x' + std::to_string(LCD_H);
filename += ".png";
std::string fullpath = TESTS_PATH "/" + filename;
std::unique_ptr<BitmapBuffer> testPict(BitmapBuffer::loadBitmap(fullpath.c_str()));
if (!testPict || testPict->width() != LCD_W || testPict->height() != LCD_H) {
dumpImage(filename, dc);
return false;
}
auto testPtr = testPict->getPixelPtr(0,0);
auto dcPtr = dc->getPixelPtr(0,0);
for (int i=0; i<LCD_W*LCD_H; i++) {
if (testPtr[i] != dcPtr[i]) {
dumpImage(filename, dc);
return false;
}
}
return true;
}
TEST(Lcd_colorlcd, vline)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
for (int x=0; x<100; x+=2) {
dc.drawSolidVerticalLine(x, x/2, 12, DEFAULT_COLOR);
}
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "vline"));
}
TEST(Lcd_colorlcd, primitives)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DISABLE_COLOR);
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR);
dc.drawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR);
dc.drawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR);
dc.drawRect(90, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR);
dc.drawRect(130, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR);
dc.drawRect(170, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR);
dc.drawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR);
dc.drawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR);
dc.drawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR);
dc.drawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR);
dc.drawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR);
dc.drawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR);
dc.drawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR);
dc.drawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR);
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "primitives_" TRANSLATIONS));
}
TEST(Lcd_colorlcd, transparency)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
dc.drawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR|OPACITY(8));
dc.drawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR|OPACITY(10));
dc.drawRect(90, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR|OPACITY(8));
dc.drawRect(130, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR|OPACITY(8));
dc.drawRect(170, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR|OPACITY(8));
dc.drawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR|OPACITY(2));
dc.drawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR|OPACITY(6));
dc.drawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR|OPACITY(10));
dc.drawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR|OPACITY(OPACITY_MAX));
dc.drawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR|OPACITY(2));
dc.drawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR|OPACITY(6));
dc.drawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR|OPACITY(10));
dc.drawHorizontalLine(30, 85, 70, SOLID, DEFAULT_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;
dc.drawFilledRect(x, y, size, size, SOLID, color|OPACITY(8));
}
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "transparency_" TRANSLATIONS));
}
//
// Fonts test are disabled, as they cause
// too much trouble (font are generated and never
// really the same based on which software / radio
// combination.
//
#if 0
TEST(Lcd_colorlcd, fonts)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.drawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
dc.drawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
dc.drawText(10, 200, "The quick", DEFAULT_COLOR|VERTICAL);
dc.drawText(30, 200, "The quick brown fox", DEFAULT_COLOR|VERTICAL);
dc.drawText(50, 25, "The quick", DEFAULT_COLOR | FONT(XXS));
dc.drawText(50, 40, "The quick", DEFAULT_COLOR | FONT(XS));
dc.drawText(50, 55, "The quick", DEFAULT_COLOR | FONT(L));
dc.drawText(50, 80, "The quick", DEFAULT_COLOR | FONT(XL));
dc.drawText(50, 120, "The quick", DEFAULT_COLOR | FONT(XXL));
dc.drawText(8, 208, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(4));
dc.drawText(5, 205, "The quick brown fox jumps over the lazy dog", TITLE_BGCOLOR|OPACITY(12));
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "fonts_" TRANSLATIONS));
}
#endif
TEST(Lcd_colorlcd, clipping)
{
loadFonts();
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.drawSolidVerticalLine(100, 0, LCD_H, DEFAULT_COLOR);
dc.drawSolidVerticalLine(400, 0, LCD_H, DEFAULT_COLOR);
dc.drawSolidHorizontalLine(0, 50, LCD_W, DEFAULT_COLOR);
dc.drawSolidHorizontalLine(0, 200, LCD_W, DEFAULT_COLOR);
dc.setClippingRect(100, 400, 50, 200);
dc.drawSolidHorizontalLine(0, 80, LCD_W, TITLE_BGCOLOR);
dc.drawHorizontalLine( 0, 81, LCD_W, SOLID, TITLE_BGCOLOR);
dc.drawSolidVerticalLine(150, 0, LCD_H, TITLE_BGCOLOR);
dc.drawVerticalLine( 151, 0, LCD_H, SOLID, TITLE_BGCOLOR);
dc.drawSolidRect(70, 20, 50, 50, 2, TITLE_BGCOLOR);
dc.drawRect( 380, 20, 50, 50, 2, SOLID, TITLE_BGCOLOR);
dc.clearClippingRect();
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "clipping"));
}
TEST(Lcd_colorlcd, bitmap)
{
BitmapBuffer dc(BMP_RGB565, LCD_W, LCD_H);
dc.clear(DEFAULT_BGCOLOR);
dc.setClippingRect(100, 400, 50, 200);
std::unique_ptr<BitmapBuffer> bmp(BitmapBuffer::loadBitmap(TESTS_PATH "/opentx.png"));
dc.drawBitmap( 0, 0, bmp.get());
dc.drawBitmap(320, 0, bmp.get());
dc.drawBitmap( 0, 150, bmp.get());
dc.clearClippingRect();
EXPECT_TRUE(checkScreenshot_colorlcd(&dc, "bitmap"));
}
#endif
-183
View File
@@ -1,183 +0,0 @@
/*
* Copyright (C) OpenTX
*
* Based on code named
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <QtCore/QDir>
#include <QtCore/QDebug>
#include <QApplication>
#include <QPainter>
#include <math.h>
#include <gtest/gtest.h>
#define SWAP_DEFINED
#include "opentx.h"
#include "location.h"
#include "targets/simu/simulcd.h"
#if defined(COLORLCD)
void doPaint_colorlcd(QPainter & p)
{
QRgb rgb = qRgb(0, 0, 0);
p.setBackground(QBrush(rgb));
p.eraseRect(0, 0, LCD_W, LCD_H);
uint16_t previousColor = 0xFF;
for (int y=0; y<LCD_H; y++) {
for (int x=0; x<LCD_W; x++) {
#if defined(LCD_VERTICAL_INVERT)
uint16_t color = simuLcdBuf[(LCD_W-1-x)+LCD_W*(LCD_H-1-y)]; // color in RGB565
#else
uint16_t color = simuLcdBuf[x+LCD_W*y]; // color in RGB565
#endif
if (color) {
if (color != previousColor) {
previousColor = color;
RGB_SPLIT(color, r, g, b);
rgb = qRgb(r<<3, g<<2, b<<3);
p.setPen(rgb);
p.setBrush(QBrush(rgb));
}
p.drawPoint(x, y);
}
}
}
}
bool checkScreenshot_colorlcd(const QString & test)
{
lcdRefresh();
QImage buffer(LCD_W, LCD_H, QImage::Format_RGB32);
QPainter p(&buffer);
doPaint_colorlcd(p);
QString filename(QString("%1_%2x%3.png").arg(test).arg(LCD_W).arg(LCD_H));
QImage reference(TESTS_PATH "/" + filename);
if (buffer == reference) {
return true;
}
else {
QString filename(QString("%1_%2x%3.png").arg(test).arg(LCD_W).arg(LCD_H));
buffer.save("/tmp/" + filename);
return false;
}
}
TEST(Lcd_colorlcd, vline)
{
loadFonts();
lcd->clear(DEFAULT_BGCOLOR);
for (int x=0; x<100; x+=2) {
lcdDrawSolidVerticalLine(x, x/2, 12, DEFAULT_COLOR);
}
EXPECT_TRUE(checkScreenshot_colorlcd("vline"));
}
TEST(Lcd_colorlcd, primitives)
{
loadFonts();
lcd->clear(DEFAULT_BGCOLOR);
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DISABLE_COLOR);
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR);
lcdDrawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR);
lcdDrawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_COLOR);
lcdDrawFilledRect(90, 30, 30, 30, SOLID, ROUND|TITLE_BGCOLOR);
lcdDrawRect(130, 30, 30, 30, 1, SOLID, TITLE_BGCOLOR);
lcdDrawRect(170, 30, 30, 30, 2, SOLID, TITLE_BGCOLOR);
lcdDrawRect(210, 30, 30, 30, 5, SOLID, TITLE_BGCOLOR);
lcdDrawVerticalLine(10, 70, 100, SOLID, TITLE_BGCOLOR);
lcdDrawVerticalLine(15, 70, 90, SOLID, TITLE_BGCOLOR);
lcdDrawVerticalLine(20, 70, 80, SOLID, TITLE_BGCOLOR);
lcdDrawVerticalLine(25, 70, 70, SOLID, TITLE_BGCOLOR);
lcdDrawHorizontalLine(30, 70, 100, SOLID, DEFAULT_COLOR);
lcdDrawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR);
lcdDrawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR);
lcdDrawHorizontalLine(30, 85, 70, SOLID, DEFAULT_COLOR);
EXPECT_TRUE(checkScreenshot_colorlcd("primitives"));
}
TEST(Lcd_colorlcd, transparency)
{
loadFonts();
lcd->clear(DEFAULT_BGCOLOR);
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
lcdDrawFilledRect(10, 30, 30, 30, SOLID, TITLE_BGCOLOR|OPACITY(8));
lcdDrawFilledRect(50, 30, 30, 30, DOTTED, DEFAULT_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, DEFAULT_COLOR|OPACITY(2));
lcdDrawHorizontalLine(30, 75, 90, SOLID, DEFAULT_COLOR|OPACITY(6));
lcdDrawHorizontalLine(30, 80, 80, SOLID, DEFAULT_COLOR|OPACITY(10));
lcdDrawHorizontalLine(30, 85, 70, SOLID, DEFAULT_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_colorlcd("transparency"));
}
TEST(Lcd_colorlcd, fonts)
{
loadFonts();
lcd->clear(DEFAULT_BGCOLOR);
lcdDrawText(8, 8, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(4));
lcdDrawText(5, 5, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|OPACITY(12));
lcdDrawText(10, 200, "The quick", DEFAULT_COLOR|VERTICAL);
lcdDrawText(30, 200, "The quick brown fox", DEFAULT_COLOR|VERTICAL);
// lcdDrawText(50, 200, "The quick brown fox jumps over the lazy dog", DEFAULT_COLOR|VERTICAL);
lcdDrawText(50, 25, "The quick", TEXT_COLOR|TINSIZE);
lcdDrawText(50, 40, "The quick", TEXT_COLOR|SMLSIZE);
lcdDrawText(50, 55, "The quick", TEXT_COLOR|MIDSIZE);
lcdDrawText(50, 80, "The quick", TEXT_COLOR|DBLSIZE);
lcdDrawText(50, 120, "The quick", TEXT_COLOR|XXLSIZE);
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_colorlcd("fonts"));
}
#endif
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

+1 -1
View File
@@ -160,7 +160,7 @@ fi
if [[ " T8 X7 ALL " =~ \ ${FLAVOR}\ ]] ; then
# OpenTX on T8
rm -rf ./*
cmake "${COMMON_OPTIONS}" -DPCB=X7 -DPCBREV=TX12 -DHELI=YES -DGVARS=YES "${SRCDIR}"
cmake "${COMMON_OPTIONS}" -DPCB=X7 -DPCBREV=T8 -DHELI=YES -DGVARS=YES "${SRCDIR}"
make -j"${CORES}" ${FIRMARE_TARGET}
make -j"${CORES}" libsimulator
make -j"${CORES}" tests-radio