Library for 3.2'' uLcd Picaso Display4D system Picaso Serial Environment Command Set web: http://www.4dsystems.com.au/product/20/67/Processors_Graphics/PICASO/

Revision:
0:65fd8b1cbf86
Child:
1:a74e42cf52b2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PicasoSerial.h	Sun Jul 06 10:36:27 2014 +0000
@@ -0,0 +1,413 @@
+#ifndef PICASO_SERIAL_H
+#define PICASO_SERIAL_H
+
+#include "mbed.h"
+#include <string>
+
+/**
+* Library for 3.2'' uLcd Picaso Display
+* 4D system
+* Picaso Serial Environment Command Set
+* http://www.4dsystems.com.au/product/20/67/Processors_Graphics/PICASO/
+* @autor A.Decarvalho
+* 
+*17/04/ 2014
+*/
+
+//--------------------
+// display Gfx
+//--------------------
+#define CMD_TOUCH_SET   0xFF38
+#define CMD_TOUCH_GET   0xFF37
+#define CMD_TOUCH_DETECT_REGION 0xFF39
+
+#define CMD_BAUD_RATE   0x0026
+#define CMD_CLEAR_SCREEN    0xFFCD
+#define CMD_BACKGROUND_COLOR    0xFFA4
+
+#define CMD_FILLED_RECT 0xFFC4
+#define CMD_RECT    0xFFC5
+
+#define CMD_CIRCLE  0xFFC3
+#define CMD_FILLED_CIRCLE   0xFFC2
+
+#define CMD_LINE    0xFFC8
+
+#define CMD_TRIANGLE    0xFFBF
+#define CMD_FILLED_TRIANGLE 0xFFA9
+
+#define CMD_PIXEL   0xFFC1
+
+#define CMD_PANEL   0xFFAF
+
+#define CMD_BUTTON  0x0011
+#define BUTTON_RAISED   0x0001
+#define BUTTON_DEPRESSED    0x0000
+
+#define CMD_SLIDER   0xFFAE
+#define SLIDER_INTENTED 0x0000
+#define SLIDER_RAISED   0x0001
+#define SLIDER_HIDDEN   0x0002
+
+#define CMD_PUT_STRING  0x0018
+#define CMD_MOVE_ORIGIN 0xFFCC
+#define CMD_TEXT_FOREGROUND 0xFFE7
+#define CMD_TEXT_BACKROUND 0xFFE6
+#define CMD_TEXT_SET_FONT   0xFFE5
+
+#define CMD_POLYGON     0x0013
+#define CMD_FILLED_POLYGON  0x0014
+#define CMD_ELLIPSE         0xFFB2
+#define CMD_FILLED_ELLIPSE  0xFFB1
+
+#define GFX_ACK 0x06
+#define GFX_NAK 0x00
+
+//speed baud
+#define GFX_BAUD_9600      0x0006
+#define GFX_BAUD_19200     0x0008
+#define GFX_BAUD_56000     11
+#define GFX_BAUD_115200    0x000D
+
+//-----------------
+typedef char* XCHAR;
+typedef unsigned short UINT16;
+typedef unsigned char UINT8;
+typedef short INT16;
+
+//--------------------
+// The States
+//--------------------
+typedef enum State State;
+enum State{
+    BUTTON_STATE_PRESSED = 0,
+    BUTTON_STATE_RELEASED=1,
+    //
+    LED_STATE_ON,
+    LED_STATE_OFF,
+    //
+    SWITCH_STATE_ON,
+    SWITCH_STATE_OFF,
+    //
+    SLIDER_STATE_MOVE,
+    SLIDER_STATE_RELEASED,
+    //
+    INPUT_STATE_PRESSED_UP,
+    INPUT_STATE_PRESSED_DOWN,
+    INPUT_STATE_RELEASED,
+    //
+    LABEL_STATE_ON,
+    //
+    DIGIT_LED_STATE_ON,
+    //
+    STATE_ON,
+    STATE_OFF,
+    BUMP_LEFT,
+    BUMP_RIGHT,
+    BUMP_DOWN,
+    BUMP_UP,
+    STATE_ROTATE
+};
+//------------
+// fonts uLCD
+//------------
+typedef enum Font Font;
+//
+enum Font {
+    FONT_1 = 0x0000,
+    FONT_2 = 0x0001,
+    FONT_3 = 0x0002
+};
+//-----------------
+// Colors for Obj
+//-----------------
+typedef enum Color Color;
+//
+enum Color {
+    ALICEBLUE = 0xF7DF,ANTIQUEWHITE = 0xFF5A,AQUA = 0x07FF,
+    AQUAMARINE = 0x7FFA,AZURE = 0xF7FF,BEIGE = 0xF7BB,
+    BISQUE = 0xFF38,BLACK = 0x0000,BLANCHEDALMOND = 0xFF59,
+    BLUE = 0x001F,BLUEVIOLET = 0x895C,BROWN = 0xA145,
+    BURLYWOOD = 0xDDD0,CADETBLUE = 0x5CF4,CHARTREUSE = 0x7FE0,
+    CHOCOLATE = 0xD343,CORAL = 0xFBEA,CORNFLOWERBLUE = 0x64BD,
+    CORNSILK = 0xFFDB,CRIMSON = 0xD8A7,CYAN = 0x07FF,
+    DARKBLUE = 0x0011,DARKCYAN = 0x0451,DARKGOLDENROD = 0xBC21,
+    DARKGRAY = 0xAD55,DARKGREEN = 0x0320,DARKKHAKI = 0xBDAD,
+    DARKMAGENTA = 0x8811,DARKOLIVEGREEN = 0x5345,DARKORANGE = 0xFC60,
+    DARKORCHID = 0x9999,DARKRED = 0x8800,DARKSALMON = 0xECAF,
+    DARKSEAGREEN = 0x8DF1,DARKSLATEBLUE = 0x49F1,DARKSLATEGRAY = 0x2A69,
+    DARKTURQUOISE = 0x067A,DARKVIOLET = 0x901A,DEEPPINK = 0xF8B2,
+    DEEPSKYBLUE = 0x05FF,DIMGRAY = 0x6B4D,DODGERBLUE = 0x1C9F,
+    FIREBRICK = 0xB104,FLORALWHITE = 0xFFDE,FORESTGREEN = 0x2444,
+    FUCHSIA = 0xF81F,GAINSBORO = 0xDEFB,GHOSTWHITE = 0xFFDF,
+    GOLD = 0xFEA0,GOLDENROD = 0xDD24,GRAY = 0x8410,
+    GREEN = 0x0400,GREENYELLOW = 0xAFE5,HONEYDEW = 0xF7FE,
+    HOTPINK = 0xFB56,INDIANRED = 0xCAEB,INDIGO = 0x4810,
+    IVORY = 0xFFFE,KHAKI = 0xF731,LAVENDER = 0xE73F,
+    LAVENDERBLUSH = 0xFF9E,LAWNGREEN = 0x7FE0,LEMONCHIFFON = 0xFFD9,
+    LIGHTBLUE = 0xAEDC,LIGHTCORAL = 0xF410,LIGHTCYAN = 0xE7FF,
+    LIGHTGOLD = 0xFFDA,LIGHTGREEN = 0x9772,LIGHTGREY = 0xD69A,
+    LIGHTPINK = 0xFDB8,LIGHTSALMON = 0xFD0F,LIGHTSEAGREEN = 0x2595,
+    LIGHTSKYBLUE = 0x867F,LIGHTSLATEGRAY = 0x7453,LIGHTSTEELBLUE = 0xB63B,
+    LIGHTYELLOW = 0xFFFC,LIME = 0x07E0,LIMEGREEN = 0x3666,
+    LINEN = 0xFF9C,MAGENTA = 0xF81F,MAROON = 0x8000,
+    MEDIUMAQUAMARINE = 0x6675,MEDIUMBLUE = 0x0019,MEDIUMORCHID = 0xBABA,
+    MEDIUMPURPLE = 0x939B,MEDIUMSEAGREEN = 0x3D8E,MEDIUMSLATEBLUE = 0x7B5D,
+    MEDIUMSPRINGGREEN = 0x07D3,MEDIUMTURQUOISE = 0x4E99,MEDIUMVIOLETRED = 0xC0B0,
+    MIDNIGHTBLUE = 0x18CE,MINTCREAM = 0xF7FF,MISTYROSE = 0xFF3C,
+    MOCCASIN = 0xFF36,NAVAJOWHITE = 0xFEF5,NAVY = 0x0010,
+    OLDLACE = 0xFFBC,OLIVE = 0x8400,OLIVEDRAB = 0x6C64,
+    ORANGE = 0xFD20,ORANGERED = 0xFA20,ORCHID = 0xDB9A,
+    PALEGOLDENROD = 0xEF55,PALEGREEN = 0x9FD3,PALETURQUOISE = 0xAF7D,
+    PALEVIOLETRED = 0xDB92,PAPAYAWHIP = 0xFF7A,PEACHPUFF = 0xFED7,
+    PERU = 0xCC27,PINK = 0xFE19,PLUM = 0xDD1B,
+    POWDERBLUE = 0xB71C,PURPLE = 0x8010,RED = 0xF800,
+    ROSYBROWN = 0xBC71,ROYALBLUE = 0x435C,SADDLEBROWN = 0x8A22,
+    SALMON = 0xFC0E,SANDYBROWN = 0xF52C,SEAGREEN = 0x2C4A,
+    SEASHELL = 0xFFBD,SIENNA = 0xA285,SILVER = 0xC618,
+    SKYBLUE = 0x867D,SLATEBLUE = 0x6AD9,SLATEGRAY = 0x7412,
+    SNOW = 0xFFDF,SPRINGGREEN = 0x07EF,STEELBLUE = 0x4416,
+    TAN = 0xD5B1,TEAL = 0x0410,THISTLE = 0xDDFB,TOMATO = 0xFB08,
+    TURQUOISE = 0x471A,VIOLET = 0xEC1D,WHEAT = 0xF6F6,
+    WHITE = 0xFFFF,WHITESMOKE = 0xF7BE,YELLOW = 0xFFE0,
+    YELLOWGREEN = 0x9E66
+};
+//------------------------------------------------------
+typedef enum TouchEvent TouchEvent;
+
+enum TouchEvent {
+    EVENT_NO_ACTIVITY = 0x0000,
+    EVENT_PRESS = 0x0001,
+    EVENT_RELEASE = 0x0002,
+    EVENT_MOVE = 0x0003
+};
+//-------------------------------------------------------
+enum GRAPHIC_OBJ_TYPE {
+    OBJ_BUTTON=1,
+    OBJ_LED,
+    OBJ_LABEL,
+    OBJ_INPUT,
+    OBJ_SLIDER,
+    OBJ_SWITCH,
+    OBJ_DIGIT_LED,
+    OBJ_DIGITAL_3_LED,
+
+    OBJ_RECTANGLE,
+    OBJ_CIRCLE,
+    OBJ_TRIANGLE,
+    OBJ_ELLIPSE,
+    OBJ_DIAMOND,
+    OBJ_ISOCELE,
+    OBJ_UNKNOW
+};
+//-------------------------------------------------------
+typedef struct GraphicMessage GraphicMessage;
+
+struct GraphicMessage {
+    TouchEvent event;
+    UINT16 objId;
+    int posiX;
+    int posiY;
+};
+//--------------------------------------------------------
+class PicasoSerial:public Serial
+{
+public:
+    /** Construct a PicasoSerial object.
+    *
+    * @param _pinTx the Serial Mbed pin Tx
+    * @param _pinRx the Serial Mbed pin Rx
+    * @param _pinReset the LCD reset pin
+    */
+    PicasoSerial(PinName _pinTx,PinName _pinRx,PinName _pinReset);
+
+//------------------------------
+    /**    @returns the touch status
+    *      EVENT_NO_ACTIVITY,
+    *      EVENT_PRESS,
+    *      EVENT_RELEASE,
+    *      EVENT_MOVE
+    */
+    TouchEvent touch_get_status();
+//------------------------------
+    //! @returns the touch X position
+    UINT16 touch_get_x();
+//------------------------------
+    //! @returns the touch Y position
+    UINT16 touch_get_y();
+//-----------------------------
+    //! reset the screen
+    void gfx_reset();
+//-----------------------------
+    //! The first function is called, initialization of the display with the transmission baud
+    void setup(int baud);
+//-----------------------------
+//-----------------------------
+    //! @param speed the baud rate
+    void gfx_set_UartSpeed(int baud);
+//-----------------------------
+    //! clear the screen
+    void gfx_clearScreen();
+//-----------------------------
+    //!@params color define the background color with RGB format
+    void gfx_set_BackGroundColor(Color color);
+//---------------------------------------------
+    //! create a color
+    //! @params red
+    //! @param green
+    //! @param blue
+    unsigned short gfx_set_RGB565(unsigned char red,
+                                  unsigned char green, unsigned char blue);
+//------------------------------------------------------------------------
+    /** Draw a circle
+    * @params x center position
+    * @params y center position
+    * @params radius
+    * @params color
+    */
+    void draw_circle(UINT16 x, UINT16 y, UINT16 radius,Color color);
+//------------------------------------------------------------------
+    /** Draw a filled circle
+    * @params x center position
+    * @params y center position
+    * @params radius
+    * @params color
+    */
+    void draw_filled_circle(UINT16 x, UINT16 y, UINT16 radius,Color color);
+//---------------------------------------------------------------------------
+    /** Draw a Line [x1,y1] to [x2,y2]
+    * @params x1
+    * @params y1
+    * @params x2
+    * @params y2
+    * @params color
+    */
+    void draw_line(UINT16 x1, UINT16 y1, UINT16 x2, UINT16 y2,Color color);
+//---------------------------------------------------------------------------
+    //! Draw a triangle  [x1,y1],[x2,y2],[x3,y3]
+
+    void draw_triangle(UINT16 x1, UINT16 y1, UINT16 x2,
+                       UINT16 y2, UINT16 x3, UINT16 y3,Color color);
+//---------------------------------------------------------------------------
+    //! Draw a filled triangle  [x1,y1],[x2,y2],[x3,y3]
+
+    void draw_filled_triangle(UINT16 x1, UINT16 y1, UINT16 x2,
+                              UINT16 y2, UINT16 x3, UINT16 y3,Color color);
+//---------------------------------------------------------------------------
+    /** Draw a filled rectangle
+    * @params x1 up left
+    * @params y1 up left
+    * @params x2 low right
+    * @params y2 low right
+    * @params color
+    */
+
+    void draw_filled_rectangle(UINT16 x1, UINT16 y1, UINT16 x2,
+                               UINT16 y2,Color color);
+//---------------------------------------------------------------
+    /** Draw a rectangle
+       * @params x1 up left
+       * @params y1 up left
+       * @params x2 low right
+       * @params y2 low right
+       * @params color
+       */
+    void draw_rectangle(UINT16 x1, UINT16 y1, UINT16 x2,
+                        UINT16 y2,Color color);
+//------------------------------------------------------------------
+    /** Draw a panel
+       * @params state
+       * @params x1 up left
+       * @params y1 up left
+       * @params x2 low right
+       * @params y2 low right
+       * @params color
+       */
+    void draw_panel(UINT16 state, UINT16 x1, UINT16 y1, UINT16 width,
+                    UINT16 height,Color color);
+//-------------------------------------------------------------------
+    /** Draw a color pixel
+       * @params x1
+       * @params y1
+       * @params color
+       */
+    void draw_pixel(UINT16 x1, UINT16 y1,Color color);
+//--------------------------------------------------------------------
+    /** Draw a button
+       * @params *s the text button
+       * @params x1 up left
+       * @params y1 up left
+       * @params font
+       * @params etat BUTTON_RAISED or BUTTON_DEPRESSED
+       * @params button_color the Bkg color
+       * @params text_color
+       */
+    void draw_button(string str, UINT16 x1, UINT16 y1,
+                     Font font,State state,Color button_color,Color text_color);
+//-------------------------------------------------------------------------------------
+    /** Draw a slider
+    * @params mode
+    * @params x1 up left
+    * @params y1 up left
+    * @params x2 low right
+    * @params y2 low right
+    * @params color the bkg color
+    * @params scale the max value
+    * @params value
+    */
+    void draw_slider(UINT16 mode, UINT16 x1, UINT16 y1, UINT16 x2, UINT16 y2,
+                     Color color, UINT16 scale, UINT16 value);
+//-----------------------------------------------------------------------------
+    void text_foreground(Color color);
+//-------------------------------
+    void text_backround(Color color);
+//------------------------------
+   void text_putstring(string str);
+    
+//-------------------------------
+    void text_setFont(Font _font);
+//---------------------------------
+    void gfx_move_to(UINT16 x1, UINT16 y1);
+//-----------------------------------------
+    /** Draw a string
+        * @params *s the text
+        * @params x up left
+        * @params y up left
+        * @params _font
+        * @params text_color
+        * @params color_bckg the background color
+        */
+    void draw_string(string str, UINT16 x, UINT16 y,Font _font,Color text_color,Color color_bckg);
+    
+//---------------------------------------------------------------------------------
+    //! Draw a diamond [x1,y1],[x2,y2],[x3,y3],[x4,y4]
+
+    void draw_diamond(UINT16 x1, UINT16 y1, UINT16 x2,UINT16 y2,UINT16 x3,UINT16 y3,
+                      UINT16 x4,UINT16 y4,Color color);
+//----------------------------------------------------------------------------------------
+    //! Draw a filled diamond [x1,y1],[x2,y2],[x3,y3],[x4,y4]
+    void draw_filled_diamond(UINT16 x1, UINT16 y1, UINT16 x2,UINT16 y2,UINT16 x3,UINT16 y3,
+                             UINT16 x4,UINT16 y4,Color color);
+//-------------------------------------------------------------
+    //! Draw a ellipse
+    void draw_ellipse(UINT16 xc, UINT16 yc, UINT16 xrad,UINT16 yrad,Color color);
+//--------------------------------------------------------------------------------
+    //! Draw a filled ellipse
+    void draw_filled_ellipse(UINT16 xc, UINT16 yc, UINT16 xrad,UINT16 yrad,Color color);
+
+protected:
+
+    DigitalOut  myPinReset;
+
+
+    void touch_set(UINT16 mode);
+    void touch_detect_region(UINT16 x1, UINT16 y1, UINT16 x2, UINT16 y2);
+    void put_gfx_char(unsigned char data);
+    void wait_gfx_ack();
+    UINT8 get_gfx_char(void);
+    void put_gfx_Commande(unsigned char* commande, int nombre);
+
+};
+
+#endif
+