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