Rihards Balass / 4DGL-mbed-32PTU
Committer:
CaptainR
Date:
Wed Sep 14 13:27:37 2016 +0000
Revision:
12:29f5ad896382
Parent:
11:3ebd2263f3e9
Child:
13:1a0800957412
a little cleanup, media init and address pointer set working; started on read and write block

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 12:29f5ad896382 28 buffer[BUFFER_SIZE] = 0;
CaptainR 5:890ddd974624 29 index = 0;
CaptainR 12:29f5ad896382 30 _cmd.attach(this, &PICASO_4DGL::rxCallback, Serial::RxIrq);
CaptainR 4:50511ed54ab4 31
CaptainR 11:3ebd2263f3e9 32 pc.baud(115200);
CaptainR 0:a5ef6bc3c2e8 33 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 34 pc.printf("\n\n\n");
CaptainR 0:a5ef6bc3c2e8 35 pc.printf("********************\n\r");
CaptainR 3:dcfbceb81fef 36 pc.printf("PICASO_4DGL CONSTRUCTOR\n\r");
CaptainR 0:a5ef6bc3c2e8 37 pc.printf("********************\n\r");
CaptainR 0:a5ef6bc3c2e8 38 #endif
CaptainR 0:a5ef6bc3c2e8 39 _rst = 1; // put RESET pin to high to start TFT screen
CaptainR 12:29f5ad896382 40
CaptainR 0:a5ef6bc3c2e8 41 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 42 pc.printf("Wait 3 seconds for startup...\n\r");
CaptainR 3:dcfbceb81fef 43 #endif
CaptainR 0:a5ef6bc3c2e8 44 wait_ms(3000);
CaptainR 3:dcfbceb81fef 45
CaptainR 0:a5ef6bc3c2e8 46 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 47 pc.printf("set baudrate to 9600...\n\r");
CaptainR 0:a5ef6bc3c2e8 48 #endif
CaptainR 4:50511ed54ab4 49 baudrate(9600);
CaptainR 3:dcfbceb81fef 50
CaptainR 0:a5ef6bc3c2e8 51 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 52 pc.printf("clear screen...\n\r");
CaptainR 0:a5ef6bc3c2e8 53 #endif
CaptainR 3:dcfbceb81fef 54 wait_ms(1000);
CaptainR 12:29f5ad896382 55 screenMode(landscape);
CaptainR 12:29f5ad896382 56 setFont(font3);
CaptainR 12:29f5ad896382 57 cls();
CaptainR 0:a5ef6bc3c2e8 58
CaptainR 12:29f5ad896382 59 #if DEMO
CaptainR 3:dcfbceb81fef 60 //mainDemo();
CaptainR 0:a5ef6bc3c2e8 61 //textDemo();
CaptainR 12:29f5ad896382 62 //graphicsDemo();
CaptainR 12:29f5ad896382 63 mediaDemo();
CaptainR 0:a5ef6bc3c2e8 64 #endif
CaptainR 0:a5ef6bc3c2e8 65 }
CaptainR 0:a5ef6bc3c2e8 66
CaptainR 0:a5ef6bc3c2e8 67 //******************************************************************************************************
CaptainR 5:890ddd974624 68 void PICASO_4DGL :: rxCallback() {
CaptainR 0:a5ef6bc3c2e8 69
CaptainR 5:890ddd974624 70 while(1) {
CaptainR 5:890ddd974624 71 if(_cmd.readable()) {
CaptainR 5:890ddd974624 72 rxBuf[index++] = _cmd.getc();
CaptainR 5:890ddd974624 73 break;
CaptainR 5:890ddd974624 74 }
CaptainR 5:890ddd974624 75 }
CaptainR 0:a5ef6bc3c2e8 76 }
CaptainR 0:a5ef6bc3c2e8 77
CaptainR 0:a5ef6bc3c2e8 78 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 79 void PICASO_4DGL :: writeBYTE(char c) { // send a BYTE command to screen
CaptainR 0:a5ef6bc3c2e8 80
CaptainR 0:a5ef6bc3c2e8 81 _cmd.putc(c);
CaptainR 0:a5ef6bc3c2e8 82
CaptainR 0:a5ef6bc3c2e8 83 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 84 pc.printf(" Char sent : 0x%02X ",c);
CaptainR 0:a5ef6bc3c2e8 85 pc.putc(c);
CaptainR 0:a5ef6bc3c2e8 86 pc.printf(" \n\r");
CaptainR 0:a5ef6bc3c2e8 87 #endif
CaptainR 0:a5ef6bc3c2e8 88
CaptainR 0:a5ef6bc3c2e8 89 }
CaptainR 0:a5ef6bc3c2e8 90
CaptainR 0:a5ef6bc3c2e8 91 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 92 void PICASO_4DGL :: freeBUFFER(void) { // Clear serial buffer before writing command
CaptainR 0:a5ef6bc3c2e8 93
CaptainR 0:a5ef6bc3c2e8 94 while (_cmd.readable()) _cmd.getc(); // clear buffer garbage
CaptainR 0:a5ef6bc3c2e8 95 }
CaptainR 0:a5ef6bc3c2e8 96
CaptainR 0:a5ef6bc3c2e8 97 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 98 void PICASO_4DGL :: writeCOMMAND(char *command, int number) { // send several BYTES making a command and return an answer
CaptainR 0:a5ef6bc3c2e8 99
CaptainR 0:a5ef6bc3c2e8 100 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 101 pc.printf("\n\r");
CaptainR 0:a5ef6bc3c2e8 102 pc.printf("New COMMAND : 0x%02X%02X\n\r", command[0], command[1]);
CaptainR 0:a5ef6bc3c2e8 103 #endif
CaptainR 0:a5ef6bc3c2e8 104 int i;
CaptainR 0:a5ef6bc3c2e8 105 freeBUFFER();
CaptainR 0:a5ef6bc3c2e8 106
CaptainR 0:a5ef6bc3c2e8 107 for (i = 0; i < number; i++) writeBYTE(command[i]); // send command to serial port
CaptainR 0:a5ef6bc3c2e8 108 }
CaptainR 0:a5ef6bc3c2e8 109
CaptainR 0:a5ef6bc3c2e8 110 //**************************************************************************
CaptainR 3:dcfbceb81fef 111 void PICASO_4DGL :: reset() { // Reset Screen
CaptainR 0:a5ef6bc3c2e8 112
CaptainR 0:a5ef6bc3c2e8 113 _rst = 0; // put RESET pin to low
CaptainR 0:a5ef6bc3c2e8 114 wait_ms(TEMPO); // wait a few milliseconds for command reception
CaptainR 0:a5ef6bc3c2e8 115 _rst = 1; // put RESET back to high
CaptainR 0:a5ef6bc3c2e8 116 wait(3); // wait 3s for screen to restart
CaptainR 0:a5ef6bc3c2e8 117
CaptainR 0:a5ef6bc3c2e8 118 freeBUFFER(); // clean buffer from possible garbage
CaptainR 0:a5ef6bc3c2e8 119 }
CaptainR 0:a5ef6bc3c2e8 120
CaptainR 0:a5ef6bc3c2e8 121 //**************************************************************************
CaptainR 3:dcfbceb81fef 122 void PICASO_4DGL :: baudrate(long speed) { // set screen baud rate
CaptainR 0:a5ef6bc3c2e8 123
CaptainR 0:a5ef6bc3c2e8 124 char command[4]= "";
CaptainR 2:81eaaa491a02 125 command[0] = (BAUDRATE >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 126 command[1] = (BAUDRATE >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 127 switch (speed) {
CaptainR 0:a5ef6bc3c2e8 128 case 300 :
CaptainR 2:81eaaa491a02 129 command[2] = (BAUD_300 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 130 command[3] = (BAUD_300 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 131 break;
CaptainR 0:a5ef6bc3c2e8 132 case 600 :
CaptainR 2:81eaaa491a02 133 command[2] = (BAUD_600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 134 command[3] = (BAUD_600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 135 break;
CaptainR 0:a5ef6bc3c2e8 136 case 1200 :
CaptainR 2:81eaaa491a02 137 command[2] = (BAUD_1200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 138 command[3] = (BAUD_1200 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 139 break;
CaptainR 0:a5ef6bc3c2e8 140 case 2400 :
CaptainR 2:81eaaa491a02 141 command[2] = (BAUD_2400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 142 command[3] = (BAUD_2400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 143 break;
CaptainR 0:a5ef6bc3c2e8 144 case 4800 :
CaptainR 2:81eaaa491a02 145 command[2] = (BAUD_4800 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 146 command[3] = (BAUD_4800 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 147 break;
CaptainR 0:a5ef6bc3c2e8 148 case 9600 :
CaptainR 2:81eaaa491a02 149 command[2] = (BAUD_9600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 150 command[3] = (BAUD_9600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 151 break;
CaptainR 0:a5ef6bc3c2e8 152 case 14400 :
CaptainR 2:81eaaa491a02 153 command[2] = (BAUD_14400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 154 command[3] = (BAUD_14400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 155 break;
CaptainR 0:a5ef6bc3c2e8 156 case 19200 :
CaptainR 2:81eaaa491a02 157 command[2] = (BAUD_19200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 158 command[3] = (BAUD_19200 >> (8*0)) & 0xff;
CaptainR 2:81eaaa491a02 159 break;
CaptainR 2:81eaaa491a02 160 case 31250 :
CaptainR 2:81eaaa491a02 161 command[2] = (BAUD_31250 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 162 command[3] = (BAUD_31250 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 163 break;
CaptainR 0:a5ef6bc3c2e8 164 case 38400 :
CaptainR 2:81eaaa491a02 165 command[2] = (BAUD_38400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 166 command[3] = (BAUD_38400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 167 break;
CaptainR 0:a5ef6bc3c2e8 168 case 56000 :
CaptainR 2:81eaaa491a02 169 command[2] = (BAUD_56000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 170 command[3] = (BAUD_56000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 171 break;
CaptainR 0:a5ef6bc3c2e8 172 case 57600 :
CaptainR 2:81eaaa491a02 173 command[2] = (BAUD_57600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 174 command[3] = (BAUD_57600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 175 break;
CaptainR 0:a5ef6bc3c2e8 176 case 115200 :
CaptainR 2:81eaaa491a02 177 command[2] = (BAUD_115200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 178 command[3] = (BAUD_115200 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 179 break;
CaptainR 0:a5ef6bc3c2e8 180 case 128000 :
CaptainR 2:81eaaa491a02 181 command[2] = (BAUD_128000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 182 command[3] = (BAUD_128000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 183 break;
CaptainR 0:a5ef6bc3c2e8 184 case 256000 :
CaptainR 2:81eaaa491a02 185 command[2] = (BAUD_256000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 186 command[3] = (BAUD_256000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 187 break;
CaptainR 0:a5ef6bc3c2e8 188 case 300000 :
CaptainR 2:81eaaa491a02 189 command[2] = (BAUD_300000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 190 command[3] = (BAUD_300000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 191 break;
CaptainR 0:a5ef6bc3c2e8 192 case 375000 :
CaptainR 2:81eaaa491a02 193 command[2] = (BAUD_375000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 194 command[3] = (BAUD_375000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 195 break;
CaptainR 0:a5ef6bc3c2e8 196 case 500000 :
CaptainR 2:81eaaa491a02 197 command[2] = (BAUD_500000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 198 command[3] = (BAUD_500000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 199 break;
CaptainR 0:a5ef6bc3c2e8 200 case 600000 :
CaptainR 2:81eaaa491a02 201 command[2] = (BAUD_600000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 202 command[3] = (BAUD_600000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 203 break;
CaptainR 0:a5ef6bc3c2e8 204 default :
CaptainR 2:81eaaa491a02 205 command[2] = (BAUD_9600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 206 command[3] = (BAUD_9600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 207 speed = 9600;
CaptainR 0:a5ef6bc3c2e8 208 break;
CaptainR 0:a5ef6bc3c2e8 209 }
CaptainR 0:a5ef6bc3c2e8 210
CaptainR 0:a5ef6bc3c2e8 211 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 212 pc.printf("\n\r");
CaptainR 0:a5ef6bc3c2e8 213 pc.printf("New COMMAND : 0x%02X%02X\n\r", command[0], command[1]);
CaptainR 0:a5ef6bc3c2e8 214 #endif
CaptainR 0:a5ef6bc3c2e8 215
CaptainR 0:a5ef6bc3c2e8 216 int i;
CaptainR 0:a5ef6bc3c2e8 217 freeBUFFER();
CaptainR 0:a5ef6bc3c2e8 218
CaptainR 0:a5ef6bc3c2e8 219 //Change baudrates - as instructed by 4DGL
CaptainR 12:29f5ad896382 220 if (speed == 128000) speed = 133929;
CaptainR 12:29f5ad896382 221 if (speed == 256000) speed = 281250;
CaptainR 0:a5ef6bc3c2e8 222 if (speed == 300000) speed = 312500;
CaptainR 12:29f5ad896382 223 if (speed == 375000) speed = 401786;
CaptainR 0:a5ef6bc3c2e8 224 if (speed == 500000) speed = 562500;
CaptainR 0:a5ef6bc3c2e8 225 if (speed == 600000) speed = 703125;
CaptainR 0:a5ef6bc3c2e8 226
CaptainR 0:a5ef6bc3c2e8 227 for (i = 0; i <4; i++) writeBYTE(command[i]); // send command to serial port
CaptainR 12:29f5ad896382 228 _cmd.baud(speed);
CaptainR 5:890ddd974624 229 getResponse(1);
CaptainR 0:a5ef6bc3c2e8 230 }
CaptainR 0:a5ef6bc3c2e8 231
CaptainR 0:a5ef6bc3c2e8 232 //**************************************************************************
CaptainR 12:29f5ad896382 233 bool PICASO_4DGL :: getResponse(int count) {
CaptainR 5:890ddd974624 234
CaptainR 12:29f5ad896382 235 #if DEBUGMODE
CaptainR 12:29f5ad896382 236 pc.printf("\n\r DEBUG: Wait for answer...");
CaptainR 12:29f5ad896382 237 #endif
CaptainR 12:29f5ad896382 238 //pc.printf("\n\r count = %i, index = %i", count, index);
CaptainR 12:29f5ad896382 239 while (index < count) wait_ms(100); // wait for screen answer
CaptainR 0:a5ef6bc3c2e8 240
CaptainR 12:29f5ad896382 241 #if DEBUGMODE
CaptainR 12:29f5ad896382 242 pc.printf("\n\r DEBUG: Answer = ");
CaptainR 5:890ddd974624 243 for (int i = 0; i < index; i++) {
CaptainR 5:890ddd974624 244 pc.printf("%02X ", rxBuf[i]);
CaptainR 0:a5ef6bc3c2e8 245 }
CaptainR 4:50511ed54ab4 246 pc.printf("\n\r");
CaptainR 12:29f5ad896382 247 #endif
CaptainR 12:29f5ad896382 248 if (rxBuf[0] == 0x06) {
CaptainR 12:29f5ad896382 249 index = 0; // set buffer index to 0
CaptainR 12:29f5ad896382 250 return true;
CaptainR 12:29f5ad896382 251 }
CaptainR 12:29f5ad896382 252 else {
CaptainR 12:29f5ad896382 253 index = 0;
CaptainR 12:29f5ad896382 254 return false;
CaptainR 12:29f5ad896382 255 }
CaptainR 0:a5ef6bc3c2e8 256 }
CaptainR 0:a5ef6bc3c2e8 257
CaptainR 0:a5ef6bc3c2e8 258 //**************************************************************************
CaptainR 12:29f5ad896382 259 bool PICASO_4DGL :: calculateOrbitResponse() {
CaptainR 6:a1a85f2bc04b 260
CaptainR 12:29f5ad896382 261 #if DEBUGMODE
CaptainR 12:29f5ad896382 262 pc.printf("\n\r DEBUG: Wait for answer...");
CaptainR 12:29f5ad896382 263 #endif
CaptainR 12:29f5ad896382 264 while (index < 5) wait_ms(100); // wait for screen answer
CaptainR 6:a1a85f2bc04b 265
CaptainR 12:29f5ad896382 266 #if DEBUGMODE
CaptainR 12:29f5ad896382 267 pc.printf("\n\r DEBUG: Answer = ");
CaptainR 6:a1a85f2bc04b 268 for (int i = 0; i < index; i++) {
CaptainR 6:a1a85f2bc04b 269 pc.printf("%02X ", rxBuf[i]);
CaptainR 6:a1a85f2bc04b 270 }
CaptainR 6:a1a85f2bc04b 271 pc.printf("\n\r");
CaptainR 12:29f5ad896382 272 #endif
CaptainR 6:a1a85f2bc04b 273 Xdest = rxBuf[1] << 8 | rxBuf[2];
CaptainR 6:a1a85f2bc04b 274 Ydest = rxBuf[3] << 8 | rxBuf[4];
CaptainR 12:29f5ad896382 275 #if DEBUGMODE
CaptainR 12:29f5ad896382 276 pc.printf("\n\r DEBUG: New coordiantes = %i x %i\n\r", Xdest, Ydest);
CaptainR 12:29f5ad896382 277 #endif
CaptainR 12:29f5ad896382 278 index = 0; // set buffer index to 0
CaptainR 12:29f5ad896382 279 return true;
CaptainR 6:a1a85f2bc04b 280 }
CaptainR 6:a1a85f2bc04b 281
CaptainR 11:3ebd2263f3e9 282
CaptainR 6:a1a85f2bc04b 283 //**************************************************************************
CaptainR 11:3ebd2263f3e9 284 short PICASO_4DGL :: getGraphicsResponse() {
CaptainR 11:3ebd2263f3e9 285
CaptainR 12:29f5ad896382 286 #if DEBUGMODE
CaptainR 12:29f5ad896382 287 pc.printf("\n\r DEBUG: Wait for answer...");
CaptainR 12:29f5ad896382 288 #endif
CaptainR 12:29f5ad896382 289 while (index < 3) wait_ms(100); // wait for screen answer
CaptainR 0:a5ef6bc3c2e8 290
CaptainR 12:29f5ad896382 291 #if DEBUGMODE
CaptainR 12:29f5ad896382 292 pc.printf("\n\r DEBUG: Answer = ");
CaptainR 12:29f5ad896382 293 for (int i = 0; i < index; i++) {
CaptainR 12:29f5ad896382 294 pc.printf("%02X ", rxBuf[i]);
CaptainR 12:29f5ad896382 295 }
CaptainR 12:29f5ad896382 296 pc.printf("\n\r");
CaptainR 12:29f5ad896382 297 #endif
CaptainR 12:29f5ad896382 298 short answer = rxBuf[1] << 8 | rxBuf[2]; // set response variable
CaptainR 12:29f5ad896382 299 index = 0; // set buffer index to 0
CaptainR 12:29f5ad896382 300 return answer;
CaptainR 12:29f5ad896382 301 }
CaptainR 12:29f5ad896382 302
CaptainR 12:29f5ad896382 303 //**************************************************************************
CaptainR 12:29f5ad896382 304 short PICASO_4DGL :: mediaInitResponse() {
CaptainR 12:29f5ad896382 305
CaptainR 12:29f5ad896382 306 #if DEBUGMODE
CaptainR 12:29f5ad896382 307 pc.printf("\n\r DEBUG: Wait for answer...");
CaptainR 12:29f5ad896382 308 #endif
CaptainR 12:29f5ad896382 309 while (index < 3) wait_ms(100); // wait for screen answer
CaptainR 12:29f5ad896382 310
CaptainR 12:29f5ad896382 311 #if DEBUGMODE
CaptainR 12:29f5ad896382 312 pc.printf("\n\r DEBUG: Answer = ");
CaptainR 11:3ebd2263f3e9 313 for (int i = 0; i < index; i++) {
CaptainR 11:3ebd2263f3e9 314 pc.printf("%02X ", rxBuf[i]);
CaptainR 0:a5ef6bc3c2e8 315 }
CaptainR 11:3ebd2263f3e9 316 pc.printf("\n\r");
CaptainR 12:29f5ad896382 317 #endif
CaptainR 12:29f5ad896382 318 short answer = rxBuf[1] << 8 | rxBuf[2];
CaptainR 11:3ebd2263f3e9 319 index = 0;
CaptainR 11:3ebd2263f3e9 320 return answer;
CaptainR 0:a5ef6bc3c2e8 321 }
CaptainR 12:29f5ad896382 322
CaptainR 12:29f5ad896382 323 //**************************************************************************
CaptainR 12:29f5ad896382 324 bool PICASO_4DGL :: readSectorResponse(int count) {
CaptainR 12:29f5ad896382 325
CaptainR 12:29f5ad896382 326 #if DEBUGMODE
CaptainR 12:29f5ad896382 327 pc.printf("\n\r DEBUG: Wait for answer");
CaptainR 12:29f5ad896382 328 #endif
CaptainR 12:29f5ad896382 329 while (index < count) {
CaptainR 12:29f5ad896382 330 wait_ms(100); // wait for screen answer
CaptainR 12:29f5ad896382 331 #if DEBUGMODE
CaptainR 12:29f5ad896382 332 pc.printf(".");
CaptainR 12:29f5ad896382 333 #endif
CaptainR 12:29f5ad896382 334 }
CaptainR 12:29f5ad896382 335 #if DEBUGMODE
CaptainR 12:29f5ad896382 336 pc.printf("\n\r");
CaptainR 12:29f5ad896382 337 #endif
CaptainR 12:29f5ad896382 338
CaptainR 12:29f5ad896382 339 #if DEBUGMODE
CaptainR 12:29f5ad896382 340 pc.printf("\n\r DEBUG: Answer = ");
CaptainR 12:29f5ad896382 341 for (int i = 0; i < index; i++) {
CaptainR 12:29f5ad896382 342 pc.printf("%02X ", rxBuf[i]);
CaptainR 12:29f5ad896382 343 }
CaptainR 12:29f5ad896382 344 pc.printf("\n\r");
CaptainR 12:29f5ad896382 345 #endif
CaptainR 12:29f5ad896382 346 int j = 3;
CaptainR 12:29f5ad896382 347 for (int i = 0; i < BUFFER_SIZE; i++) {
CaptainR 12:29f5ad896382 348 buffer[i] = rxBuf[j];
CaptainR 12:29f5ad896382 349 j++;
CaptainR 12:29f5ad896382 350 }
CaptainR 12:29f5ad896382 351 if (rxBuf[0] == 0x06) {
CaptainR 12:29f5ad896382 352 index = 0; // set buffer index to 0
CaptainR 12:29f5ad896382 353 return true;
CaptainR 12:29f5ad896382 354 }
CaptainR 12:29f5ad896382 355 else {
CaptainR 12:29f5ad896382 356 index = 0;
CaptainR 12:29f5ad896382 357 return false;
CaptainR 12:29f5ad896382 358 }
CaptainR 12:29f5ad896382 359 }