Forked para SNOCC

Dependencies:   GPS

Dependents:   SNOCC_V1 SNOCC_V2

Fork of RA8875 by SNOCC

Revision:
21:3c1efb192927
Parent:
20:6e2e4a8372eb
Child:
23:a50ded45dbaf
diff -r 6e2e4a8372eb -r 3c1efb192927 RA8875.cpp
--- a/RA8875.cpp	Sun Jan 12 18:44:58 2014 +0000
+++ b/RA8875.cpp	Sun Jan 12 21:11:15 2014 +0000
@@ -468,13 +468,15 @@
     return roundrect(x1,y1,x2,y2,radius1,radius2,fillit);
 }
 
-RetCode_t RA8875::roundrect(unsigned int x1, unsigned int y1 ,unsigned int x2, unsigned int y2, 
+RetCode_t RA8875::roundrect(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, 
     unsigned int radius1, unsigned int radius2, fill_t fillit)
 {
     RetCode_t ret = noerror;
     
     PERFORMANCE_RESET;
-    if (x1 == x2 && y1 == y2) {
+    if (x1 > x2 || y1 > y2 || (radius1 > (x2-x1)/2) || (radius2 > (y2-y1)/2) ) {
+        ret = bad_parameter;
+    } else if (x1 == x2 && y1 == y2) {
         pixel(x1, y1);
     } else if (x1 == x2) {
         line(x1, y1, x2, y2);
@@ -490,12 +492,16 @@
         WriteCommand(0x97, y2 & 0xFF);
         WriteCommand(0x98, y2 >> 8);
 
-        //while (r && r > (x2 - x1) || r > (y2 - y1))
-        //    r--;
         WriteCommand(0xA1, radius1 & 0xFF);
         WriteCommand(0xA2, radius1 >> 8);
         WriteCommand(0xA3, radius2 & 0xFF);
         WriteCommand(0xA4, radius2 >> 8);
+
+        // Should not need this...
+        WriteCommand(0xA5, 0 & 0xFF);
+        WriteCommand(0xA6, 0 >> 8);
+        WriteCommand(0xA7, 0 & 0xFF);
+        WriteCommand(0xA8, 0 >> 8);
         
         unsigned char drawCmd = 0x20;       // Rounded Rectangle
         if (fillit == FILL)
@@ -504,7 +510,7 @@
         WriteCommand(0xA0, 0x80 + drawCmd); // Start drawing.
         while (ReadCommand(0xA0) & 0x80) {   // await completion.
             wait_us(POLLWAITuSec);
-        }        
+        }
     }
     REGISTERPERFORMANCE(PRF_DRAWROUNDEDRECTANGLE);
     return ret;