For uVGAII WebBrowser

Fork of 4DGL by Stephane ROCHON

Committer:
yaolu23
Date:
Wed Mar 12 16:14:26 2014 +0000
Revision:
9:cc9c742bb1a0
Parent:
0:1102d253f057
turned debug mode in 4DGL off

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kerpower 0:1102d253f057 1 //
Kerpower 0:1102d253f057 2 // TFT_4DGL is a class to drive 4D Systems TFT touch screens
Kerpower 0:1102d253f057 3 //
Kerpower 0:1102d253f057 4 // Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
Kerpower 0:1102d253f057 5 //
Kerpower 0:1102d253f057 6 // TFT_4DGL is free software: you can redistribute it and/or modify
Kerpower 0:1102d253f057 7 // it under the terms of the GNU General Public License as published by
Kerpower 0:1102d253f057 8 // the Free Software Foundation, either version 3 of the License, or
Kerpower 0:1102d253f057 9 // (at your option) any later version.
Kerpower 0:1102d253f057 10 //
Kerpower 0:1102d253f057 11 // TFT_4DGL is distributed in the hope that it will be useful,
Kerpower 0:1102d253f057 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
Kerpower 0:1102d253f057 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Kerpower 0:1102d253f057 14 // GNU General Public License for more details.
Kerpower 0:1102d253f057 15 //
Kerpower 0:1102d253f057 16 // You should have received a copy of the GNU General Public License
Kerpower 0:1102d253f057 17 // along with TFT_4DGL. If not, see <http://www.gnu.org/licenses/>.
Kerpower 0:1102d253f057 18
Kerpower 0:1102d253f057 19 #include "mbed.h"
Kerpower 0:1102d253f057 20 #include "TFT_4DGL.h"
Kerpower 0:1102d253f057 21
Kerpower 0:1102d253f057 22 Serial pc(USBTX,USBRX);
Kerpower 0:1102d253f057 23
Kerpower 0:1102d253f057 24 //******************************************************************************************************
Kerpower 0:1102d253f057 25 TFT_4DGL :: TFT_4DGL(PinName tx, PinName rx, PinName rst) : _cmd(tx, rx), _rst(rst) { // Constructor
Kerpower 0:1102d253f057 26
Kerpower 0:1102d253f057 27 #if DEBUGMODE
Kerpower 0:1102d253f057 28 pc.baud(115200);
Kerpower 0:1102d253f057 29
Kerpower 0:1102d253f057 30 pc.printf("\n\n\n");
Kerpower 0:1102d253f057 31 pc.printf("********************\n");
Kerpower 0:1102d253f057 32 pc.printf("TFT_4DGL CONSTRUCTOR\n");
Kerpower 0:1102d253f057 33 pc.printf("********************\n");
Kerpower 0:1102d253f057 34 #endif
Kerpower 0:1102d253f057 35
Kerpower 0:1102d253f057 36 _rst = 1; // put RESET pin to high to start TFT screen
Kerpower 0:1102d253f057 37
Kerpower 0:1102d253f057 38 reset();
Kerpower 0:1102d253f057 39 autobaud(); // send autobaud command
Kerpower 0:1102d253f057 40 version(); // get version information
Kerpower 0:1102d253f057 41 cls(); // clear screen
Kerpower 0:1102d253f057 42
Kerpower 0:1102d253f057 43 current_col = 0; // initial cursor col
Kerpower 0:1102d253f057 44 current_row = 0; // initial cursor row
Kerpower 0:1102d253f057 45 current_color = WHITE; // initial text color
Kerpower 0:1102d253f057 46 current_orientation = IS_PORTRAIT; // initial screen orientation
Kerpower 0:1102d253f057 47
Kerpower 0:1102d253f057 48 set_font(FONT_5X7); // initial font
Kerpower 0:1102d253f057 49 text_mode(OPAQUE); // initial texr mode
Kerpower 0:1102d253f057 50 }
Kerpower 0:1102d253f057 51
Kerpower 0:1102d253f057 52 //******************************************************************************************************
Kerpower 0:1102d253f057 53 void TFT_4DGL :: writeBYTE(char c) { // send a BYTE command to screen
Kerpower 0:1102d253f057 54
Kerpower 0:1102d253f057 55 _cmd.putc(c);
Kerpower 0:1102d253f057 56 wait_ms(1);
Kerpower 0:1102d253f057 57
Kerpower 0:1102d253f057 58 #if DEBUGMODE
Kerpower 0:1102d253f057 59 pc.printf(" Char sent : 0x%02X\n",c);
Kerpower 0:1102d253f057 60 #endif
Kerpower 0:1102d253f057 61
Kerpower 0:1102d253f057 62 }
Kerpower 0:1102d253f057 63
Kerpower 0:1102d253f057 64 //******************************************************************************************************
Kerpower 0:1102d253f057 65 void TFT_4DGL :: freeBUFFER(void) { // Clear serial buffer before writing command
Kerpower 0:1102d253f057 66
Kerpower 0:1102d253f057 67 while (_cmd.readable()) _cmd.getc(); // clear buffer garbage
Kerpower 0:1102d253f057 68 }
Kerpower 0:1102d253f057 69
Kerpower 0:1102d253f057 70 //******************************************************************************************************
Kerpower 0:1102d253f057 71 int TFT_4DGL :: writeCOMMAND(char *command, int number) { // send several BYTES making a command and return an answer
Kerpower 0:1102d253f057 72
Kerpower 0:1102d253f057 73 #if DEBUGMODE
Kerpower 0:1102d253f057 74 pc.printf("\n");
Kerpower 0:1102d253f057 75 pc.printf("New COMMAND : 0x%02X\n", command[0]);
Kerpower 0:1102d253f057 76 #endif
Kerpower 0:1102d253f057 77 int i, resp = 0;
Kerpower 0:1102d253f057 78 freeBUFFER();
Kerpower 0:1102d253f057 79
Kerpower 0:1102d253f057 80 for (i = 0; i < number; i++) writeBYTE(command[i]); // send command to serial port
Kerpower 0:1102d253f057 81
Kerpower 0:1102d253f057 82 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
Kerpower 0:1102d253f057 83 if (_cmd.readable()) resp = _cmd.getc(); // read response if any
Kerpower 0:1102d253f057 84 switch (resp) {
Kerpower 0:1102d253f057 85 case ACK : // if OK return 1
Kerpower 0:1102d253f057 86 resp = 1;
Kerpower 0:1102d253f057 87 break;
Kerpower 0:1102d253f057 88 case NAK : // if NOK return -1
Kerpower 0:1102d253f057 89 resp = -1;
Kerpower 0:1102d253f057 90 break;
Kerpower 0:1102d253f057 91 default :
Kerpower 0:1102d253f057 92 resp = 0; // else return 0
Kerpower 0:1102d253f057 93 break;
Kerpower 0:1102d253f057 94 }
Kerpower 0:1102d253f057 95 #if DEBUGMODE
Kerpower 0:1102d253f057 96 pc.printf(" Answer received : %d\n",resp);
Kerpower 0:1102d253f057 97 #endif
Kerpower 0:1102d253f057 98
Kerpower 0:1102d253f057 99 return resp;
Kerpower 0:1102d253f057 100 }
Kerpower 0:1102d253f057 101
Kerpower 0:1102d253f057 102 //**************************************************************************
Kerpower 0:1102d253f057 103 void TFT_4DGL :: reset() { // Reset Screen
Kerpower 0:1102d253f057 104
Kerpower 0:1102d253f057 105 _rst = 0; // put RESET pin to low
Kerpower 0:1102d253f057 106 wait_ms(TEMPO); // wait a few milliseconds for command reception
Kerpower 0:1102d253f057 107 _rst = 1; // put RESET back to high
Kerpower 0:1102d253f057 108 wait(3); // wait 3s for screen to restart
Kerpower 0:1102d253f057 109
Kerpower 0:1102d253f057 110 freeBUFFER(); // clean buffer from possible garbage
Kerpower 0:1102d253f057 111 }
Kerpower 0:1102d253f057 112
Kerpower 0:1102d253f057 113 //**************************************************************************
Kerpower 0:1102d253f057 114 void TFT_4DGL :: autobaud() { // send AutoBaud command (9600)
Kerpower 0:1102d253f057 115 char command[1] = "";
Kerpower 0:1102d253f057 116 command[0] = AUTOBAUD;
Kerpower 0:1102d253f057 117 writeCOMMAND(command, 1);
Kerpower 0:1102d253f057 118 }
Kerpower 0:1102d253f057 119
Kerpower 0:1102d253f057 120 //**************************************************************************
Kerpower 0:1102d253f057 121 void TFT_4DGL :: cls() { // clear screen
Kerpower 0:1102d253f057 122 char command[1] = "";
Kerpower 0:1102d253f057 123 command[0] = CLS;
Kerpower 0:1102d253f057 124 writeCOMMAND(command, 1);
Kerpower 0:1102d253f057 125 }
Kerpower 0:1102d253f057 126
Kerpower 0:1102d253f057 127 //**************************************************************************
Kerpower 0:1102d253f057 128 void TFT_4DGL :: version() { // get API version
Kerpower 0:1102d253f057 129 char command[2] = "";
Kerpower 0:1102d253f057 130 command[0] = VERSION;
Kerpower 0:1102d253f057 131 command[1] = OFF;
Kerpower 0:1102d253f057 132 readVERSION(command, 2);
Kerpower 0:1102d253f057 133 }
Kerpower 0:1102d253f057 134
Kerpower 0:1102d253f057 135 //**************************************************************************
Kerpower 0:1102d253f057 136 void TFT_4DGL :: baudrate(int speed) { // set screen baud rate
Kerpower 0:1102d253f057 137 char command[2]= "";
Kerpower 0:1102d253f057 138 command[0] = BAUDRATE;
Kerpower 0:1102d253f057 139 switch (speed) {
Kerpower 0:1102d253f057 140 case 110 :
Kerpower 0:1102d253f057 141 command[1] = BAUD_110;
Kerpower 0:1102d253f057 142 break;
Kerpower 0:1102d253f057 143 case 300 :
Kerpower 0:1102d253f057 144 command[1] = BAUD_300;
Kerpower 0:1102d253f057 145 break;
Kerpower 0:1102d253f057 146 case 600 :
Kerpower 0:1102d253f057 147 command[1] = BAUD_600;
Kerpower 0:1102d253f057 148 break;
Kerpower 0:1102d253f057 149 case 1200 :
Kerpower 0:1102d253f057 150 command[1] = BAUD_1200;
Kerpower 0:1102d253f057 151 break;
Kerpower 0:1102d253f057 152 case 2400 :
Kerpower 0:1102d253f057 153 command[1] = BAUD_2400;
Kerpower 0:1102d253f057 154 break;
Kerpower 0:1102d253f057 155 case 4800 :
Kerpower 0:1102d253f057 156 command[1] = BAUD_4800;
Kerpower 0:1102d253f057 157 break;
Kerpower 0:1102d253f057 158 case 9600 :
Kerpower 0:1102d253f057 159 command[1] = BAUD_9600;
Kerpower 0:1102d253f057 160 break;
Kerpower 0:1102d253f057 161 case 14400 :
Kerpower 0:1102d253f057 162 command[1] = BAUD_14400;
Kerpower 0:1102d253f057 163 break;
Kerpower 0:1102d253f057 164 case 19200 :
Kerpower 0:1102d253f057 165 command[1] = BAUD_19200;
Kerpower 0:1102d253f057 166 break;
Kerpower 0:1102d253f057 167 case 31250 :
Kerpower 0:1102d253f057 168 command[1] = BAUD_31250;
Kerpower 0:1102d253f057 169 break;
Kerpower 0:1102d253f057 170 case 38400 :
Kerpower 0:1102d253f057 171 command[1] = BAUD_38400;
Kerpower 0:1102d253f057 172 break;
Kerpower 0:1102d253f057 173 case 56000 :
Kerpower 0:1102d253f057 174 command[1] = BAUD_56000;
Kerpower 0:1102d253f057 175 break;
Kerpower 0:1102d253f057 176 case 57600 :
Kerpower 0:1102d253f057 177 command[1] = BAUD_57600;
Kerpower 0:1102d253f057 178 break;
Kerpower 0:1102d253f057 179 case 115200 :
Kerpower 0:1102d253f057 180 command[1] = BAUD_115200;
Kerpower 0:1102d253f057 181 break;
Kerpower 0:1102d253f057 182 case 128000 :
Kerpower 0:1102d253f057 183 command[1] = BAUD_128000;
Kerpower 0:1102d253f057 184 break;
Kerpower 0:1102d253f057 185 case 256000 :
Kerpower 0:1102d253f057 186 command[1] = BAUD_256000;
Kerpower 0:1102d253f057 187 break;
Kerpower 0:1102d253f057 188 default :
Kerpower 0:1102d253f057 189 command[1] = BAUD_9600;
Kerpower 0:1102d253f057 190 speed = 9600;
Kerpower 0:1102d253f057 191 break;
Kerpower 0:1102d253f057 192 }
Kerpower 0:1102d253f057 193
Kerpower 0:1102d253f057 194 int i, resp = 0;
Kerpower 0:1102d253f057 195
Kerpower 0:1102d253f057 196 freeBUFFER();
Kerpower 0:1102d253f057 197
Kerpower 0:1102d253f057 198 for (i = 0; i <2; i++) writeBYTE(command[i]); // send command to serial port
Kerpower 0:1102d253f057 199 _cmd.baud(speed); // set mbed to same speed
Kerpower 0:1102d253f057 200
Kerpower 0:1102d253f057 201 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
Kerpower 0:1102d253f057 202
Kerpower 0:1102d253f057 203 if (_cmd.readable()) resp = _cmd.getc(); // read response if any
Kerpower 0:1102d253f057 204 switch (resp) {
Kerpower 0:1102d253f057 205 case ACK : // if OK return 1
Kerpower 0:1102d253f057 206 resp = 1;
Kerpower 0:1102d253f057 207 break;
Kerpower 0:1102d253f057 208 case NAK : // if NOK return -1
Kerpower 0:1102d253f057 209 resp = -1;
Kerpower 0:1102d253f057 210 break;
Kerpower 0:1102d253f057 211 default :
Kerpower 0:1102d253f057 212 resp = 0; // else return 0
Kerpower 0:1102d253f057 213 break;
Kerpower 0:1102d253f057 214 }
Kerpower 0:1102d253f057 215 }
Kerpower 0:1102d253f057 216
Kerpower 0:1102d253f057 217 //******************************************************************************************************
Kerpower 0:1102d253f057 218 int TFT_4DGL :: readVERSION(char *command, int number) { // read screen info and populate data
Kerpower 0:1102d253f057 219
Kerpower 0:1102d253f057 220 int i, temp = 0, resp = 0;
Kerpower 0:1102d253f057 221 char response[5] = "";
Kerpower 0:1102d253f057 222
Kerpower 0:1102d253f057 223 freeBUFFER();
Kerpower 0:1102d253f057 224
Kerpower 0:1102d253f057 225 for (i = 0; i < number; i++) writeBYTE(command[i]); // send all chars to serial port
Kerpower 0:1102d253f057 226
Kerpower 0:1102d253f057 227 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
Kerpower 0:1102d253f057 228
Kerpower 0:1102d253f057 229 while (_cmd.readable()) {
Kerpower 0:1102d253f057 230 temp = _cmd.getc();
Kerpower 0:1102d253f057 231 response[resp++] = (char)temp;
Kerpower 0:1102d253f057 232 }
Kerpower 0:1102d253f057 233 switch (resp) {
Kerpower 0:1102d253f057 234 case 5 : // if OK populate data and return 1
Kerpower 0:1102d253f057 235 type = response[0];
Kerpower 0:1102d253f057 236 revision = response[1];
Kerpower 0:1102d253f057 237 firmware = response[2];
Kerpower 0:1102d253f057 238 reserved1 = response[3];
Kerpower 0:1102d253f057 239 reserved2 = response[4];
Kerpower 0:1102d253f057 240 resp = 1;
Kerpower 0:1102d253f057 241 break;
Kerpower 0:1102d253f057 242 default :
Kerpower 0:1102d253f057 243 resp = 0; // else return 0
Kerpower 0:1102d253f057 244 break;
Kerpower 0:1102d253f057 245 }
Kerpower 0:1102d253f057 246 return resp;
Kerpower 0:1102d253f057 247 }
Kerpower 0:1102d253f057 248
Kerpower 0:1102d253f057 249 //****************************************************************************************************
Kerpower 0:1102d253f057 250 void TFT_4DGL :: background_color(int color) { // set screen background color
Kerpower 0:1102d253f057 251 char command[3]= ""; // input color is in 24bits like 0xRRGGBB
Kerpower 0:1102d253f057 252
Kerpower 0:1102d253f057 253 command[0] = BCKGDCOLOR;
Kerpower 0:1102d253f057 254
Kerpower 0:1102d253f057 255 int red5 = (color >> (16 + 3)) & 0x1F; // get red on 5 bits
Kerpower 0:1102d253f057 256 int green6 = (color >> (8 + 2)) & 0x3F; // get green on 6 bits
Kerpower 0:1102d253f057 257 int blue5 = (color >> (0 + 3)) & 0x1F; // get blue on 5 bits
Kerpower 0:1102d253f057 258
Kerpower 0:1102d253f057 259 command[1] = ((red5 << 3) + (green6 >> 3)) & 0xFF; // first part of 16 bits color
Kerpower 0:1102d253f057 260 command[2] = ((green6 << 5) + (blue5 >> 0)) & 0xFF; // second part of 16 bits color
Kerpower 0:1102d253f057 261
Kerpower 0:1102d253f057 262 writeCOMMAND(command, 3);
Kerpower 0:1102d253f057 263 }
Kerpower 0:1102d253f057 264
Kerpower 0:1102d253f057 265 //****************************************************************************************************
Kerpower 0:1102d253f057 266 void TFT_4DGL :: display_control(char mode, char value) { // set screen mode to value
Kerpower 0:1102d253f057 267 char command[3]= "";
Kerpower 0:1102d253f057 268
Kerpower 0:1102d253f057 269 command[0] = DISPCONTROL;
Kerpower 0:1102d253f057 270 command[1] = mode;
Kerpower 0:1102d253f057 271 command[2] = value;
Kerpower 0:1102d253f057 272
Kerpower 0:1102d253f057 273 if (mode == ORIENTATION) {
Kerpower 0:1102d253f057 274 switch (value) {
Kerpower 0:1102d253f057 275 case LANDSCAPE :
Kerpower 0:1102d253f057 276 current_orientation = IS_LANDSCAPE;
Kerpower 0:1102d253f057 277 break;
Kerpower 0:1102d253f057 278 case LANDSCAPE_R :
Kerpower 0:1102d253f057 279 current_orientation = IS_LANDSCAPE;
Kerpower 0:1102d253f057 280 break;
Kerpower 0:1102d253f057 281 case PORTRAIT :
Kerpower 0:1102d253f057 282 current_orientation = IS_PORTRAIT;
Kerpower 0:1102d253f057 283 break;
Kerpower 0:1102d253f057 284 case PORTRAIT_R :
Kerpower 0:1102d253f057 285 current_orientation = IS_PORTRAIT;
Kerpower 0:1102d253f057 286 break;
Kerpower 0:1102d253f057 287 }
Kerpower 0:1102d253f057 288 }
Kerpower 0:1102d253f057 289 writeCOMMAND(command, 3);
Kerpower 0:1102d253f057 290 set_font(current_font);
Kerpower 0:1102d253f057 291 }
Kerpower 0:1102d253f057 292
Kerpower 0:1102d253f057 293 //****************************************************************************************************
Kerpower 0:1102d253f057 294 void TFT_4DGL :: set_volume(char value) { // set sound volume to value
Kerpower 0:1102d253f057 295 char command[2]= "";
Kerpower 0:1102d253f057 296
Kerpower 0:1102d253f057 297 command[0] = SETVOLUME;
Kerpower 0:1102d253f057 298 command[1] = value;
Kerpower 0:1102d253f057 299
Kerpower 0:1102d253f057 300 writeCOMMAND(command, 2);
Kerpower 0:1102d253f057 301 }
Kerpower 0:1102d253f057 302
Kerpower 0:1102d253f057 303
Kerpower 0:1102d253f057 304 //******************************************************************************************************
Kerpower 0:1102d253f057 305 void TFT_4DGL :: getTOUCH(char *command, int number, int *x, int *y) { // read screen info and populate data
Kerpower 0:1102d253f057 306
Kerpower 0:1102d253f057 307 #if DEBUGMODE
Kerpower 0:1102d253f057 308 pc.printf("\n");
Kerpower 0:1102d253f057 309 pc.printf("New COMMAND : 0x%02X\n", command[0]);
Kerpower 0:1102d253f057 310 #endif
Kerpower 0:1102d253f057 311 int i, temp = 0, resp = 0;
Kerpower 0:1102d253f057 312 char response[5] = "";
Kerpower 0:1102d253f057 313
Kerpower 0:1102d253f057 314 freeBUFFER();
Kerpower 0:1102d253f057 315
Kerpower 0:1102d253f057 316 for (i = 0; i < number; i++) writeBYTE(command[i]); // send all chars to serial port
Kerpower 0:1102d253f057 317
Kerpower 0:1102d253f057 318 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
Kerpower 0:1102d253f057 319
Kerpower 0:1102d253f057 320 while (_cmd.readable()) {
Kerpower 0:1102d253f057 321 temp = _cmd.getc();
Kerpower 0:1102d253f057 322 response[resp++] = (char)temp;
Kerpower 0:1102d253f057 323 }
Kerpower 0:1102d253f057 324
Kerpower 0:1102d253f057 325 #if DEBUGMODE
Kerpower 0:1102d253f057 326 pc.printf(" Answer received %d : 0x%02X 0x%02X 0x%02X 0x%02X\n", resp, response[0], response[1], response[2], response[3]);
Kerpower 0:1102d253f057 327 #endif
Kerpower 0:1102d253f057 328
Kerpower 0:1102d253f057 329 switch (resp) {
Kerpower 0:1102d253f057 330 case 4 : // if OK populate data
Kerpower 0:1102d253f057 331 *x = ((response[0]<<8)+ response[1]) * (response[0] != 0xFF);
Kerpower 0:1102d253f057 332 *y = ((response[2]<<8)+ response[3]) * (response[2] != 0xFF);
Kerpower 0:1102d253f057 333 break;
Kerpower 0:1102d253f057 334 default :
Kerpower 0:1102d253f057 335 *x = -1;
Kerpower 0:1102d253f057 336 *y = -1;
Kerpower 0:1102d253f057 337 break;
Kerpower 0:1102d253f057 338 }
Kerpower 0:1102d253f057 339
Kerpower 0:1102d253f057 340 #if DEBUGMODE
Kerpower 0:1102d253f057 341 pc.printf(" X,Y : %03d,%03d\n", *x, *y);
Kerpower 0:1102d253f057 342 #endif
Kerpower 0:1102d253f057 343 }
Kerpower 0:1102d253f057 344
Kerpower 0:1102d253f057 345 //******************************************************************************************************
Kerpower 0:1102d253f057 346 int TFT_4DGL :: getSTATUS(char *command, int number) { // read screen info and populate data
Kerpower 0:1102d253f057 347
Kerpower 0:1102d253f057 348 #if DEBUGMODE
Kerpower 0:1102d253f057 349 pc.printf("\n");
Kerpower 0:1102d253f057 350 pc.printf("New COMMAND : 0x%02X\n", command[0]);
Kerpower 0:1102d253f057 351 #endif
Kerpower 0:1102d253f057 352
Kerpower 0:1102d253f057 353 int i, temp = 0, resp = 0;
Kerpower 0:1102d253f057 354 char response[5] = "";
Kerpower 0:1102d253f057 355
Kerpower 0:1102d253f057 356 freeBUFFER();
Kerpower 0:1102d253f057 357
Kerpower 0:1102d253f057 358 for (i = 0; i < number; i++) writeBYTE(command[i]); // send all chars to serial port
Kerpower 0:1102d253f057 359
Kerpower 0:1102d253f057 360 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
Kerpower 0:1102d253f057 361
Kerpower 0:1102d253f057 362 while (_cmd.readable()) {
Kerpower 0:1102d253f057 363 temp = _cmd.getc();
Kerpower 0:1102d253f057 364 response[resp++] = (char)temp;
Kerpower 0:1102d253f057 365 }
Kerpower 0:1102d253f057 366 switch (resp) {
Kerpower 0:1102d253f057 367 case 4 :
Kerpower 0:1102d253f057 368 resp = (int)response[1]; // if OK populate data
Kerpower 0:1102d253f057 369 break;
Kerpower 0:1102d253f057 370 default :
Kerpower 0:1102d253f057 371 resp = -1; // else return 0
Kerpower 0:1102d253f057 372 break;
Kerpower 0:1102d253f057 373 }
Kerpower 0:1102d253f057 374
Kerpower 0:1102d253f057 375 #if DEBUGMODE
Kerpower 0:1102d253f057 376 pc.printf(" Answer received : %d\n", resp);
Kerpower 0:1102d253f057 377 #endif
Kerpower 0:1102d253f057 378
Kerpower 0:1102d253f057 379 return resp;
Kerpower 0:1102d253f057 380 }