- -

Dependents:   deal_or_no_deal_graphics

Committer:
AlexFerrara
Date:
Mon Oct 31 08:07:41 2016 +0000
Revision:
0:d904fc771672
-

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AlexFerrara 0:d904fc771672 1 //
AlexFerrara 0:d904fc771672 2 // uLCD_4DGL is a class to drive 4D Systems TFT touch screens
AlexFerrara 0:d904fc771672 3 //
AlexFerrara 0:d904fc771672 4 // Fork of 4DGL library for 4D Systems LCD displays
AlexFerrara 0:d904fc771672 5 // Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
AlexFerrara 0:d904fc771672 6 // Modifed for Goldelox processor <2013> Jim Hamblen
AlexFerrara 0:d904fc771672 7 //
AlexFerrara 0:d904fc771672 8 // uLCD_4DGL is free software: you can redistribute it and/or modify
AlexFerrara 0:d904fc771672 9 // it under the terms of the GNU General Public License as published by
AlexFerrara 0:d904fc771672 10 // the Free Software Foundation, either version 3 of the License, or
AlexFerrara 0:d904fc771672 11 // (at your option) any later version.
AlexFerrara 0:d904fc771672 12 //
AlexFerrara 0:d904fc771672 13 // uLCD_4DGL is distributed in the hope that it will be useful,
AlexFerrara 0:d904fc771672 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
AlexFerrara 0:d904fc771672 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
AlexFerrara 0:d904fc771672 16 // GNU General Public License for more details.
AlexFerrara 0:d904fc771672 17 //
AlexFerrara 0:d904fc771672 18 // You should have received a copy of the GNU General Public License
AlexFerrara 0:d904fc771672 19 // along with uLCD_4DGL. If not, see <http://www.gnu.org/licenses/>.
AlexFerrara 0:d904fc771672 20
AlexFerrara 0:d904fc771672 21 // @author Stephane Rochon
AlexFerrara 0:d904fc771672 22
AlexFerrara 0:d904fc771672 23 #include "mbed.h"
AlexFerrara 0:d904fc771672 24
AlexFerrara 0:d904fc771672 25 // Debug Verbose off - SGE commands echoed to USB serial for debugmode=1
AlexFerrara 0:d904fc771672 26 #ifndef DEBUGMODE
AlexFerrara 0:d904fc771672 27 #define DEBUGMODE 0
AlexFerrara 0:d904fc771672 28 #endif
AlexFerrara 0:d904fc771672 29
AlexFerrara 0:d904fc771672 30 // Common WAIT value in milliseconds between commands
AlexFerrara 0:d904fc771672 31 #define TEMPO 0
AlexFerrara 0:d904fc771672 32
AlexFerrara 0:d904fc771672 33 // 4DGL SGE Function values for Goldelox Processor
AlexFerrara 0:d904fc771672 34 #define CLS '\xD7'
AlexFerrara 0:d904fc771672 35 #define BAUDRATE '\x0B' //null prefix
AlexFerrara 0:d904fc771672 36 #define VERSION '\x08' //null prefix
AlexFerrara 0:d904fc771672 37 #define BCKGDCOLOR '\x6E'
AlexFerrara 0:d904fc771672 38 #define TXTBCKGDCOLOR '\x7E'
AlexFerrara 0:d904fc771672 39 #define DISPCONTROL '\x68'
AlexFerrara 0:d904fc771672 40 #define SETVOLUME '\x76'
AlexFerrara 0:d904fc771672 41 #define CIRCLE '\xCD'
AlexFerrara 0:d904fc771672 42 #define FCIRCLE '\xCC'
AlexFerrara 0:d904fc771672 43 #define TRIANGLE '\xC9'
AlexFerrara 0:d904fc771672 44 #define LINE '\xD2'
AlexFerrara 0:d904fc771672 45 #define FRECTANGLE '\xCE'
AlexFerrara 0:d904fc771672 46 #define RECTANGLE '\xCF'
AlexFerrara 0:d904fc771672 47 #define ELLIPSE '\x65' //na
AlexFerrara 0:d904fc771672 48 #define PIXEL '\xCB'
AlexFerrara 0:d904fc771672 49 #define READPIXEL '\xCA'
AlexFerrara 0:d904fc771672 50 #define SCREENCOPY '\x63' //na?
AlexFerrara 0:d904fc771672 51 #define PENSIZE '\xD8'
AlexFerrara 0:d904fc771672 52 #define SETFONT '\x7D'
AlexFerrara 0:d904fc771672 53 #define TEXTMODE '\x77'
AlexFerrara 0:d904fc771672 54 #define TEXTBOLD '\x76'
AlexFerrara 0:d904fc771672 55 #define TEXTITALIC '\x75'
AlexFerrara 0:d904fc771672 56 #define TEXTINVERSE '\x74'
AlexFerrara 0:d904fc771672 57 #define TEXTUNDERLINE '\x73'
AlexFerrara 0:d904fc771672 58 #define TEXTWIDTH '\x7C'
AlexFerrara 0:d904fc771672 59 #define TEXTHEIGHT '\x7B'
AlexFerrara 0:d904fc771672 60 #define TEXTCHAR '\xFE'
AlexFerrara 0:d904fc771672 61 #define TEXTSTRING '\x06' //null prefix
AlexFerrara 0:d904fc771672 62 #define MOVECURSOR '\xE4'
AlexFerrara 0:d904fc771672 63 #define BLITCOM '\x0A'
AlexFerrara 0:d904fc771672 64 #define PUTCHAR '\xFE'
AlexFerrara 0:d904fc771672 65 #define DISPPOWER '\x66'
AlexFerrara 0:d904fc771672 66 //media commands for uSD card
AlexFerrara 0:d904fc771672 67 #define MINIT '\xB1'
AlexFerrara 0:d904fc771672 68 #define SBADDRESS '\xB9'
AlexFerrara 0:d904fc771672 69 #define SSADDRESS '\xB8'
AlexFerrara 0:d904fc771672 70 #define READBYTE '\xB7'
AlexFerrara 0:d904fc771672 71 #define READWORD '\xB6'
AlexFerrara 0:d904fc771672 72 #define WRITEBYTE '\xB5'
AlexFerrara 0:d904fc771672 73 #define WRITEWORD '\xB4'
AlexFerrara 0:d904fc771672 74 #define FLUSHMEDIA '\xB2'
AlexFerrara 0:d904fc771672 75 #define DISPLAYIMAGE '\xB3'
AlexFerrara 0:d904fc771672 76 #define DISPLAYVIDEO '\xBB'
AlexFerrara 0:d904fc771672 77 #define DISPLAYFRAME '\xBA'
AlexFerrara 0:d904fc771672 78
AlexFerrara 0:d904fc771672 79
AlexFerrara 0:d904fc771672 80
AlexFerrara 0:d904fc771672 81 // Screen answers
AlexFerrara 0:d904fc771672 82 #define ACK '\x06'
AlexFerrara 0:d904fc771672 83 #define NAK '\x15'
AlexFerrara 0:d904fc771672 84
AlexFerrara 0:d904fc771672 85
AlexFerrara 0:d904fc771672 86
AlexFerrara 0:d904fc771672 87 // Screen states
AlexFerrara 0:d904fc771672 88 #define OFF '\x00'
AlexFerrara 0:d904fc771672 89 #define ON '\x01'
AlexFerrara 0:d904fc771672 90
AlexFerrara 0:d904fc771672 91 // Graphics modes
AlexFerrara 0:d904fc771672 92 #define SOLID '\x00'
AlexFerrara 0:d904fc771672 93 #define WIREFRAME '\x01'
AlexFerrara 0:d904fc771672 94
AlexFerrara 0:d904fc771672 95 // Text modes
AlexFerrara 0:d904fc771672 96 #define TRANSPARENT '\x00'
AlexFerrara 0:d904fc771672 97 #define OPAQUE '\x01'
AlexFerrara 0:d904fc771672 98
AlexFerrara 0:d904fc771672 99 // Fonts Sizes
AlexFerrara 0:d904fc771672 100 #define FONT_7X8 '\x00' //only builtin font
AlexFerrara 0:d904fc771672 101 #define FONT_5X7 '\x04'
AlexFerrara 0:d904fc771672 102 #define FONT_8X8 '\x01'
AlexFerrara 0:d904fc771672 103 #define FONT_8X12 '\x02'
AlexFerrara 0:d904fc771672 104 #define FONT_12X16 '\x03'
AlexFerrara 0:d904fc771672 105 #define MEDIAFONT '\x07'
AlexFerrara 0:d904fc771672 106
AlexFerrara 0:d904fc771672 107
AlexFerrara 0:d904fc771672 108 // Data speed
AlexFerrara 0:d904fc771672 109 #define BAUD_110 27271
AlexFerrara 0:d904fc771672 110 #define BAUD_300 9999
AlexFerrara 0:d904fc771672 111 #define BAUD_600 4999
AlexFerrara 0:d904fc771672 112 #define BAUD_1200 2499
AlexFerrara 0:d904fc771672 113 #define BAUD_2400 1249
AlexFerrara 0:d904fc771672 114 #define BAUD_4800 624
AlexFerrara 0:d904fc771672 115 #define BAUD_9600 312
AlexFerrara 0:d904fc771672 116 #define BAUD_14400 207
AlexFerrara 0:d904fc771672 117 #define BAUD_19200 155
AlexFerrara 0:d904fc771672 118 #define BAUD_31250 95
AlexFerrara 0:d904fc771672 119 #define BAUD_38400 77
AlexFerrara 0:d904fc771672 120 #define BAUD_56000 53
AlexFerrara 0:d904fc771672 121 #define BAUD_57600 51
AlexFerrara 0:d904fc771672 122 #define BAUD_115200 25
AlexFerrara 0:d904fc771672 123 #define BAUD_128000 22
AlexFerrara 0:d904fc771672 124 #define BAUD_256000 11
AlexFerrara 0:d904fc771672 125 #define BAUD_300000 10
AlexFerrara 0:d904fc771672 126 #define BAUD_375000 8
AlexFerrara 0:d904fc771672 127 #define BAUD_500000 6
AlexFerrara 0:d904fc771672 128 #define BAUD_600000 4
AlexFerrara 0:d904fc771672 129 #define BAUD_750000 3
AlexFerrara 0:d904fc771672 130 #define BAUD_1000000 2
AlexFerrara 0:d904fc771672 131 #define BAUD_1500000 1
AlexFerrara 0:d904fc771672 132 #define BAUD_3000000 0
AlexFerrara 0:d904fc771672 133
AlexFerrara 0:d904fc771672 134 // Defined Colors
AlexFerrara 0:d904fc771672 135 #define WHITE 0xFFFFFF
AlexFerrara 0:d904fc771672 136 #define BLACK 0x000000
AlexFerrara 0:d904fc771672 137 #define YELLOW 0xFFFF00
AlexFerrara 0:d904fc771672 138 #define ORANGE 0xFF9900
AlexFerrara 0:d904fc771672 139 #define RED 0xFF0000
AlexFerrara 0:d904fc771672 140 #define GREEN 0x00FF00
AlexFerrara 0:d904fc771672 141 #define BLUE 0x0000FF
AlexFerrara 0:d904fc771672 142 #define LGREY 0xBFBFBF
AlexFerrara 0:d904fc771672 143 #define DGREY 0x5F5F5F
AlexFerrara 0:d904fc771672 144
AlexFerrara 0:d904fc771672 145 // Mode data
AlexFerrara 0:d904fc771672 146 #define BACKLIGHT '\x00'
AlexFerrara 0:d904fc771672 147 #define DISPLAY '\x01'
AlexFerrara 0:d904fc771672 148 #define CONTRAST '\x02'
AlexFerrara 0:d904fc771672 149 #define POWER '\x03'
AlexFerrara 0:d904fc771672 150 #define ORIENTATION '\x04'
AlexFerrara 0:d904fc771672 151 #define TOUCH_CTRL '\x05'
AlexFerrara 0:d904fc771672 152 #define IMAGE_FORMAT '\x06'
AlexFerrara 0:d904fc771672 153 #define PROTECT_FAT '\x08'
AlexFerrara 0:d904fc771672 154
AlexFerrara 0:d904fc771672 155 // change this to your specific screen (newer versions) if needed
AlexFerrara 0:d904fc771672 156 // Startup orientation is PORTRAIT so SIZE_X must be lesser than SIZE_Y
AlexFerrara 0:d904fc771672 157 //uLCD144-G2 is a 128 by 128 pixel display
AlexFerrara 0:d904fc771672 158 #define SIZE_X 128
AlexFerrara 0:d904fc771672 159 #define SIZE_Y 128
AlexFerrara 0:d904fc771672 160
AlexFerrara 0:d904fc771672 161 #define IS_LANDSCAPE 0
AlexFerrara 0:d904fc771672 162 #define IS_PORTRAIT 1
AlexFerrara 0:d904fc771672 163
AlexFerrara 0:d904fc771672 164 // Screen orientation
AlexFerrara 0:d904fc771672 165 #define LANDSCAPE '\x00'
AlexFerrara 0:d904fc771672 166 #define LANDSCAPE_R '\x01'
AlexFerrara 0:d904fc771672 167 #define PORTRAIT '\x02'
AlexFerrara 0:d904fc771672 168 #define PORTRAIT_R '\x03'
AlexFerrara 0:d904fc771672 169
AlexFerrara 0:d904fc771672 170 // Parameters
AlexFerrara 0:d904fc771672 171 #define ENABLE '\x00'
AlexFerrara 0:d904fc771672 172 #define DISABLE '\x01'
AlexFerrara 0:d904fc771672 173 #define RESET '\x02'
AlexFerrara 0:d904fc771672 174
AlexFerrara 0:d904fc771672 175 #define NEW '\x00'
AlexFerrara 0:d904fc771672 176 #define OLD '\x01'
AlexFerrara 0:d904fc771672 177
AlexFerrara 0:d904fc771672 178 #define DOWN '\x00'
AlexFerrara 0:d904fc771672 179 #define UP '\x01'
AlexFerrara 0:d904fc771672 180
AlexFerrara 0:d904fc771672 181 #define PROTECT '\x00'
AlexFerrara 0:d904fc771672 182 #define UNPROTECT '\x02'
AlexFerrara 0:d904fc771672 183
AlexFerrara 0:d904fc771672 184 //**************************************************************************
AlexFerrara 0:d904fc771672 185 // \class uLCD_4DGL uLCD_4DGL.h
AlexFerrara 0:d904fc771672 186 // \brief This is the main class. It shoud be used like this : uLCD_4GDL myLCD(p9,p10,p11);
AlexFerrara 0:d904fc771672 187 /**
AlexFerrara 0:d904fc771672 188 Example:
AlexFerrara 0:d904fc771672 189 * @code
AlexFerrara 0:d904fc771672 190 * // Display a white circle on the screen
AlexFerrara 0:d904fc771672 191 * #include "mbed.h"
AlexFerrara 0:d904fc771672 192 * #include " uLCD_4DGL.h"
AlexFerrara 0:d904fc771672 193 *
AlexFerrara 0:d904fc771672 194 * uLCD_4GDL myLCD(p9,p10,p11);
AlexFerrara 0:d904fc771672 195 *
AlexFerrara 0:d904fc771672 196 * int main() {
AlexFerrara 0:d904fc771672 197 * myLCD.circle(120, 160, 80, WHITE);
AlexFerrara 0:d904fc771672 198 * }
AlexFerrara 0:d904fc771672 199 * @endcode
AlexFerrara 0:d904fc771672 200 */
AlexFerrara 0:d904fc771672 201
AlexFerrara 0:d904fc771672 202 class uLCD_4DGL : public Stream
AlexFerrara 0:d904fc771672 203 {
AlexFerrara 0:d904fc771672 204
AlexFerrara 0:d904fc771672 205 public :
AlexFerrara 0:d904fc771672 206
AlexFerrara 0:d904fc771672 207 uLCD_4DGL(PinName tx, PinName rx, PinName rst);
AlexFerrara 0:d904fc771672 208
AlexFerrara 0:d904fc771672 209 // General Commands *******************************************************************************
AlexFerrara 0:d904fc771672 210
AlexFerrara 0:d904fc771672 211 /** Clear the entire screen using the current background colour */
AlexFerrara 0:d904fc771672 212 void cls();
AlexFerrara 0:d904fc771672 213
AlexFerrara 0:d904fc771672 214 /** Reset screen */
AlexFerrara 0:d904fc771672 215 void reset();
AlexFerrara 0:d904fc771672 216
AlexFerrara 0:d904fc771672 217
AlexFerrara 0:d904fc771672 218 /** Set serial Baud rate (both sides : screen and mbed)
AlexFerrara 0:d904fc771672 219 * @param Speed Correct BAUD value (see uLCD_4DGL.h)
AlexFerrara 0:d904fc771672 220 */
AlexFerrara 0:d904fc771672 221 void baudrate(int speed);
AlexFerrara 0:d904fc771672 222
AlexFerrara 0:d904fc771672 223 /** Set background colour to the specified value
AlexFerrara 0:d904fc771672 224 * @param color in HEX RGB like 0xFF00FF
AlexFerrara 0:d904fc771672 225 */
AlexFerrara 0:d904fc771672 226 void background_color(int color);
AlexFerrara 0:d904fc771672 227
AlexFerrara 0:d904fc771672 228 /** Set screen display mode to specific values
AlexFerrara 0:d904fc771672 229 * @param mode See 4DGL documentation
AlexFerrara 0:d904fc771672 230 * @param value See 4DGL documentation
AlexFerrara 0:d904fc771672 231 */
AlexFerrara 0:d904fc771672 232 void textbackground_color(int color);
AlexFerrara 0:d904fc771672 233
AlexFerrara 0:d904fc771672 234 /** Set screen display mode to specific values
AlexFerrara 0:d904fc771672 235 * @param mode See 4DGL documentation
AlexFerrara 0:d904fc771672 236 * @param value See 4DGL documentation
AlexFerrara 0:d904fc771672 237 */
AlexFerrara 0:d904fc771672 238 void display_control(char mode);
AlexFerrara 0:d904fc771672 239 void display_power(char mode);
AlexFerrara 0:d904fc771672 240 /** Set internal speaker to specified value
AlexFerrara 0:d904fc771672 241 * @param value Correct range is 8 - 127
AlexFerrara 0:d904fc771672 242 */
AlexFerrara 0:d904fc771672 243 void set_volume(char value);
AlexFerrara 0:d904fc771672 244
AlexFerrara 0:d904fc771672 245 // Graphics Commands *******************************************************************************
AlexFerrara 0:d904fc771672 246
AlexFerrara 0:d904fc771672 247 /** Draw a circle centered at x,y with a radius and a colour. It uses Pen Size stored value to draw a solid or wireframe circle
AlexFerrara 0:d904fc771672 248 * @param x Horizontal position of the circle centre
AlexFerrara 0:d904fc771672 249 * @param y Vertical position of the circle centre
AlexFerrara 0:d904fc771672 250 * @param radius Radius of the circle
AlexFerrara 0:d904fc771672 251 * @param color Circle color in HEX RGB like 0xFF00FF
AlexFerrara 0:d904fc771672 252 */
AlexFerrara 0:d904fc771672 253 void circle(int x , int y , int radius, int color);
AlexFerrara 0:d904fc771672 254 void filled_circle(int x , int y , int radius, int color);
AlexFerrara 0:d904fc771672 255 void triangle(int, int, int, int, int, int, int);
AlexFerrara 0:d904fc771672 256 void line(int, int, int, int, int);
AlexFerrara 0:d904fc771672 257 void rectangle(int, int, int, int, int);
AlexFerrara 0:d904fc771672 258 void filled_rectangle(int, int, int, int, int);
AlexFerrara 0:d904fc771672 259 void pixel(int, int, int);
AlexFerrara 0:d904fc771672 260 int read_pixel(int, int);
AlexFerrara 0:d904fc771672 261 void pen_size(char);
AlexFerrara 0:d904fc771672 262 void BLIT(int x, int y, int w, int h, int *colors);
AlexFerrara 0:d904fc771672 263
AlexFerrara 0:d904fc771672 264 // Text Commands
AlexFerrara 0:d904fc771672 265 void set_font(char);
AlexFerrara 0:d904fc771672 266 void set_font_size(char width, char height);
AlexFerrara 0:d904fc771672 267 void text_mode(char);
AlexFerrara 0:d904fc771672 268 void text_bold(char);
AlexFerrara 0:d904fc771672 269 void text_italic(char);
AlexFerrara 0:d904fc771672 270 void text_inverse(char);
AlexFerrara 0:d904fc771672 271 void text_underline(char);
AlexFerrara 0:d904fc771672 272 void text_width(char);
AlexFerrara 0:d904fc771672 273 void text_height(char);
AlexFerrara 0:d904fc771672 274 void text_char(char, char, char, int);
AlexFerrara 0:d904fc771672 275 void text_string(char *, char, char, char, int);
AlexFerrara 0:d904fc771672 276 void locate(char, char);
AlexFerrara 0:d904fc771672 277 void color(int);
AlexFerrara 0:d904fc771672 278 void putc(char);
AlexFerrara 0:d904fc771672 279 void puts(char *);
AlexFerrara 0:d904fc771672 280
AlexFerrara 0:d904fc771672 281 //Media Commands
AlexFerrara 0:d904fc771672 282 int media_init();
AlexFerrara 0:d904fc771672 283 void set_byte_address(int, int);
AlexFerrara 0:d904fc771672 284 void set_sector_address(int, int);
AlexFerrara 0:d904fc771672 285 char read_byte();
AlexFerrara 0:d904fc771672 286 int read_word();
AlexFerrara 0:d904fc771672 287 void write_byte(int);
AlexFerrara 0:d904fc771672 288 void write_word(int);
AlexFerrara 0:d904fc771672 289 void flush_media();
AlexFerrara 0:d904fc771672 290 void display_image(int, int);
AlexFerrara 0:d904fc771672 291 void display_video(int, int);
AlexFerrara 0:d904fc771672 292 void display_frame(int, int, int);
AlexFerrara 0:d904fc771672 293
AlexFerrara 0:d904fc771672 294 // Screen Data
AlexFerrara 0:d904fc771672 295 int type;
AlexFerrara 0:d904fc771672 296 int revision;
AlexFerrara 0:d904fc771672 297 int firmware;
AlexFerrara 0:d904fc771672 298 int reserved1;
AlexFerrara 0:d904fc771672 299 int reserved2;
AlexFerrara 0:d904fc771672 300
AlexFerrara 0:d904fc771672 301 // Text data
AlexFerrara 0:d904fc771672 302 char current_col;
AlexFerrara 0:d904fc771672 303 char current_row;
AlexFerrara 0:d904fc771672 304 int current_color;
AlexFerrara 0:d904fc771672 305 char current_font;
AlexFerrara 0:d904fc771672 306 char current_orientation;
AlexFerrara 0:d904fc771672 307 char max_col;
AlexFerrara 0:d904fc771672 308 char max_row;
AlexFerrara 0:d904fc771672 309 int current_w, current_h;
AlexFerrara 0:d904fc771672 310 int current_fx, current_fy;
AlexFerrara 0:d904fc771672 311 int current_wf, current_hf;
AlexFerrara 0:d904fc771672 312
AlexFerrara 0:d904fc771672 313
AlexFerrara 0:d904fc771672 314 protected :
AlexFerrara 0:d904fc771672 315
AlexFerrara 0:d904fc771672 316 Serial _cmd;
AlexFerrara 0:d904fc771672 317 DigitalOut _rst;
AlexFerrara 0:d904fc771672 318 //used by printf
AlexFerrara 0:d904fc771672 319 virtual int _putc(int c) {
AlexFerrara 0:d904fc771672 320 putc(c);
AlexFerrara 0:d904fc771672 321 return 0;
AlexFerrara 0:d904fc771672 322 };
AlexFerrara 0:d904fc771672 323 virtual int _getc() {
AlexFerrara 0:d904fc771672 324 return -1;
AlexFerrara 0:d904fc771672 325 }
AlexFerrara 0:d904fc771672 326
AlexFerrara 0:d904fc771672 327 void freeBUFFER (void);
AlexFerrara 0:d904fc771672 328 void writeBYTE (char);
AlexFerrara 0:d904fc771672 329 void writeBYTEfast (char);
AlexFerrara 0:d904fc771672 330 int writeCOMMAND(char *, int);
AlexFerrara 0:d904fc771672 331 int writeCOMMANDnull(char *, int);
AlexFerrara 0:d904fc771672 332 int readVERSION (char *, int);
AlexFerrara 0:d904fc771672 333 int getSTATUS (char *, int);
AlexFerrara 0:d904fc771672 334 int version (void);
AlexFerrara 0:d904fc771672 335 #if DEBUGMODE
AlexFerrara 0:d904fc771672 336 Serial pc;
AlexFerrara 0:d904fc771672 337 #endif // DEBUGMODE
AlexFerrara 0:d904fc771672 338 };
AlexFerrara 0:d904fc771672 339
AlexFerrara 0:d904fc771672 340 typedef unsigned char BYTE;
AlexFerrara 0:d904fc771672 341
AlexFerrara 0:d904fc771672 342
AlexFerrara 0:d904fc771672 343
AlexFerrara 0:d904fc771672 344
AlexFerrara 0:d904fc771672 345
AlexFerrara 0:d904fc771672 346
AlexFerrara 0:d904fc771672 347
AlexFerrara 0:d904fc771672 348