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