Base LCDPanel based, required for all LCDPanel drivers

LCDPanel_SPI.cpp

Committer:
silviogissi
Date:
2012-03-11
Revision:
2:ab4040a7e8c9

File content as of revision 2:ab4040a7e8c9:

/* LCDPanel base library for LCD/TFT Panels
 * Copyright (c) 2012, Silvio Gissi */

#include "LCDPanel_SPI.h"
#include "stdarg.h"

LCDPanel_SPI::LCDPanel_SPI(unsigned int width, unsigned int height, PinName cs,
        PinName spi_data, PinName spi_clock, PinName rst,
        unsigned int spi_bits, unsigned int spi_freq
   ) : LCDPanel (width,height,cs), _rst(rst), _spi(spi_data,NC,spi_clock)
 {
    _spi.format(spi_bits);
    _spi.frequency(spi_freq);
 }
 
void LCDPanel_SPI::command(unsigned int command, unsigned int size, ...) {
  _spi.write(command&0xFF);
  if (size) {
    va_list m;
    va_start (m,size);
    this->data(size,m);
    va_end(m);
  }
  
}

void LCDPanel_SPI::data(unsigned int size, ...) {
    va_list m;
    va_start (m,size);
    for(int i=0; i<size; i++) { _spi.write(va_arg(m,int)|0x100); }
    va_end(m);
}

void LCDPanel_SPI::pixel(uint16_t color) {
    this->data(2,color>>8,color&0xff);
}