Rihards Balass / 4DGL-mbed-32PTU
Committer:
CaptainR
Date:
Mon Sep 12 10:15:54 2016 +0000
Revision:
5:890ddd974624
Parent:
4:50511ed54ab4
Child:
6:a1a85f2bc04b
Changed communication, now uses interupt to get all of data from LCD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CaptainR 0:a5ef6bc3c2e8 1 //
CaptainR 2:81eaaa491a02 2 // Picaso_4DGL-32PTU is a class to drive 4D Systems TFT touch screens with PICASO processor
CaptainR 2:81eaaa491a02 3 // Tested with NUCLEO L152RE development board
CaptainR 2:81eaaa491a02 4 // Copyright (C) <2016> Rihards Balass <rihards.balass@gmail.com>
CaptainR 0:a5ef6bc3c2e8 5 //
CaptainR 2:81eaaa491a02 6 // Picaso_4DGL-32PTU is free software: you can redistribute it and/or modify
CaptainR 2:81eaaa491a02 7 // it under the terms of the GNU General Public License as published by
CaptainR 2:81eaaa491a02 8 // the Free Software Foundation, either version 3 of the License, or
CaptainR 2:81eaaa491a02 9 // (at your option) any later version.
CaptainR 2:81eaaa491a02 10 //
CaptainR 2:81eaaa491a02 11 // Picaso_4DGL-32PTU is distributed in the hope that it will be useful,
CaptainR 2:81eaaa491a02 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
CaptainR 2:81eaaa491a02 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
CaptainR 2:81eaaa491a02 14 // GNU General Public License for more details.
CaptainR 2:81eaaa491a02 15 //
CaptainR 2:81eaaa491a02 16 // You can see GNU General Public License at <http://www.gnu.org/licenses/>.
CaptainR 0:a5ef6bc3c2e8 17 //
CaptainR 0:a5ef6bc3c2e8 18
CaptainR 0:a5ef6bc3c2e8 19 #include "mbed.h"
CaptainR 0:a5ef6bc3c2e8 20 #include "Picaso_4DGL-32PTU.h"
CaptainR 0:a5ef6bc3c2e8 21
CaptainR 4:50511ed54ab4 22 DigitalOut led1(LED1);
CaptainR 0:a5ef6bc3c2e8 23
CaptainR 0:a5ef6bc3c2e8 24 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 25 PICASO_4DGL :: PICASO_4DGL(PinName tx, PinName rx, PinName rst) : pc(USBTX, USBRX), _cmd(tx, rx), _rst(rst) { // Constructor
CaptainR 4:50511ed54ab4 26
CaptainR 5:890ddd974624 27 rxBuf[RXBUFLEN] = 0; // create buffer
CaptainR 5:890ddd974624 28 index = 0;
CaptainR 5:890ddd974624 29 //trig = 0;
CaptainR 5:890ddd974624 30 _cmd.attach(this, &PICASO_4DGL::rxCallback, Serial::RxIrq); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
CaptainR 5:890ddd974624 31 //responseBuild(10);
CaptainR 4:50511ed54ab4 32
CaptainR 0:a5ef6bc3c2e8 33 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 34 pc.baud(115200);
CaptainR 0:a5ef6bc3c2e8 35
CaptainR 0:a5ef6bc3c2e8 36 pc.printf("\n\n\n");
CaptainR 0:a5ef6bc3c2e8 37 pc.printf("********************\n\r");
CaptainR 3:dcfbceb81fef 38 pc.printf("PICASO_4DGL CONSTRUCTOR\n\r");
CaptainR 0:a5ef6bc3c2e8 39 pc.printf("********************\n\r");
CaptainR 0:a5ef6bc3c2e8 40 #endif
CaptainR 0:a5ef6bc3c2e8 41
CaptainR 0:a5ef6bc3c2e8 42 _rst = 1; // put RESET pin to high to start TFT screen
CaptainR 0:a5ef6bc3c2e8 43 //wait_ms(10000);
CaptainR 0:a5ef6bc3c2e8 44 //reset();
CaptainR 0:a5ef6bc3c2e8 45 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 46 pc.printf("Wait 3 seconds for startup...\n\r");
CaptainR 3:dcfbceb81fef 47 #endif
CaptainR 0:a5ef6bc3c2e8 48 wait_ms(3000);
CaptainR 3:dcfbceb81fef 49
CaptainR 0:a5ef6bc3c2e8 50 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 51 pc.printf("set baudrate to 9600...\n\r");
CaptainR 0:a5ef6bc3c2e8 52 #endif
CaptainR 4:50511ed54ab4 53 baudrate(9600);
CaptainR 3:dcfbceb81fef 54
CaptainR 0:a5ef6bc3c2e8 55 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 56 pc.printf("clear screen...\n\r");
CaptainR 0:a5ef6bc3c2e8 57 #endif
CaptainR 0:a5ef6bc3c2e8 58 cls(); // clear screen
CaptainR 3:dcfbceb81fef 59 wait_ms(1000);
CaptainR 0:a5ef6bc3c2e8 60 screenOrientation(1);
CaptainR 0:a5ef6bc3c2e8 61 setFont(3);
CaptainR 3:dcfbceb81fef 62 //graphicsDemo();
CaptainR 0:a5ef6bc3c2e8 63
CaptainR 0:a5ef6bc3c2e8 64 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 65 pc.printf("Start Demo...\n\r");
CaptainR 0:a5ef6bc3c2e8 66 wait_ms(1000);
CaptainR 3:dcfbceb81fef 67 //mainDemo();
CaptainR 0:a5ef6bc3c2e8 68 //textDemo();
CaptainR 3:dcfbceb81fef 69 graphicsDemo();
CaptainR 0:a5ef6bc3c2e8 70 #endif
CaptainR 0:a5ef6bc3c2e8 71 }
CaptainR 0:a5ef6bc3c2e8 72
CaptainR 0:a5ef6bc3c2e8 73 //******************************************************************************************************
CaptainR 5:890ddd974624 74 void PICASO_4DGL :: rxCallback() {
CaptainR 0:a5ef6bc3c2e8 75
CaptainR 5:890ddd974624 76 while(1) {
CaptainR 5:890ddd974624 77 if(_cmd.readable()) {
CaptainR 5:890ddd974624 78 //pc.printf("\n\n\r CALLBACK %02X\n\n\r", _cmd.getc());
CaptainR 5:890ddd974624 79 //ack = 1;
CaptainR 5:890ddd974624 80 //pc.printf("\n\r INDEX = %i\n\r", index);
CaptainR 5:890ddd974624 81 rxBuf[index++] = _cmd.getc();
CaptainR 5:890ddd974624 82 //trig = 1;
CaptainR 5:890ddd974624 83 break;
CaptainR 5:890ddd974624 84 }
CaptainR 5:890ddd974624 85 pc.printf("\n\r...PSC...\n\r");
CaptainR 5:890ddd974624 86 }
CaptainR 0:a5ef6bc3c2e8 87 }
CaptainR 0:a5ef6bc3c2e8 88
CaptainR 0:a5ef6bc3c2e8 89 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 90 void PICASO_4DGL :: writeBYTE(char c) { // send a BYTE command to screen
CaptainR 0:a5ef6bc3c2e8 91
CaptainR 0:a5ef6bc3c2e8 92 _cmd.putc(c);
CaptainR 0:a5ef6bc3c2e8 93
CaptainR 0:a5ef6bc3c2e8 94 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 95 pc.printf(" Char sent : 0x%02X ",c);
CaptainR 0:a5ef6bc3c2e8 96 pc.putc(c);
CaptainR 0:a5ef6bc3c2e8 97 pc.printf(" \n\r");
CaptainR 0:a5ef6bc3c2e8 98 #endif
CaptainR 0:a5ef6bc3c2e8 99
CaptainR 0:a5ef6bc3c2e8 100 }
CaptainR 0:a5ef6bc3c2e8 101
CaptainR 0:a5ef6bc3c2e8 102 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 103 void PICASO_4DGL :: freeBUFFER(void) { // Clear serial buffer before writing command
CaptainR 0:a5ef6bc3c2e8 104
CaptainR 0:a5ef6bc3c2e8 105 while (_cmd.readable()) _cmd.getc(); // clear buffer garbage
CaptainR 0:a5ef6bc3c2e8 106 }
CaptainR 0:a5ef6bc3c2e8 107
CaptainR 0:a5ef6bc3c2e8 108 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 109 void PICASO_4DGL :: writeCOMMAND(char *command, int number) { // send several BYTES making a command and return an answer
CaptainR 0:a5ef6bc3c2e8 110
CaptainR 0:a5ef6bc3c2e8 111 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 112 pc.printf("\n\r");
CaptainR 0:a5ef6bc3c2e8 113 pc.printf("New COMMAND : 0x%02X%02X\n\r", command[0], command[1]);
CaptainR 0:a5ef6bc3c2e8 114 #endif
CaptainR 0:a5ef6bc3c2e8 115 int i;
CaptainR 0:a5ef6bc3c2e8 116 freeBUFFER();
CaptainR 0:a5ef6bc3c2e8 117
CaptainR 0:a5ef6bc3c2e8 118 for (i = 0; i < number; i++) writeBYTE(command[i]); // send command to serial port
CaptainR 0:a5ef6bc3c2e8 119 }
CaptainR 0:a5ef6bc3c2e8 120
CaptainR 0:a5ef6bc3c2e8 121 //**************************************************************************
CaptainR 3:dcfbceb81fef 122 void PICASO_4DGL :: reset() { // Reset Screen
CaptainR 0:a5ef6bc3c2e8 123
CaptainR 0:a5ef6bc3c2e8 124 _rst = 0; // put RESET pin to low
CaptainR 0:a5ef6bc3c2e8 125 wait_ms(TEMPO); // wait a few milliseconds for command reception
CaptainR 0:a5ef6bc3c2e8 126 _rst = 1; // put RESET back to high
CaptainR 0:a5ef6bc3c2e8 127 wait(3); // wait 3s for screen to restart
CaptainR 0:a5ef6bc3c2e8 128
CaptainR 0:a5ef6bc3c2e8 129 freeBUFFER(); // clean buffer from possible garbage
CaptainR 0:a5ef6bc3c2e8 130 }
CaptainR 0:a5ef6bc3c2e8 131
CaptainR 0:a5ef6bc3c2e8 132 //**************************************************************************
CaptainR 3:dcfbceb81fef 133 void PICASO_4DGL :: baudrate(long speed) { // set screen baud rate
CaptainR 0:a5ef6bc3c2e8 134
CaptainR 0:a5ef6bc3c2e8 135 char command[4]= "";
CaptainR 2:81eaaa491a02 136 command[0] = (BAUDRATE >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 137 command[1] = (BAUDRATE >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 138 switch (speed) {
CaptainR 0:a5ef6bc3c2e8 139 case 300 :
CaptainR 2:81eaaa491a02 140 command[2] = (BAUD_300 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 141 command[3] = (BAUD_300 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 142 break;
CaptainR 0:a5ef6bc3c2e8 143 case 600 :
CaptainR 2:81eaaa491a02 144 command[2] = (BAUD_600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 145 command[3] = (BAUD_600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 146 break;
CaptainR 0:a5ef6bc3c2e8 147 case 1200 :
CaptainR 2:81eaaa491a02 148 command[2] = (BAUD_1200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 149 command[3] = (BAUD_1200 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 150 break;
CaptainR 0:a5ef6bc3c2e8 151 case 2400 :
CaptainR 2:81eaaa491a02 152 command[2] = (BAUD_2400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 153 command[3] = (BAUD_2400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 154 break;
CaptainR 0:a5ef6bc3c2e8 155 case 4800 :
CaptainR 2:81eaaa491a02 156 command[2] = (BAUD_4800 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 157 command[3] = (BAUD_4800 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 158 break;
CaptainR 0:a5ef6bc3c2e8 159 case 9600 :
CaptainR 2:81eaaa491a02 160 command[2] = (BAUD_9600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 161 command[3] = (BAUD_9600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 162 break;
CaptainR 0:a5ef6bc3c2e8 163 case 14400 :
CaptainR 2:81eaaa491a02 164 command[2] = (BAUD_14400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 165 command[3] = (BAUD_14400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 166 break;
CaptainR 0:a5ef6bc3c2e8 167 case 19200 :
CaptainR 2:81eaaa491a02 168 command[2] = (BAUD_19200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 169 command[3] = (BAUD_19200 >> (8*0)) & 0xff;
CaptainR 2:81eaaa491a02 170 break;
CaptainR 2:81eaaa491a02 171 case 31250 :
CaptainR 2:81eaaa491a02 172 command[2] = (BAUD_31250 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 173 command[3] = (BAUD_31250 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 174 break;
CaptainR 0:a5ef6bc3c2e8 175 case 38400 :
CaptainR 2:81eaaa491a02 176 command[2] = (BAUD_38400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 177 command[3] = (BAUD_38400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 178 break;
CaptainR 0:a5ef6bc3c2e8 179 case 56000 :
CaptainR 2:81eaaa491a02 180 command[2] = (BAUD_56000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 181 command[3] = (BAUD_56000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 182 break;
CaptainR 0:a5ef6bc3c2e8 183 case 57600 :
CaptainR 2:81eaaa491a02 184 command[2] = (BAUD_57600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 185 command[3] = (BAUD_57600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 186 break;
CaptainR 0:a5ef6bc3c2e8 187 case 115200 :
CaptainR 2:81eaaa491a02 188 command[2] = (BAUD_115200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 189 command[3] = (BAUD_115200 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 190 break;
CaptainR 0:a5ef6bc3c2e8 191 case 128000 :
CaptainR 2:81eaaa491a02 192 command[2] = (BAUD_128000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 193 command[3] = (BAUD_128000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 194 break;
CaptainR 0:a5ef6bc3c2e8 195 case 256000 :
CaptainR 2:81eaaa491a02 196 command[2] = (BAUD_256000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 197 command[3] = (BAUD_256000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 198 break;
CaptainR 0:a5ef6bc3c2e8 199 case 300000 :
CaptainR 2:81eaaa491a02 200 command[2] = (BAUD_300000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 201 command[3] = (BAUD_300000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 202 break;
CaptainR 0:a5ef6bc3c2e8 203 case 375000 :
CaptainR 2:81eaaa491a02 204 command[2] = (BAUD_375000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 205 command[3] = (BAUD_375000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 206 break;
CaptainR 0:a5ef6bc3c2e8 207 case 500000 :
CaptainR 2:81eaaa491a02 208 command[2] = (BAUD_500000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 209 command[3] = (BAUD_500000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 210 break;
CaptainR 0:a5ef6bc3c2e8 211 case 600000 :
CaptainR 2:81eaaa491a02 212 command[2] = (BAUD_600000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 213 command[3] = (BAUD_600000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 214 break;
CaptainR 0:a5ef6bc3c2e8 215 default :
CaptainR 2:81eaaa491a02 216 command[2] = (BAUD_9600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 217 command[3] = (BAUD_9600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 218 speed = 9600;
CaptainR 0:a5ef6bc3c2e8 219 break;
CaptainR 0:a5ef6bc3c2e8 220 }
CaptainR 0:a5ef6bc3c2e8 221
CaptainR 0:a5ef6bc3c2e8 222 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 223 pc.printf("\n\r");
CaptainR 0:a5ef6bc3c2e8 224 pc.printf("New COMMAND : 0x%02X%02X\n\r", command[0], command[1]);
CaptainR 0:a5ef6bc3c2e8 225 #endif
CaptainR 0:a5ef6bc3c2e8 226
CaptainR 0:a5ef6bc3c2e8 227 int i;
CaptainR 0:a5ef6bc3c2e8 228 freeBUFFER();
CaptainR 0:a5ef6bc3c2e8 229
CaptainR 0:a5ef6bc3c2e8 230 //Change baudrates - as instructed by 4DGL
CaptainR 0:a5ef6bc3c2e8 231 if (speed == 128000) speed = 133928;
CaptainR 0:a5ef6bc3c2e8 232 if (speed == 256000) speed = 282353;
CaptainR 0:a5ef6bc3c2e8 233 if (speed == 300000) speed = 312500;
CaptainR 0:a5ef6bc3c2e8 234 if (speed == 375000) speed = 401785;
CaptainR 0:a5ef6bc3c2e8 235 if (speed == 500000) speed = 562500;
CaptainR 0:a5ef6bc3c2e8 236 if (speed == 600000) speed = 703125;
CaptainR 0:a5ef6bc3c2e8 237
CaptainR 0:a5ef6bc3c2e8 238 for (i = 0; i <4; i++) writeBYTE(command[i]); // send command to serial port
CaptainR 0:a5ef6bc3c2e8 239 _cmd.baud(speed); // set mbed to same speed
CaptainR 0:a5ef6bc3c2e8 240
CaptainR 5:890ddd974624 241 getResponse(1);
CaptainR 0:a5ef6bc3c2e8 242 }
CaptainR 0:a5ef6bc3c2e8 243
CaptainR 0:a5ef6bc3c2e8 244 //**************************************************************************
CaptainR 5:890ddd974624 245 void PICASO_4DGL :: getResponse(int count) {
CaptainR 5:890ddd974624 246
CaptainR 5:890ddd974624 247 pc.printf("\n\r Wait for answer...");
CaptainR 5:890ddd974624 248 while (index < count) wait_ms(100); // wait for screen answer
CaptainR 0:a5ef6bc3c2e8 249
CaptainR 5:890ddd974624 250 pc.printf("\n\r INDEX = %i\n\r", index);
CaptainR 5:890ddd974624 251 pc.printf("\n\r Answer = ");
CaptainR 5:890ddd974624 252 for (int i = 0; i < index; i++) {
CaptainR 5:890ddd974624 253 pc.printf("%02X ", rxBuf[i]);
CaptainR 0:a5ef6bc3c2e8 254 }
CaptainR 4:50511ed54ab4 255 pc.printf("\n\r");
CaptainR 5:890ddd974624 256 index = 0;
CaptainR 0:a5ef6bc3c2e8 257 }
CaptainR 0:a5ef6bc3c2e8 258
CaptainR 0:a5ef6bc3c2e8 259 //**************************************************************************
CaptainR 3:dcfbceb81fef 260 void PICASO_4DGL :: screenOrientation(char c) { // select screen orientation
CaptainR 0:a5ef6bc3c2e8 261 char command[4] = "";
CaptainR 2:81eaaa491a02 262 command[0] = (ORIENTATION >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 263 command[1] = (ORIENTATION >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 264
CaptainR 0:a5ef6bc3c2e8 265 switch (c) {
CaptainR 0:a5ef6bc3c2e8 266 case 1 :
CaptainR 2:81eaaa491a02 267 command[2] = (LANDSCAPE >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 268 command[3] = (LANDSCAPE >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 269 currentOrientation = 1;
CaptainR 0:a5ef6bc3c2e8 270 break;
CaptainR 0:a5ef6bc3c2e8 271 case 2 :
CaptainR 2:81eaaa491a02 272 command[2] = (LANDSCAPE_R >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 273 command[3] = (LANDSCAPE_R >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 274 currentOrientation = 2;
CaptainR 0:a5ef6bc3c2e8 275 break;
CaptainR 0:a5ef6bc3c2e8 276 case 3 :
CaptainR 2:81eaaa491a02 277 command[2] = (PORTRAIT >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 278 command[3] = (PORTRAIT >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 279 currentOrientation = 3;
CaptainR 0:a5ef6bc3c2e8 280 break;
CaptainR 0:a5ef6bc3c2e8 281 case 4 :
CaptainR 2:81eaaa491a02 282 command[2] = (PORTRAIT_R >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 283 command[3] = (PORTRAIT_R >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 284 currentOrientation = 4;
CaptainR 0:a5ef6bc3c2e8 285 break;
CaptainR 0:a5ef6bc3c2e8 286 }
CaptainR 0:a5ef6bc3c2e8 287
CaptainR 0:a5ef6bc3c2e8 288 writeCOMMAND(command, 4);
CaptainR 5:890ddd974624 289 getResponse(3);
CaptainR 0:a5ef6bc3c2e8 290 }