Not Complete

Dependencies:   mbed

Fork of Nucleo_rtos by ST

Committer:
codeman
Date:
Thu Jun 23 22:57:30 2016 +0000
Revision:
77:cd59ac40b3be
Not Complete;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
codeman 77:cd59ac40b3be 1 #include "mbed.h"
codeman 77:cd59ac40b3be 2 #include "ezLCD405.h"
codeman 77:cd59ac40b3be 3
codeman 77:cd59ac40b3be 4
codeman 77:cd59ac40b3be 5 void Tx_interrupt();
codeman 77:cd59ac40b3be 6 void Rx_interrupt();
codeman 77:cd59ac40b3be 7 void send_line();
codeman 77:cd59ac40b3be 8 void read_line();
codeman 77:cd59ac40b3be 9
codeman 77:cd59ac40b3be 10 Timer timer;
codeman 77:cd59ac40b3be 11
codeman 77:cd59ac40b3be 12 // MOSI = PA7
codeman 77:cd59ac40b3be 13 // MISO = PA6
codeman 77:cd59ac40b3be 14 // SCK = PA5
codeman 77:cd59ac40b3be 15 // NSS = PA_4
codeman 77:cd59ac40b3be 16
codeman 77:cd59ac40b3be 17 SPI device(PA_7, PA_6, PA_5, PA_4);
codeman 77:cd59ac40b3be 18 DigitalOut nss(PA_4);
codeman 77:cd59ac40b3be 19
codeman 77:cd59ac40b3be 20 // Circular buffers for serial TX and RX data - used by interrupt routines
codeman 77:cd59ac40b3be 21 const int buffer_size = 4096;
codeman 77:cd59ac40b3be 22 // might need to increase buffer size for high baud rates
codeman 77:cd59ac40b3be 23 char tx_buffer[buffer_size];
codeman 77:cd59ac40b3be 24 char rx_buffer[buffer_size];
codeman 77:cd59ac40b3be 25 // Circular buffer pointers
codeman 77:cd59ac40b3be 26 // volatile makes read-modify-write atomic
codeman 77:cd59ac40b3be 27 volatile int tx_in=0;
codeman 77:cd59ac40b3be 28 volatile int tx_out=0;
codeman 77:cd59ac40b3be 29 volatile int rx_in=0;
codeman 77:cd59ac40b3be 30 volatile int rx_out=0;
codeman 77:cd59ac40b3be 31 char buf[64];
codeman 77:cd59ac40b3be 32 uint8_t ExtendedMode=0;
codeman 77:cd59ac40b3be 33
codeman 77:cd59ac40b3be 34 uint8_t interface = SPI_IF;
codeman 77:cd59ac40b3be 35
codeman 77:cd59ac40b3be 36 ezLCD4::ezLCD4(PinName tx, PinName rx) : Stream("ezLCD4") , _ser(tx, rx)
codeman 77:cd59ac40b3be 37 {
codeman 77:cd59ac40b3be 38 // _ser.attach(this,&ezLCD4::Rx_interrupt, Serial::RxIrq);
codeman 77:cd59ac40b3be 39 // _ser.attach(this,&ezLCD4::Tx_interrupt, Serial::TxIrq);
codeman 77:cd59ac40b3be 40 _ser.baud(115200); // default baud rate
codeman 77:cd59ac40b3be 41 status = 0;
codeman 77:cd59ac40b3be 42
codeman 77:cd59ac40b3be 43 }
codeman 77:cd59ac40b3be 44
codeman 77:cd59ac40b3be 45 void ezLCD4::Rx_interrupt( void )
codeman 77:cd59ac40b3be 46 {
codeman 77:cd59ac40b3be 47 // Loop just in case more than one character is in UART's receive FIFO buffer
codeman 77:cd59ac40b3be 48 // Stop if buffer full
codeman 77:cd59ac40b3be 49 // while ((_ser.readable()) || (((rx_in + 1) % buffer_size) == rx_out)) {
codeman 77:cd59ac40b3be 50 // rx_buffer[rx_in] = _ser.getc();
codeman 77:cd59ac40b3be 51 // rx_in = (rx_in + 1) % buffer_size;
codeman 77:cd59ac40b3be 52 // }
codeman 77:cd59ac40b3be 53 uint8_t c;
codeman 77:cd59ac40b3be 54 if(_ser.readable()) {
codeman 77:cd59ac40b3be 55 c=_ser.getc();
codeman 77:cd59ac40b3be 56 //status=c;
codeman 77:cd59ac40b3be 57 // if(c==0xea)
codeman 77:cd59ac40b3be 58 // status=1;
codeman 77:cd59ac40b3be 59 // if(c==0x38)
codeman 77:cd59ac40b3be 60 // pong=1;
codeman 77:cd59ac40b3be 61 /*
codeman 77:cd59ac40b3be 62 if((c & 0xc0)==0x40) {
codeman 77:cd59ac40b3be 63 button=(c & 0x3f);
codeman 77:cd59ac40b3be 64 bState=1;
codeman 77:cd59ac40b3be 65 // beep(5);
codeman 77:cd59ac40b3be 66 }
codeman 77:cd59ac40b3be 67 if((c & 0xc0)==0x80) {
codeman 77:cd59ac40b3be 68 button=(c & 0x3f);
codeman 77:cd59ac40b3be 69 bState=0;
codeman 77:cd59ac40b3be 70 }
codeman 77:cd59ac40b3be 71 */
codeman 77:cd59ac40b3be 72
codeman 77:cd59ac40b3be 73
codeman 77:cd59ac40b3be 74 if(c == 0x81) {
codeman 77:cd59ac40b3be 75 while(!_ser.readable());
codeman 77:cd59ac40b3be 76 x = _ser.getc();
codeman 77:cd59ac40b3be 77 while(!_ser.readable());
codeman 77:cd59ac40b3be 78 x |= _ser.getc() << 7;
codeman 77:cd59ac40b3be 79 while(!_ser.readable());
codeman 77:cd59ac40b3be 80 y = _ser.getc();
codeman 77:cd59ac40b3be 81 while(!_ser.readable());
codeman 77:cd59ac40b3be 82 y = _ser.getc();
codeman 77:cd59ac40b3be 83 while(!_ser.readable());
codeman 77:cd59ac40b3be 84 y |= _ser.getc() << 7;
codeman 77:cd59ac40b3be 85 }
codeman 77:cd59ac40b3be 86
codeman 77:cd59ac40b3be 87 }
codeman 77:cd59ac40b3be 88 return;
codeman 77:cd59ac40b3be 89 }
codeman 77:cd59ac40b3be 90
codeman 77:cd59ac40b3be 91 // Interupt Routine to write out data to serial port
codeman 77:cd59ac40b3be 92 void ezLCD4::Tx_interrupt( void )
codeman 77:cd59ac40b3be 93 {
codeman 77:cd59ac40b3be 94 // led2=1;
codeman 77:cd59ac40b3be 95 // Loop to fill more than one character in UART's transmit FIFO buffer
codeman 77:cd59ac40b3be 96 // Stop if buffer empty
codeman 77:cd59ac40b3be 97 /*
codeman 77:cd59ac40b3be 98 while (( _ser.writeable() ) && (tx_in != tx_out)) {
codeman 77:cd59ac40b3be 99 _ser.putc(tx_buffer[tx_out]);
codeman 77:cd59ac40b3be 100 tx_out = (tx_out + 1) % buffer_size;
codeman 77:cd59ac40b3be 101 }
codeman 77:cd59ac40b3be 102 // led2=0;
codeman 77:cd59ac40b3be 103 return;
codeman 77:cd59ac40b3be 104 */
codeman 77:cd59ac40b3be 105 }
codeman 77:cd59ac40b3be 106
codeman 77:cd59ac40b3be 107
codeman 77:cd59ac40b3be 108
codeman 77:cd59ac40b3be 109 uint8_t ezLCD4::getByte( void )
codeman 77:cd59ac40b3be 110 {
codeman 77:cd59ac40b3be 111 return rx_buffer[rx_out];
codeman 77:cd59ac40b3be 112 }
codeman 77:cd59ac40b3be 113 uint8_t ezLCD4::getCount( void )
codeman 77:cd59ac40b3be 114 {
codeman 77:cd59ac40b3be 115 return rx_in;
codeman 77:cd59ac40b3be 116 }
codeman 77:cd59ac40b3be 117
codeman 77:cd59ac40b3be 118 void ezLCD4::ezLCD405Init( uint8_t iface )
codeman 77:cd59ac40b3be 119 {
codeman 77:cd59ac40b3be 120 /*
codeman 77:cd59ac40b3be 121 while(c!=PONG) {
codeman 77:cd59ac40b3be 122
codeman 77:cd59ac40b3be 123 _ser.putc(PING);
codeman 77:cd59ac40b3be 124 c=pc.getc();
codeman 77:cd59ac40b3be 125 }
codeman 77:cd59ac40b3be 126 */
codeman 77:cd59ac40b3be 127 //writeData(0x00);
codeman 77:cd59ac40b3be 128 interface = iface;
codeman 77:cd59ac40b3be 129 if(interface == SPI_IF) {
codeman 77:cd59ac40b3be 130 nss=1;
codeman 77:cd59ac40b3be 131 device.format(8,3);
codeman 77:cd59ac40b3be 132 device.frequency(10000000);
codeman 77:cd59ac40b3be 133 }
codeman 77:cd59ac40b3be 134
codeman 77:cd59ac40b3be 135 }
codeman 77:cd59ac40b3be 136 void ezLCD4::showSettings( void )
codeman 77:cd59ac40b3be 137 {
codeman 77:cd59ac40b3be 138 writeData(SHOWSETTINGS);
codeman 77:cd59ac40b3be 139 }
codeman 77:cd59ac40b3be 140 void ezLCD4::buzzerOn( void )
codeman 77:cd59ac40b3be 141 {
codeman 77:cd59ac40b3be 142 writeData(EZNOW_BUZZER_ON );
codeman 77:cd59ac40b3be 143 }
codeman 77:cd59ac40b3be 144 void ezLCD4::buzzerOff( void )
codeman 77:cd59ac40b3be 145 {
codeman 77:cd59ac40b3be 146 writeData(EZNOW_BUZZER_OFF );
codeman 77:cd59ac40b3be 147 }
codeman 77:cd59ac40b3be 148
codeman 77:cd59ac40b3be 149 void ezLCD4::beep( uint8_t duration )
codeman 77:cd59ac40b3be 150 {
codeman 77:cd59ac40b3be 151 writeData(EZNOW_BUZZER_BEEP );
codeman 77:cd59ac40b3be 152 writeData(duration);
codeman 77:cd59ac40b3be 153 }
codeman 77:cd59ac40b3be 154
codeman 77:cd59ac40b3be 155 void ezLCD4::lightON( void )
codeman 77:cd59ac40b3be 156 {
codeman 77:cd59ac40b3be 157 writeData(LIGHT_ON);
codeman 77:cd59ac40b3be 158 }
codeman 77:cd59ac40b3be 159
codeman 77:cd59ac40b3be 160 void ezLCD4::lightOFF( void )
codeman 77:cd59ac40b3be 161 {
codeman 77:cd59ac40b3be 162 writeData(LIGHT_OFF);
codeman 77:cd59ac40b3be 163 }
codeman 77:cd59ac40b3be 164
codeman 77:cd59ac40b3be 165 void ezLCD4::lightBright( uint8_t bright )
codeman 77:cd59ac40b3be 166 {
codeman 77:cd59ac40b3be 167 writeData(LIGHT_BRIGHT);
codeman 77:cd59ac40b3be 168 writeData(bright);
codeman 77:cd59ac40b3be 169 }
codeman 77:cd59ac40b3be 170 void ezLCD4::setTouchProtocol( uint8_t protocol)
codeman 77:cd59ac40b3be 171 {
codeman 77:cd59ac40b3be 172 writeData(TOUCH_PROTOCOL);
codeman 77:cd59ac40b3be 173 writeData(protocol);
codeman 77:cd59ac40b3be 174 }
codeman 77:cd59ac40b3be 175
codeman 77:cd59ac40b3be 176 void ezLCD4::putSfIcon( uint8_t icon )
codeman 77:cd59ac40b3be 177 {
codeman 77:cd59ac40b3be 178 writeData(PUT_SF_ICON);
codeman 77:cd59ac40b3be 179 writeData(icon);
codeman 77:cd59ac40b3be 180 }
codeman 77:cd59ac40b3be 181
codeman 77:cd59ac40b3be 182 void ezLCD4::direct( uint8_t c )
codeman 77:cd59ac40b3be 183 {
codeman 77:cd59ac40b3be 184 writeData(c);
codeman 77:cd59ac40b3be 185 }
codeman 77:cd59ac40b3be 186
codeman 77:cd59ac40b3be 187 void ezLCD4::exmode( void )
codeman 77:cd59ac40b3be 188 {
codeman 77:cd59ac40b3be 189 writeData(EXMODE);
codeman 77:cd59ac40b3be 190 ExtendedMode=true;
codeman 77:cd59ac40b3be 191 }
codeman 77:cd59ac40b3be 192 void ezLCD4::stdmode( void )
codeman 77:cd59ac40b3be 193 {
codeman 77:cd59ac40b3be 194 writeData(STDMODE);
codeman 77:cd59ac40b3be 195 ExtendedMode =false;
codeman 77:cd59ac40b3be 196 }
codeman 77:cd59ac40b3be 197 void ezLCD4::setLayer ( uint8_t layer )
codeman 77:cd59ac40b3be 198 {
codeman 77:cd59ac40b3be 199 writeData(SET_LAYER);
codeman 77:cd59ac40b3be 200 writeData(layer);
codeman 77:cd59ac40b3be 201 }
codeman 77:cd59ac40b3be 202 void ezLCD4::setLayerVisible ( uint8_t layer, uint8_t visible )
codeman 77:cd59ac40b3be 203 {
codeman 77:cd59ac40b3be 204 writeData(SET_LAYERVISIBLE);
codeman 77:cd59ac40b3be 205 writeData(layer);
codeman 77:cd59ac40b3be 206 writeData(visible);
codeman 77:cd59ac40b3be 207 }
codeman 77:cd59ac40b3be 208 void ezLCD4::setColorKey ( uint16_t color )
codeman 77:cd59ac40b3be 209 {
codeman 77:cd59ac40b3be 210 writeData(SET_COLORKEY);
codeman 77:cd59ac40b3be 211 writeData(color & 0x00ff);
codeman 77:cd59ac40b3be 212 writeData((color & 0xff00) >>8);
codeman 77:cd59ac40b3be 213 }
codeman 77:cd59ac40b3be 214 void ezLCD4::SDPutIcon( char *str )
codeman 77:cd59ac40b3be 215 {
codeman 77:cd59ac40b3be 216 writeData(SD_PUT_ICON);
codeman 77:cd59ac40b3be 217 while( (char) *str )
codeman 77:cd59ac40b3be 218 writeData((char) *str++);
codeman 77:cd59ac40b3be 219 writeData(0x00);
codeman 77:cd59ac40b3be 220 }
codeman 77:cd59ac40b3be 221 void ezLCD4::setColor( uint16_t color )
codeman 77:cd59ac40b3be 222 {
codeman 77:cd59ac40b3be 223 writeData(SET_COLORH);
codeman 77:cd59ac40b3be 224 writeData(color & 0x00ff);
codeman 77:cd59ac40b3be 225 writeData((color & 0xff00) >>8);
codeman 77:cd59ac40b3be 226 }
codeman 77:cd59ac40b3be 227 void ezLCD4::setBgColor( uint16_t color )
codeman 77:cd59ac40b3be 228 {
codeman 77:cd59ac40b3be 229 writeData(SET_BG_COLORH);
codeman 77:cd59ac40b3be 230 writeData(color & 0x00ff);
codeman 77:cd59ac40b3be 231 writeData((color & 0xff00) >>8);
codeman 77:cd59ac40b3be 232 }
codeman 77:cd59ac40b3be 233 void ezLCD4::cls( void )
codeman 77:cd59ac40b3be 234 {
codeman 77:cd59ac40b3be 235 writeData(CLS);
codeman 77:cd59ac40b3be 236 }
codeman 77:cd59ac40b3be 237
codeman 77:cd59ac40b3be 238 void ezLCD4::cls( uint16_t color)
codeman 77:cd59ac40b3be 239 {
codeman 77:cd59ac40b3be 240 writeData(SET_COLORH);
codeman 77:cd59ac40b3be 241 send16LSB( color );
codeman 77:cd59ac40b3be 242 writeData(CLS);
codeman 77:cd59ac40b3be 243 }
codeman 77:cd59ac40b3be 244 void ezLCD4::setXY( uint16_t x, uint16_t y)
codeman 77:cd59ac40b3be 245 {
codeman 77:cd59ac40b3be 246 writeData(SET_XHY);
codeman 77:cd59ac40b3be 247 send16MSB( x );
codeman 77:cd59ac40b3be 248 if(ExtendedMode == false)
codeman 77:cd59ac40b3be 249 writeData(y & 0x00ff);
codeman 77:cd59ac40b3be 250 else
codeman 77:cd59ac40b3be 251 send16MSB( y );
codeman 77:cd59ac40b3be 252 }
codeman 77:cd59ac40b3be 253 void ezLCD4::printString( char *str )
codeman 77:cd59ac40b3be 254 {
codeman 77:cd59ac40b3be 255 writeData(PRINT_STRING);
codeman 77:cd59ac40b3be 256 while( (char) *str )
codeman 77:cd59ac40b3be 257 writeData((char) *str++);
codeman 77:cd59ac40b3be 258 writeData(0x00);
codeman 77:cd59ac40b3be 259 }
codeman 77:cd59ac40b3be 260 void ezLCD4::textDirection( uint8_t dir )
codeman 77:cd59ac40b3be 261 {
codeman 77:cd59ac40b3be 262 writeData( dir );
codeman 77:cd59ac40b3be 263 }
codeman 77:cd59ac40b3be 264
codeman 77:cd59ac40b3be 265 void ezLCD4::printString( uint16_t x, uint16_t y, uint8_t font, uint16_t color, char *str , uint8_t dir, uint8_t efx, uint16_t ocolor)
codeman 77:cd59ac40b3be 266 {
codeman 77:cd59ac40b3be 267 writeData( dir );
codeman 77:cd59ac40b3be 268 writeData(SELECT_FONT);
codeman 77:cd59ac40b3be 269 writeData(font);
codeman 77:cd59ac40b3be 270 if(efx==OUTLINE)
codeman 77:cd59ac40b3be 271 {
codeman 77:cd59ac40b3be 272 setXY(x-1,y);
codeman 77:cd59ac40b3be 273 setColor(ocolor);
codeman 77:cd59ac40b3be 274 printString(str);
codeman 77:cd59ac40b3be 275
codeman 77:cd59ac40b3be 276 setXY(x+1,y);
codeman 77:cd59ac40b3be 277 setColor(ocolor);
codeman 77:cd59ac40b3be 278 printString(str);
codeman 77:cd59ac40b3be 279
codeman 77:cd59ac40b3be 280 setXY(x,y-1);
codeman 77:cd59ac40b3be 281 setColor(ocolor);
codeman 77:cd59ac40b3be 282 printString(str);
codeman 77:cd59ac40b3be 283
codeman 77:cd59ac40b3be 284 setXY(x,y+1);
codeman 77:cd59ac40b3be 285 setColor(ocolor);
codeman 77:cd59ac40b3be 286 printString(str);
codeman 77:cd59ac40b3be 287 }
codeman 77:cd59ac40b3be 288 if(efx==SHADOW)
codeman 77:cd59ac40b3be 289 {
codeman 77:cd59ac40b3be 290 setXY(x+1,y+1);
codeman 77:cd59ac40b3be 291 setColor(ocolor);
codeman 77:cd59ac40b3be 292 printString(str);
codeman 77:cd59ac40b3be 293 }
codeman 77:cd59ac40b3be 294
codeman 77:cd59ac40b3be 295 setXY(x,y);
codeman 77:cd59ac40b3be 296 setColor(color);
codeman 77:cd59ac40b3be 297 printString(str);
codeman 77:cd59ac40b3be 298 }
codeman 77:cd59ac40b3be 299 void ezLCD4::setFont( uint8_t font )
codeman 77:cd59ac40b3be 300 {
codeman 77:cd59ac40b3be 301 writeData(SELECT_FONT);
codeman 77:cd59ac40b3be 302 writeData(font);
codeman 77:cd59ac40b3be 303 }
codeman 77:cd59ac40b3be 304
codeman 77:cd59ac40b3be 305 void ezLCD4::lineTo( uint16_t x , uint16_t y )
codeman 77:cd59ac40b3be 306 {
codeman 77:cd59ac40b3be 307 writeData( LINE_TO_XHY ) ;
codeman 77:cd59ac40b3be 308 send16MSB( x );
codeman 77:cd59ac40b3be 309 if(ExtendedMode == false)
codeman 77:cd59ac40b3be 310 writeData(y & 0x00ff);
codeman 77:cd59ac40b3be 311 else
codeman 77:cd59ac40b3be 312 send16MSB( y );
codeman 77:cd59ac40b3be 313 }
codeman 77:cd59ac40b3be 314 void ezLCD4::vLine( uint8_t y)
codeman 77:cd59ac40b3be 315 {
codeman 77:cd59ac40b3be 316 writeData(V_LINE);
codeman 77:cd59ac40b3be 317 writeData(y );
codeman 77:cd59ac40b3be 318 }
codeman 77:cd59ac40b3be 319 void ezLCD4::hLine( uint8_t x)
codeman 77:cd59ac40b3be 320 {
codeman 77:cd59ac40b3be 321 writeData(H_LINE);
codeman 77:cd59ac40b3be 322 writeData( x );
codeman 77:cd59ac40b3be 323 }
codeman 77:cd59ac40b3be 324
codeman 77:cd59ac40b3be 325 void ezLCD4::hLineH( uint16_t x)
codeman 77:cd59ac40b3be 326 {
codeman 77:cd59ac40b3be 327 writeData(H_LINEH);
codeman 77:cd59ac40b3be 328 send16MSB( x );
codeman 77:cd59ac40b3be 329
codeman 77:cd59ac40b3be 330 }
codeman 77:cd59ac40b3be 331 void ezLCD4::arc(uint16_t radius, uint16_t begin, uint16_t end)
codeman 77:cd59ac40b3be 332 {
codeman 77:cd59ac40b3be 333 writeData(ARCH);
codeman 77:cd59ac40b3be 334
codeman 77:cd59ac40b3be 335 writeData((radius & 0xff00) >>8);
codeman 77:cd59ac40b3be 336 writeData(radius & 0x00ff);
codeman 77:cd59ac40b3be 337 begin *=2048/45;
codeman 77:cd59ac40b3be 338 writeData((begin & 0xff00) >>8);
codeman 77:cd59ac40b3be 339 writeData(begin & 0x00ff);
codeman 77:cd59ac40b3be 340 end *=2048/45;
codeman 77:cd59ac40b3be 341 writeData((end & 0xff00) >>8);
codeman 77:cd59ac40b3be 342 writeData(end & 0x00ff);
codeman 77:cd59ac40b3be 343 }
codeman 77:cd59ac40b3be 344 void ezLCD4::box( uint16_t x, uint16_t y)
codeman 77:cd59ac40b3be 345 {
codeman 77:cd59ac40b3be 346 writeData(BOXH);
codeman 77:cd59ac40b3be 347 send16MSB( x );
codeman 77:cd59ac40b3be 348 if(ExtendedMode == false)
codeman 77:cd59ac40b3be 349 writeData( y & 0x00ff );
codeman 77:cd59ac40b3be 350 else
codeman 77:cd59ac40b3be 351 send16MSB( y );
codeman 77:cd59ac40b3be 352
codeman 77:cd59ac40b3be 353 }
codeman 77:cd59ac40b3be 354 void ezLCD4::boxFill( uint16_t x, uint16_t y)
codeman 77:cd59ac40b3be 355 {
codeman 77:cd59ac40b3be 356
codeman 77:cd59ac40b3be 357 writeData(BOXH_FILL);
codeman 77:cd59ac40b3be 358 send16MSB( x );
codeman 77:cd59ac40b3be 359 if(ExtendedMode == false)
codeman 77:cd59ac40b3be 360 writeData( y & 0x00ff );
codeman 77:cd59ac40b3be 361 else
codeman 77:cd59ac40b3be 362 send16MSB( y);
codeman 77:cd59ac40b3be 363 }
codeman 77:cd59ac40b3be 364 void ezLCD4::createTextBox( uint16_t x , uint16_t y, uint16_t w, uint16_t h, uint16_t bcolor, uint16_t fcolor, uint16_t tcolor, uint16_t fsize, uint8_t font, char *str)
codeman 77:cd59ac40b3be 365 {
codeman 77:cd59ac40b3be 366 setXY(x, y);
codeman 77:cd59ac40b3be 367 setColor(bcolor);
codeman 77:cd59ac40b3be 368 //boxFill(w,h);
codeman 77:cd59ac40b3be 369 setXY(x,y);
codeman 77:cd59ac40b3be 370 setColor(fcolor);
codeman 77:cd59ac40b3be 371 box(w,h);
codeman 77:cd59ac40b3be 372 setFont(font);
codeman 77:cd59ac40b3be 373 printString( x, y, font, tcolor, str , FONT_NORTH , false, 0);
codeman 77:cd59ac40b3be 374 }
codeman 77:cd59ac40b3be 375
codeman 77:cd59ac40b3be 376 void ezLCD4::buttonsDeleteAll( void )
codeman 77:cd59ac40b3be 377 {
codeman 77:cd59ac40b3be 378 writeData( ERASE_ALL_BUTTONS );
codeman 77:cd59ac40b3be 379 }
codeman 77:cd59ac40b3be 380
codeman 77:cd59ac40b3be 381 // #define BUTTON_DEF 0xB0
codeman 77:cd59ac40b3be 382 // 1: ID
codeman 77:cd59ac40b3be 383 // 2: State 0: None, 1: UP, 2: DN, 3: Disabled, 4: Non-Visible
codeman 77:cd59ac40b3be 384 // 3: IconUP
codeman 77:cd59ac40b3be 385 // 4: IconDN
codeman 77:cd59ac40b3be 386 // 5: IconDis
codeman 77:cd59ac40b3be 387 // 6: x0 MSB
codeman 77:cd59ac40b3be 388 // 7: x0 LSB
codeman 77:cd59ac40b3be 389 // 8: y0
codeman 77:cd59ac40b3be 390 // 9: Width
codeman 77:cd59ac40b3be 391 //10: Height
codeman 77:cd59ac40b3be 392 uint8_t ezLCD4::createButton( uint8_t ID, uint8_t State, uint8_t IconUp, uint8_t IconDn, uint8_t IconDis, uint16_t X, uint16_t Y, uint16_t W, uint16_t H, uint8_t Callback)
codeman 77:cd59ac40b3be 393 {
codeman 77:cd59ac40b3be 394 writeData(BUTTON_DEF);
codeman 77:cd59ac40b3be 395 writeData(ID);
codeman 77:cd59ac40b3be 396 writeData(State);
codeman 77:cd59ac40b3be 397 writeData(IconUp);
codeman 77:cd59ac40b3be 398 writeData(IconDn);
codeman 77:cd59ac40b3be 399 writeData(IconDis);
codeman 77:cd59ac40b3be 400 send16MSB( X );
codeman 77:cd59ac40b3be 401 if(ExtendedMode == false)
codeman 77:cd59ac40b3be 402 writeData( Y & 0x00ff );
codeman 77:cd59ac40b3be 403 else
codeman 77:cd59ac40b3be 404 send16MSB( Y );
codeman 77:cd59ac40b3be 405 writeData( W );
codeman 77:cd59ac40b3be 406 writeData( H );
codeman 77:cd59ac40b3be 407 return true;
codeman 77:cd59ac40b3be 408 }
codeman 77:cd59ac40b3be 409 void ezLCD4::buttonState( uint8_t ID, uint8_t state )
codeman 77:cd59ac40b3be 410 {
codeman 77:cd59ac40b3be 411 writeData( BUTTON_STATE );
codeman 77:cd59ac40b3be 412 writeData( ID );
codeman 77:cd59ac40b3be 413 writeData( state );
codeman 77:cd59ac40b3be 414 }
codeman 77:cd59ac40b3be 415
codeman 77:cd59ac40b3be 416 void ezLCD4::send16MSB( uint16_t val )
codeman 77:cd59ac40b3be 417 {
codeman 77:cd59ac40b3be 418 writeData(( val & 0xff00) >>8);
codeman 77:cd59ac40b3be 419 writeData( val & 0x00ff);
codeman 77:cd59ac40b3be 420 }
codeman 77:cd59ac40b3be 421 void ezLCD4::send16LSB( uint16_t val )
codeman 77:cd59ac40b3be 422 {
codeman 77:cd59ac40b3be 423 writeData( val & 0x00ff);
codeman 77:cd59ac40b3be 424 writeData(( val & 0xff00) >>8);
codeman 77:cd59ac40b3be 425 }
codeman 77:cd59ac40b3be 426 uint8_t ezLCD4::ping( uint16_t timeout )
codeman 77:cd59ac40b3be 427 {
codeman 77:cd59ac40b3be 428 timer.reset();
codeman 77:cd59ac40b3be 429 writeData(PING);
codeman 77:cd59ac40b3be 430 timer.start();
codeman 77:cd59ac40b3be 431 while(timer.read_ms() < timeout) {
codeman 77:cd59ac40b3be 432 if( pollTouch(1, 0x00) == 0x38)
codeman 77:cd59ac40b3be 433 return true;
codeman 77:cd59ac40b3be 434 }
codeman 77:cd59ac40b3be 435 timer.stop();
codeman 77:cd59ac40b3be 436 return timedOut;
codeman 77:cd59ac40b3be 437
codeman 77:cd59ac40b3be 438 }
codeman 77:cd59ac40b3be 439
codeman 77:cd59ac40b3be 440
codeman 77:cd59ac40b3be 441
codeman 77:cd59ac40b3be 442 uint8_t ezLCD4::pollTouch( uint8_t count, uint8_t cmd )
codeman 77:cd59ac40b3be 443 {
codeman 77:cd59ac40b3be 444 uint8_t c;
codeman 77:cd59ac40b3be 445 c = 0x00;
codeman 77:cd59ac40b3be 446 if(interface == SPI_IF) {
codeman 77:cd59ac40b3be 447 nss=0;
codeman 77:cd59ac40b3be 448 for(uint8_t i=0; i< count; i++)
codeman 77:cd59ac40b3be 449 c=device.write(cmd);
codeman 77:cd59ac40b3be 450 nss=1;
codeman 77:cd59ac40b3be 451 }
codeman 77:cd59ac40b3be 452 return c;
codeman 77:cd59ac40b3be 453 }
codeman 77:cd59ac40b3be 454
codeman 77:cd59ac40b3be 455 uint8_t ezLCD4::writeData(uint8_t c)
codeman 77:cd59ac40b3be 456 {
codeman 77:cd59ac40b3be 457 if(interface == SERIAL_IF)
codeman 77:cd59ac40b3be 458 _ser.putc(c);
codeman 77:cd59ac40b3be 459 if(interface == SPI_IF) {
codeman 77:cd59ac40b3be 460 nss=0;
codeman 77:cd59ac40b3be 461 device.write(c);
codeman 77:cd59ac40b3be 462 nss=1;
codeman 77:cd59ac40b3be 463
codeman 77:cd59ac40b3be 464 }
codeman 77:cd59ac40b3be 465 }
codeman 77:cd59ac40b3be 466
codeman 77:cd59ac40b3be 467 int ezLCD4::_putc( int c)
codeman 77:cd59ac40b3be 468 {
codeman 77:cd59ac40b3be 469
codeman 77:cd59ac40b3be 470 return (c);
codeman 77:cd59ac40b3be 471 }
codeman 77:cd59ac40b3be 472
codeman 77:cd59ac40b3be 473 int ezLCD4::_getc(void)
codeman 77:cd59ac40b3be 474 {
codeman 77:cd59ac40b3be 475 char r = 0;
codeman 77:cd59ac40b3be 476 return(r);
codeman 77:cd59ac40b3be 477 }