This is the Official SmartGPU 2 processor board library to use with MBED boards!!!

Dependents:   BounceBall_SG2 BounceBalls_SG2 EEPROM_SG2 Ellipses_SG2 ... more

Committer:
emmanuelchio
Date:
Thu Apr 17 21:17:00 2014 +0000
Revision:
2:3ae3f28ae9fe
Parent:
1:0bf6fac21233
Child:
3:a57cfeb0185d
SmartGPU2 Official Mbed library V2.1, compatible with all smartGPU2 boards: 2.4", 3.5", 4.3" and 7.0" - Vizic Technologies 2014

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emmanuelchio 0:210b5ba62803 1 /*********************************************************
emmanuelchio 1:0bf6fac21233 2 VIZIC TECHNOLOGIES. COPYRIGHT 2014.
emmanuelchio 0:210b5ba62803 3 THE DATASHEETS, SOFTWARE AND LIBRARIES ARE PROVIDED "AS IS."
emmanuelchio 0:210b5ba62803 4 VIZIC EXPRESSLY DISCLAIM ANY WARRANTY OF ANY KIND, WHETHER
emmanuelchio 0:210b5ba62803 5 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED
emmanuelchio 0:210b5ba62803 6 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
emmanuelchio 0:210b5ba62803 7 OR NONINFRINGEMENT. IN NO EVENT SHALL VIZIC BE LIABLE FOR
emmanuelchio 0:210b5ba62803 8 ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES,
emmanuelchio 0:210b5ba62803 9 LOST PROFITS OR LOST DATA, HARM TO YOUR EQUIPMENT, COST OF
emmanuelchio 0:210b5ba62803 10 PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES,
emmanuelchio 0:210b5ba62803 11 ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO
emmanuelchio 0:210b5ba62803 12 ANY DEFENCE THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION,
emmanuelchio 0:210b5ba62803 13 OR OTHER SIMILAR COSTS.
emmanuelchio 0:210b5ba62803 14 *********************************************************/
emmanuelchio 1:0bf6fac21233 15
emmanuelchio 0:210b5ba62803 16 /********************************************************
emmanuelchio 2:3ae3f28ae9fe 17 MBED SMARTGPU2 LIBRARY VERSION V2.1
emmanuelchio 0:210b5ba62803 18 IMPORTANT : This library is created for the MBED Software IDE
emmanuelchio 0:210b5ba62803 19 ********************************************************/
emmanuelchio 1:0bf6fac21233 20
emmanuelchio 0:210b5ba62803 21 #ifndef SMARTGPU2_h
emmanuelchio 0:210b5ba62803 22 #define SMARTGPU2_h
emmanuelchio 1:0bf6fac21233 23
emmanuelchio 0:210b5ba62803 24 #include <mbed.h>
emmanuelchio 1:0bf6fac21233 25
emmanuelchio 1:0bf6fac21233 26 /*******************USER MODIFABLE**********************/
emmanuelchio 1:0bf6fac21233 27 //-Uncomment your preferred smartGPU2 board(only 1 at time)----------------
emmanuelchio 1:0bf6fac21233 28 //#define LCD160X128 //SmartGPU2 1.8" connected via SmartSHIELD
emmanuelchio 2:3ae3f28ae9fe 29 #define LCD320X240 //SmartGPU2 2.4" connected via SmartSHIELD
emmanuelchio 1:0bf6fac21233 30 //#define LCD480X320 //SmartGPU2 3.5" connected via SmartSHIELD
emmanuelchio 1:0bf6fac21233 31 //#define LCD480X272 //SmartGPU2 4.3" connected via SmartSHIELD
emmanuelchio 1:0bf6fac21233 32 //#define LCD800X480 //SmartGPU2 7.0" connected via SmartSHIELD
emmanuelchio 0:210b5ba62803 33
emmanuelchio 0:210b5ba62803 34 //General MBED pinout defines
emmanuelchio 0:210b5ba62803 35 #define TXPIN p13
emmanuelchio 0:210b5ba62803 36 #define RXPIN p14
emmanuelchio 1:0bf6fac21233 37 //-SmartGPU2-MBED RESET PIN definition
emmanuelchio 1:0bf6fac21233 38 #define RESETPIN p15 //Define for the smartGPU2 RESET pin connected to the MBED board
emmanuelchio 1:0bf6fac21233 39
emmanuelchio 2:3ae3f28ae9fe 40 //delay word compatibility for mbed platform
emmanuelchio 1:0bf6fac21233 41 #define delay wait_ms
emmanuelchio 1:0bf6fac21233 42
emmanuelchio 1:0bf6fac21233 43 /****************END OF USER MODIFABLE******************/
emmanuelchio 0:210b5ba62803 44
emmanuelchio 1:0bf6fac21233 45 /**************DON'T MODIFY UP FROM HERE****************/
emmanuelchio 1:0bf6fac21233 46 #ifdef LCD160X128 //defines for SmartGPU2 LCD160x128 1.8" ONLY
emmanuelchio 1:0bf6fac21233 47 #define LCD_WIDTH 160
emmanuelchio 1:0bf6fac21233 48 #define LCD_HEIGHT 128
emmanuelchio 1:0bf6fac21233 49 #elif defined LCD320X240 //defines for SmartGPU2 LCD320x240 2.4" ONLY
emmanuelchio 1:0bf6fac21233 50 #define LCD_WIDTH 320
emmanuelchio 1:0bf6fac21233 51 #define LCD_HEIGHT 240
emmanuelchio 1:0bf6fac21233 52 #elif defined LCD320X240SH //defines for SmartGPU2 LCD320x240SH 2.4" ONLY
emmanuelchio 0:210b5ba62803 53 #define LCD_WIDTH 320
emmanuelchio 0:210b5ba62803 54 #define LCD_HEIGHT 240
emmanuelchio 1:0bf6fac21233 55 #elif defined LCD480X320 //defines for SmartGPU2 LCD480x320 3.5" ONLY
emmanuelchio 1:0bf6fac21233 56 #define LCD_WIDTH 480
emmanuelchio 1:0bf6fac21233 57 #define LCD_HEIGHT 320
emmanuelchio 1:0bf6fac21233 58 #elif defined LCD480X272 //defines for SmartGPU2 LCD480x272 4.3" ONLY
emmanuelchio 1:0bf6fac21233 59 #define LCD_WIDTH 480
emmanuelchio 1:0bf6fac21233 60 #define LCD_HEIGHT 272
emmanuelchio 1:0bf6fac21233 61 #elif defined LCD800X480 //defines for SmartGPU2 LCD800x480 7.0" ONLY
emmanuelchio 1:0bf6fac21233 62 #define LCD_WIDTH 800
emmanuelchio 1:0bf6fac21233 63 #define LCD_HEIGHT 480
emmanuelchio 1:0bf6fac21233 64 #else
emmanuelchio 1:0bf6fac21233 65 #error "No smartGPU2 LCDXXXxXXX board defined in smartGPU2.h file"
emmanuelchio 1:0bf6fac21233 66 #endif
emmanuelchio 1:0bf6fac21233 67
emmanuelchio 1:0bf6fac21233 68 //Max X, Y values depending on orientation definitions
emmanuelchio 1:0bf6fac21233 69 #define MAX_X_LANDSCAPE LCD_WIDTH-1
emmanuelchio 1:0bf6fac21233 70 #define MAX_Y_LANDSCAPE LCD_HEIGHT-1
emmanuelchio 1:0bf6fac21233 71 #define MAX_X_PORTRAIT LCD_HEIGHT-1
emmanuelchio 1:0bf6fac21233 72 #define MAX_Y_PORTRAIT LCD_WIDTH-1
emmanuelchio 0:210b5ba62803 73
emmanuelchio 0:210b5ba62803 74 //General definitions
emmanuelchio 0:210b5ba62803 75 #define OFF 0
emmanuelchio 0:210b5ba62803 76 #define ON 1
emmanuelchio 0:210b5ba62803 77 #define GND 0
emmanuelchio 0:210b5ba62803 78 #define VCC 1
emmanuelchio 0:210b5ba62803 79 #define SCROLLBUTTONSIZE 25
emmanuelchio 0:210b5ba62803 80 typedef unsigned int AXIS;
emmanuelchio 0:210b5ba62803 81 typedef unsigned int COLOUR;
emmanuelchio 0:210b5ba62803 82 typedef unsigned int RADIUS;
emmanuelchio 0:210b5ba62803 83 typedef unsigned int NUMBEROFBYTES;
emmanuelchio 0:210b5ba62803 84 typedef unsigned int ITEMNUMBER;
emmanuelchio 0:210b5ba62803 85 typedef unsigned int ADDRESS;
emmanuelchio 0:210b5ba62803 86 typedef unsigned long POINTERPOSITION;
emmanuelchio 0:210b5ba62803 87 typedef char FILENAME[];
emmanuelchio 1:0bf6fac21233 88
emmanuelchio 0:210b5ba62803 89 typedef enum {
emmanuelchio 0:210b5ba62803 90 DISABLE, //0
emmanuelchio 0:210b5ba62803 91 ENABLE //1
emmanuelchio 0:210b5ba62803 92 } STATE; //to set Enable/Disable States
emmanuelchio 0:210b5ba62803 93
emmanuelchio 0:210b5ba62803 94 typedef enum {
emmanuelchio 0:210b5ba62803 95 DESELECTED, //0
emmanuelchio 0:210b5ba62803 96 SELECTED //1
emmanuelchio 0:210b5ba62803 97 } ACTIVE; //to set Selected/DeSelected Active objects
emmanuelchio 0:210b5ba62803 98
emmanuelchio 0:210b5ba62803 99 typedef enum {
emmanuelchio 0:210b5ba62803 100 DESELECTEDTRANS, //0 set an unselected top window with transparent center
emmanuelchio 0:210b5ba62803 101 SELECTEDTRANS, //1 set a selected window with transparent center
emmanuelchio 0:210b5ba62803 102 SELECTEDGRAY, //2 set a selected window with gray center
emmanuelchio 0:210b5ba62803 103 SELECTEDWHITE //3 set a selected window with white center
emmanuelchio 0:210b5ba62803 104 } WINDOWTYPE; //to set type of window to draw
emmanuelchio 0:210b5ba62803 105
emmanuelchio 0:210b5ba62803 106 typedef struct {
emmanuelchio 0:210b5ba62803 107 AXIS x; //X axis
emmanuelchio 0:210b5ba62803 108 AXIS y; //Y axis
emmanuelchio 0:210b5ba62803 109 } POINT; //to create a point with point.x and point.y variables
emmanuelchio 0:210b5ba62803 110
emmanuelchio 0:210b5ba62803 111 typedef enum {
emmanuelchio 0:210b5ba62803 112 OK = 'O', //Command successfully executed
emmanuelchio 0:210b5ba62803 113 FAIL = 'F' //Command Fail
emmanuelchio 0:210b5ba62803 114 } SMARTGPUREPLY; //to get SmartGPU2 command responses
emmanuelchio 0:210b5ba62803 115
emmanuelchio 0:210b5ba62803 116 //Graphics functions definitions
emmanuelchio 0:210b5ba62803 117 typedef enum {
emmanuelchio 0:210b5ba62803 118 UNFILL, //0
emmanuelchio 0:210b5ba62803 119 FILL //1
emmanuelchio 0:210b5ba62803 120 } FILLGEOM; //to set fill or unfill colour geometry
emmanuelchio 0:210b5ba62803 121
emmanuelchio 0:210b5ba62803 122 typedef enum {
emmanuelchio 0:210b5ba62803 123 HORIZONTAL, //0
emmanuelchio 0:210b5ba62803 124 VERTICAL //1
emmanuelchio 0:210b5ba62803 125 } ORIENTATIONPARAMETER;//to set gradient colour fade orientation and objects: scrollBar and Slider orientations
emmanuelchio 0:210b5ba62803 126
emmanuelchio 0:210b5ba62803 127 typedef enum {
emmanuelchio 0:210b5ba62803 128 LANDSCAPE_LEFT, //0 left
emmanuelchio 0:210b5ba62803 129 PORTRAIT_LOW, //1 low
emmanuelchio 0:210b5ba62803 130 LANDSCAPE_RIGHT, //2 right
emmanuelchio 0:210b5ba62803 131 PORTRAIT_TOP //3 top
emmanuelchio 0:210b5ba62803 132 } LCDORIENTATIONS; //to set LCD orientations
emmanuelchio 0:210b5ba62803 133
emmanuelchio 0:210b5ba62803 134 typedef enum {
emmanuelchio 0:210b5ba62803 135 QUADRANT1 = 1, //1
emmanuelchio 0:210b5ba62803 136 QUADRANT2, //2
emmanuelchio 0:210b5ba62803 137 QUADRANT3, //3
emmanuelchio 0:210b5ba62803 138 QUADRANT4 //4
emmanuelchio 0:210b5ba62803 139 } ARCQUADRANT; //to set desired arc drawing quadrant
emmanuelchio 0:210b5ba62803 140
emmanuelchio 0:210b5ba62803 141 //basic colours definitions
emmanuelchio 0:210b5ba62803 142 #define BLACK 0x0000
emmanuelchio 0:210b5ba62803 143 #define WHITE 0xFFFF
emmanuelchio 0:210b5ba62803 144 #define RED 0xF800
emmanuelchio 0:210b5ba62803 145 #define GREEN 0x07E0
emmanuelchio 0:210b5ba62803 146 #define BLUE 0x001F
emmanuelchio 0:210b5ba62803 147 #define YELLOW 0xFFE0
emmanuelchio 0:210b5ba62803 148 #define CYAN 0x07FF
emmanuelchio 0:210b5ba62803 149 #define MAGENTA 0xF81F
emmanuelchio 0:210b5ba62803 150
emmanuelchio 0:210b5ba62803 151 //fonts definitions
emmanuelchio 0:210b5ba62803 152 typedef enum {
emmanuelchio 0:210b5ba62803 153 FONT0 = 0,
emmanuelchio 0:210b5ba62803 154 FONT1,
emmanuelchio 0:210b5ba62803 155 FONT2,
emmanuelchio 0:210b5ba62803 156 FONT3,
emmanuelchio 0:210b5ba62803 157 FONT4,
emmanuelchio 0:210b5ba62803 158 FONT5,
emmanuelchio 0:210b5ba62803 159 FONT6,
emmanuelchio 0:210b5ba62803 160 FONT7,
emmanuelchio 0:210b5ba62803 161 FONT8,
emmanuelchio 0:210b5ba62803 162 FONT9,
emmanuelchio 0:210b5ba62803 163 FONT10,
emmanuelchio 0:210b5ba62803 164 FONT11,
emmanuelchio 0:210b5ba62803 165 FONT12,
emmanuelchio 0:210b5ba62803 166 FONT13
emmanuelchio 0:210b5ba62803 167 } FONTSIZE; //to set text font sizes
emmanuelchio 0:210b5ba62803 168
emmanuelchio 0:210b5ba62803 169 typedef enum {
emmanuelchio 0:210b5ba62803 170 TRANS = 0,
emmanuelchio 0:210b5ba62803 171 FILLED
emmanuelchio 0:210b5ba62803 172 } TEXTBACKGROUNDCOLOURFILLUNFILL; //to set text background colour to transparent or filled
emmanuelchio 0:210b5ba62803 173
emmanuelchio 0:210b5ba62803 174 //Video
emmanuelchio 0:210b5ba62803 175 typedef struct {
emmanuelchio 0:210b5ba62803 176 unsigned int width; //X width
emmanuelchio 0:210b5ba62803 177 unsigned int height; //Y height
emmanuelchio 0:210b5ba62803 178 unsigned int framesPerSec; //video frames per second
emmanuelchio 0:210b5ba62803 179 unsigned int totalFrames; //video total frames in the file
emmanuelchio 0:210b5ba62803 180 } VIDDATA; //to create a Video Data struct containing, size X, size Y, frames per second and totalframes info
emmanuelchio 0:210b5ba62803 181
emmanuelchio 0:210b5ba62803 182 //Touch definitions
emmanuelchio 0:210b5ba62803 183 typedef enum {
emmanuelchio 0:210b5ba62803 184 INVALID, //returned touch point is invalid
emmanuelchio 0:210b5ba62803 185 VALID //returned touch point is valid
emmanuelchio 0:210b5ba62803 186 } TOUCHREPLY; //to get SmartGPU2 touch responses
emmanuelchio 0:210b5ba62803 187
emmanuelchio 0:210b5ba62803 188 typedef enum {
emmanuelchio 0:210b5ba62803 189 HOUSE = 'H',
emmanuelchio 0:210b5ba62803 190 MESSAGE = 'M',
emmanuelchio 0:210b5ba62803 191 BOOK = 'B',
emmanuelchio 0:210b5ba62803 192 PHONE = 'P',
emmanuelchio 0:210b5ba62803 193 SONG = 'S',
emmanuelchio 0:210b5ba62803 194 NONE = 'N'
emmanuelchio 0:210b5ba62803 195 } ICON; //to get the type of touched icon
emmanuelchio 0:210b5ba62803 196
emmanuelchio 0:210b5ba62803 197 //File access definitions
emmanuelchio 0:210b5ba62803 198 #define BEGINNING 0
emmanuelchio 0:210b5ba62803 199 #define ALLCONTENTS 0
emmanuelchio 0:210b5ba62803 200 typedef enum {
emmanuelchio 0:210b5ba62803 201 READONLY = 1, //1
emmanuelchio 0:210b5ba62803 202 WRITEONLY, //2
emmanuelchio 0:210b5ba62803 203 READWRITE //3
emmanuelchio 0:210b5ba62803 204 } OPENMODE; //to set the file access open mode
emmanuelchio 0:210b5ba62803 205
emmanuelchio 0:210b5ba62803 206 //SMARTGPU2 Command Execution responses definitions
emmanuelchio 0:210b5ba62803 207 typedef enum {
emmanuelchio 0:210b5ba62803 208 F_OK = 0, /* (0) Succeeded */
emmanuelchio 1:0bf6fac21233 209 F_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */
emmanuelchio 0:210b5ba62803 210 F_INT_ERR, /* (2) Assertion failed */
emmanuelchio 0:210b5ba62803 211 F_NOT_READY, /* (3) The physical drive cannot work */
emmanuelchio 0:210b5ba62803 212 F_NO_FILE, /* (4) Could not find the file */
emmanuelchio 0:210b5ba62803 213 F_NO_PATH, /* (5) Could not find the path */
emmanuelchio 1:0bf6fac21233 214 F_INVALID_NAME, /* (6) The path name format is invalid */
emmanuelchio 0:210b5ba62803 215 F_DENIED, /* (7) Access denied due to prohibited access or directory full */
emmanuelchio 0:210b5ba62803 216 F_EXIST, /* (8) Access denied due to prohibited access */
emmanuelchio 0:210b5ba62803 217 F_INVALID_OBJECT, /* (9) The file/directory object is invalid */
emmanuelchio 0:210b5ba62803 218 F_WRITE_PROTECTED, /* (10) The physical drive is write protected */
emmanuelchio 0:210b5ba62803 219 F_INVALID_DRIVE, /* (11) The logical drive number is invalid */
emmanuelchio 0:210b5ba62803 220 F_NOT_ENABLED, /* (12) The volume has no work area */
emmanuelchio 0:210b5ba62803 221 F_NO_FILESYSTEM, /* (13) There is no valid FAT volume */
emmanuelchio 1:0bf6fac21233 222 F_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any parameter error */
emmanuelchio 0:210b5ba62803 223 F_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */
emmanuelchio 0:210b5ba62803 224 F_LOCKED, /* (16) The operation is rejected according to the file sharing policy */
emmanuelchio 0:210b5ba62803 225 F_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */
emmanuelchio 0:210b5ba62803 226 F_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_SHARE */
emmanuelchio 1:0bf6fac21233 227 F_INVALID_PARAMETER /* (19) Given parameter is invalid */
emmanuelchio 1:0bf6fac21233 228 } FILERESULT; //Gets all FAT functions related responses
emmanuelchio 0:210b5ba62803 229
emmanuelchio 0:210b5ba62803 230 //SMARTGPU2 WorkSpaces definitions
emmanuelchio 0:210b5ba62803 231 typedef enum {
emmanuelchio 0:210b5ba62803 232 WORKSPACE0 = 0,
emmanuelchio 0:210b5ba62803 233 WORKSPACE1,
emmanuelchio 0:210b5ba62803 234 WORKSPACE2,
emmanuelchio 0:210b5ba62803 235 WORKSPACE3
emmanuelchio 0:210b5ba62803 236 } WORKSPACEBLOCK; //to set the working workspace
emmanuelchio 0:210b5ba62803 237
emmanuelchio 0:210b5ba62803 238 //SMARTGPU2 EEPROM pages definitions, each page is 2048bytes (2Kb) in size
emmanuelchio 0:210b5ba62803 239 typedef enum {
emmanuelchio 0:210b5ba62803 240 PAGE0 = 0,
emmanuelchio 0:210b5ba62803 241 PAGE1,
emmanuelchio 0:210b5ba62803 242 PAGE2,
emmanuelchio 0:210b5ba62803 243 PAGE3,
emmanuelchio 0:210b5ba62803 244 PAGE4,
emmanuelchio 0:210b5ba62803 245 PAGE5,
emmanuelchio 0:210b5ba62803 246 PAGE6,
emmanuelchio 0:210b5ba62803 247 PAGE7
emmanuelchio 0:210b5ba62803 248 } EEPROMPAGE; //to set the EEPROM page
emmanuelchio 0:210b5ba62803 249
emmanuelchio 0:210b5ba62803 250 //Files Time and Date
emmanuelchio 0:210b5ba62803 251 typedef struct {
emmanuelchio 0:210b5ba62803 252 unsigned char hour;
emmanuelchio 0:210b5ba62803 253 unsigned char minute;
emmanuelchio 0:210b5ba62803 254 unsigned char second;
emmanuelchio 0:210b5ba62803 255 unsigned char day;
emmanuelchio 0:210b5ba62803 256 unsigned char month;
emmanuelchio 0:210b5ba62803 257 unsigned int year;
emmanuelchio 0:210b5ba62803 258 } TIME; //to create a Time-Date info struct
emmanuelchio 0:210b5ba62803 259
emmanuelchio 0:210b5ba62803 260 //JPG images scale factor definitions
emmanuelchio 0:210b5ba62803 261 typedef enum {
emmanuelchio 0:210b5ba62803 262 SCALE1_1 = 0, // 1 to 1
emmanuelchio 0:210b5ba62803 263 SCALE1_2, // 1 to 2
emmanuelchio 0:210b5ba62803 264 SCALE1_4, // 1 to 4
emmanuelchio 0:210b5ba62803 265 SCALE1_8 // 1 to 8
emmanuelchio 0:210b5ba62803 266 } JPGSCALEFACTOR; //to set the desired JPG image decompression scale factor
emmanuelchio 0:210b5ba62803 267
emmanuelchio 1:0bf6fac21233 268 //Recommended(but not limited to) Arduino-SmartGPU Baud rate definitions
emmanuelchio 0:210b5ba62803 269 typedef enum{
emmanuelchio 0:210b5ba62803 270 BAUD0 = 9600,
emmanuelchio 0:210b5ba62803 271 BAUD1 = 19200,
emmanuelchio 0:210b5ba62803 272 BAUD2 = 57600,
emmanuelchio 0:210b5ba62803 273 BAUD3 = 115200,
emmanuelchio 0:210b5ba62803 274 BAUD4 = 256000,
emmanuelchio 0:210b5ba62803 275 BAUD5 = 500000,
emmanuelchio 0:210b5ba62803 276 BAUD6 = 1000000,
emmanuelchio 0:210b5ba62803 277 BAUD7 = 2000000
emmanuelchio 0:210b5ba62803 278 } BAUDRATE;
emmanuelchio 1:0bf6fac21233 279
emmanuelchio 0:210b5ba62803 280 //**************************************************************************
emmanuelchio 0:210b5ba62803 281 // class SMARTGPU2 SMARTGPU2.h
emmanuelchio 1:0bf6fac21233 282 // This is the main class. It should be used like this : SMARTGPU2 lcd(p13,p14,p15);
emmanuelchio 0:210b5ba62803 283 //***************************************************************************
emmanuelchio 0:210b5ba62803 284 class SMARTGPU2{
emmanuelchio 0:210b5ba62803 285
emmanuelchio 0:210b5ba62803 286 public:
emmanuelchio 0:210b5ba62803 287 /****************************************************************/
emmanuelchio 0:210b5ba62803 288 //MBED exclusive Functions
emmanuelchio 0:210b5ba62803 289 /****************************************************************/
emmanuelchio 0:210b5ba62803 290 SMARTGPU2(PinName TXPin, PinName RXPin, PinName resetPin);
emmanuelchio 0:210b5ba62803 291
emmanuelchio 0:210b5ba62803 292 void init();
emmanuelchio 0:210b5ba62803 293
emmanuelchio 0:210b5ba62803 294 SMARTGPUREPLY reset();
emmanuelchio 0:210b5ba62803 295
emmanuelchio 0:210b5ba62803 296 SMARTGPUREPLY start();
emmanuelchio 0:210b5ba62803 297
emmanuelchio 0:210b5ba62803 298 /****************************************************************/
emmanuelchio 0:210b5ba62803 299 //Master Functions
emmanuelchio 0:210b5ba62803 300 /****************************************************************/
emmanuelchio 0:210b5ba62803 301 SMARTGPUREPLY erase();
emmanuelchio 0:210b5ba62803 302
emmanuelchio 0:210b5ba62803 303 SMARTGPUREPLY sleep(STATE);
emmanuelchio 0:210b5ba62803 304
emmanuelchio 0:210b5ba62803 305 SMARTGPUREPLY orientation(LCDORIENTATIONS);
emmanuelchio 0:210b5ba62803 306
emmanuelchio 0:210b5ba62803 307 SMARTGPUREPLY bright(unsigned char);
emmanuelchio 0:210b5ba62803 308
emmanuelchio 0:210b5ba62803 309 SMARTGPUREPLY baudChange(unsigned long);
emmanuelchio 0:210b5ba62803 310
emmanuelchio 0:210b5ba62803 311 SMARTGPUREPLY setEraseBackColour(COLOUR);
emmanuelchio 0:210b5ba62803 312
emmanuelchio 0:210b5ba62803 313 /****************************************************************/
emmanuelchio 0:210b5ba62803 314 //Geometric Functions
emmanuelchio 0:210b5ba62803 315 /****************************************************************/
emmanuelchio 0:210b5ba62803 316 SMARTGPUREPLY putPixel(AXIS, AXIS, COLOUR);
emmanuelchio 0:210b5ba62803 317
emmanuelchio 0:210b5ba62803 318 SMARTGPUREPLY drawLine(AXIS, AXIS, AXIS, AXIS, COLOUR);
emmanuelchio 0:210b5ba62803 319
emmanuelchio 0:210b5ba62803 320 SMARTGPUREPLY drawRectangle(AXIS, AXIS, AXIS, AXIS, COLOUR, FILLGEOM);
emmanuelchio 0:210b5ba62803 321
emmanuelchio 0:210b5ba62803 322 SMARTGPUREPLY drawRoundRect(AXIS, AXIS, AXIS, AXIS, RADIUS, COLOUR, FILLGEOM);
emmanuelchio 0:210b5ba62803 323
emmanuelchio 0:210b5ba62803 324 SMARTGPUREPLY drawGradientRect(AXIS, AXIS, AXIS, AXIS, COLOUR, COLOUR, ORIENTATIONPARAMETER);
emmanuelchio 0:210b5ba62803 325
emmanuelchio 0:210b5ba62803 326 SMARTGPUREPLY drawTriangle(AXIS, AXIS, AXIS, AXIS, AXIS, AXIS, COLOUR, FILLGEOM);
emmanuelchio 0:210b5ba62803 327
emmanuelchio 0:210b5ba62803 328 SMARTGPUREPLY drawArc(AXIS, AXIS, RADIUS, RADIUS, ARCQUADRANT, COLOUR, FILLGEOM);
emmanuelchio 0:210b5ba62803 329
emmanuelchio 0:210b5ba62803 330 SMARTGPUREPLY drawCircle(AXIS, AXIS, RADIUS, COLOUR, FILLGEOM);
emmanuelchio 0:210b5ba62803 331
emmanuelchio 0:210b5ba62803 332 SMARTGPUREPLY drawEllipse(AXIS, AXIS, RADIUS, RADIUS, COLOUR, FILLGEOM);
emmanuelchio 0:210b5ba62803 333
emmanuelchio 0:210b5ba62803 334 /****************************************************************/
emmanuelchio 0:210b5ba62803 335 //String Functions
emmanuelchio 0:210b5ba62803 336 /****************************************************************/
emmanuelchio 0:210b5ba62803 337 SMARTGPUREPLY putLetter(AXIS, AXIS, char, AXIS*);
emmanuelchio 0:210b5ba62803 338
emmanuelchio 0:210b5ba62803 339 SMARTGPUREPLY printNumber(AXIS, AXIS, float);
emmanuelchio 0:210b5ba62803 340
emmanuelchio 0:210b5ba62803 341 SMARTGPUREPLY string(AXIS, AXIS, AXIS, AXIS, char[], NUMBEROFBYTES*); //returns in NUMBEROFBYTES the successfully printed chars or letters
emmanuelchio 0:210b5ba62803 342
emmanuelchio 0:210b5ba62803 343 SMARTGPUREPLY stringSD(AXIS, AXIS, AXIS, AXIS, NUMBEROFBYTES, NUMBEROFBYTES, FILENAME, NUMBEROFBYTES*); //returns in NUMBEROFBYTES the successfully printed chars or letters
emmanuelchio 0:210b5ba62803 344
emmanuelchio 0:210b5ba62803 345 SMARTGPUREPLY setTextColour(COLOUR);
emmanuelchio 0:210b5ba62803 346
emmanuelchio 0:210b5ba62803 347 SMARTGPUREPLY setTextBackColour(COLOUR);
emmanuelchio 0:210b5ba62803 348
emmanuelchio 0:210b5ba62803 349 SMARTGPUREPLY setTextSize(FONTSIZE);
emmanuelchio 0:210b5ba62803 350
emmanuelchio 0:210b5ba62803 351 SMARTGPUREPLY setTextBackFill(TEXTBACKGROUNDCOLOURFILLUNFILL);
emmanuelchio 0:210b5ba62803 352
emmanuelchio 0:210b5ba62803 353 /****************************************************************/
emmanuelchio 0:210b5ba62803 354 //Image Functions
emmanuelchio 0:210b5ba62803 355 /****************************************************************/
emmanuelchio 0:210b5ba62803 356 SMARTGPUREPLY drawIcon(AXIS, AXIS, AXIS, AXIS, char[]);
emmanuelchio 0:210b5ba62803 357
emmanuelchio 0:210b5ba62803 358 SMARTGPUREPLY imageBMPSD(AXIS, AXIS, FILENAME);
emmanuelchio 0:210b5ba62803 359
emmanuelchio 0:210b5ba62803 360 SMARTGPUREPLY imageJPGSD(AXIS, AXIS, JPGSCALEFACTOR, FILENAME);
emmanuelchio 0:210b5ba62803 361
emmanuelchio 0:210b5ba62803 362 SMARTGPUREPLY getImageFromMemory(AXIS, AXIS, AXIS, AXIS, char[]); //Read the internal memory of the SMARTGPU2, This command returns 24bit pixels (3 bytes)
emmanuelchio 0:210b5ba62803 363
emmanuelchio 0:210b5ba62803 364 SMARTGPUREPLY screenshot();
emmanuelchio 0:210b5ba62803 365
emmanuelchio 0:210b5ba62803 366 /****************************************************************/
emmanuelchio 0:210b5ba62803 367 //Video Functions
emmanuelchio 0:210b5ba62803 368 /****************************************************************/
emmanuelchio 0:210b5ba62803 369 SMARTGPUREPLY allocateVideoSD(FILENAME, VIDDATA*);
emmanuelchio 0:210b5ba62803 370
emmanuelchio 0:210b5ba62803 371 SMARTGPUREPLY freeVideoSD();
emmanuelchio 0:210b5ba62803 372
emmanuelchio 0:210b5ba62803 373 SMARTGPUREPLY setFrameVideoSD(unsigned int);
emmanuelchio 0:210b5ba62803 374
emmanuelchio 0:210b5ba62803 375 SMARTGPUREPLY playVideoSD(AXIS, AXIS, unsigned int);
emmanuelchio 0:210b5ba62803 376
emmanuelchio 0:210b5ba62803 377 /****************************************************************/
emmanuelchio 0:210b5ba62803 378 //Audio Functions
emmanuelchio 0:210b5ba62803 379 /****************************************************************/
emmanuelchio 0:210b5ba62803 380 SMARTGPUREPLY initDACAudio(STATE);
emmanuelchio 0:210b5ba62803 381
emmanuelchio 0:210b5ba62803 382 SMARTGPUREPLY audioBoost(STATE);
emmanuelchio 0:210b5ba62803 383
emmanuelchio 0:210b5ba62803 384 SMARTGPUREPLY getWAVPlayState(STATE*);
emmanuelchio 0:210b5ba62803 385
emmanuelchio 0:210b5ba62803 386 SMARTGPUREPLY playWAVFile(FILENAME, unsigned int*); //returns in unsigned int* the file duration in seconds
emmanuelchio 0:210b5ba62803 387
emmanuelchio 0:210b5ba62803 388 SMARTGPUREPLY pauseWAVFile();
emmanuelchio 0:210b5ba62803 389
emmanuelchio 0:210b5ba62803 390 SMARTGPUREPLY stopWAVFile();
emmanuelchio 0:210b5ba62803 391
emmanuelchio 0:210b5ba62803 392 SMARTGPUREPLY advanceWAVFile(unsigned int); //advance file to the parameter(means seconds)
emmanuelchio 0:210b5ba62803 393
emmanuelchio 0:210b5ba62803 394 SMARTGPUREPLY setVolumeWAV(unsigned char);
emmanuelchio 0:210b5ba62803 395
emmanuelchio 0:210b5ba62803 396 /****************************************************************/
emmanuelchio 0:210b5ba62803 397 //Real Time Clock Functions
emmanuelchio 0:210b5ba62803 398 /****************************************************************/
emmanuelchio 0:210b5ba62803 399 SMARTGPUREPLY setupRTC(STATE*);
emmanuelchio 0:210b5ba62803 400
emmanuelchio 0:210b5ba62803 401 SMARTGPUREPLY getRTCTimeDate(TIME*);
emmanuelchio 0:210b5ba62803 402
emmanuelchio 0:210b5ba62803 403 SMARTGPUREPLY setRTCTimeDate(TIME*);
emmanuelchio 0:210b5ba62803 404
emmanuelchio 0:210b5ba62803 405 /****************************************************************/
emmanuelchio 0:210b5ba62803 406 //Objects Functions - Refer to "smartGPU2 Command Set" to learn about minimum width and height objects size.
emmanuelchio 0:210b5ba62803 407 /****************************************************************/
emmanuelchio 0:210b5ba62803 408 SMARTGPUREPLY objButton(AXIS, AXIS, AXIS, AXIS, ACTIVE, char[]);
emmanuelchio 0:210b5ba62803 409
emmanuelchio 0:210b5ba62803 410 SMARTGPUREPLY objSwitch(AXIS, AXIS, unsigned int, ACTIVE);
emmanuelchio 0:210b5ba62803 411
emmanuelchio 0:210b5ba62803 412 SMARTGPUREPLY objCheckbox(AXIS, AXIS, unsigned int, ACTIVE);
emmanuelchio 0:210b5ba62803 413
emmanuelchio 0:210b5ba62803 414 SMARTGPUREPLY objProgressBar(AXIS, AXIS, AXIS, AXIS, unsigned char);
emmanuelchio 0:210b5ba62803 415
emmanuelchio 0:210b5ba62803 416 SMARTGPUREPLY objSlider(AXIS, AXIS, AXIS, AXIS, unsigned char, unsigned char, ORIENTATIONPARAMETER);
emmanuelchio 0:210b5ba62803 417
emmanuelchio 0:210b5ba62803 418 SMARTGPUREPLY objScrollBar(AXIS, AXIS, AXIS, AXIS, unsigned char, unsigned char, ORIENTATIONPARAMETER, ACTIVE);
emmanuelchio 0:210b5ba62803 419
emmanuelchio 0:210b5ba62803 420 SMARTGPUREPLY objWindow(AXIS, AXIS, AXIS, AXIS, FONTSIZE, WINDOWTYPE, char[]);
emmanuelchio 0:210b5ba62803 421
emmanuelchio 0:210b5ba62803 422 /****************************************************************/
emmanuelchio 0:210b5ba62803 423 //EEPROM-FLASH Functions - Refer to "smartGPU2 Command Set" to learn about READ-WRITE procedure, and page SIZE.
emmanuelchio 0:210b5ba62803 424 /****************************************************************/
emmanuelchio 0:210b5ba62803 425 SMARTGPUREPLY initClearEEPROMBuff();
emmanuelchio 0:210b5ba62803 426
emmanuelchio 0:210b5ba62803 427 SMARTGPUREPLY readEEPROMBuff(char[], ADDRESS, NUMBEROFBYTES, NUMBEROFBYTES*);
emmanuelchio 0:210b5ba62803 428
emmanuelchio 0:210b5ba62803 429 SMARTGPUREPLY writeEEPROMBuff(char[], ADDRESS, NUMBEROFBYTES, NUMBEROFBYTES*);
emmanuelchio 0:210b5ba62803 430
emmanuelchio 0:210b5ba62803 431 SMARTGPUREPLY saveBuffToEEPROMPage(EEPROMPAGE);
emmanuelchio 0:210b5ba62803 432
emmanuelchio 0:210b5ba62803 433 SMARTGPUREPLY fillBuffFromEEPROMPage(EEPROMPAGE);
emmanuelchio 0:210b5ba62803 434
emmanuelchio 0:210b5ba62803 435 SMARTGPUREPLY compBuffToEEPROMPage(EEPROMPAGE, unsigned char*);
emmanuelchio 0:210b5ba62803 436
emmanuelchio 0:210b5ba62803 437 SMARTGPUREPLY eraseEEPROMPage(EEPROMPAGE);
emmanuelchio 0:210b5ba62803 438
emmanuelchio 0:210b5ba62803 439 /****************************************************************/
emmanuelchio 0:210b5ba62803 440 //Touch Functions
emmanuelchio 0:210b5ba62803 441 //Those next Touch Functions return valid or invalid touch coordinates status(TOUCHREPLY) instead of ACK 'O' or NAK 'F'(SMARTGPUREPLY)
emmanuelchio 0:210b5ba62803 442 /****************************************************************/
emmanuelchio 0:210b5ba62803 443 TOUCHREPLY touchScreen(POINT*);
emmanuelchio 1:0bf6fac21233 444 #ifdef LCD320X240 //define function only for the SmartGPU2 LCD320x240 2.4" is selected, as it is the only board with touch icons
emmanuelchio 0:210b5ba62803 445 TOUCHREPLY touchIcon(ICON*);
emmanuelchio 1:0bf6fac21233 446 #elif defined LCD320X240SH //define function only for the SmartGPU2 LCD320x240SH 2.4" is selected, as it is the only board with touch icons
emmanuelchio 1:0bf6fac21233 447 TOUCHREPLY touchIcon(ICON*);
emmanuelchio 1:0bf6fac21233 448 #endif
emmanuelchio 0:210b5ba62803 449
emmanuelchio 0:210b5ba62803 450 /****************************************************************/
emmanuelchio 0:210b5ba62803 451 //SD FAT management Functions
emmanuelchio 0:210b5ba62803 452 //Those next SDF - SD Functions return file execution status(FILERESULT) instead of ACK 'O' or NAK 'F'(SMARTGPUREPLY)
emmanuelchio 0:210b5ba62803 453 /****************************************************************/
emmanuelchio 0:210b5ba62803 454 FILERESULT SDFgetList(unsigned int*, unsigned int*); //get number of dirs and files
emmanuelchio 0:210b5ba62803 455
emmanuelchio 0:210b5ba62803 456 FILERESULT SDFgetDirName(ITEMNUMBER, FILENAME); //searches for the "itemNumber" on the SD current folder and updates the buffer with the Dir name ended with NULL character
emmanuelchio 0:210b5ba62803 457
emmanuelchio 0:210b5ba62803 458 FILERESULT SDFgetFileName(ITEMNUMBER, FILENAME); //searches for the "itemNumber" on the SD current folder and updates the buffer with the File name ended with NULL character
emmanuelchio 0:210b5ba62803 459
emmanuelchio 0:210b5ba62803 460 FILERESULT SDFgetDirPath(char[]); //obtains current dir path and stores on path[] buffer
emmanuelchio 0:210b5ba62803 461
emmanuelchio 0:210b5ba62803 462 FILERESULT SDFnewDir(FILENAME); //create a new Directory, fails if already exist
emmanuelchio 0:210b5ba62803 463
emmanuelchio 0:210b5ba62803 464 FILERESULT SDFnewFile(FILENAME); //create a new File, fails if already exist
emmanuelchio 0:210b5ba62803 465
emmanuelchio 0:210b5ba62803 466 FILERESULT SDFopenDir(FILENAME); //opens an existing Dir
emmanuelchio 0:210b5ba62803 467
emmanuelchio 0:210b5ba62803 468 FILERESULT SDFopenFile(FILENAME, OPENMODE, WORKSPACEBLOCK); //opens an existing file in READONLY, WRITEONLY or READWRITE mode on the received object # workspace
emmanuelchio 0:210b5ba62803 469
emmanuelchio 0:210b5ba62803 470 FILERESULT SDFcloseFile(WORKSPACEBLOCK); //close and save file object # workspace
emmanuelchio 0:210b5ba62803 471
emmanuelchio 0:210b5ba62803 472 FILERESULT SDFsaveFile(WORKSPACEBLOCK); //sync/save file object # workspace
emmanuelchio 0:210b5ba62803 473
emmanuelchio 0:210b5ba62803 474 FILERESULT SDFsetFilePointer(POINTERPOSITION, WORKSPACEBLOCK); // set/move file pointer of file object # workspace
emmanuelchio 0:210b5ba62803 475
emmanuelchio 0:210b5ba62803 476 FILERESULT SDFgetFilePointer(POINTERPOSITION*, WORKSPACEBLOCK); // get file pointer of file object # workspace
emmanuelchio 0:210b5ba62803 477
emmanuelchio 0:210b5ba62803 478 FILERESULT SDFreadFile(char[], NUMBEROFBYTES, NUMBEROFBYTES*, WORKSPACEBLOCK); //Bytes to Read, Succesfully Read Bytes, file object # to read bytes from
emmanuelchio 0:210b5ba62803 479
emmanuelchio 0:210b5ba62803 480 FILERESULT SDFwriteFile(char[], NUMBEROFBYTES,NUMBEROFBYTES*, WORKSPACEBLOCK); //Bytes to Write, Succesfully Written Bytes, file object # to write bytes
emmanuelchio 0:210b5ba62803 481
emmanuelchio 0:210b5ba62803 482 FILERESULT SDFtestFileError(WORKSPACEBLOCK); //test for an error on file # workspace
emmanuelchio 0:210b5ba62803 483
emmanuelchio 0:210b5ba62803 484 FILERESULT SDFtestFileEnd(WORKSPACEBLOCK); //test for an error on file # workspace
emmanuelchio 0:210b5ba62803 485
emmanuelchio 0:210b5ba62803 486 FILERESULT SDFtruncateFile(WORKSPACEBLOCK); //truncates the file size to the current file read/write pointer of the file # workspace
emmanuelchio 0:210b5ba62803 487
emmanuelchio 0:210b5ba62803 488 FILERESULT SDFeraseDirFile(FILENAME); //Erases an existing Dir or File
emmanuelchio 0:210b5ba62803 489
emmanuelchio 0:210b5ba62803 490 FILERESULT SDFsetFileTimeDate(TIME*, FILENAME); //Set Time and Date to an existing File
emmanuelchio 0:210b5ba62803 491
emmanuelchio 0:210b5ba62803 492 FILERESULT SDFgetFileTimeDate(TIME*, FILENAME); //Get Time and Date to an existing File
emmanuelchio 0:210b5ba62803 493
emmanuelchio 0:210b5ba62803 494 FILERESULT SDFgetFileSize(FILENAME, unsigned long *); //Get Size of an existing File
emmanuelchio 0:210b5ba62803 495
emmanuelchio 0:210b5ba62803 496 FILERESULT SDFrenameMoveDirFile(FILENAME, FILENAME); //renames or moves an existing Dir or File
emmanuelchio 0:210b5ba62803 497
emmanuelchio 0:210b5ba62803 498 FILERESULT SDFgetFreeTotalSpace(unsigned long *,unsigned long *); //Get free and total space in bytes of the microSD card
emmanuelchio 0:210b5ba62803 499
emmanuelchio 0:210b5ba62803 500 protected :
emmanuelchio 0:210b5ba62803 501
emmanuelchio 0:210b5ba62803 502 Serial _serialSMARTGPU2;
emmanuelchio 0:210b5ba62803 503 DigitalOut _resetPin;
emmanuelchio 2:3ae3f28ae9fe 504
emmanuelchio 0:210b5ba62803 505 };
emmanuelchio 1:0bf6fac21233 506
emmanuelchio 1:0bf6fac21233 507 #endif