Base LCDPanel based, required for all LCDPanel drivers
LCDPanel_SPI.cpp@2:ab4040a7e8c9, 2012-03-11 (annotated)
- Committer:
- silviogissi
- Date:
- Sun Mar 11 01:33:10 2012 +0000
- Revision:
- 2:ab4040a7e8c9
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
silviogissi | 2:ab4040a7e8c9 | 1 | /* LCDPanel base library for LCD/TFT Panels |
silviogissi | 2:ab4040a7e8c9 | 2 | * Copyright (c) 2012, Silvio Gissi */ |
silviogissi | 2:ab4040a7e8c9 | 3 | |
silviogissi | 2:ab4040a7e8c9 | 4 | #include "LCDPanel_SPI.h" |
silviogissi | 2:ab4040a7e8c9 | 5 | #include "stdarg.h" |
silviogissi | 2:ab4040a7e8c9 | 6 | |
silviogissi | 2:ab4040a7e8c9 | 7 | LCDPanel_SPI::LCDPanel_SPI(unsigned int width, unsigned int height, PinName cs, |
silviogissi | 2:ab4040a7e8c9 | 8 | PinName spi_data, PinName spi_clock, PinName rst, |
silviogissi | 2:ab4040a7e8c9 | 9 | unsigned int spi_bits, unsigned int spi_freq |
silviogissi | 2:ab4040a7e8c9 | 10 | ) : LCDPanel (width,height,cs), _rst(rst), _spi(spi_data,NC,spi_clock) |
silviogissi | 2:ab4040a7e8c9 | 11 | { |
silviogissi | 2:ab4040a7e8c9 | 12 | _spi.format(spi_bits); |
silviogissi | 2:ab4040a7e8c9 | 13 | _spi.frequency(spi_freq); |
silviogissi | 2:ab4040a7e8c9 | 14 | } |
silviogissi | 2:ab4040a7e8c9 | 15 | |
silviogissi | 2:ab4040a7e8c9 | 16 | void LCDPanel_SPI::command(unsigned int command, unsigned int size, ...) { |
silviogissi | 2:ab4040a7e8c9 | 17 | _spi.write(command&0xFF); |
silviogissi | 2:ab4040a7e8c9 | 18 | if (size) { |
silviogissi | 2:ab4040a7e8c9 | 19 | va_list m; |
silviogissi | 2:ab4040a7e8c9 | 20 | va_start (m,size); |
silviogissi | 2:ab4040a7e8c9 | 21 | this->data(size,m); |
silviogissi | 2:ab4040a7e8c9 | 22 | va_end(m); |
silviogissi | 2:ab4040a7e8c9 | 23 | } |
silviogissi | 2:ab4040a7e8c9 | 24 | |
silviogissi | 2:ab4040a7e8c9 | 25 | } |
silviogissi | 2:ab4040a7e8c9 | 26 | |
silviogissi | 2:ab4040a7e8c9 | 27 | void LCDPanel_SPI::data(unsigned int size, ...) { |
silviogissi | 2:ab4040a7e8c9 | 28 | va_list m; |
silviogissi | 2:ab4040a7e8c9 | 29 | va_start (m,size); |
silviogissi | 2:ab4040a7e8c9 | 30 | for(int i=0; i<size; i++) { _spi.write(va_arg(m,int)|0x100); } |
silviogissi | 2:ab4040a7e8c9 | 31 | va_end(m); |
silviogissi | 2:ab4040a7e8c9 | 32 | } |
silviogissi | 2:ab4040a7e8c9 | 33 | |
silviogissi | 2:ab4040a7e8c9 | 34 | void LCDPanel_SPI::pixel(uint16_t color) { |
silviogissi | 2:ab4040a7e8c9 | 35 | this->data(2,color>>8,color&0xff); |
silviogissi | 2:ab4040a7e8c9 | 36 | } |