Library for EarthLCD ezLCD3xx line of products

Dependents:   ezLCDTest

/media/uploads/codeman/front.jpg /media/uploads/codeman/all.jpg /media/uploads/codeman/arlcd.jpg /media/uploads/codeman/side.jpg

Committer:
codeman
Date:
Mon Apr 29 04:44:16 2013 +0000
Revision:
4:f4dde1f3baad
Parent:
3:28e71ce23bfd
Child:
5:4a6254e2012f
version .5;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
codeman 1:c7659c8af0d3 1 /*
codeman 1:c7659c8af0d3 2 *
codeman 0:65606abcae36 3 *
codeman 0:65606abcae36 4 * @author Ken Segler
codeman 0:65606abcae36 5 *
codeman 0:65606abcae36 6 */
codeman 0:65606abcae36 7
codeman 0:65606abcae36 8 /** Interface to the Sparkfun Serial Graphic LCD, LCD-09351; and Graphic
codeman 0:65606abcae36 9 * LCD Serial Backpack, LCD-09352. Derived class from Serial so that you
codeman 0:65606abcae36 10 * can conveniently printf(), putc(), etc to the display.
codeman 0:65606abcae36 11 *
codeman 0:65606abcae36 12 * Example:
codeman 0:65606abcae36 13 * @code
codeman 0:65606abcae36 14 * #include "mbed.h"
codeman 0:65606abcae36 15 * #include "ezLCDLib.h"
codeman 0:65606abcae36 16 *
codeman 0:65606abcae36 17 * SerialGraphicLCD lcd(p26, p25);
codeman 0:65606abcae36 18 *
codeman 0:65606abcae36 19 * int main() {
codeman 0:65606abcae36 20 * lcd.baud(115200); // default baud rate
codeman 0:65606abcae36 21 * while (1) {
codeman 0:65606abcae36 22 * lcd.clear();
codeman 0:65606abcae36 23 * lcd.rect(3, 3, 20, 20);
codeman 0:65606abcae36 24 * lcd.printf("Hello World!");
codeman 0:65606abcae36 25 * lcd.pixel(14, 35, true);
codeman 0:65606abcae36 26 * lcd.pixel(16, 36, true);
codeman 0:65606abcae36 27 * lcd.pixel(18, 37, true);
codeman 0:65606abcae36 28 * lcd.pos(5, 30);
codeman 0:65606abcae36 29 * lcd.printf("Hi");
codeman 0:65606abcae36 30 * lcd.circle(50, 20, 20, true);
codeman 0:65606abcae36 31 * lcd.pos(50, 20);
codeman 0:65606abcae36 32 * lcd.printf("Howdy");
codeman 0:65606abcae36 33 * lcd.line(0, 0, 25, 25, true);
codeman 0:65606abcae36 34 * wait(2);
codeman 0:65606abcae36 35 * }
codeman 0:65606abcae36 36 * }
codeman 0:65606abcae36 37 * @endcode
codeman 0:65606abcae36 38 */
codeman 0:65606abcae36 39 #ifndef _EZLCDLIB_H
codeman 0:65606abcae36 40 #define _EZLCDLIB_H
codeman 0:65606abcae36 41
codeman 0:65606abcae36 42 #include "mbed.h"
codeman 0:65606abcae36 43
codeman 1:c7659c8af0d3 44 #define FIFO 0
codeman 1:c7659c8af0d3 45 #define LIFO 1
codeman 1:c7659c8af0d3 46 #define CLEAR 2
codeman 0:65606abcae36 47
codeman 3:28e71ce23bfd 48 #define DELETE 0
codeman 3:28e71ce23bfd 49 #define ENABLE 1
codeman 3:28e71ce23bfd 50 #define DISABLE 2
codeman 3:28e71ce23bfd 51 #define REDRAW 3
codeman 0:65606abcae36 52 class ezLCD3: public Stream
codeman 0:65606abcae36 53 {
codeman 0:65606abcae36 54 public:
codeman 0:65606abcae36 55 /** Create a new interface to a Serial Graphic LCD
codeman 0:65606abcae36 56 * Note that the display lower left corner is coordinates 0, 0.
codeman 0:65606abcae36 57 * Rows start at the top at 0, columns start at the left at 0.
codeman 0:65606abcae36 58 * @param tx -- mbed transmit pin
codeman 0:65606abcae36 59 * @param rx -- mbed receive pin
codeman 0:65606abcae36 60 */
codeman 0:65606abcae36 61 ezLCD3(PinName tx, PinName rx);
codeman 0:65606abcae36 62 /**
codeman 0:65606abcae36 63 *
codeman 0:65606abcae36 64 *
codeman 0:65606abcae36 65 */
codeman 1:c7659c8af0d3 66 void Rx_interrupt( void );
codeman 0:65606abcae36 67 void itoa(int value, char *sp, int radix);
codeman 3:28e71ce23bfd 68 void stripSpace(char *str);
codeman 1:c7659c8af0d3 69 bool sync( void );
codeman 0:65606abcae36 70 /**
codeman 0:65606abcae36 71 *
codeman 0:65606abcae36 72 *
codeman 0:65606abcae36 73 */
codeman 0:65606abcae36 74 void sendInt( int i );
codeman 0:65606abcae36 75 /**
codeman 0:65606abcae36 76 *
codeman 0:65606abcae36 77 *
codeman 0:65606abcae36 78 */
codeman 0:65606abcae36 79 int getInt( char *str );
codeman 0:65606abcae36 80 /**
codeman 0:65606abcae36 81 *
codeman 0:65606abcae36 82 *
codeman 1:c7659c8af0d3 83 */
codeman 1:c7659c8af0d3 84 void getString( char *str );
codeman 1:c7659c8af0d3 85 /**
codeman 1:c7659c8af0d3 86 *
codeman 1:c7659c8af0d3 87 *
codeman 1:c7659c8af0d3 88 */
codeman 0:65606abcae36 89 bool waitForCR( void );
codeman 1:c7659c8af0d3 90
codeman 0:65606abcae36 91 /** clear the screen
codeman 0:65606abcae36 92 */
codeman 0:65606abcae36 93 void cls(void);
codeman 0:65606abcae36 94 /** clear the screen with background color
codeman 0:65606abcae36 95 */
codeman 0:65606abcae36 96 void cls(int bColor);
codeman 0:65606abcae36 97 /** clear the screen with background color and forground color
codeman 0:65606abcae36 98 */
codeman 1:c7659c8af0d3 99 void cls(int bColor, int fColor);
codeman 0:65606abcae36 100 /**
codeman 0:65606abcae36 101 *
codeman 0:65606abcae36 102 */
codeman 0:65606abcae36 103 void color( int color );
codeman 1:c7659c8af0d3 104
codeman 0:65606abcae36 105 /** set text position in rows, columns
codeman 0:65606abcae36 106 *
codeman 0:65606abcae36 107 * @param col is the col coordinate
codeman 0:65606abcae36 108 * @param row is the row coordinate
codeman 0:65606abcae36 109 */
codeman 0:65606abcae36 110 void pos(int col, int row);
codeman 0:65606abcae36 111
codeman 0:65606abcae36 112 /** set text position in x, y coordinates
codeman 0:65606abcae36 113 *
codeman 0:65606abcae36 114 * @param x is the x coordinate
codeman 0:65606abcae36 115 * @param y is the y coordinate
codeman 0:65606abcae36 116 */
codeman 0:65606abcae36 117 void xy(int x, int y);
codeman 0:65606abcae36 118
codeman 0:65606abcae36 119 /** set or erase a pixel
codeman 0:65606abcae36 120 *
codeman 0:65606abcae36 121 * @param x is the x coordinate
codeman 0:65606abcae36 122 * @param y is the y coordinate
codeman 0:65606abcae36 123 */
codeman 0:65606abcae36 124 void plot(void);
codeman 0:65606abcae36 125
codeman 0:65606abcae36 126 /** set or erase a pixel
codeman 0:65606abcae36 127 *
codeman 0:65606abcae36 128 * @param x is the x coordinate
codeman 0:65606abcae36 129 * @param y is the y coordinate
codeman 0:65606abcae36 130 */
codeman 0:65606abcae36 131 void plot(int x, int y);
codeman 0:65606abcae36 132
codeman 0:65606abcae36 133 /** draw or erase a line
codeman 0:65606abcae36 134 *
codeman 0:65606abcae36 135 * @param x1 is the x coordinate of the start of the line
codeman 0:65606abcae36 136 * @param y1 is the y coordinate of the start of the line
codeman 0:65606abcae36 137 */
codeman 0:65606abcae36 138 void line(int x1, int y1);
codeman 0:65606abcae36 139
codeman 0:65606abcae36 140 /** set or reset a circle
codeman 0:65606abcae36 141 *
codeman 0:65606abcae36 142 * @param x is the x coordinate of the circle center
codeman 0:65606abcae36 143 * @param y is the y coordinate of the circle center
codeman 0:65606abcae36 144 * @param r is the radius of the circle
codeman 0:65606abcae36 145 * @param set if true sets the pixel, if false, clears it
codeman 0:65606abcae36 146 */
codeman 0:65606abcae36 147 void circle(int radius, bool filled);
codeman 0:65606abcae36 148
codeman 0:65606abcae36 149 /** draw a box
codeman 0:65606abcae36 150 *
codeman 0:65606abcae36 151 * @param x1 is the x coordinate of the upper left of the rectangle
codeman 0:65606abcae36 152 * @param y1 is the y coordinate of the upper left of the rectangle
codeman 0:65606abcae36 153 * @param Fill for filled box
codeman 0:65606abcae36 154 */
codeman 0:65606abcae36 155 void box(int x1, int y1, bool filled);
codeman 0:65606abcae36 156
codeman 0:65606abcae36 157 /** set backlight brightness
codeman 0:65606abcae36 158 *
codeman 0:65606abcae36 159 * @param i is the duty cycle from 0 to 100; 0 is off, 100 is full power
codeman 0:65606abcae36 160 */
codeman 0:65606abcae36 161 void light(int i);
codeman 3:28e71ce23bfd 162 /**
codeman 3:28e71ce23bfd 163 *
codeman 3:28e71ce23bfd 164 *
codeman 3:28e71ce23bfd 165 */
codeman 3:28e71ce23bfd 166 void sendCommand( char *str );
codeman 1:c7659c8af0d3 167 /**
codeman 1:c7659c8af0d3 168 *
codeman 1:c7659c8af0d3 169 *
codeman 1:c7659c8af0d3 170 */
codeman 1:c7659c8af0d3 171 int getXmax( void );
codeman 1:c7659c8af0d3 172 /**
codeman 1:c7659c8af0d3 173 *
codeman 1:c7659c8af0d3 174 *
codeman 1:c7659c8af0d3 175 */
codeman 1:c7659c8af0d3 176 int getYmax( void );
codeman 3:28e71ce23bfd 177 void sendString( char *str );
codeman 1:c7659c8af0d3 178 void setStringID( int ID, char *str );
codeman 1:c7659c8af0d3 179 void getStringID( int ID, char *str );
codeman 0:65606abcae36 180 /** print string at current x y
codeman 0:65606abcae36 181 * @param string
codeman 0:65606abcae36 182 *
codeman 0:65606abcae36 183 *
codeman 0:65606abcae36 184 */
codeman 0:65606abcae36 185 void print( char *str);
codeman 1:c7659c8af0d3 186 /**
codeman 1:c7659c8af0d3 187 *
codeman 1:c7659c8af0d3 188 *
codeman 1:c7659c8af0d3 189 */
codeman 3:28e71ce23bfd 190 void fontw( int id, char *str);
codeman 3:28e71ce23bfd 191 /**
codeman 3:28e71ce23bfd 192 *
codeman 3:28e71ce23bfd 193 *
codeman 3:28e71ce23bfd 194 */
codeman 3:28e71ce23bfd 195 void theme(int ID, int EmbossDkColor, int EmbossLtColor, int TextColor0, int TextColor1, int TextColorDisabled, int Color0, int Color1, int ColorDisabled, int CommonBkColor, int Fontw);
codeman 3:28e71ce23bfd 196 /**
codeman 3:28e71ce23bfd 197 *
codeman 3:28e71ce23bfd 198 *
codeman 3:28e71ce23bfd 199 */
codeman 1:c7659c8af0d3 200 //ameter [ID][x][y][width][height][options][value][min][max][theme][stringID][type]
codeman 1:c7659c8af0d3 201 void ameter( int ID, int x, int y, int w, int h, int options, int value, int min, int max, int theme, int stringID, int type);
codeman 1:c7659c8af0d3 202 /**
codeman 1:c7659c8af0d3 203 *
codeman 1:c7659c8af0d3 204 *
codeman 1:c7659c8af0d3 205 */
codeman 1:c7659c8af0d3 206 void touchZone( int ID, int x, int y, int w, int h, bool option);
codeman 1:c7659c8af0d3 207 /**
codeman 1:c7659c8af0d3 208 *
codeman 1:c7659c8af0d3 209 *
codeman 1:c7659c8af0d3 210 */
codeman 1:c7659c8af0d3 211 void button( int ID, int x, int y, int w, int h, int option, int align, int radius, int theme, int stringID );
codeman 1:c7659c8af0d3 212 /**
codeman 1:c7659c8af0d3 213 *
codeman 1:c7659c8af0d3 214 *
codeman 1:c7659c8af0d3 215 */
codeman 3:28e71ce23bfd 216 void image( char *str );
codeman 3:28e71ce23bfd 217 /**
codeman 3:28e71ce23bfd 218 *
codeman 3:28e71ce23bfd 219 *
codeman 3:28e71ce23bfd 220 */
codeman 3:28e71ce23bfd 221 void image( int x, int y, char *str );
codeman 3:28e71ce23bfd 222 /**
codeman 3:28e71ce23bfd 223 *
codeman 3:28e71ce23bfd 224 *
codeman 3:28e71ce23bfd 225 *
codeman 3:28e71ce23bfd 226 */
codeman 3:28e71ce23bfd 227 void staticText( int ID, int x, int y, int w, int h, int option, int theme, int stringID);
codeman 3:28e71ce23bfd 228 /**
codeman 3:28e71ce23bfd 229 *
codeman 3:28e71ce23bfd 230 *
codeman 3:28e71ce23bfd 231 *
codeman 3:28e71ce23bfd 232 */
codeman 3:28e71ce23bfd 233 void progressBar(int ID, int x, int y, int w, int h, int option, int value, int max, int theme, int stringID);
codeman 3:28e71ce23bfd 234 /**
codeman 3:28e71ce23bfd 235 *
codeman 3:28e71ce23bfd 236 *
codeman 3:28e71ce23bfd 237 *
codeman 3:28e71ce23bfd 238 */
codeman 3:28e71ce23bfd 239 void wstate( int ID, int option );
codeman 3:28e71ce23bfd 240 /**
codeman 3:28e71ce23bfd 241 *
codeman 3:28e71ce23bfd 242 *
codeman 3:28e71ce23bfd 243 */
codeman 4:f4dde1f3baad 244 void wvalue( int ID, int value);
codeman 3:28e71ce23bfd 245 /**
codeman 3:28e71ce23bfd 246 *
codeman 3:28e71ce23bfd 247 *
codeman 3:28e71ce23bfd 248 */
codeman 1:c7659c8af0d3 249 unsigned int wstack( int type );
codeman 0:65606abcae36 250 /** Send a character directly to the serial interface
codeman 1:c7659c8af0d3 251 * @param c The character to send to the
codeman 0:65606abcae36 252 */
codeman 0:65606abcae36 253 int putc(int c);
codeman 1:c7659c8af0d3 254
codeman 0:65606abcae36 255 /** Receive a character directly to the serial interface
codeman 1:c7659c8af0d3 256 * @returns c The character received from the
codeman 0:65606abcae36 257 */
codeman 0:65606abcae36 258 int getc();
codeman 0:65606abcae36 259
codeman 0:65606abcae36 260 /**
codeman 0:65606abcae36 261
codeman 0:65606abcae36 262 * Numerical values for the EarthSEMPL commands. Provided here for
codeman 0:65606abcae36 263
codeman 0:65606abcae36 264 * users who wish to compose EarthSEMPL commands manually. (This is a low-
codeman 0:65606abcae36 265
codeman 0:65606abcae36 266 * level asset that is not required for the common uses of the device)
codeman 0:65606abcae36 267
codeman 0:65606abcae36 268 */
codeman 0:65606abcae36 269
codeman 0:65606abcae36 270 enum Commands {
codeman 0:65606abcae36 271 Command= 0, /**< Direct command. */
codeman 0:65606abcae36 272 Status= 1,
codeman 0:65606abcae36 273 Clr_Screen= 2, /**< Clear to provided color. */
codeman 0:65606abcae36 274 Ping= 3, /**< Return Pong */
codeman 0:65606abcae36 275 zBeep= 4, /**< Beep provided duration
codeman 0:65606abcae36 276 *(frequency fixed) */
codeman 0:65606abcae36 277 Light= 5, /**< \c 0 (off) to \c 100 (on) */
codeman 0:65606abcae36 278 Color= 6,
codeman 0:65606abcae36 279 eColor_ID= 7,
codeman 0:65606abcae36 280 Font= 10, /**< Font number. */
codeman 0:65606abcae36 281 Fontw= 11, /**< Font number widget. */
codeman 0:65606abcae36 282 Font_Orient= 12, /**< Horizontal or vertical. */
codeman 0:65606abcae36 283 Line_Width= 13, /**< 1 or 3. */
codeman 0:65606abcae36 284 Line_Type= 14, /**< 1=dot dot 2=dash dash. */
codeman 1:c7659c8af0d3 285 XY= 15, /**< X and Y. */
codeman 0:65606abcae36 286 StringID= 16, /**< SID ASCII String or File Name that
codeman 0:65606abcae36 287 * ends with 0. */
codeman 0:65606abcae36 288 Plot= 17, /**< Place Pixel at X and Y. */
codeman 0:65606abcae36 289 Line= 18, /**< Draw a line to X and Y. */
codeman 0:65606abcae36 290 Box= 19, /**< Draws a Box to X and Y optional
codeman 0:65606abcae36 291 * fill. */
codeman 0:65606abcae36 292 Circle= 20, /**< Draws a Circle with Radius optional
codeman 0:65606abcae36 293 * fill */
codeman 0:65606abcae36 294 Arc= 21, /**< Draws an Arc with Radius and Begin
codeman 0:65606abcae36 295 * Angle to End Angle. */
codeman 0:65606abcae36 296 Pie= 22, /**< Draws a Pie figure with Radius and
codeman 0:65606abcae36 297 * Begin Angle to End Angle and fills
codeman 0:65606abcae36 298 * it. */
codeman 0:65606abcae36 299 Picture= 24, /**< Places a Picture on display. */
codeman 0:65606abcae36 300 Print= 25, /**< Places the string on display which
codeman 0:65606abcae36 301 * ends with 0. */
codeman 0:65606abcae36 302 Beep_Freq= 26, /**< Set the beeper frequency. */
codeman 0:65606abcae36 303 Calibrate= 28, /**< Calibrate touch screen. */
codeman 0:65606abcae36 304 zReset= 29, /**< Reset. */
codeman 0:65606abcae36 305 Rec_Macro= 30, /**< Record Macro to flash drive. */
codeman 0:65606abcae36 306 Play_Macro= 31, /**< Play Macro. */
codeman 0:65606abcae36 307 Stop_Macro= 32, /**< Stop Macro. */
codeman 0:65606abcae36 308 Pause_Macro= 33, /**< Pause n msec. */
codeman 0:65606abcae36 309 Loop_Macro= 34, /**< Loop on Macro. */
codeman 0:65606abcae36 310 Speed_Macro= 35, /**< Set the macro speed. */
codeman 0:65606abcae36 311 Peri= 36,
codeman 0:65606abcae36 312 ConfigIO= 37,
codeman 0:65606abcae36 313 IO= 38,
codeman 0:65606abcae36 314 IOG= 39,
codeman 0:65606abcae36 315 Security= 40, /**< Set drive security string. */
codeman 0:65606abcae36 316 Location= 41, /**< LID Location Vlaue. */
codeman 0:65606abcae36 317 Upgrade= 43,
codeman 0:65606abcae36 318 Parameters= 45,
codeman 0:65606abcae36 319 ClipEnable= 46, /**< Set clip Enable. */
codeman 0:65606abcae36 320 ClipArea= 47, /**< Set clip area. */
codeman 0:65606abcae36 321 /* Filesystem operations */
codeman 0:65606abcae36 322 Comment= 50,
codeman 0:65606abcae36 323 Fsgetcwd= 51,
codeman 0:65606abcae36 324 Fschdir= 52,
codeman 0:65606abcae36 325 Fsmkdir= 53,
codeman 0:65606abcae36 326 Fsrmdir= 54,
codeman 0:65606abcae36 327 Fsdir= 55,
codeman 0:65606abcae36 328 Fscopy= 56,
codeman 0:65606abcae36 329 Fsrename= 57,
codeman 0:65606abcae36 330 Fsremove= 58,
codeman 0:65606abcae36 331 Fsmore= 59,
codeman 0:65606abcae36 332 Format= 60, /**< Format Flash Drive if string1 =
codeman 0:65606abcae36 333 * "ezLCD" */
codeman 0:65606abcae36 334 If= 61,
codeman 0:65606abcae36 335 Cmd= 62,
codeman 0:65606abcae36 336 /* Widget commands */
codeman 0:65606abcae36 337 Set_Button= 70, /**< Widget Button. */
codeman 0:65606abcae36 338 Set_CheckBox= 71, /**< Widget Checkbox. */
codeman 0:65606abcae36 339 Set_Gbox= 72, /**< Widget Group Box. */
codeman 0:65606abcae36 340 Set_RadioButton= 73, /**< Widget Radio Button. */
codeman 0:65606abcae36 341 Set_DMeter= 74, /**< Widget Digital Meter. */
codeman 0:65606abcae36 342 DMeter_Value= 75, /**< Set DMeter value. */
codeman 0:65606abcae36 343 Set_AMeter= 76, /**< Widget Analog Meter. */
codeman 0:65606abcae36 344 AMeter_Value= 77, /**< Set AMeter value. */
codeman 0:65606abcae36 345 AMeter_Color= 78, /**< Set AMeter color */
codeman 0:65606abcae36 346 Set_TouchZone= 79, /**< touch zone */
codeman 0:65606abcae36 347 Set_Dial= 80, /**< Widget RoundDial. */
codeman 0:65606abcae36 348 Set_Slider= 82, /**< Widget Slider. */
codeman 0:65606abcae36 349 Set_Progress= 85, /**< Widget Progress bar. */
codeman 0:65606abcae36 350 Progress_Value= 86, /**< Progress value. */
codeman 0:65606abcae36 351 Set_StaticText= 87, /**< Widget Static text. */
codeman 0:65606abcae36 352 StaticText_Value= 88, /**< Static text Value. */
codeman 0:65606abcae36 353 Choice= 89, /**< Widget get choice. */
codeman 0:65606abcae36 354 Widget_Theme= 90, /**< Widget Scheme. */
codeman 0:65606abcae36 355 Widget_Values= 91, /**<Widget Values (Slider and Dial in this version).*/
codeman 0:65606abcae36 356 Widget_State= 92, /**<Widget State (Button, checkbox, radiobutton in this version).*/
codeman 0:65606abcae36 357 // no id returns the id of the last touched
codeman 0:65606abcae36 358 Mode= 98,
codeman 0:65606abcae36 359 Comport= 99,
codeman 0:65606abcae36 360 Xmax= 100, /**< Return Xmax width. */
codeman 0:65606abcae36 361 Ymax= 101, /**< Return Ymax height. */
codeman 0:65606abcae36 362 Wait= 102, /**< Wait for touch. */
codeman 0:65606abcae36 363 Waitn= 103, /**< Wait for no touch. */
codeman 0:65606abcae36 364 Waitt= 104, /**< Wait for touch. */
codeman 0:65606abcae36 365 Threshold= 105, /**< Touch threshold. */
codeman 0:65606abcae36 366 Verbose= 106, /**< Controls the verbose mode. */
codeman 0:65606abcae36 367 Lecho= 107, /**< Controls the echo mode. */
codeman 0:65606abcae36 368 Xtouch= 110, /**< return touchX. */
codeman 0:65606abcae36 369 Ytouch= 111, /**< return touchY. */
codeman 0:65606abcae36 370 Stouch= 112, /**< return touchS. */
codeman 0:65606abcae36 371 Wquiet= 113,
codeman 0:65606abcae36 372 Wstack= 114,
codeman 0:65606abcae36 373 };
codeman 1:c7659c8af0d3 374
codeman 0:65606abcae36 375 private:
codeman 0:65606abcae36 376 Serial _ser;
codeman 0:65606abcae36 377 virtual int _putc(int c);
codeman 0:65606abcae36 378 virtual int _getc();
codeman 0:65606abcae36 379 int _xMax;
codeman 0:65606abcae36 380 int _yMax;
codeman 0:65606abcae36 381 int _firmware;
codeman 0:65606abcae36 382 };
codeman 0:65606abcae36 383
codeman 0:65606abcae36 384
codeman 0:65606abcae36 385 #endif