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 20:36:42 2014 +0000
Revision:
1:0bf6fac21233
Parent:
0:210b5ba62803
Child:
2:3ae3f28ae9fe
SmartGPU2 Mbed library V2 - Works with any smartGPU2 board: 2.4", 3.5", 4.3" and 7.0"

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