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