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 #include "mbed.h"
emmanuelchio 0:210b5ba62803 22 #include "SMARTGPU2.h"
emmanuelchio 1:0bf6fac21233 23
emmanuelchio 2:3ae3f28ae9fe 24 /**********************USER MODIFABLE****************************/
emmanuelchio 0:210b5ba62803 25 /****************************************************************/
emmanuelchio 0:210b5ba62803 26 //Communication Functions(PLATFORM DEPENDENT) - MODIFY TO FIT YOUR PLATFORM IF DIFFERENT THAN MBED
emmanuelchio 0:210b5ba62803 27 /****************************************************************/
emmanuelchio 0:210b5ba62803 28 //Sends a single character through the serial port(USART)
emmanuelchio 3:a57cfeb0185d 29 #define putcharTX(data) _serialSMARTGPU2.putc(data)
emmanuelchio 0:210b5ba62803 30
emmanuelchio 0:210b5ba62803 31 //Returns a single character obtained from the serial port(USART)
emmanuelchio 3:a57cfeb0185d 32 #define getcharRX() _serialSMARTGPU2.getc()
emmanuelchio 0:210b5ba62803 33
emmanuelchio 2:3ae3f28ae9fe 34 //Changes/Sets a new baudrate of the Host
emmanuelchio 2:3ae3f28ae9fe 35 #define setBaud(newBaud) _serialSMARTGPU2.baud(newBaud)
emmanuelchio 0:210b5ba62803 36
emmanuelchio 2:3ae3f28ae9fe 37 //Reset pin
emmanuelchio 2:3ae3f28ae9fe 38 #define resetHigh _resetPin=VCC // set the pin to 5v to end reset
emmanuelchio 2:3ae3f28ae9fe 39 #define resetLow _resetPin=GND // set the pin to GND to reset
emmanuelchio 1:0bf6fac21233 40
emmanuelchio 0:210b5ba62803 41 //MBED Exclusive - Hardware Configuration
emmanuelchio 0:210b5ba62803 42 void SMARTGPU2::init(){ //configure the MBED board for SMARTGPU2 board
emmanuelchio 0:210b5ba62803 43 setBaud(9600);
emmanuelchio 2:3ae3f28ae9fe 44 resetLow; // set the pin to GND to reset
emmanuelchio 2:3ae3f28ae9fe 45 delay(500);
emmanuelchio 2:3ae3f28ae9fe 46 resetHigh; // set the pin to 5v to end reset
emmanuelchio 2:3ae3f28ae9fe 47 delay(500);
emmanuelchio 0:210b5ba62803 48 }
emmanuelchio 2:3ae3f28ae9fe 49 /*********************END OF USER MODIFABLE**********************/
emmanuelchio 2:3ae3f28ae9fe 50
emmanuelchio 2:3ae3f28ae9fe 51 /*******************DON'T MODIFY UP FROM HERE********************/
emmanuelchio 0:210b5ba62803 52 /****************************************************************/
emmanuelchio 0:210b5ba62803 53 /****************************************************************/
emmanuelchio 0:210b5ba62803 54 /****************************************************************/
emmanuelchio 0:210b5ba62803 55 //SmartGPU2 Library exclusive Functions - DO NOT MODIFY DOWN FROM HERE
emmanuelchio 0:210b5ba62803 56 /****************************************************************/
emmanuelchio 0:210b5ba62803 57 /****************************************************************/
emmanuelchio 0:210b5ba62803 58 /****************************************************************/
emmanuelchio 2:3ae3f28ae9fe 59 // SMART GPU2 DEFAULT BAUD RATE: 9600bps
emmanuelchio 2:3ae3f28ae9fe 60 //It should always be used like this : SMARTGPU2 lcd(TXPIN,RXPIN,RESET); for serial communication with SMARTGPU2
emmanuelchio 0:210b5ba62803 61 SMARTGPU2::SMARTGPU2(PinName TXPin, PinName RXPin, PinName resetPin): _serialSMARTGPU2(TXPin,RXPin), _resetPin(resetPin){
emmanuelchio 0:210b5ba62803 62 init();
emmanuelchio 0:210b5ba62803 63 }
emmanuelchio 0:210b5ba62803 64
emmanuelchio 1:0bf6fac21233 65 SMARTGPUREPLY SMARTGPU2::reset(){ //Physically Reset the SMARTGPU2 board
emmanuelchio 2:3ae3f28ae9fe 66 resetLow; // set the pin to GND to reset
emmanuelchio 2:3ae3f28ae9fe 67 delay(500);
emmanuelchio 2:3ae3f28ae9fe 68 resetHigh; // set the pin to 5v to end reset
emmanuelchio 2:3ae3f28ae9fe 69 delay(500);
emmanuelchio 2:3ae3f28ae9fe 70 return (SMARTGPUREPLY)OK;
emmanuelchio 1:0bf6fac21233 71 }
emmanuelchio 1:0bf6fac21233 72
emmanuelchio 0:210b5ba62803 73 SMARTGPUREPLY SMARTGPU2::start(){ //Init the SMARTGPU2
emmanuelchio 1:0bf6fac21233 74 delay(500);
emmanuelchio 0:210b5ba62803 75 putcharTX('U');
emmanuelchio 1:0bf6fac21233 76 delay(500);
emmanuelchio 0:210b5ba62803 77 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 78 }
emmanuelchio 1:0bf6fac21233 79
emmanuelchio 1:0bf6fac21233 80
emmanuelchio 0:210b5ba62803 81 /****************************************************************/
emmanuelchio 0:210b5ba62803 82 //Master Functions
emmanuelchio 0:210b5ba62803 83 /****************************************************************/
emmanuelchio 0:210b5ba62803 84 SMARTGPUREPLY SMARTGPU2::erase(){ //Erase the SMARTGPU2 screen
emmanuelchio 0:210b5ba62803 85 putcharTX('M'); //Master function
emmanuelchio 0:210b5ba62803 86 putcharTX('E');
emmanuelchio 0:210b5ba62803 87 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 88 }
emmanuelchio 1:0bf6fac21233 89
emmanuelchio 0:210b5ba62803 90 SMARTGPUREPLY SMARTGPU2::sleep(STATE state){ //Send SMARTGPU2 to sleep mode
emmanuelchio 0:210b5ba62803 91 putcharTX('M'); //Master function
emmanuelchio 0:210b5ba62803 92 putcharTX('Z');
emmanuelchio 0:210b5ba62803 93 putcharTX(state);
emmanuelchio 0:210b5ba62803 94 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 95 }
emmanuelchio 1:0bf6fac21233 96
emmanuelchio 0:210b5ba62803 97 SMARTGPUREPLY SMARTGPU2::orientation(LCDORIENTATIONS side){ //Change display orientation
emmanuelchio 0:210b5ba62803 98 putcharTX('M'); //Master function
emmanuelchio 0:210b5ba62803 99 putcharTX('O');
emmanuelchio 0:210b5ba62803 100 putcharTX(side);
emmanuelchio 0:210b5ba62803 101 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 102 }
emmanuelchio 1:0bf6fac21233 103
emmanuelchio 0:210b5ba62803 104 SMARTGPUREPLY SMARTGPU2::bright(unsigned char val){ //Change display brightness
emmanuelchio 0:210b5ba62803 105 putcharTX('M'); //Master function
emmanuelchio 0:210b5ba62803 106 putcharTX('B');
emmanuelchio 0:210b5ba62803 107 putcharTX(val);
emmanuelchio 0:210b5ba62803 108 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 109 }
emmanuelchio 1:0bf6fac21233 110
emmanuelchio 0:210b5ba62803 111 // SMART GPU 2 DEFAULT/INITIAL BAUD RATE: 9600bps
emmanuelchio 0:210b5ba62803 112 SMARTGPUREPLY SMARTGPU2::baudChange(unsigned long baud){ //Change baud rate of MBED and SMARTGPU2 board
emmanuelchio 0:210b5ba62803 113 unsigned char aux;
emmanuelchio 1:0bf6fac21233 114
emmanuelchio 0:210b5ba62803 115 putcharTX('M'); //Master function
emmanuelchio 0:210b5ba62803 116 putcharTX('X');
emmanuelchio 0:210b5ba62803 117 putcharTX(baud>>24);
emmanuelchio 0:210b5ba62803 118 putcharTX(baud>>16);
emmanuelchio 0:210b5ba62803 119 putcharTX(baud>>8);
emmanuelchio 0:210b5ba62803 120 putcharTX(baud);
emmanuelchio 0:210b5ba62803 121 aux=getcharRX();
emmanuelchio 0:210b5ba62803 122 if(aux=='O'){ //if command is successfull, change baudrate, if not just leave and return 'F'
emmanuelchio 1:0bf6fac21233 123 delay(150);
emmanuelchio 0:210b5ba62803 124 setBaud(baud);
emmanuelchio 2:3ae3f28ae9fe 125 delay(200);
emmanuelchio 0:210b5ba62803 126 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 127 }else{
emmanuelchio 0:210b5ba62803 128 return (SMARTGPUREPLY)aux;
emmanuelchio 0:210b5ba62803 129 }
emmanuelchio 0:210b5ba62803 130 }
emmanuelchio 1:0bf6fac21233 131
emmanuelchio 0:210b5ba62803 132 SMARTGPUREPLY SMARTGPU2::setEraseBackColour(COLOUR colour){ //Change the default screen background colour for erase function
emmanuelchio 0:210b5ba62803 133 putcharTX('M'); //Master function
emmanuelchio 0:210b5ba62803 134 putcharTX('C'); //Background Colour
emmanuelchio 0:210b5ba62803 135 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 136 putcharTX(colour);
emmanuelchio 0:210b5ba62803 137 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 138 }
emmanuelchio 1:0bf6fac21233 139
emmanuelchio 1:0bf6fac21233 140
emmanuelchio 0:210b5ba62803 141 /****************************************************************/
emmanuelchio 0:210b5ba62803 142 //Geometric Functions
emmanuelchio 0:210b5ba62803 143 /****************************************************************/
emmanuelchio 0:210b5ba62803 144 SMARTGPUREPLY SMARTGPU2::putPixel(AXIS x, AXIS y, COLOUR colour){ //Draw a pixel on the screen
emmanuelchio 0:210b5ba62803 145 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 146 putcharTX('P');
emmanuelchio 0:210b5ba62803 147 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 148 putcharTX(x);
emmanuelchio 0:210b5ba62803 149 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 150 putcharTX(y);
emmanuelchio 0:210b5ba62803 151 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 152 putcharTX(colour);
emmanuelchio 0:210b5ba62803 153 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 154 }
emmanuelchio 1:0bf6fac21233 155
emmanuelchio 0:210b5ba62803 156 SMARTGPUREPLY SMARTGPU2::drawLine(AXIS x1, AXIS y1, AXIS x2, AXIS y2, COLOUR colour){ //Draw a line on the screen
emmanuelchio 0:210b5ba62803 157 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 158 putcharTX('L');
emmanuelchio 0:210b5ba62803 159 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 160 putcharTX(x1);
emmanuelchio 0:210b5ba62803 161 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 162 putcharTX(y1);
emmanuelchio 0:210b5ba62803 163 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 164 putcharTX(x2);
emmanuelchio 0:210b5ba62803 165 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 166 putcharTX(y2);
emmanuelchio 0:210b5ba62803 167 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 168 putcharTX(colour);
emmanuelchio 0:210b5ba62803 169 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 170 }
emmanuelchio 1:0bf6fac21233 171
emmanuelchio 0:210b5ba62803 172 SMARTGPUREPLY SMARTGPU2::drawRectangle(AXIS x1, AXIS y1, AXIS x2, AXIS y2, COLOUR colour, FILLGEOM fill){ //Draw a rectangle on the screen
emmanuelchio 0:210b5ba62803 173 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 174 putcharTX('R'); //Rectangle
emmanuelchio 0:210b5ba62803 175 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 176 putcharTX(x1);
emmanuelchio 0:210b5ba62803 177 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 178 putcharTX(y1);
emmanuelchio 0:210b5ba62803 179 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 180 putcharTX(x2);
emmanuelchio 0:210b5ba62803 181 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 182 putcharTX(y2);
emmanuelchio 0:210b5ba62803 183 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 184 putcharTX(colour);
emmanuelchio 0:210b5ba62803 185 putcharTX(fill);
emmanuelchio 0:210b5ba62803 186 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 187 }
emmanuelchio 1:0bf6fac21233 188
emmanuelchio 0:210b5ba62803 189 SMARTGPUREPLY SMARTGPU2::drawRoundRect(AXIS x1, AXIS y1, AXIS x2, AXIS y2, RADIUS radius, COLOUR colour, FILLGEOM fill){ //Draw a rounded rectangle on the screen
emmanuelchio 0:210b5ba62803 190 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 191 putcharTX('O'); //Rounded Rectangle
emmanuelchio 0:210b5ba62803 192 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 193 putcharTX(x1);
emmanuelchio 0:210b5ba62803 194 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 195 putcharTX(y1);
emmanuelchio 0:210b5ba62803 196 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 197 putcharTX(x2);
emmanuelchio 0:210b5ba62803 198 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 199 putcharTX(y2);
emmanuelchio 0:210b5ba62803 200 putcharTX(radius>>8);
emmanuelchio 0:210b5ba62803 201 putcharTX(radius);
emmanuelchio 0:210b5ba62803 202 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 203 putcharTX(colour);
emmanuelchio 0:210b5ba62803 204 putcharTX(fill);
emmanuelchio 0:210b5ba62803 205 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 206 }
emmanuelchio 0:210b5ba62803 207
emmanuelchio 0:210b5ba62803 208 SMARTGPUREPLY SMARTGPU2::drawGradientRect(AXIS x1, AXIS y1, AXIS x2, AXIS y2, COLOUR firstColour, COLOUR lastColour, ORIENTATIONPARAMETER direction){
emmanuelchio 0:210b5ba62803 209 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 210 putcharTX('G'); //Gradient rectangle function
emmanuelchio 0:210b5ba62803 211 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 212 putcharTX(x1);
emmanuelchio 0:210b5ba62803 213 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 214 putcharTX(y1);
emmanuelchio 0:210b5ba62803 215 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 216 putcharTX(x2);
emmanuelchio 0:210b5ba62803 217 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 218 putcharTX(y2);
emmanuelchio 0:210b5ba62803 219 putcharTX(firstColour>>8);
emmanuelchio 0:210b5ba62803 220 putcharTX(firstColour);
emmanuelchio 0:210b5ba62803 221 putcharTX(lastColour>>8);
emmanuelchio 0:210b5ba62803 222 putcharTX(lastColour);
emmanuelchio 0:210b5ba62803 223 putcharTX(direction);
emmanuelchio 0:210b5ba62803 224 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 225 }
emmanuelchio 1:0bf6fac21233 226
emmanuelchio 0:210b5ba62803 227 SMARTGPUREPLY SMARTGPU2::drawTriangle(AXIS x1, AXIS y1, AXIS x2, AXIS y2, AXIS x3, AXIS y3, COLOUR colour, FILLGEOM fill){ //Draw a triangle on the screen
emmanuelchio 0:210b5ba62803 228 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 229 putcharTX('T');
emmanuelchio 0:210b5ba62803 230 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 231 putcharTX(x1);
emmanuelchio 0:210b5ba62803 232 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 233 putcharTX(y1);
emmanuelchio 0:210b5ba62803 234 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 235 putcharTX(x2);
emmanuelchio 0:210b5ba62803 236 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 237 putcharTX(y2);
emmanuelchio 0:210b5ba62803 238 putcharTX(x3>>8);
emmanuelchio 0:210b5ba62803 239 putcharTX(x3);
emmanuelchio 0:210b5ba62803 240 putcharTX(y3>>8);
emmanuelchio 0:210b5ba62803 241 putcharTX(y3);
emmanuelchio 0:210b5ba62803 242 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 243 putcharTX(colour);
emmanuelchio 0:210b5ba62803 244 putcharTX(fill);
emmanuelchio 0:210b5ba62803 245 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 246 }
emmanuelchio 1:0bf6fac21233 247
emmanuelchio 0:210b5ba62803 248 SMARTGPUREPLY SMARTGPU2::drawArc(AXIS x, AXIS y, RADIUS radiusx, RADIUS radiusy, ARCQUADRANT quadrant, COLOUR colour, FILLGEOM fill){ //Draw an Arc on the screen
emmanuelchio 0:210b5ba62803 249 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 250 putcharTX('A'); //Arc
emmanuelchio 0:210b5ba62803 251 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 252 putcharTX(x);
emmanuelchio 0:210b5ba62803 253 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 254 putcharTX(y);
emmanuelchio 0:210b5ba62803 255 putcharTX(radiusx>>8);
emmanuelchio 0:210b5ba62803 256 putcharTX(radiusx);
emmanuelchio 0:210b5ba62803 257 putcharTX(radiusy>>8);
emmanuelchio 0:210b5ba62803 258 putcharTX(radiusy);
emmanuelchio 0:210b5ba62803 259 putcharTX(quadrant);
emmanuelchio 0:210b5ba62803 260 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 261 putcharTX(colour);
emmanuelchio 0:210b5ba62803 262 putcharTX(fill);
emmanuelchio 0:210b5ba62803 263 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 264 }
emmanuelchio 1:0bf6fac21233 265
emmanuelchio 0:210b5ba62803 266 SMARTGPUREPLY SMARTGPU2::drawCircle(AXIS x, AXIS y, RADIUS radius, COLOUR colour, FILLGEOM fill){ //Draw a circle on the screen
emmanuelchio 0:210b5ba62803 267 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 268 putcharTX('C'); //Circle
emmanuelchio 0:210b5ba62803 269 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 270 putcharTX(x);
emmanuelchio 0:210b5ba62803 271 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 272 putcharTX(y);
emmanuelchio 0:210b5ba62803 273 putcharTX(radius>>8);
emmanuelchio 0:210b5ba62803 274 putcharTX(radius);
emmanuelchio 0:210b5ba62803 275 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 276 putcharTX(colour);
emmanuelchio 0:210b5ba62803 277 putcharTX(fill);
emmanuelchio 0:210b5ba62803 278 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 279 }
emmanuelchio 1:0bf6fac21233 280
emmanuelchio 0:210b5ba62803 281 SMARTGPUREPLY SMARTGPU2::drawEllipse(AXIS x, AXIS y, RADIUS radiusx, RADIUS radiusy, COLOUR colour, FILLGEOM fill){ //Draw an Ellipse on the screen
emmanuelchio 0:210b5ba62803 282 putcharTX('G'); //Geometric function
emmanuelchio 0:210b5ba62803 283 putcharTX('E'); //Ellipse
emmanuelchio 0:210b5ba62803 284 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 285 putcharTX(x);
emmanuelchio 0:210b5ba62803 286 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 287 putcharTX(y);
emmanuelchio 0:210b5ba62803 288 putcharTX(radiusx>>8);
emmanuelchio 0:210b5ba62803 289 putcharTX(radiusx);
emmanuelchio 0:210b5ba62803 290 putcharTX(radiusy>>8);
emmanuelchio 0:210b5ba62803 291 putcharTX(radiusy);
emmanuelchio 0:210b5ba62803 292 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 293 putcharTX(colour);
emmanuelchio 0:210b5ba62803 294 putcharTX(fill);
emmanuelchio 0:210b5ba62803 295 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 296 }
emmanuelchio 1:0bf6fac21233 297
emmanuelchio 1:0bf6fac21233 298
emmanuelchio 0:210b5ba62803 299 /****************************************************************/
emmanuelchio 0:210b5ba62803 300 //String Functions
emmanuelchio 0:210b5ba62803 301 /****************************************************************/
emmanuelchio 0:210b5ba62803 302 SMARTGPUREPLY SMARTGPU2::putLetter(AXIS x, AXIS y, char letter, AXIS *xUpdated){ //Draw a letter on the screen on X,Y coords, returns updated value of X axis in xUpdated variable
emmanuelchio 0:210b5ba62803 303 unsigned int xUp = 0; //variable to store the updated position of X axis after command is called/char is printed
emmanuelchio 0:210b5ba62803 304
emmanuelchio 0:210b5ba62803 305 putcharTX('S'); //String Function
emmanuelchio 0:210b5ba62803 306 putcharTX('L'); //Letter - a simple letter
emmanuelchio 0:210b5ba62803 307 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 308 putcharTX(x);
emmanuelchio 0:210b5ba62803 309 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 310 putcharTX(y);
emmanuelchio 0:210b5ba62803 311 putcharTX(letter);
emmanuelchio 0:210b5ba62803 312
emmanuelchio 1:0bf6fac21233 313 ((unsigned char*)&xUp)[1]=getcharRX();
emmanuelchio 1:0bf6fac21233 314 ((unsigned char*)&xUp)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 315 *xUpdated = xUp;
emmanuelchio 0:210b5ba62803 316 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 317 }
emmanuelchio 1:0bf6fac21233 318
emmanuelchio 0:210b5ba62803 319 SMARTGPUREPLY SMARTGPU2::printNumber(AXIS x, AXIS y, float number){ //Prints a float number on screen
emmanuelchio 0:210b5ba62803 320 putcharTX('S'); //String Function
emmanuelchio 0:210b5ba62803 321 putcharTX('N'); //Number
emmanuelchio 0:210b5ba62803 322 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 323 putcharTX(x);
emmanuelchio 0:210b5ba62803 324 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 325 putcharTX(y);
emmanuelchio 0:210b5ba62803 326 putcharTX(((char *)&number)[3]);
emmanuelchio 0:210b5ba62803 327 putcharTX(((char *)&number)[2]);
emmanuelchio 0:210b5ba62803 328 putcharTX(((char *)&number)[1]);
emmanuelchio 0:210b5ba62803 329 putcharTX(((char *)&number)[0]);
emmanuelchio 0:210b5ba62803 330 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 331 }
emmanuelchio 1:0bf6fac21233 332
emmanuelchio 0:210b5ba62803 333 SMARTGPUREPLY SMARTGPU2::string(AXIS x1, AXIS y1, AXIS x2, AXIS y2, char text[], NUMBEROFBYTES *SPB){ //Draw a string on the screen on defined Text Box coords, and stores the successfully printed bytes on SPB
emmanuelchio 0:210b5ba62803 334 unsigned int counter=0, sp=0;
emmanuelchio 0:210b5ba62803 335
emmanuelchio 0:210b5ba62803 336 putcharTX('S'); //String Function
emmanuelchio 0:210b5ba62803 337 putcharTX('S'); //String
emmanuelchio 0:210b5ba62803 338 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 339 putcharTX(x1);
emmanuelchio 0:210b5ba62803 340 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 341 putcharTX(y1);
emmanuelchio 0:210b5ba62803 342 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 343 putcharTX(x2);
emmanuelchio 0:210b5ba62803 344 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 345 putcharTX(y2);
emmanuelchio 0:210b5ba62803 346 while(1){
emmanuelchio 0:210b5ba62803 347 putcharTX(text[counter]);
emmanuelchio 0:210b5ba62803 348 if(text[counter]==0x00){
emmanuelchio 0:210b5ba62803 349 break;
emmanuelchio 0:210b5ba62803 350 }
emmanuelchio 0:210b5ba62803 351 counter++;
emmanuelchio 0:210b5ba62803 352 }
emmanuelchio 1:0bf6fac21233 353
emmanuelchio 1:0bf6fac21233 354 ((unsigned char*)&sp)[1]=getcharRX();
emmanuelchio 1:0bf6fac21233 355 ((unsigned char*)&sp)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 356 *SPB = sp;
emmanuelchio 0:210b5ba62803 357 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 358 }
emmanuelchio 1:0bf6fac21233 359
emmanuelchio 0:210b5ba62803 360 SMARTGPUREPLY SMARTGPU2::stringSD(AXIS x1, AXIS y1, AXIS x2, AXIS y2, NUMBEROFBYTES BS, NUMBEROFBYTES BR, FILENAME name, NUMBEROFBYTES *SPB){ //Draw a String from a text file stored on the micro SD card
emmanuelchio 0:210b5ba62803 361 unsigned char counter=0, sp=0;
emmanuelchio 0:210b5ba62803 362
emmanuelchio 0:210b5ba62803 363 putcharTX('S'); //String function
emmanuelchio 0:210b5ba62803 364 putcharTX('F'); //text File from SD
emmanuelchio 0:210b5ba62803 365 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 366 putcharTX(x1);
emmanuelchio 0:210b5ba62803 367 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 368 putcharTX(y1);
emmanuelchio 0:210b5ba62803 369 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 370 putcharTX(x2);
emmanuelchio 0:210b5ba62803 371 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 372 putcharTX(y2);
emmanuelchio 0:210b5ba62803 373 putcharTX(BS>>8);
emmanuelchio 0:210b5ba62803 374 putcharTX(BS);
emmanuelchio 0:210b5ba62803 375 putcharTX(BR>>8);
emmanuelchio 0:210b5ba62803 376 putcharTX(BR);
emmanuelchio 0:210b5ba62803 377 while(1){
emmanuelchio 0:210b5ba62803 378 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 379 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 380 break;
emmanuelchio 0:210b5ba62803 381 }
emmanuelchio 0:210b5ba62803 382 counter++;
emmanuelchio 0:210b5ba62803 383 }
emmanuelchio 1:0bf6fac21233 384
emmanuelchio 1:0bf6fac21233 385 ((unsigned char*)&sp)[1]=getcharRX();
emmanuelchio 1:0bf6fac21233 386 ((unsigned char*)&sp)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 387 *SPB = sp;
emmanuelchio 0:210b5ba62803 388 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 389 }
emmanuelchio 1:0bf6fac21233 390
emmanuelchio 0:210b5ba62803 391 SMARTGPUREPLY SMARTGPU2::setTextColour(COLOUR colour){ //Set the default text colour for letters and strings
emmanuelchio 0:210b5ba62803 392 putcharTX('S'); //String Function
emmanuelchio 0:210b5ba62803 393 putcharTX('C'); //Config
emmanuelchio 0:210b5ba62803 394 putcharTX('T'); //Text
emmanuelchio 0:210b5ba62803 395 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 396 putcharTX(colour);
emmanuelchio 0:210b5ba62803 397 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 398 }
emmanuelchio 1:0bf6fac21233 399
emmanuelchio 0:210b5ba62803 400 SMARTGPUREPLY SMARTGPU2::setTextBackColour(COLOUR colour){ //Set the default text background colour for letters and strings
emmanuelchio 0:210b5ba62803 401 putcharTX('S'); //String Function
emmanuelchio 0:210b5ba62803 402 putcharTX('C'); //Config
emmanuelchio 0:210b5ba62803 403 putcharTX('B'); //Background
emmanuelchio 0:210b5ba62803 404 putcharTX(colour>>8);
emmanuelchio 0:210b5ba62803 405 putcharTX(colour);
emmanuelchio 0:210b5ba62803 406 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 407 }
emmanuelchio 1:0bf6fac21233 408
emmanuelchio 0:210b5ba62803 409 SMARTGPUREPLY SMARTGPU2::setTextSize(FONTSIZE size){ //Set the default text size for letters and strings
emmanuelchio 0:210b5ba62803 410 putcharTX('S'); //String Function
emmanuelchio 0:210b5ba62803 411 putcharTX('C'); //Config
emmanuelchio 0:210b5ba62803 412 putcharTX('S'); //Size
emmanuelchio 0:210b5ba62803 413 putcharTX(size);
emmanuelchio 0:210b5ba62803 414 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 415 }
emmanuelchio 1:0bf6fac21233 416
emmanuelchio 0:210b5ba62803 417 SMARTGPUREPLY SMARTGPU2::setTextBackFill(TEXTBACKGROUNDCOLOURFILLUNFILL fillState){ //Set the default text FILL or UNFILL background letters and strings
emmanuelchio 0:210b5ba62803 418 putcharTX('S'); //String Function
emmanuelchio 0:210b5ba62803 419 putcharTX('C'); //Config
emmanuelchio 0:210b5ba62803 420 putcharTX('F'); //Fill
emmanuelchio 0:210b5ba62803 421 putcharTX(fillState);
emmanuelchio 0:210b5ba62803 422 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 423 }
emmanuelchio 1:0bf6fac21233 424
emmanuelchio 1:0bf6fac21233 425
emmanuelchio 0:210b5ba62803 426 /****************************************************************/
emmanuelchio 0:210b5ba62803 427 //Image Functions
emmanuelchio 0:210b5ba62803 428 /****************************************************************/
emmanuelchio 0:210b5ba62803 429 SMARTGPUREPLY SMARTGPU2::drawIcon(AXIS x1, AXIS y1, AXIS x2, AXIS y2, char icon[]){ //Send and image or icon pixel by pixel to SMARTGPU2, 16bit(2 bytes) each pixel RGB565
emmanuelchio 0:210b5ba62803 430 unsigned int i,j,k=0;
emmanuelchio 0:210b5ba62803 431
emmanuelchio 0:210b5ba62803 432 putcharTX('I'); //Image function
emmanuelchio 0:210b5ba62803 433 putcharTX('I'); //Icon image received pixel by pixel
emmanuelchio 0:210b5ba62803 434 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 435 putcharTX(x1);
emmanuelchio 0:210b5ba62803 436 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 437 putcharTX(y1);
emmanuelchio 0:210b5ba62803 438 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 439 putcharTX(x2);
emmanuelchio 0:210b5ba62803 440 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 441 putcharTX(y2);
emmanuelchio 0:210b5ba62803 442 //Send icon buffer pixel by pixel
emmanuelchio 0:210b5ba62803 443 for(j=0;j<=(y2-y1);j++){
emmanuelchio 0:210b5ba62803 444 for(i=0;i<=(x2-x1);i++){
emmanuelchio 0:210b5ba62803 445 putcharTX(icon[k++]); //16bit per pixel - Upper 8bits part
emmanuelchio 0:210b5ba62803 446 putcharTX(icon[k++]); //16bit per pixel - Lower 8bits part
emmanuelchio 0:210b5ba62803 447 }
emmanuelchio 0:210b5ba62803 448 }
emmanuelchio 0:210b5ba62803 449
emmanuelchio 0:210b5ba62803 450 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 451 }
emmanuelchio 1:0bf6fac21233 452
emmanuelchio 0:210b5ba62803 453 SMARTGPUREPLY SMARTGPU2::imageBMPSD(AXIS x, AXIS y, FILENAME name){ //Draw an Image stored on the micro SD card on the screen, at X,Y top right corner coordinates
emmanuelchio 0:210b5ba62803 454 unsigned char counter=0;
emmanuelchio 0:210b5ba62803 455
emmanuelchio 0:210b5ba62803 456 putcharTX('I'); //Image function
emmanuelchio 0:210b5ba62803 457 putcharTX('B'); //BMP from SD card
emmanuelchio 0:210b5ba62803 458 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 459 putcharTX(x);
emmanuelchio 0:210b5ba62803 460 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 461 putcharTX(y);
emmanuelchio 0:210b5ba62803 462 while(1){
emmanuelchio 0:210b5ba62803 463 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 464 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 465 break;
emmanuelchio 0:210b5ba62803 466 }
emmanuelchio 0:210b5ba62803 467 counter++;
emmanuelchio 0:210b5ba62803 468 }
emmanuelchio 0:210b5ba62803 469 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 470 }
emmanuelchio 1:0bf6fac21233 471
emmanuelchio 0:210b5ba62803 472 SMARTGPUREPLY SMARTGPU2::imageJPGSD(AXIS x, AXIS y, JPGSCALEFACTOR scaleFactor, FILENAME name){ //Draw an Image stored on the micro SD card on the screen, at X,Y top right corner coordinates
emmanuelchio 0:210b5ba62803 473 unsigned char counter=0;
emmanuelchio 0:210b5ba62803 474
emmanuelchio 0:210b5ba62803 475 putcharTX('I'); //Image function
emmanuelchio 0:210b5ba62803 476 putcharTX('J'); //JPG from SD card
emmanuelchio 0:210b5ba62803 477 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 478 putcharTX(x);
emmanuelchio 0:210b5ba62803 479 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 480 putcharTX(y);
emmanuelchio 0:210b5ba62803 481 putcharTX(scaleFactor);
emmanuelchio 0:210b5ba62803 482 while(1){
emmanuelchio 0:210b5ba62803 483 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 484 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 485 break;
emmanuelchio 0:210b5ba62803 486 }
emmanuelchio 0:210b5ba62803 487 counter++;
emmanuelchio 0:210b5ba62803 488 }
emmanuelchio 0:210b5ba62803 489 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 490 }
emmanuelchio 1:0bf6fac21233 491
emmanuelchio 0:210b5ba62803 492 //Reads a defined x1,x1,x2,y2 box of the SmartGPU display, and returns it pixel by pixel in RGB 888 format, 1 byte per colour, 3 bytes per pixel
emmanuelchio 0:210b5ba62803 493 SMARTGPUREPLY SMARTGPU2::getImageFromMemory(AXIS x1, AXIS y1, AXIS x2, AXIS y2, char buffer[]){ //Read the internal memory of the SMARTGPU2, This command returns 24bit pixels (3 bytes)
emmanuelchio 0:210b5ba62803 494 unsigned int i,j,k=0;
emmanuelchio 0:210b5ba62803 495
emmanuelchio 0:210b5ba62803 496 putcharTX('I'); //Image function
emmanuelchio 0:210b5ba62803 497 putcharTX('M'); //from SmartGPU internal Display Memory
emmanuelchio 0:210b5ba62803 498 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 499 putcharTX(x1);
emmanuelchio 0:210b5ba62803 500 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 501 putcharTX(y1);
emmanuelchio 0:210b5ba62803 502 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 503 putcharTX(x2);
emmanuelchio 0:210b5ba62803 504 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 505 putcharTX(y2);
emmanuelchio 0:210b5ba62803 506 //receive all the pixels
emmanuelchio 0:210b5ba62803 507 for(j=0;j<=(y2-y1);j++){
emmanuelchio 0:210b5ba62803 508 for(i=0;i<=(x2-x1);i++){
emmanuelchio 0:210b5ba62803 509 buffer[k++]=getcharRX(); //Red
emmanuelchio 0:210b5ba62803 510 buffer[k++]=getcharRX(); //Green
emmanuelchio 0:210b5ba62803 511 buffer[k++]=getcharRX(); //Blue
emmanuelchio 0:210b5ba62803 512 }
emmanuelchio 0:210b5ba62803 513 }
emmanuelchio 0:210b5ba62803 514 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 515 }
emmanuelchio 1:0bf6fac21233 516
emmanuelchio 0:210b5ba62803 517 //takes a screenshot of SmartGPU2 display and stores it in the microSD card with consecutive names Screenshot000.bmp, Screenshot001.bmp, etc
emmanuelchio 0:210b5ba62803 518 SMARTGPUREPLY SMARTGPU2::screenshot(){
emmanuelchio 0:210b5ba62803 519 putcharTX('I'); //Image function
emmanuelchio 0:210b5ba62803 520 putcharTX('S'); //Screenshot
emmanuelchio 0:210b5ba62803 521 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 522 }
emmanuelchio 1:0bf6fac21233 523
emmanuelchio 1:0bf6fac21233 524
emmanuelchio 0:210b5ba62803 525 /****************************************************************/
emmanuelchio 0:210b5ba62803 526 //Video Functions
emmanuelchio 0:210b5ba62803 527 /****************************************************************/
emmanuelchio 0:210b5ba62803 528 //Allocates a ".vid" video stored on the micro SD card with the given filename name
emmanuelchio 0:210b5ba62803 529 SMARTGPUREPLY SMARTGPU2::allocateVideoSD(FILENAME name, VIDDATA *videoData){
emmanuelchio 0:210b5ba62803 530 unsigned int wid=0, hei=0, fra=0, tot=0;
emmanuelchio 0:210b5ba62803 531 unsigned char counter=0;
emmanuelchio 0:210b5ba62803 532
emmanuelchio 0:210b5ba62803 533 putcharTX('V'); //Video function
emmanuelchio 0:210b5ba62803 534 putcharTX('A'); //Allocate
emmanuelchio 0:210b5ba62803 535 while(1){ //Send Video Name
emmanuelchio 0:210b5ba62803 536 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 537 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 538 break;
emmanuelchio 0:210b5ba62803 539 }
emmanuelchio 0:210b5ba62803 540 counter++;
emmanuelchio 0:210b5ba62803 541 }
emmanuelchio 1:0bf6fac21233 542
emmanuelchio 0:210b5ba62803 543 ((unsigned char *) &wid)[1]=getcharRX(); //get video width
emmanuelchio 0:210b5ba62803 544 ((unsigned char *) &wid)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 545 ((unsigned char *) &hei)[1]=getcharRX(); //get video height
emmanuelchio 0:210b5ba62803 546 ((unsigned char *) &hei)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 547 ((unsigned char *) &fra)[1]=getcharRX(); //get video frames per second
emmanuelchio 0:210b5ba62803 548 ((unsigned char *) &fra)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 549 ((unsigned char *) &tot)[1]=getcharRX(); //get video total frames
emmanuelchio 0:210b5ba62803 550 ((unsigned char *) &tot)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 551 videoData->width = wid;
emmanuelchio 0:210b5ba62803 552 videoData->height = hei;
emmanuelchio 0:210b5ba62803 553 videoData->framesPerSec = fra;
emmanuelchio 0:210b5ba62803 554 videoData->totalFrames = tot;
emmanuelchio 0:210b5ba62803 555 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 556 }
emmanuelchio 1:0bf6fac21233 557
emmanuelchio 0:210b5ba62803 558 //deAllocates a ".vid" video previously allocated, must be called when no more calls to video will be done
emmanuelchio 0:210b5ba62803 559 SMARTGPUREPLY SMARTGPU2::freeVideoSD(){
emmanuelchio 0:210b5ba62803 560 putcharTX('V'); //Video function
emmanuelchio 0:210b5ba62803 561 putcharTX('D'); //DeAllocate
emmanuelchio 0:210b5ba62803 562 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 563 }
emmanuelchio 1:0bf6fac21233 564
emmanuelchio 0:210b5ba62803 565 //Sets a video start Frame position, this function can be used to FastForward video or Rewing, returns 'F' if invalid position
emmanuelchio 0:210b5ba62803 566 SMARTGPUREPLY SMARTGPU2::setFrameVideoSD(unsigned int startFrame){
emmanuelchio 0:210b5ba62803 567 putcharTX('V'); //Video function
emmanuelchio 0:210b5ba62803 568 putcharTX('F'); //set Video Frame
emmanuelchio 0:210b5ba62803 569 putcharTX(startFrame>>8);
emmanuelchio 0:210b5ba62803 570 putcharTX(startFrame);
emmanuelchio 0:210b5ba62803 571 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 572 }
emmanuelchio 1:0bf6fac21233 573
emmanuelchio 0:210b5ba62803 574 //Plays a previously allocated ".vid" video stored on mSD card on X,Y top right corner coordinates, starting from current Video Frame and plays framesToPlay
emmanuelchio 0:210b5ba62803 575 SMARTGPUREPLY SMARTGPU2::playVideoSD(AXIS x, AXIS y, unsigned int framesToPlay){ //frames to play from current video Frame
emmanuelchio 0:210b5ba62803 576 putcharTX('V'); //Video function
emmanuelchio 0:210b5ba62803 577 putcharTX('P'); //Play
emmanuelchio 0:210b5ba62803 578 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 579 putcharTX(x);
emmanuelchio 0:210b5ba62803 580 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 581 putcharTX(y);
emmanuelchio 0:210b5ba62803 582 putcharTX(framesToPlay>>8);
emmanuelchio 0:210b5ba62803 583 putcharTX(framesToPlay);
emmanuelchio 0:210b5ba62803 584 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 585 }
emmanuelchio 0:210b5ba62803 586
emmanuelchio 1:0bf6fac21233 587
emmanuelchio 0:210b5ba62803 588 /****************************************************************/
emmanuelchio 0:210b5ba62803 589 //Audio Functions
emmanuelchio 0:210b5ba62803 590 /****************************************************************/
emmanuelchio 0:210b5ba62803 591 SMARTGPUREPLY SMARTGPU2::initDACAudio(STATE state){
emmanuelchio 0:210b5ba62803 592 putcharTX('A'); //Audio Function
emmanuelchio 0:210b5ba62803 593 putcharTX('I'); //Init - Deinit DACs
emmanuelchio 0:210b5ba62803 594 putcharTX(state); //Enable/Disable
emmanuelchio 0:210b5ba62803 595 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 596 }
emmanuelchio 1:0bf6fac21233 597
emmanuelchio 0:210b5ba62803 598 SMARTGPUREPLY SMARTGPU2::audioBoost(STATE state){
emmanuelchio 0:210b5ba62803 599 putcharTX('A'); //Audio Function
emmanuelchio 0:210b5ba62803 600 putcharTX('B'); //Boost
emmanuelchio 0:210b5ba62803 601 putcharTX(state); //Enable/Disable
emmanuelchio 0:210b5ba62803 602 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 603 }
emmanuelchio 1:0bf6fac21233 604
emmanuelchio 0:210b5ba62803 605 SMARTGPUREPLY SMARTGPU2::getWAVPlayState(STATE* state){ //returns ENABLE or DISABLE if any file is playing
emmanuelchio 0:210b5ba62803 606 putcharTX('A'); //Audio Function
emmanuelchio 0:210b5ba62803 607 putcharTX('G'); //Get playing File status
emmanuelchio 0:210b5ba62803 608 *state = (STATE)getcharRX(); //Get state
emmanuelchio 0:210b5ba62803 609 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 610 }
emmanuelchio 1:0bf6fac21233 611
emmanuelchio 0:210b5ba62803 612 SMARTGPUREPLY SMARTGPU2::playWAVFile(FILENAME name, unsigned int* seconds){ //returns in "seconds" variable the song duration in seconds
emmanuelchio 0:210b5ba62803 613 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 614 unsigned int secs=0;
emmanuelchio 0:210b5ba62803 615
emmanuelchio 0:210b5ba62803 616 putcharTX('A'); //Audio Function
emmanuelchio 0:210b5ba62803 617 putcharTX('P'); //Play WAV file
emmanuelchio 0:210b5ba62803 618 while(1){ //Send file name
emmanuelchio 0:210b5ba62803 619 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 620 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 621 break;
emmanuelchio 0:210b5ba62803 622 }
emmanuelchio 0:210b5ba62803 623 counter++;
emmanuelchio 0:210b5ba62803 624 }
emmanuelchio 1:0bf6fac21233 625
emmanuelchio 0:210b5ba62803 626 ((unsigned char *) &secs)[1]=getcharRX();
emmanuelchio 0:210b5ba62803 627 ((unsigned char *) &secs)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 628 *seconds = secs;
emmanuelchio 0:210b5ba62803 629 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 630 }
emmanuelchio 1:0bf6fac21233 631
emmanuelchio 0:210b5ba62803 632 SMARTGPUREPLY SMARTGPU2::pauseWAVFile(){ //pauses a playing file, returns 'F' if no file is playing
emmanuelchio 0:210b5ba62803 633 putcharTX('A'); //Audio Function
emmanuelchio 0:210b5ba62803 634 putcharTX('W'); //Pause file
emmanuelchio 0:210b5ba62803 635 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 636 }
emmanuelchio 1:0bf6fac21233 637
emmanuelchio 0:210b5ba62803 638 SMARTGPUREPLY SMARTGPU2::stopWAVFile(){
emmanuelchio 0:210b5ba62803 639 putcharTX('A'); //Audio Function
emmanuelchio 0:210b5ba62803 640 putcharTX('S'); //Stop playing file
emmanuelchio 0:210b5ba62803 641 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 642 }
emmanuelchio 1:0bf6fac21233 643
emmanuelchio 0:210b5ba62803 644 SMARTGPUREPLY SMARTGPU2::advanceWAVFile(unsigned int seconds){ //advance to the file to the given seconds parameter
emmanuelchio 0:210b5ba62803 645 putcharTX('A'); //Audio Function
emmanuelchio 0:210b5ba62803 646 putcharTX('A'); //Advance file
emmanuelchio 0:210b5ba62803 647 putcharTX(seconds>>8);
emmanuelchio 0:210b5ba62803 648 putcharTX(seconds);
emmanuelchio 0:210b5ba62803 649 return (SMARTGPUREPLY)getcharRX(); //returns 'F' if no file is playing or if no seconds position exists, in this case file will stop playing
emmanuelchio 0:210b5ba62803 650 }
emmanuelchio 1:0bf6fac21233 651
emmanuelchio 0:210b5ba62803 652 SMARTGPUREPLY SMARTGPU2::setVolumeWAV(unsigned char volume){
emmanuelchio 0:210b5ba62803 653 putcharTX('A'); //Audio Function
emmanuelchio 0:210b5ba62803 654 putcharTX('V'); //Volume
emmanuelchio 0:210b5ba62803 655 putcharTX(volume);
emmanuelchio 0:210b5ba62803 656 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 657 }
emmanuelchio 1:0bf6fac21233 658
emmanuelchio 1:0bf6fac21233 659
emmanuelchio 0:210b5ba62803 660 /****************************************************************/
emmanuelchio 0:210b5ba62803 661 //Real Time Clock Functions
emmanuelchio 0:210b5ba62803 662 /****************************************************************/
emmanuelchio 0:210b5ba62803 663 SMARTGPUREPLY SMARTGPU2::setupRTC(STATE *state){
emmanuelchio 0:210b5ba62803 664 putcharTX('R'); //RTC function - Real Time Clock
emmanuelchio 0:210b5ba62803 665 putcharTX('S'); //Setup RTC
emmanuelchio 0:210b5ba62803 666 *state = (STATE)getcharRX(); //Get state
emmanuelchio 0:210b5ba62803 667 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 668 }
emmanuelchio 0:210b5ba62803 669
emmanuelchio 0:210b5ba62803 670 SMARTGPUREPLY SMARTGPU2::getRTCTimeDate(TIME *timeDate){
emmanuelchio 0:210b5ba62803 671 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 672
emmanuelchio 0:210b5ba62803 673 putcharTX('R'); //RTC function - Real Time Clock
emmanuelchio 0:210b5ba62803 674 putcharTX('P'); //Parameters
emmanuelchio 0:210b5ba62803 675 putcharTX('G'); //Get
emmanuelchio 0:210b5ba62803 676 timeDate->hour = getcharRX(); //hour
emmanuelchio 0:210b5ba62803 677 timeDate->minute = getcharRX(); //min
emmanuelchio 0:210b5ba62803 678 timeDate->second = getcharRX(); //sec
emmanuelchio 0:210b5ba62803 679 timeDate->day = getcharRX(); //day
emmanuelchio 0:210b5ba62803 680 timeDate->month = getcharRX(); //month
emmanuelchio 0:210b5ba62803 681 ((unsigned char*)&counter)[1] = getcharRX(); //year upper
emmanuelchio 0:210b5ba62803 682 ((unsigned char*)&counter)[0] = getcharRX(); //year lower
emmanuelchio 0:210b5ba62803 683 timeDate->year = counter; //year
emmanuelchio 0:210b5ba62803 684 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 685 }
emmanuelchio 0:210b5ba62803 686
emmanuelchio 0:210b5ba62803 687 SMARTGPUREPLY SMARTGPU2::setRTCTimeDate(TIME *timeDate){
emmanuelchio 0:210b5ba62803 688 putcharTX('R'); //RTC function - Real Time Clock
emmanuelchio 0:210b5ba62803 689 putcharTX('P'); //Parameters
emmanuelchio 0:210b5ba62803 690 putcharTX('S'); //Set
emmanuelchio 0:210b5ba62803 691 putcharTX(timeDate->hour); //hour
emmanuelchio 0:210b5ba62803 692 putcharTX(timeDate->minute); //min
emmanuelchio 0:210b5ba62803 693 putcharTX(timeDate->second); //sec
emmanuelchio 0:210b5ba62803 694 putcharTX(timeDate->day); //day
emmanuelchio 0:210b5ba62803 695 putcharTX(timeDate->month); //month
emmanuelchio 0:210b5ba62803 696 putcharTX(timeDate->year>>8);//year upper
emmanuelchio 0:210b5ba62803 697 putcharTX(timeDate->year); //year lower
emmanuelchio 0:210b5ba62803 698 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 699 }
emmanuelchio 0:210b5ba62803 700
emmanuelchio 0:210b5ba62803 701
emmanuelchio 0:210b5ba62803 702 /****************************************************************/
emmanuelchio 0:210b5ba62803 703 //Objects Functions
emmanuelchio 0:210b5ba62803 704 /****************************************************************/
emmanuelchio 0:210b5ba62803 705 SMARTGPUREPLY SMARTGPU2::objButton(AXIS x1, AXIS y1, AXIS x2, AXIS y2, ACTIVE activeState, char text[]){
emmanuelchio 0:210b5ba62803 706 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 707
emmanuelchio 0:210b5ba62803 708 putcharTX('O'); //Object function
emmanuelchio 0:210b5ba62803 709 putcharTX('B'); //Button
emmanuelchio 0:210b5ba62803 710 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 711 putcharTX(x1);
emmanuelchio 0:210b5ba62803 712 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 713 putcharTX(y1);
emmanuelchio 0:210b5ba62803 714 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 715 putcharTX(x2);
emmanuelchio 0:210b5ba62803 716 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 717 putcharTX(y2);
emmanuelchio 0:210b5ba62803 718 putcharTX(activeState);
emmanuelchio 0:210b5ba62803 719 while(1){ //Send button text
emmanuelchio 0:210b5ba62803 720 putcharTX(text[counter]);
emmanuelchio 0:210b5ba62803 721 if(text[counter]==0x00){
emmanuelchio 0:210b5ba62803 722 break;
emmanuelchio 0:210b5ba62803 723 }
emmanuelchio 0:210b5ba62803 724 counter++;
emmanuelchio 0:210b5ba62803 725 }
emmanuelchio 0:210b5ba62803 726 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 727 }
emmanuelchio 1:0bf6fac21233 728
emmanuelchio 0:210b5ba62803 729 SMARTGPUREPLY SMARTGPU2::objSwitch(AXIS x, AXIS y, unsigned int switchSize, ACTIVE activeState){
emmanuelchio 0:210b5ba62803 730 putcharTX('O'); //Object function
emmanuelchio 0:210b5ba62803 731 putcharTX('T'); //Switch
emmanuelchio 0:210b5ba62803 732 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 733 putcharTX(x);
emmanuelchio 0:210b5ba62803 734 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 735 putcharTX(y);
emmanuelchio 0:210b5ba62803 736 putcharTX(switchSize>>8);
emmanuelchio 0:210b5ba62803 737 putcharTX(switchSize);
emmanuelchio 0:210b5ba62803 738 putcharTX(activeState);
emmanuelchio 0:210b5ba62803 739 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 740 }
emmanuelchio 0:210b5ba62803 741
emmanuelchio 0:210b5ba62803 742 SMARTGPUREPLY SMARTGPU2::objCheckbox(AXIS x, AXIS y, unsigned int checkboxSize, ACTIVE activeState){
emmanuelchio 0:210b5ba62803 743 putcharTX('O'); //Object function
emmanuelchio 0:210b5ba62803 744 putcharTX('C'); //Checkbox
emmanuelchio 0:210b5ba62803 745 putcharTX(x>>8);
emmanuelchio 0:210b5ba62803 746 putcharTX(x);
emmanuelchio 0:210b5ba62803 747 putcharTX(y>>8);
emmanuelchio 0:210b5ba62803 748 putcharTX(y);
emmanuelchio 0:210b5ba62803 749 putcharTX(checkboxSize>>8);
emmanuelchio 0:210b5ba62803 750 putcharTX(checkboxSize);
emmanuelchio 0:210b5ba62803 751 putcharTX(activeState);
emmanuelchio 0:210b5ba62803 752 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 753 }
emmanuelchio 1:0bf6fac21233 754
emmanuelchio 0:210b5ba62803 755 SMARTGPUREPLY SMARTGPU2::objProgressBar(AXIS x1, AXIS y1, AXIS x2, AXIS y2, unsigned char progress){
emmanuelchio 0:210b5ba62803 756 putcharTX('O'); //Object function
emmanuelchio 0:210b5ba62803 757 putcharTX('P'); //Progress Bar
emmanuelchio 0:210b5ba62803 758 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 759 putcharTX(x1);
emmanuelchio 0:210b5ba62803 760 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 761 putcharTX(y1);
emmanuelchio 0:210b5ba62803 762 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 763 putcharTX(x2);
emmanuelchio 0:210b5ba62803 764 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 765 putcharTX(y2);
emmanuelchio 0:210b5ba62803 766 putcharTX(progress);
emmanuelchio 0:210b5ba62803 767 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 768 }
emmanuelchio 1:0bf6fac21233 769
emmanuelchio 0:210b5ba62803 770 SMARTGPUREPLY SMARTGPU2::objSlider(AXIS x1, AXIS y1, AXIS x2, AXIS y2, unsigned char position, unsigned char divisions, ORIENTATIONPARAMETER sliderOrientation){
emmanuelchio 0:210b5ba62803 771 putcharTX('O'); //Object function
emmanuelchio 0:210b5ba62803 772 putcharTX('L'); //Slider
emmanuelchio 0:210b5ba62803 773 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 774 putcharTX(x1);
emmanuelchio 0:210b5ba62803 775 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 776 putcharTX(y1);
emmanuelchio 0:210b5ba62803 777 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 778 putcharTX(x2);
emmanuelchio 0:210b5ba62803 779 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 780 putcharTX(y2);
emmanuelchio 0:210b5ba62803 781 putcharTX(position);
emmanuelchio 0:210b5ba62803 782 putcharTX(divisions);
emmanuelchio 0:210b5ba62803 783 putcharTX(sliderOrientation);
emmanuelchio 0:210b5ba62803 784 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 785 }
emmanuelchio 1:0bf6fac21233 786
emmanuelchio 0:210b5ba62803 787 SMARTGPUREPLY SMARTGPU2::objScrollBar(AXIS x1, AXIS y1, AXIS x2, AXIS y2, unsigned char position, unsigned char divisions, ORIENTATIONPARAMETER scrollBarOrientation, ACTIVE activeState){
emmanuelchio 0:210b5ba62803 788 putcharTX('O'); //Object function
emmanuelchio 0:210b5ba62803 789 putcharTX('S'); //Scroll bar
emmanuelchio 0:210b5ba62803 790 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 791 putcharTX(x1);
emmanuelchio 0:210b5ba62803 792 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 793 putcharTX(y1);
emmanuelchio 0:210b5ba62803 794 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 795 putcharTX(x2);
emmanuelchio 0:210b5ba62803 796 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 797 putcharTX(y2);
emmanuelchio 0:210b5ba62803 798 putcharTX(position);
emmanuelchio 0:210b5ba62803 799 putcharTX(divisions);
emmanuelchio 0:210b5ba62803 800 putcharTX(scrollBarOrientation);
emmanuelchio 0:210b5ba62803 801 putcharTX(activeState);
emmanuelchio 0:210b5ba62803 802 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 803 }
emmanuelchio 1:0bf6fac21233 804
emmanuelchio 0:210b5ba62803 805 SMARTGPUREPLY SMARTGPU2::objWindow(AXIS x1, AXIS y1, AXIS x2, AXIS y2, FONTSIZE textSize, WINDOWTYPE winType, char text[]){
emmanuelchio 0:210b5ba62803 806 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 807
emmanuelchio 0:210b5ba62803 808 putcharTX('O'); //Object function
emmanuelchio 0:210b5ba62803 809 putcharTX('W'); //Window
emmanuelchio 0:210b5ba62803 810 putcharTX(x1>>8);
emmanuelchio 0:210b5ba62803 811 putcharTX(x1);
emmanuelchio 0:210b5ba62803 812 putcharTX(y1>>8);
emmanuelchio 0:210b5ba62803 813 putcharTX(y1);
emmanuelchio 0:210b5ba62803 814 putcharTX(x2>>8);
emmanuelchio 0:210b5ba62803 815 putcharTX(x2);
emmanuelchio 0:210b5ba62803 816 putcharTX(y2>>8);
emmanuelchio 0:210b5ba62803 817 putcharTX(y2);
emmanuelchio 0:210b5ba62803 818 putcharTX(textSize);
emmanuelchio 0:210b5ba62803 819 putcharTX(winType);
emmanuelchio 0:210b5ba62803 820 while(1){ //Send button text
emmanuelchio 0:210b5ba62803 821 putcharTX(text[counter]);
emmanuelchio 0:210b5ba62803 822 if(text[counter]==0x00){
emmanuelchio 0:210b5ba62803 823 break;
emmanuelchio 0:210b5ba62803 824 }
emmanuelchio 0:210b5ba62803 825 counter++;
emmanuelchio 0:210b5ba62803 826 }
emmanuelchio 0:210b5ba62803 827 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 828 }
emmanuelchio 1:0bf6fac21233 829
emmanuelchio 1:0bf6fac21233 830
emmanuelchio 0:210b5ba62803 831 /****************************************************************/
emmanuelchio 0:210b5ba62803 832 //EEPROM-FLASH Functions - Refer to "smartGPU2 Command Set" to learn about READ-WRITE procedure.
emmanuelchio 0:210b5ba62803 833 /****************************************************************/
emmanuelchio 0:210b5ba62803 834 SMARTGPUREPLY SMARTGPU2::initClearEEPROMBuff(){
emmanuelchio 0:210b5ba62803 835 putcharTX('E'); //EEPROM function
emmanuelchio 0:210b5ba62803 836 putcharTX('I'); //Init/Clear EEPROM Buffer
emmanuelchio 0:210b5ba62803 837 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 838 }
emmanuelchio 1:0bf6fac21233 839
emmanuelchio 0:210b5ba62803 840 SMARTGPUREPLY SMARTGPU2::readEEPROMBuff(char buffer[], ADDRESS EEPROMbufferAddress, NUMBEROFBYTES bytesToRead, NUMBEROFBYTES *SRB){
emmanuelchio 0:210b5ba62803 841 unsigned int x=0, sr=0;
emmanuelchio 0:210b5ba62803 842
emmanuelchio 0:210b5ba62803 843 putcharTX('E'); //EEPROM function
emmanuelchio 0:210b5ba62803 844 putcharTX('R'); //Read N bytes from EEPROM buffer to received buffer[]
emmanuelchio 0:210b5ba62803 845 putcharTX(EEPROMbufferAddress>>8); //address to start reading from EEPROM buffer
emmanuelchio 0:210b5ba62803 846 putcharTX(EEPROMbufferAddress);
emmanuelchio 0:210b5ba62803 847 putcharTX(bytesToRead>>8);
emmanuelchio 0:210b5ba62803 848 putcharTX(bytesToRead);
emmanuelchio 0:210b5ba62803 849
emmanuelchio 0:210b5ba62803 850 for(x=0; x<bytesToRead; x++){
emmanuelchio 0:210b5ba62803 851 buffer[x]=getcharRX();
emmanuelchio 0:210b5ba62803 852 }
emmanuelchio 1:0bf6fac21233 853 ((unsigned char*)&sr)[1]=getcharRX();
emmanuelchio 1:0bf6fac21233 854 ((unsigned char*)&sr)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 855 *SRB = sr; //store succesfully read bytes
emmanuelchio 0:210b5ba62803 856 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 857 }
emmanuelchio 1:0bf6fac21233 858
emmanuelchio 0:210b5ba62803 859 SMARTGPUREPLY SMARTGPU2::writeEEPROMBuff(char buffer[], ADDRESS EEPROMbufferAddress, NUMBEROFBYTES bytesToWrite, NUMBEROFBYTES *SWB){
emmanuelchio 0:210b5ba62803 860 unsigned int x=0, sw=0;
emmanuelchio 0:210b5ba62803 861
emmanuelchio 0:210b5ba62803 862 putcharTX('E'); //EEPROM function
emmanuelchio 0:210b5ba62803 863 putcharTX('W'); //Write N bytes to EEPROM buffer from received buffer[]
emmanuelchio 0:210b5ba62803 864 putcharTX(EEPROMbufferAddress>>8); //address to start writting to EEPROM buffer
emmanuelchio 0:210b5ba62803 865 putcharTX(EEPROMbufferAddress);
emmanuelchio 0:210b5ba62803 866 putcharTX(bytesToWrite>>8);
emmanuelchio 0:210b5ba62803 867 putcharTX(bytesToWrite);
emmanuelchio 0:210b5ba62803 868 for(x=0; x<bytesToWrite; x++){
emmanuelchio 0:210b5ba62803 869 putcharTX(buffer[x]);
emmanuelchio 0:210b5ba62803 870 }
emmanuelchio 1:0bf6fac21233 871
emmanuelchio 1:0bf6fac21233 872 ((unsigned char*)&sw)[1]=getcharRX();
emmanuelchio 1:0bf6fac21233 873 ((unsigned char*)&sw)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 874 *SWB = sw; //store succesfully written bytes
emmanuelchio 0:210b5ba62803 875 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 876 }
emmanuelchio 1:0bf6fac21233 877
emmanuelchio 0:210b5ba62803 878 SMARTGPUREPLY SMARTGPU2::saveBuffToEEPROMPage(EEPROMPAGE page){
emmanuelchio 0:210b5ba62803 879 putcharTX('E'); //EEPROM function
emmanuelchio 0:210b5ba62803 880 putcharTX('S'); //Save EEPROM buffer contents to received EEPROM page#
emmanuelchio 0:210b5ba62803 881 putcharTX(page);
emmanuelchio 0:210b5ba62803 882 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 883 }
emmanuelchio 1:0bf6fac21233 884
emmanuelchio 0:210b5ba62803 885 SMARTGPUREPLY SMARTGPU2::fillBuffFromEEPROMPage(EEPROMPAGE page){
emmanuelchio 0:210b5ba62803 886 putcharTX('E'); //EEPROM function
emmanuelchio 0:210b5ba62803 887 putcharTX('F'); //Fill(copy) EEPROM buffer with received EEPROM page# contents
emmanuelchio 0:210b5ba62803 888 putcharTX(page);
emmanuelchio 0:210b5ba62803 889 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 890 }
emmanuelchio 1:0bf6fac21233 891
emmanuelchio 0:210b5ba62803 892 SMARTGPUREPLY SMARTGPU2::compBuffToEEPROMPage(EEPROMPAGE page, unsigned char *result){
emmanuelchio 0:210b5ba62803 893 putcharTX('E'); //EEPROM function
emmanuelchio 0:210b5ba62803 894 putcharTX('C'); //Compare EEPROM buffer contents with received EEPROM page#
emmanuelchio 0:210b5ba62803 895 putcharTX(page);
emmanuelchio 0:210b5ba62803 896 *result = getcharRX();
emmanuelchio 0:210b5ba62803 897 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 898 }
emmanuelchio 1:0bf6fac21233 899
emmanuelchio 0:210b5ba62803 900 SMARTGPUREPLY SMARTGPU2::eraseEEPROMPage(EEPROMPAGE page){
emmanuelchio 0:210b5ba62803 901 putcharTX('E'); //EEPROM function
emmanuelchio 0:210b5ba62803 902 putcharTX('E'); //Erase received EEPROM page#
emmanuelchio 0:210b5ba62803 903 putcharTX(page);
emmanuelchio 0:210b5ba62803 904 return (SMARTGPUREPLY)getcharRX();
emmanuelchio 0:210b5ba62803 905 }
emmanuelchio 1:0bf6fac21233 906
emmanuelchio 0:210b5ba62803 907
emmanuelchio 0:210b5ba62803 908 /****************************************************************/
emmanuelchio 0:210b5ba62803 909 //Touch Functions
emmanuelchio 0:210b5ba62803 910 //Those next Touch Functions return valid or invalid touch coordinates status(TOUCHREPLY) instead of ACK 'O' or NAK 'F'(SMARTGPUREPLY)
emmanuelchio 0:210b5ba62803 911 /****************************************************************/
emmanuelchio 0:210b5ba62803 912 TOUCHREPLY SMARTGPU2::touchScreen(POINT *point){ //Ask for a touch on the screen, if return==VALID, touch coords are valid and stored on xAxis and yAxis
emmanuelchio 0:210b5ba62803 913 unsigned int x=0,y=0;
emmanuelchio 0:210b5ba62803 914 putcharTX('T'); //Touch Function
emmanuelchio 0:210b5ba62803 915 putcharTX('S'); //Screen touch
emmanuelchio 0:210b5ba62803 916 ((unsigned char *) &x)[1]=getcharRX();
emmanuelchio 0:210b5ba62803 917 ((unsigned char *) &x)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 918 ((unsigned char *) &y)[1]=getcharRX();
emmanuelchio 0:210b5ba62803 919 ((unsigned char *) &y)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 920 if(getcharRX()=='O'){ //if touch coordinates are valid, assign values
emmanuelchio 0:210b5ba62803 921 point->x=x;
emmanuelchio 0:210b5ba62803 922 point->y=y;
emmanuelchio 0:210b5ba62803 923 return (TOUCHREPLY)VALID;
emmanuelchio 0:210b5ba62803 924 }
emmanuelchio 0:210b5ba62803 925 return (TOUCHREPLY)INVALID;
emmanuelchio 0:210b5ba62803 926 }
emmanuelchio 0:210b5ba62803 927
emmanuelchio 1:0bf6fac21233 928 #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 929 TOUCHREPLY SMARTGPU2::touchIcon(ICON *icon){ //Ask for a touch on the icons of the screen, if return==VALID, icon first letter is stored on icon
emmanuelchio 0:210b5ba62803 930 putcharTX('T'); //Touch Function
emmanuelchio 0:210b5ba62803 931 putcharTX('I'); //Icons touch
emmanuelchio 0:210b5ba62803 932 *icon = (ICON)getcharRX();
emmanuelchio 0:210b5ba62803 933 if(getcharRX()=='O'){ //if touch coordinates are valid
emmanuelchio 0:210b5ba62803 934 return (TOUCHREPLY)VALID;
emmanuelchio 0:210b5ba62803 935 }
emmanuelchio 0:210b5ba62803 936 return (TOUCHREPLY)INVALID;
emmanuelchio 0:210b5ba62803 937 }
emmanuelchio 1:0bf6fac21233 938 #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 939
emmanuelchio 1:0bf6fac21233 940 TOUCHREPLY SMARTGPU2::touchIcon(ICON *icon){ //Ask for a touch on the icons of the screen, if return==VALID, icon first letter is stored on icon
emmanuelchio 1:0bf6fac21233 941 putcharTX('T'); //Touch Function
emmanuelchio 1:0bf6fac21233 942 putcharTX('I'); //Icons touch
emmanuelchio 1:0bf6fac21233 943 *icon = (ICON)getcharRX();
emmanuelchio 1:0bf6fac21233 944 if(getcharRX()=='O'){ //if touch coordinates are valid
emmanuelchio 1:0bf6fac21233 945 return (TOUCHREPLY)VALID;
emmanuelchio 1:0bf6fac21233 946 }
emmanuelchio 1:0bf6fac21233 947 return (TOUCHREPLY)INVALID;
emmanuelchio 1:0bf6fac21233 948 }
emmanuelchio 1:0bf6fac21233 949 #endif
emmanuelchio 1:0bf6fac21233 950
emmanuelchio 1:0bf6fac21233 951
emmanuelchio 0:210b5ba62803 952 /****************************************************************/
emmanuelchio 0:210b5ba62803 953 //SD FAT management Functions
emmanuelchio 0:210b5ba62803 954 //Those next SDF - SD Functions return file execution status(FILERESULT) instead of ACK 'O' or NAK 'F'(SMARTGPUREPLY)
emmanuelchio 0:210b5ba62803 955 /****************************************************************/
emmanuelchio 0:210b5ba62803 956 FILERESULT SMARTGPU2::SDFgetList(unsigned int *numOfDirs, unsigned int *numOfFiles){ //get number of dirs and files
emmanuelchio 0:210b5ba62803 957 FILERESULT res;
emmanuelchio 0:210b5ba62803 958 unsigned int dirs=0, files=0;
emmanuelchio 0:210b5ba62803 959
emmanuelchio 0:210b5ba62803 960 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 961 putcharTX('L'); //List/count dirs and files
emmanuelchio 0:210b5ba62803 962
emmanuelchio 0:210b5ba62803 963 ((unsigned char *) &dirs)[1]= getcharRX(); //Get Upper part
emmanuelchio 0:210b5ba62803 964 ((unsigned char *) &dirs)[0]= getcharRX(); //Get Lower part
emmanuelchio 0:210b5ba62803 965 ((unsigned char *) &files)[1]= getcharRX(); //Get Upper part
emmanuelchio 0:210b5ba62803 966 ((unsigned char *) &files)[0]= getcharRX(); //Get Lower part
emmanuelchio 0:210b5ba62803 967 *numOfDirs=dirs;
emmanuelchio 0:210b5ba62803 968 *numOfFiles=files;
emmanuelchio 0:210b5ba62803 969 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 970 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 971 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 972 }
emmanuelchio 1:0bf6fac21233 973
emmanuelchio 0:210b5ba62803 974 FILERESULT SMARTGPU2::SDFgetDirName(ITEMNUMBER itemNumber, FILENAME name){ //searches for the "itemNumber" on the SD current folder and updates the buffer with the Dir name ended with NULL character
emmanuelchio 0:210b5ba62803 975 FILERESULT res;
emmanuelchio 0:210b5ba62803 976 unsigned int i=0;
emmanuelchio 1:0bf6fac21233 977
emmanuelchio 0:210b5ba62803 978 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 979 putcharTX('G'); //Get name of given item file number
emmanuelchio 0:210b5ba62803 980 putcharTX('D'); //Directory
emmanuelchio 0:210b5ba62803 981 putcharTX(itemNumber>>8); //Send Upper part of itemNumber
emmanuelchio 0:210b5ba62803 982 putcharTX(itemNumber); //Send Lower part of itemNumber
emmanuelchio 0:210b5ba62803 983
emmanuelchio 0:210b5ba62803 984 while(1){
emmanuelchio 0:210b5ba62803 985 name[i]=getcharRX();
emmanuelchio 0:210b5ba62803 986 if(name[i]==0x00){ //if we find NULL character, means end of name
emmanuelchio 0:210b5ba62803 987 break;
emmanuelchio 0:210b5ba62803 988 }
emmanuelchio 0:210b5ba62803 989 i++;
emmanuelchio 0:210b5ba62803 990 }
emmanuelchio 0:210b5ba62803 991 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 992 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 993 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 994 }
emmanuelchio 1:0bf6fac21233 995
emmanuelchio 0:210b5ba62803 996 FILERESULT SMARTGPU2::SDFgetFileName(ITEMNUMBER itemNumber, FILENAME name){ //searches for the "itemNumber" on the SD current folder and updates the buffer with the File name ended with NULL character
emmanuelchio 0:210b5ba62803 997 FILERESULT res;
emmanuelchio 0:210b5ba62803 998 unsigned int i=0;
emmanuelchio 1:0bf6fac21233 999
emmanuelchio 0:210b5ba62803 1000 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1001 putcharTX('G'); //Get name of given item file number
emmanuelchio 0:210b5ba62803 1002 putcharTX('F'); //File
emmanuelchio 0:210b5ba62803 1003 putcharTX(itemNumber>>8); //Send Upper part of itemNumber
emmanuelchio 0:210b5ba62803 1004 putcharTX(itemNumber); //Send Lower part of itemNumber
emmanuelchio 1:0bf6fac21233 1005
emmanuelchio 0:210b5ba62803 1006 while(1){
emmanuelchio 0:210b5ba62803 1007 name[i]=getcharRX();
emmanuelchio 0:210b5ba62803 1008 if(name[i]==0x00){ //if we find NULL character, means end of name
emmanuelchio 0:210b5ba62803 1009 break;
emmanuelchio 0:210b5ba62803 1010 }
emmanuelchio 0:210b5ba62803 1011 i++;
emmanuelchio 0:210b5ba62803 1012 }
emmanuelchio 0:210b5ba62803 1013 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1014 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1015 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1016 }
emmanuelchio 0:210b5ba62803 1017
emmanuelchio 0:210b5ba62803 1018 FILERESULT SMARTGPU2::SDFgetDirPath(char path[]){ //obtains current dir path and stores on path[] buffer
emmanuelchio 0:210b5ba62803 1019 FILERESULT res;
emmanuelchio 0:210b5ba62803 1020 unsigned int i=0;
emmanuelchio 0:210b5ba62803 1021 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1022 putcharTX('H'); //Get current Dir Path
emmanuelchio 0:210b5ba62803 1023
emmanuelchio 0:210b5ba62803 1024 while(1){
emmanuelchio 0:210b5ba62803 1025 path[i]=getcharRX();
emmanuelchio 0:210b5ba62803 1026 if(path[i]==0x00){ //if we find NULL character, means end of path
emmanuelchio 0:210b5ba62803 1027 break;
emmanuelchio 0:210b5ba62803 1028 }
emmanuelchio 0:210b5ba62803 1029 i++;
emmanuelchio 0:210b5ba62803 1030 }
emmanuelchio 0:210b5ba62803 1031 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1032 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1033 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1034 }
emmanuelchio 1:0bf6fac21233 1035
emmanuelchio 0:210b5ba62803 1036 FILERESULT SMARTGPU2::SDFnewDir(FILENAME name){ //create a new Directory, fails if already exist
emmanuelchio 0:210b5ba62803 1037 FILERESULT res;
emmanuelchio 0:210b5ba62803 1038 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1039
emmanuelchio 0:210b5ba62803 1040 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1041 putcharTX('N'); //New
emmanuelchio 0:210b5ba62803 1042 putcharTX('D'); //Directory/Folder
emmanuelchio 0:210b5ba62803 1043 while(1){
emmanuelchio 0:210b5ba62803 1044 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 1045 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 1046 break;
emmanuelchio 0:210b5ba62803 1047 }
emmanuelchio 0:210b5ba62803 1048 counter++;
emmanuelchio 0:210b5ba62803 1049 }
emmanuelchio 1:0bf6fac21233 1050
emmanuelchio 0:210b5ba62803 1051 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1052 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1053 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1054 }
emmanuelchio 1:0bf6fac21233 1055
emmanuelchio 0:210b5ba62803 1056 FILERESULT SMARTGPU2::SDFnewFile(FILENAME name){ //create a new File, fails if already exist
emmanuelchio 0:210b5ba62803 1057 FILERESULT res;
emmanuelchio 0:210b5ba62803 1058 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1059
emmanuelchio 0:210b5ba62803 1060 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1061 putcharTX('N'); //New
emmanuelchio 0:210b5ba62803 1062 putcharTX('F'); //File
emmanuelchio 0:210b5ba62803 1063 while(1){
emmanuelchio 0:210b5ba62803 1064 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 1065 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 1066 break;
emmanuelchio 0:210b5ba62803 1067 }
emmanuelchio 0:210b5ba62803 1068 counter++;
emmanuelchio 0:210b5ba62803 1069 }
emmanuelchio 1:0bf6fac21233 1070
emmanuelchio 0:210b5ba62803 1071 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1072 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1073 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1074 }
emmanuelchio 1:0bf6fac21233 1075
emmanuelchio 0:210b5ba62803 1076 FILERESULT SMARTGPU2::SDFopenDir(FILENAME name){ //opens an existing Dir
emmanuelchio 0:210b5ba62803 1077 FILERESULT res;
emmanuelchio 0:210b5ba62803 1078 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1079
emmanuelchio 0:210b5ba62803 1080 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1081 putcharTX('D'); //Open Dir
emmanuelchio 0:210b5ba62803 1082 while(1){
emmanuelchio 0:210b5ba62803 1083 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 1084 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 1085 break;
emmanuelchio 0:210b5ba62803 1086 }
emmanuelchio 0:210b5ba62803 1087 counter++;
emmanuelchio 0:210b5ba62803 1088 }
emmanuelchio 1:0bf6fac21233 1089
emmanuelchio 0:210b5ba62803 1090 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1091 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1092 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1093 }
emmanuelchio 1:0bf6fac21233 1094
emmanuelchio 0:210b5ba62803 1095 FILERESULT SMARTGPU2::SDFopenFile(FILENAME name, OPENMODE mode, WORKSPACEBLOCK objectWorkspaceNo){ //opens an existing file in READONLY, WRITEONLY or READWRITE mode on the received object # workspace
emmanuelchio 0:210b5ba62803 1096 FILERESULT res;
emmanuelchio 0:210b5ba62803 1097 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1098
emmanuelchio 0:210b5ba62803 1099 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1100 putcharTX('O'); //Open file
emmanuelchio 0:210b5ba62803 1101 putcharTX(objectWorkspaceNo); //object workspace number to allocate open file 0-4
emmanuelchio 0:210b5ba62803 1102 putcharTX(mode); //Mode - READONLY,WRITEONLY,READWRITE
emmanuelchio 0:210b5ba62803 1103 while(1){
emmanuelchio 0:210b5ba62803 1104 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 1105 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 1106 break;
emmanuelchio 0:210b5ba62803 1107 }
emmanuelchio 0:210b5ba62803 1108 counter++;
emmanuelchio 0:210b5ba62803 1109 }
emmanuelchio 1:0bf6fac21233 1110
emmanuelchio 0:210b5ba62803 1111 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1112 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1113 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1114 }
emmanuelchio 1:0bf6fac21233 1115
emmanuelchio 0:210b5ba62803 1116 FILERESULT SMARTGPU2::SDFcloseFile(WORKSPACEBLOCK objectWorkspaceNo){ //close and save file object # workspace
emmanuelchio 0:210b5ba62803 1117 FILERESULT res;
emmanuelchio 1:0bf6fac21233 1118
emmanuelchio 0:210b5ba62803 1119 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1120 putcharTX('C'); //Close File
emmanuelchio 0:210b5ba62803 1121 putcharTX(objectWorkspaceNo); //object workspace number to close 0-4
emmanuelchio 1:0bf6fac21233 1122
emmanuelchio 0:210b5ba62803 1123 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1124 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1125 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1126 }
emmanuelchio 1:0bf6fac21233 1127
emmanuelchio 0:210b5ba62803 1128 FILERESULT SMARTGPU2::SDFsaveFile(WORKSPACEBLOCK objectWorkspaceNo){ //sync/save file object # workspace
emmanuelchio 0:210b5ba62803 1129 FILERESULT res;
emmanuelchio 0:210b5ba62803 1130
emmanuelchio 0:210b5ba62803 1131 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1132 putcharTX('S'); //Save/Sync file - Save changes on file
emmanuelchio 0:210b5ba62803 1133 putcharTX(objectWorkspaceNo); //object workspace number to save changes 0-4
emmanuelchio 1:0bf6fac21233 1134
emmanuelchio 0:210b5ba62803 1135 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1136 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1137 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1138 }
emmanuelchio 1:0bf6fac21233 1139
emmanuelchio 0:210b5ba62803 1140 FILERESULT SMARTGPU2::SDFsetFilePointer(POINTERPOSITION pointerPosition, WORKSPACEBLOCK objectWorkspaceNo){ // set/move file pointer of file object # workspace
emmanuelchio 0:210b5ba62803 1141 FILERESULT res;
emmanuelchio 0:210b5ba62803 1142
emmanuelchio 0:210b5ba62803 1143 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1144 putcharTX('P'); //Pointer position
emmanuelchio 0:210b5ba62803 1145 putcharTX(objectWorkspaceNo); //object workspace number to move pointer 0-4
emmanuelchio 0:210b5ba62803 1146 putcharTX('S'); //Set
emmanuelchio 0:210b5ba62803 1147 putcharTX(pointerPosition>>24);
emmanuelchio 0:210b5ba62803 1148 putcharTX(pointerPosition>>16);
emmanuelchio 0:210b5ba62803 1149 putcharTX(pointerPosition>>8);
emmanuelchio 0:210b5ba62803 1150 putcharTX(pointerPosition);
emmanuelchio 1:0bf6fac21233 1151
emmanuelchio 0:210b5ba62803 1152 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1153 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1154 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1155 }
emmanuelchio 1:0bf6fac21233 1156
emmanuelchio 0:210b5ba62803 1157 FILERESULT SMARTGPU2::SDFgetFilePointer(POINTERPOSITION *pointerPosition, WORKSPACEBLOCK objectWorkspaceNo){ // get file pointer of file object # workspace
emmanuelchio 0:210b5ba62803 1158 FILERESULT res;
emmanuelchio 0:210b5ba62803 1159 unsigned long pos = 0;
emmanuelchio 0:210b5ba62803 1160
emmanuelchio 0:210b5ba62803 1161 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1162 putcharTX('P'); //Pointer position
emmanuelchio 0:210b5ba62803 1163 putcharTX(objectWorkspaceNo); //object workspace number to get pointer 0-4
emmanuelchio 0:210b5ba62803 1164 putcharTX('G'); //Get
emmanuelchio 0:210b5ba62803 1165
emmanuelchio 0:210b5ba62803 1166 ((unsigned char *) &pos)[3]=getcharRX();
emmanuelchio 0:210b5ba62803 1167 ((unsigned char *) &pos)[2]=getcharRX();
emmanuelchio 0:210b5ba62803 1168 ((unsigned char *) &pos)[1]=getcharRX();
emmanuelchio 0:210b5ba62803 1169 ((unsigned char *) &pos)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 1170 *pointerPosition =pos;
emmanuelchio 0:210b5ba62803 1171 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1172 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1173 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1174 }
emmanuelchio 1:0bf6fac21233 1175
emmanuelchio 0:210b5ba62803 1176 FILERESULT SMARTGPU2::SDFreadFile(char buffer[], NUMBEROFBYTES BTR, NUMBEROFBYTES *SRB, WORKSPACEBLOCK objectWorkspaceNo){ //Bytes to Read, Succesfully Read Bytes, file object # to read bytes from
emmanuelchio 0:210b5ba62803 1177 FILERESULT res;
emmanuelchio 0:210b5ba62803 1178 unsigned int x=0, sr=0;
emmanuelchio 1:0bf6fac21233 1179
emmanuelchio 0:210b5ba62803 1180 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1181 putcharTX('R'); //Read file
emmanuelchio 0:210b5ba62803 1182 putcharTX(objectWorkspaceNo); //object workspace number to read 0-4
emmanuelchio 0:210b5ba62803 1183 putcharTX(BTR>>8);
emmanuelchio 0:210b5ba62803 1184 putcharTX(BTR);
emmanuelchio 1:0bf6fac21233 1185
emmanuelchio 0:210b5ba62803 1186 for(x=0;x<BTR;x++){
emmanuelchio 0:210b5ba62803 1187 buffer[x]=getcharRX();
emmanuelchio 0:210b5ba62803 1188 }
emmanuelchio 1:0bf6fac21233 1189 ((unsigned char*)&sr)[1]=getcharRX();
emmanuelchio 1:0bf6fac21233 1190 ((unsigned char*)&sr)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 1191 *SRB = sr; //store succesfully read bytes
emmanuelchio 0:210b5ba62803 1192 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1193 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1194 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1195 }
emmanuelchio 1:0bf6fac21233 1196
emmanuelchio 0:210b5ba62803 1197 FILERESULT SMARTGPU2::SDFwriteFile(char buffer[], NUMBEROFBYTES BTW, NUMBEROFBYTES *SWB, WORKSPACEBLOCK objectWorkspaceNo){ //Bytes to Write, Succesfully Written Bytes, file object # to write bytes
emmanuelchio 0:210b5ba62803 1198 FILERESULT res;
emmanuelchio 0:210b5ba62803 1199 unsigned int x=0, sw=0;
emmanuelchio 0:210b5ba62803 1200
emmanuelchio 0:210b5ba62803 1201 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1202 putcharTX('W'); //Write file
emmanuelchio 0:210b5ba62803 1203 putcharTX(objectWorkspaceNo); //object workspace number to write bytes 0-4
emmanuelchio 0:210b5ba62803 1204 putcharTX(BTW>>8);
emmanuelchio 0:210b5ba62803 1205 putcharTX(BTW);
emmanuelchio 0:210b5ba62803 1206 for(x=0;x<BTW;x++){
emmanuelchio 0:210b5ba62803 1207 putcharTX(buffer[x]);
emmanuelchio 0:210b5ba62803 1208 }
emmanuelchio 1:0bf6fac21233 1209
emmanuelchio 1:0bf6fac21233 1210 ((unsigned char*)&sw)[1]=getcharRX();
emmanuelchio 1:0bf6fac21233 1211 ((unsigned char*)&sw)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 1212 *SWB = sw; //store succesfully written bytes
emmanuelchio 0:210b5ba62803 1213 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1214 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1215 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1216 }
emmanuelchio 1:0bf6fac21233 1217
emmanuelchio 0:210b5ba62803 1218 FILERESULT SMARTGPU2::SDFtestFileError(WORKSPACEBLOCK objectWorkspaceNo){ //test for an error on file # workspace
emmanuelchio 0:210b5ba62803 1219 FILERESULT res;
emmanuelchio 1:0bf6fac21233 1220
emmanuelchio 0:210b5ba62803 1221 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1222 putcharTX('Q'); //Test
emmanuelchio 0:210b5ba62803 1223 putcharTX(objectWorkspaceNo); //object workspace number to write bytes 0-4
emmanuelchio 0:210b5ba62803 1224 putcharTX('R'); //Test Error
emmanuelchio 1:0bf6fac21233 1225
emmanuelchio 0:210b5ba62803 1226 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1227 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1228 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1229 }
emmanuelchio 1:0bf6fac21233 1230
emmanuelchio 0:210b5ba62803 1231 FILERESULT SMARTGPU2::SDFtestFileEnd(WORKSPACEBLOCK objectWorkspaceNo){ //test for an error on file # workspace
emmanuelchio 0:210b5ba62803 1232 FILERESULT res;
emmanuelchio 0:210b5ba62803 1233
emmanuelchio 0:210b5ba62803 1234 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1235 putcharTX('Q'); //Test
emmanuelchio 0:210b5ba62803 1236 putcharTX(objectWorkspaceNo); //object workspace number to write bytes 0-4
emmanuelchio 0:210b5ba62803 1237 putcharTX('E'); //Test End of File
emmanuelchio 1:0bf6fac21233 1238
emmanuelchio 0:210b5ba62803 1239 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1240 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1241 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1242 }
emmanuelchio 1:0bf6fac21233 1243
emmanuelchio 0:210b5ba62803 1244 FILERESULT SMARTGPU2::SDFtruncateFile(WORKSPACEBLOCK objectWorkspaceNo){ //truncates the file size to the current file read/write pointer of the file # workspace
emmanuelchio 0:210b5ba62803 1245 FILERESULT res;
emmanuelchio 0:210b5ba62803 1246
emmanuelchio 0:210b5ba62803 1247 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1248 putcharTX('V'); //Truncate
emmanuelchio 0:210b5ba62803 1249 putcharTX(objectWorkspaceNo); //object workspace number 0-4 to truncate on current pointerPosition
emmanuelchio 1:0bf6fac21233 1250
emmanuelchio 0:210b5ba62803 1251 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1252 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1253 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1254 }
emmanuelchio 1:0bf6fac21233 1255
emmanuelchio 0:210b5ba62803 1256 FILERESULT SMARTGPU2::SDFeraseDirFile(FILENAME name){ //Erases an existing Dir or File
emmanuelchio 0:210b5ba62803 1257 FILERESULT res;
emmanuelchio 0:210b5ba62803 1258 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1259
emmanuelchio 0:210b5ba62803 1260 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1261 putcharTX('E'); //Erase Dir File
emmanuelchio 0:210b5ba62803 1262 putcharTX('O'); //Unlock Erase Protection
emmanuelchio 0:210b5ba62803 1263 while(1){
emmanuelchio 0:210b5ba62803 1264 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 1265 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 1266 break;
emmanuelchio 0:210b5ba62803 1267 }
emmanuelchio 0:210b5ba62803 1268 counter++;
emmanuelchio 0:210b5ba62803 1269 }
emmanuelchio 1:0bf6fac21233 1270
emmanuelchio 0:210b5ba62803 1271 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1272 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1273 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1274 }
emmanuelchio 1:0bf6fac21233 1275
emmanuelchio 0:210b5ba62803 1276 FILERESULT SMARTGPU2::SDFsetFileTimeDate(TIME *timeDate, FILENAME name){ //Set Time and Date to an existing File
emmanuelchio 0:210b5ba62803 1277 FILERESULT res;
emmanuelchio 0:210b5ba62803 1278 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1279
emmanuelchio 0:210b5ba62803 1280 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1281 putcharTX('T'); //Time/Date
emmanuelchio 0:210b5ba62803 1282 putcharTX('S'); //Set
emmanuelchio 0:210b5ba62803 1283 putcharTX(timeDate->hour); //hour
emmanuelchio 0:210b5ba62803 1284 putcharTX(timeDate->minute); //min
emmanuelchio 0:210b5ba62803 1285 putcharTX(timeDate->second); //sec
emmanuelchio 0:210b5ba62803 1286 putcharTX(timeDate->day); //day
emmanuelchio 0:210b5ba62803 1287 putcharTX(timeDate->month); //month
emmanuelchio 0:210b5ba62803 1288 putcharTX(timeDate->year>>8);//year upper
emmanuelchio 0:210b5ba62803 1289 putcharTX(timeDate->year); //year lower
emmanuelchio 0:210b5ba62803 1290 while(1){
emmanuelchio 0:210b5ba62803 1291 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 1292 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 1293 break;
emmanuelchio 0:210b5ba62803 1294 }
emmanuelchio 0:210b5ba62803 1295 counter++;
emmanuelchio 0:210b5ba62803 1296 }
emmanuelchio 1:0bf6fac21233 1297
emmanuelchio 0:210b5ba62803 1298 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1299 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1300 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1301 }
emmanuelchio 1:0bf6fac21233 1302
emmanuelchio 0:210b5ba62803 1303 FILERESULT SMARTGPU2::SDFgetFileTimeDate(TIME *timeDate, FILENAME name){ //Get Time and Date to an existing File
emmanuelchio 0:210b5ba62803 1304 FILERESULT res;
emmanuelchio 0:210b5ba62803 1305 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1306
emmanuelchio 0:210b5ba62803 1307 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1308 putcharTX('T'); //Time/Date
emmanuelchio 0:210b5ba62803 1309 putcharTX('G'); //Get
emmanuelchio 0:210b5ba62803 1310 while(1){
emmanuelchio 0:210b5ba62803 1311 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 1312 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 1313 break;
emmanuelchio 0:210b5ba62803 1314 }
emmanuelchio 0:210b5ba62803 1315 counter++;
emmanuelchio 0:210b5ba62803 1316 }
emmanuelchio 1:0bf6fac21233 1317
emmanuelchio 0:210b5ba62803 1318 timeDate->hour = getcharRX(); //hour
emmanuelchio 0:210b5ba62803 1319 timeDate->minute = getcharRX(); //min
emmanuelchio 0:210b5ba62803 1320 timeDate->second = getcharRX(); //sec
emmanuelchio 0:210b5ba62803 1321 timeDate->day = getcharRX(); //day
emmanuelchio 0:210b5ba62803 1322 timeDate->month = getcharRX(); //month
emmanuelchio 0:210b5ba62803 1323 ((unsigned char*)&counter)[1] = getcharRX(); //year upper
emmanuelchio 0:210b5ba62803 1324 ((unsigned char*)&counter)[0] = getcharRX(); //year lower
emmanuelchio 0:210b5ba62803 1325 timeDate->year = counter; //year
emmanuelchio 0:210b5ba62803 1326 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1327 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1328 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1329 }
emmanuelchio 1:0bf6fac21233 1330
emmanuelchio 0:210b5ba62803 1331 FILERESULT SMARTGPU2::SDFgetFileSize(FILENAME name, unsigned long *fileSize){ //Get Size of an existing File
emmanuelchio 0:210b5ba62803 1332 FILERESULT res;
emmanuelchio 0:210b5ba62803 1333 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1334 unsigned long size=0;
emmanuelchio 0:210b5ba62803 1335
emmanuelchio 0:210b5ba62803 1336 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1337 putcharTX('I'); //Info
emmanuelchio 0:210b5ba62803 1338 putcharTX('S'); //Size
emmanuelchio 0:210b5ba62803 1339 while(1){
emmanuelchio 0:210b5ba62803 1340 putcharTX(name[counter]);
emmanuelchio 0:210b5ba62803 1341 if(name[counter]==0x00){
emmanuelchio 0:210b5ba62803 1342 break;
emmanuelchio 0:210b5ba62803 1343 }
emmanuelchio 0:210b5ba62803 1344 counter++;
emmanuelchio 0:210b5ba62803 1345 }
emmanuelchio 1:0bf6fac21233 1346
emmanuelchio 0:210b5ba62803 1347 ((unsigned char *) &size)[3]=getcharRX();
emmanuelchio 0:210b5ba62803 1348 ((unsigned char *) &size)[2]=getcharRX();
emmanuelchio 0:210b5ba62803 1349 ((unsigned char *) &size)[1]=getcharRX();
emmanuelchio 0:210b5ba62803 1350 ((unsigned char *) &size)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 1351 *fileSize=size;
emmanuelchio 0:210b5ba62803 1352 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1353 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1354 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1355 }
emmanuelchio 1:0bf6fac21233 1356
emmanuelchio 0:210b5ba62803 1357 FILERESULT SMARTGPU2::SDFrenameMoveDirFile(FILENAME oldName, FILENAME newName){ //renames or moves an existing Dir or File
emmanuelchio 0:210b5ba62803 1358 FILERESULT res;
emmanuelchio 0:210b5ba62803 1359 unsigned int counter=0;
emmanuelchio 0:210b5ba62803 1360
emmanuelchio 0:210b5ba62803 1361 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1362 putcharTX('M'); //Rename / Move
emmanuelchio 0:210b5ba62803 1363 while(1){
emmanuelchio 0:210b5ba62803 1364 putcharTX(oldName[counter]);
emmanuelchio 0:210b5ba62803 1365 if(oldName[counter]==0x00){
emmanuelchio 0:210b5ba62803 1366 break;
emmanuelchio 0:210b5ba62803 1367 }
emmanuelchio 0:210b5ba62803 1368 counter++;
emmanuelchio 0:210b5ba62803 1369 }
emmanuelchio 0:210b5ba62803 1370 counter=0;
emmanuelchio 0:210b5ba62803 1371 while(1){
emmanuelchio 0:210b5ba62803 1372 putcharTX(newName[counter]);
emmanuelchio 0:210b5ba62803 1373 if(newName[counter]==0x00){
emmanuelchio 0:210b5ba62803 1374 break;
emmanuelchio 0:210b5ba62803 1375 }
emmanuelchio 0:210b5ba62803 1376 counter++;
emmanuelchio 0:210b5ba62803 1377 }
emmanuelchio 1:0bf6fac21233 1378
emmanuelchio 0:210b5ba62803 1379 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1380 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1381 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1382 }
emmanuelchio 1:0bf6fac21233 1383
emmanuelchio 0:210b5ba62803 1384 FILERESULT SMARTGPU2::SDFgetFreeTotalSpace(unsigned long *freeSpace,unsigned long *totalSpace){ //Get free and total space in bytes of the microSD card
emmanuelchio 0:210b5ba62803 1385 FILERESULT res;
emmanuelchio 0:210b5ba62803 1386 unsigned long fSpace=0, tSpace=0;
emmanuelchio 0:210b5ba62803 1387
emmanuelchio 0:210b5ba62803 1388 putcharTX('F'); //File function - memory card file management
emmanuelchio 0:210b5ba62803 1389 putcharTX('F'); //Free/Total space
emmanuelchio 1:0bf6fac21233 1390
emmanuelchio 0:210b5ba62803 1391 ((unsigned char *) &fSpace)[3]=getcharRX();
emmanuelchio 0:210b5ba62803 1392 ((unsigned char *) &fSpace)[2]=getcharRX();
emmanuelchio 0:210b5ba62803 1393 ((unsigned char *) &fSpace)[1]=getcharRX();
emmanuelchio 0:210b5ba62803 1394 ((unsigned char *) &fSpace)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 1395 ((unsigned char *) &tSpace)[3]=getcharRX();
emmanuelchio 0:210b5ba62803 1396 ((unsigned char *) &tSpace)[2]=getcharRX();
emmanuelchio 0:210b5ba62803 1397 ((unsigned char *) &tSpace)[1]=getcharRX();
emmanuelchio 0:210b5ba62803 1398 ((unsigned char *) &tSpace)[0]=getcharRX();
emmanuelchio 0:210b5ba62803 1399 *freeSpace=fSpace;
emmanuelchio 0:210b5ba62803 1400 *totalSpace=tSpace;
emmanuelchio 0:210b5ba62803 1401 res = (FILERESULT)getcharRX(); //Get SD file execution status
emmanuelchio 0:210b5ba62803 1402 getcharRX(); //Discard 'O' or 'F'
emmanuelchio 0:210b5ba62803 1403 return res; //Return SD file execution status
emmanuelchio 0:210b5ba62803 1404 }
emmanuelchio 1:0bf6fac21233 1405