From be6f1587ed7765bc6deb2611ddbf269f0b72cb2e Mon Sep 17 00:00:00 2001 From: bsongis Date: Sat, 5 Jul 2014 15:34:20 +0200 Subject: [PATCH] Display problems on Sky9x --- radio/src/lcd_default.cpp | 136 +++++++++--------- radio/src/lcd_taranis.cpp | 1 + radio/src/tests/gtests.cpp | 29 +++- radio/src/tests/invers_0_1_128x64.png | Bin 0 -> 352 bytes radio/src/tests/invers_0_1_212x64.png | Bin 0 -> 375 bytes .../src/tests/prec1_dblsize_invers_128x64.png | Bin 0 -> 365 bytes .../src/tests/prec1_dblsize_invers_212x64.png | Bin 0 -> 387 bytes radio/src/tests/smlsize_putsstridx_128x64.png | Bin 0 -> 320 bytes radio/src/tests/vline_128x64.png | Bin 0 -> 464 bytes radio/src/tests/vline_212x64.png | Bin 0 -> 503 bytes 10 files changed, 95 insertions(+), 71 deletions(-) create mode 100755 radio/src/tests/invers_0_1_128x64.png create mode 100755 radio/src/tests/invers_0_1_212x64.png create mode 100755 radio/src/tests/prec1_dblsize_invers_128x64.png create mode 100755 radio/src/tests/prec1_dblsize_invers_212x64.png create mode 100755 radio/src/tests/smlsize_putsstridx_128x64.png create mode 100755 radio/src/tests/vline_128x64.png create mode 100755 radio/src/tests/vline_212x64.png diff --git a/radio/src/lcd_default.cpp b/radio/src/lcd_default.cpp index d03eaaf33..d15e16681 100755 --- a/radio/src/lcd_default.cpp +++ b/radio/src/lcd_default.cpp @@ -59,83 +59,81 @@ void lcdPutPattern(xcoord_t x, uint8_t y, const uint8_t * pattern, uint8_t width inv = true; } - for (int8_t i=0; i0) { - b1 = b[j-1] >> (8-ym8); - } - else { - keep = ~(keepref << ym8); - } - if (j= 10) - b[j] &= 1 + (keepref << 1); - else - b[j] &= keepref; - } + const uint8_t ym8 = (y & 0x07); + const uint8_t keepref = (1 << ((height&0x07)+1)) - 1; + uint8_t * dest = p; + for (uint8_t j=0; j0) { + b1 = b[j-1] >> (8-ym8); } - b2 = b[j] << ym8; + else { + keep = ~(keepref << ym8); + } + if (j> (8-ym8)); + } + if (!blink) { + LCD_BYTE_FILTER(dest, keep, b1|b2); + } + dest += LCD_W; } - else { - keep = ~(keepref >> (8-ym8)); - } - if (!blink) { - LCD_BYTE_FILTER(dest, keep, b1|b2); - } - dest += LCD_W; } - } - if (inv && height<8) { - if (ym8) - lcd_mask(p, 0x01 << (ym8-1), FORCE); - else if (y) { - ASSERT_IN_DISPLAY(p - LCD_W); - lcd_mask(p - LCD_W, 0x80, FORCE); + if (inv && height<8) { + if (ym8) { + lcd_mask(p, 0x01 << (ym8-1), FORCE); + } + else if (y) { + ASSERT_IN_DISPLAY(p - LCD_W); + lcd_mask(p - LCD_W, 0x80, FORCE); + } } } @@ -393,7 +391,7 @@ void lcd_vlineStip(xcoord_t x, int8_t y, int8_t h, uint8_t pat, LcdFlags att) lcd_mask(p, msk & pat, att); p += LCD_W; } - while (h>0) { + while (h>=8) { ASSERT_IN_DISPLAY(p); lcd_mask(p, pat, att); p += LCD_W; diff --git a/radio/src/lcd_taranis.cpp b/radio/src/lcd_taranis.cpp index 7e4eaaae5..143109da6 100755 --- a/radio/src/lcd_taranis.cpp +++ b/radio/src/lcd_taranis.cpp @@ -65,6 +65,7 @@ void lcdPutPattern(xcoord_t x, uint8_t y, const uint8_t * pattern, uint8_t width continue; } else { + // we need to work on the previous x when INVERS x--; } } diff --git a/radio/src/tests/gtests.cpp b/radio/src/tests/gtests.cpp index d78fe3529..2371b9be9 100644 --- a/radio/src/tests/gtests.cpp +++ b/radio/src/tests/gtests.cpp @@ -151,6 +151,7 @@ TEST(outdezNAtt, test_unsigned) EXPECT_EQ(memcmp(refBuf, displayBuf, sizeof(displayBuf)), 0) << "Unsigned numbers will be bad displayed"; } +#if !defined(PCBSKY9X) TEST(EEPROM, 100_random_writes) { eepromFile = NULL; // in memory @@ -275,6 +276,7 @@ TEST(EEPROM, rm) } EXPECT_EQ(sz, 0); } +#endif #if defined(FRSKY) && !defined(FRSKY_SPORT) extern void frskyDProcessPacket(uint8_t *packet); @@ -393,7 +395,7 @@ TEST(getSwitch, nullSW) EXPECT_EQ(getSwitch(0), true); } -#if !defined(PCBTARANIS) +#if !defined(CPUARM) TEST(getSwitch, recursiveSW) { MODEL_RESET(); @@ -784,7 +786,7 @@ TEST(Mixer, SlowDisabledOnStartup) EXPECT_EQ(chans[0], CHANNEL_MAX); } -#if !defined(PCBTARANIS) +#if !defined(CPUARM) TEST(Mixer, SlowAndDelayOnReplace3POSSource) { MODEL_RESET(); @@ -1048,6 +1050,13 @@ TEST(Lcd, Invers_0_0) EXPECT_TRUE(checkScreenshot("invers_0_0")); } +TEST(Lcd, Invers_0_1) +{ + lcd_clear(); + lcd_putsAtt(0, 1, "Test", INVERS); + EXPECT_TRUE(checkScreenshot("invers_0_1")); +} + TEST(Lcd, Prec2_Left) { lcd_clear(); @@ -1062,6 +1071,13 @@ TEST(Lcd, Prec2_Right) EXPECT_TRUE(checkScreenshot("prec2_right")); } +TEST(Lcd, Prec1_Dblsize_Invers) +{ + lcd_clear(); + lcd_outdezAtt(LCD_W, 10, 51, PREC1|DBLSIZE|INVERS); + EXPECT_TRUE(checkScreenshot("prec1_dblsize_invers")); +} + TEST(Lcd, Line_Wrap) { lcd_clear(); @@ -1078,6 +1094,15 @@ TEST(Lcd, Smlsize_putsStrIdx) } #endif +TEST(Lcd, vline) +{ + lcd_clear(); + for (int x=0; x<100; x+=2) { + lcd_vline(x, x/2, 12); + } + EXPECT_TRUE(checkScreenshot("vline")); +} + int main(int argc, char **argv) { QCoreApplication app(argc, argv); diff --git a/radio/src/tests/invers_0_1_128x64.png b/radio/src/tests/invers_0_1_128x64.png new file mode 100755 index 0000000000000000000000000000000000000000..c831a5236086f21b074abdc0f963eedc44128622 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qq09po*^6@9Je3(KLBz$3p^r= z85p=bL736}!zjmFJc)Tv!_Ee3;olQFW|B8D){yO?6Ev`Ld*3_RxrMJbRryf4_D|p-aSe6_8 zrM7nbzltWB|JleK_Ik(m$My9q)OYd~%=?t+|Hl6&*ZdtE1$FnoODE0#S~l}#ebTPi zZu^+;8B4~z-d)$QTv$QP!KYycgCS!Q(-D>qP61jA*jJc39(yX+yc!rr44$rjF6*2U FngEQCexLvV literal 0 HcmV?d00001 diff --git a/radio/src/tests/invers_0_1_212x64.png b/radio/src/tests/invers_0_1_212x64.png new file mode 100755 index 0000000000000000000000000000000000000000..2e014fd35104bfbdfe8b6c4eb773e9fc96618b9f GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`og9%8!^*$#Bq?n7HJVQ7*IBq}me*oli7I;J! zGca&>f-s}`$+Xa;f8i zI(qRBzm!fiJQlkCk=nCZlhd1Qem;?S{PS>u$$Cc3&j04~-{n0n&@S4(InHaE|C}S= zXI$B3=T^3hQ~zh`r?uCvZ2LODUgUd$-2IIk?&{R+NoDyoZ}N}6;&+7td2@4*PdQ$_ yY<1idd-?UVT%4co{>SjnyC&s`yW0R0bqrH$9goF5h?)TmItEWyKbLh*2~7Zz`=KBJ literal 0 HcmV?d00001 diff --git a/radio/src/tests/prec1_dblsize_invers_128x64.png b/radio/src/tests/prec1_dblsize_invers_128x64.png new file mode 100755 index 0000000000000000000000000000000000000000..b5969f325ffd2f15bf020d6155c6b3b539968fcd GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qq09po*^6@9Je3(KLBz$3p^r= z85p=bL736}vW%xgr!H_YD=?F^)r+~16nuAZnjr3ZE`hyaWU*6~1aO_^+x!BpK zujk$0!t!_CSr4^@rSjJn?G-d+G!))&>1}46Iq&r8_n#kN*>n1!eU#4usoCMy#pl|? zSExPE?Yl3@0W$J{RPnjza`^%YOS79F8=jN%uDpBC^q<7zT|YPfe0h>ZXG`VtuM;>U p9!!0k!I(5{!3=cwP$E#vc(>9*xM}IrIlus8@O1TaS?83{1OOL`hduxR literal 0 HcmV?d00001 diff --git a/radio/src/tests/prec1_dblsize_invers_212x64.png b/radio/src/tests/prec1_dblsize_invers_212x64.png new file mode 100755 index 0000000000000000000000000000000000000000..ae5a69b31caaa11c6b329b0179ccabb60d4b1b56 GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^SAf`og9%8!^*$#Bq?n7HJVQ7*IBq}me*oli7I;J! zGca&>f-s}`$$lAcNy)rvFI=n6&90x& ze!5-lqs?<0$A_!!82;&hoG2(SiA?Og!hRrKI(g6E$kXn}J{4Zsti6SQaYgOzzmuo+ z@82M~;%Rbk{JuZ7v)w?_8;||nW4q?T*N5l-ZmwCg{j*x&>EnU3_h&tyqwmicWhZvK z{#Im7$`NXZ`n=|o_q2ZJ pJLiwPZ>mYrL3I_HBPrqjWaIy2AzZAHKNlE`44$rjF6*2UngBk|qND%- literal 0 HcmV?d00001 diff --git a/radio/src/tests/smlsize_putsstridx_128x64.png b/radio/src/tests/smlsize_putsstridx_128x64.png new file mode 100755 index 0000000000000000000000000000000000000000..5caf95f3aaaf6fa64e109ab185cfb9881e013b1d GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qq09po*^6@9Je3(KLBz$3p^r= z85p=bL736}*zfRV z@zUGBlHc1JSHFM!#b(~j$L}89mV2GL>G+-gh3o%In*7-HJ1RTvT;clZwhw~x%^tiJ z)hk*b|KPfmdKI;Vst0B|F19smFU literal 0 HcmV?d00001 diff --git a/radio/src/tests/vline_128x64.png b/radio/src/tests/vline_128x64.png new file mode 100755 index 0000000000000000000000000000000000000000..6cd120f848d121a811eb297f2778b33be209d566 GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qq09po*^6@9Je3(KLBz$3p^r= z85p=bL736}4t~xUaIoE~)1!r9gV|PrdxK_>5kr)y`U%~K3xdD5}!A+MvBY4bW z*EAiuusiy6fZ>I?-^;s#h9LJYP*MxP_d3c^N!-&S$YXBx$TQ zWaxZY7YpQq%jOcNyRq!}EN79;}24l+!cd61RiX-WZ$!%c}h zi~(|N%NeFL9yDb*dscv8APWOy1GHLRQ~7`jdya5A{2%;0KB zGW6ka2$WdHs_>s@GV_Gz@l8t^6z21EGMtchwqp2nc!EfSjlmMO1si#oD$Kha8RBmm zb39P+W@DU_c37dIyUKWvjm}Y{<$?wlj6Co7+g?w1f-s}`$94o;Tn@h@a`H%>ncIJ><%tWD zX5_O>;@YP-{q*0u{SL*~W%9O1-~XN9e0{#U(2}LE?|Ta^>1F@e%ChopW{slbt4hIm zj|o!uy7W~%BH15ta|WGy_`|7b&i6#1e;k~vD(B$%vPJNXV|3iC#r190q+?=1n7Xy|2xncrTa#0aT+y%Pm z-J0SW#e=rIK!+BXGanTfx^uh$=>Bqp4508n+r62gZRhV$qChue!Dj5cD`ri+@`p1xk|+BA8`{BY~$th_DcMG;Z{@f anLjgqx@&uf+aX}oF?hQAxvXetHv literal 0 HcmV?d00001