Library for 4D systems touchscreen

Committer:
ashleymills
Date:
Tue Aug 21 14:40:18 2012 +0000
Revision:
0:edf5f3d8645e
4D systems touchscreen lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ashleymills 0:edf5f3d8645e 1 /**
ashleymills 0:edf5f3d8645e 2 * @file
ashleymills 0:edf5f3d8645e 3 * @version
ashleymills 0:edf5f3d8645e 4 * @author Ashley.Mills@vodafone.com
ashleymills 0:edf5f3d8645e 5 * @brief Touchscreen control.
ashleymills 0:edf5f3d8645e 6 */
ashleymills 0:edf5f3d8645e 7
ashleymills 0:edf5f3d8645e 8 #include "TouchScreen.h"
ashleymills 0:edf5f3d8645e 9
ashleymills 0:edf5f3d8645e 10 #define WAIT_TIMEOUT_MS 1000
ashleymills 0:edf5f3d8645e 11
ashleymills 0:edf5f3d8645e 12 TouchScreen::TouchScreen(PinName tx, PinName rx, PinName resetPin, const char *name) : Serial(tx,rx,name) {
ashleymills 0:edf5f3d8645e 13 baud(9600);
ashleymills 0:edf5f3d8645e 14 _resetPin = new DigitalOut(resetPin);
ashleymills 0:edf5f3d8645e 15 _resetPin->write(1);
ashleymills 0:edf5f3d8645e 16 reset();
ashleymills 0:edf5f3d8645e 17 _initOK = false;
ashleymills 0:edf5f3d8645e 18 putc('U');
ashleymills 0:edf5f3d8645e 19 _initOK = gack();
ashleymills 0:edf5f3d8645e 20 _fillColor = createRGBClassic(21,21,21);
ashleymills 0:edf5f3d8645e 21 _strokeColor = createRGBClassic(221,221,221);
ashleymills 0:edf5f3d8645e 22 }
ashleymills 0:edf5f3d8645e 23
ashleymills 0:edf5f3d8645e 24 TouchScreen::TouchScreen(PinName tx, PinName rx, PinName resetPin, eBaudRate baudRate, const char *name) : Serial (tx,rx,name) {
ashleymills 0:edf5f3d8645e 25 baud(9600);
ashleymills 0:edf5f3d8645e 26 _resetPin = new DigitalOut(resetPin);
ashleymills 0:edf5f3d8645e 27 _resetPin->write(1);
ashleymills 0:edf5f3d8645e 28 reset();
ashleymills 0:edf5f3d8645e 29 _initOK = false;
ashleymills 0:edf5f3d8645e 30 putc('U');
ashleymills 0:edf5f3d8645e 31 if((_initOK=gack())) {
ashleymills 0:edf5f3d8645e 32 setBaudRate(baudRate);
ashleymills 0:edf5f3d8645e 33 }
ashleymills 0:edf5f3d8645e 34 _fillColor = createRGBClassic(21,21,21);
ashleymills 0:edf5f3d8645e 35 _strokeColor = createRGBClassic(221,221,221);
ashleymills 0:edf5f3d8645e 36 }
ashleymills 0:edf5f3d8645e 37
ashleymills 0:edf5f3d8645e 38 void TouchScreen::reset() {
ashleymills 0:edf5f3d8645e 39 _resetPin->write(0);
ashleymills 0:edf5f3d8645e 40 Thread::wait(2);
ashleymills 0:edf5f3d8645e 41 _resetPin->write(1);
ashleymills 0:edf5f3d8645e 42 Thread::wait(3000);
ashleymills 0:edf5f3d8645e 43 }
ashleymills 0:edf5f3d8645e 44
ashleymills 0:edf5f3d8645e 45 void TouchScreen::clearScreen() {
ashleymills 0:edf5f3d8645e 46 putc('E');
ashleymills 0:edf5f3d8645e 47 gack();
ashleymills 0:edf5f3d8645e 48 }
ashleymills 0:edf5f3d8645e 49
ashleymills 0:edf5f3d8645e 50 bool TouchScreen::setBaudRate(eBaudRate baudRate) {
ashleymills 0:edf5f3d8645e 51 long newRate = 9600;
ashleymills 0:edf5f3d8645e 52 uint8_t rateCommand = (uint8_t)0x06;
ashleymills 0:edf5f3d8645e 53 putc('Q');
ashleymills 0:edf5f3d8645e 54 switch(baudRate) {
ashleymills 0:edf5f3d8645e 55 case BAUD_9600:
ashleymills 0:edf5f3d8645e 56 rateCommand = (uint8_t)0x06;
ashleymills 0:edf5f3d8645e 57 newRate = 9600;
ashleymills 0:edf5f3d8645e 58 break;
ashleymills 0:edf5f3d8645e 59
ashleymills 0:edf5f3d8645e 60 case BAUD_14400:
ashleymills 0:edf5f3d8645e 61 rateCommand = (uint8_t)0x07;
ashleymills 0:edf5f3d8645e 62 newRate = 14400;
ashleymills 0:edf5f3d8645e 63 break;
ashleymills 0:edf5f3d8645e 64
ashleymills 0:edf5f3d8645e 65 case BAUD_19200:
ashleymills 0:edf5f3d8645e 66 rateCommand = (uint8_t)0x08;
ashleymills 0:edf5f3d8645e 67 newRate = 19200;
ashleymills 0:edf5f3d8645e 68 break;
ashleymills 0:edf5f3d8645e 69
ashleymills 0:edf5f3d8645e 70 case BAUD_57600:
ashleymills 0:edf5f3d8645e 71 rateCommand = (uint8_t)0x0C;
ashleymills 0:edf5f3d8645e 72 newRate = 57600;
ashleymills 0:edf5f3d8645e 73 break;
ashleymills 0:edf5f3d8645e 74
ashleymills 0:edf5f3d8645e 75 case BAUD_115200:
ashleymills 0:edf5f3d8645e 76 rateCommand = (uint8_t)0x0D;
ashleymills 0:edf5f3d8645e 77 newRate = 115200;
ashleymills 0:edf5f3d8645e 78 break;
ashleymills 0:edf5f3d8645e 79
ashleymills 0:edf5f3d8645e 80 case BAUD_256000:
ashleymills 0:edf5f3d8645e 81 rateCommand = (uint8_t)0x0F;
ashleymills 0:edf5f3d8645e 82 newRate = 256000;
ashleymills 0:edf5f3d8645e 83 break;
ashleymills 0:edf5f3d8645e 84 }
ashleymills 0:edf5f3d8645e 85 putc((uint8_t)rateCommand);
ashleymills 0:edf5f3d8645e 86 // doesn't seem to want to acknowledge at either the old baud rate or the new baud rate
ashleymills 0:edf5f3d8645e 87 dropBytes(1);
ashleymills 0:edf5f3d8645e 88 baud(newRate);
ashleymills 0:edf5f3d8645e 89 return true;
ashleymills 0:edf5f3d8645e 90 }
ashleymills 0:edf5f3d8645e 91
ashleymills 0:edf5f3d8645e 92 void TouchScreen::setPenSolid() {
ashleymills 0:edf5f3d8645e 93 putc('p');
ashleymills 0:edf5f3d8645e 94 putc((uint8_t)0x0);
ashleymills 0:edf5f3d8645e 95 gack();
ashleymills 0:edf5f3d8645e 96 }
ashleymills 0:edf5f3d8645e 97
ashleymills 0:edf5f3d8645e 98 void TouchScreen::setPenWireframe() {
ashleymills 0:edf5f3d8645e 99 putc('p');
ashleymills 0:edf5f3d8645e 100 putc((uint8_t)0x1);
ashleymills 0:edf5f3d8645e 101 gack();
ashleymills 0:edf5f3d8645e 102 }
ashleymills 0:edf5f3d8645e 103
ashleymills 0:edf5f3d8645e 104 void TouchScreen::setBackgroundColor(uint16_t color) {
ashleymills 0:edf5f3d8645e 105 putc('K');
ashleymills 0:edf5f3d8645e 106 putc(highByte(color));
ashleymills 0:edf5f3d8645e 107 putc(lowByte(color));
ashleymills 0:edf5f3d8645e 108 gack();
ashleymills 0:edf5f3d8645e 109 }
ashleymills 0:edf5f3d8645e 110
ashleymills 0:edf5f3d8645e 111 bool TouchScreen::waitUntilReadable() {
ashleymills 0:edf5f3d8645e 112 long timeOut = WAIT_TIMEOUT_MS;
ashleymills 0:edf5f3d8645e 113 Timer timer;
ashleymills 0:edf5f3d8645e 114 timer.start();
ashleymills 0:edf5f3d8645e 115 while(1) {
ashleymills 0:edf5f3d8645e 116 if(readable())
ashleymills 0:edf5f3d8645e 117 return true;
ashleymills 0:edf5f3d8645e 118 if(timer.read_ms()>timeOut)
ashleymills 0:edf5f3d8645e 119 return false;
ashleymills 0:edf5f3d8645e 120 }
ashleymills 0:edf5f3d8645e 121 }
ashleymills 0:edf5f3d8645e 122
ashleymills 0:edf5f3d8645e 123 bool TouchScreen::gack() {
ashleymills 0:edf5f3d8645e 124 if(waitUntilReadable()) {
ashleymills 0:edf5f3d8645e 125 uint8_t b = getc();
ashleymills 0:edf5f3d8645e 126 return (b==0x06);
ashleymills 0:edf5f3d8645e 127 }
ashleymills 0:edf5f3d8645e 128 return false;
ashleymills 0:edf5f3d8645e 129 }
ashleymills 0:edf5f3d8645e 130
ashleymills 0:edf5f3d8645e 131 void TouchScreen::drawPixel(uint16_t xPos, uint16_t yPos, uint16_t color) {
ashleymills 0:edf5f3d8645e 132 putc('P');
ashleymills 0:edf5f3d8645e 133 putc(highByte(xPos)); // x pos
ashleymills 0:edf5f3d8645e 134 putc(lowByte(xPos));
ashleymills 0:edf5f3d8645e 135
ashleymills 0:edf5f3d8645e 136 putc(highByte(yPos)); // y pos
ashleymills 0:edf5f3d8645e 137 putc(lowByte(yPos));
ashleymills 0:edf5f3d8645e 138
ashleymills 0:edf5f3d8645e 139 putc(highByte(color)); // color
ashleymills 0:edf5f3d8645e 140 putc(lowByte(color));
ashleymills 0:edf5f3d8645e 141 gack();
ashleymills 0:edf5f3d8645e 142 }
ashleymills 0:edf5f3d8645e 143
ashleymills 0:edf5f3d8645e 144 void TouchScreen::drawCircle(uint16_t xPos, uint16_t yPos, uint16_t radius, uint16_t color) {
ashleymills 0:edf5f3d8645e 145 putc('C');
ashleymills 0:edf5f3d8645e 146 putc(highByte(xPos)); // x pos
ashleymills 0:edf5f3d8645e 147 putc(lowByte(xPos));
ashleymills 0:edf5f3d8645e 148
ashleymills 0:edf5f3d8645e 149 putc(highByte(yPos)); // y pos
ashleymills 0:edf5f3d8645e 150 putc(lowByte(yPos));
ashleymills 0:edf5f3d8645e 151
ashleymills 0:edf5f3d8645e 152 putc(highByte(radius)); // radius
ashleymills 0:edf5f3d8645e 153 putc(lowByte(radius));
ashleymills 0:edf5f3d8645e 154
ashleymills 0:edf5f3d8645e 155 putc(highByte(color)); // color
ashleymills 0:edf5f3d8645e 156 putc(lowByte(color));
ashleymills 0:edf5f3d8645e 157 gack();
ashleymills 0:edf5f3d8645e 158 }
ashleymills 0:edf5f3d8645e 159
ashleymills 0:edf5f3d8645e 160 uint16_t TouchScreen::createRGBClassic(int r, int g, int b) {
ashleymills 0:edf5f3d8645e 161 return createRGBF(r/255.0f,g/255.0f,b/255.0f);
ashleymills 0:edf5f3d8645e 162 }
ashleymills 0:edf5f3d8645e 163
ashleymills 0:edf5f3d8645e 164 uint16_t TouchScreen::createRGB(uint8_t r, uint8_t g, uint8_t b) {
ashleymills 0:edf5f3d8645e 165 if(r>31) r = 31;
ashleymills 0:edf5f3d8645e 166 if(g>63) g = 63;
ashleymills 0:edf5f3d8645e 167 if(b>31) b = 31;
ashleymills 0:edf5f3d8645e 168 uint16_t o = 0;
ashleymills 0:edf5f3d8645e 169 o |= (r<<0xb);
ashleymills 0:edf5f3d8645e 170 o |= (g<<0x5);
ashleymills 0:edf5f3d8645e 171 o |= b;
ashleymills 0:edf5f3d8645e 172 return o;
ashleymills 0:edf5f3d8645e 173 }
ashleymills 0:edf5f3d8645e 174
ashleymills 0:edf5f3d8645e 175 uint16_t TouchScreen::createRGBF(float r, float g, float b) {
ashleymills 0:edf5f3d8645e 176 return createRGB((uint8_t)(r*31.0f),(uint8_t)(g*63.0f),(uint8_t)(b*31.0f));
ashleymills 0:edf5f3d8645e 177 }
ashleymills 0:edf5f3d8645e 178
ashleymills 0:edf5f3d8645e 179 void TouchScreen::enableTouch() {
ashleymills 0:edf5f3d8645e 180 putc('Y');
ashleymills 0:edf5f3d8645e 181 putc((uint8_t)0x5);
ashleymills 0:edf5f3d8645e 182 putc((uint8_t)0x0);
ashleymills 0:edf5f3d8645e 183 gack();
ashleymills 0:edf5f3d8645e 184 }
ashleymills 0:edf5f3d8645e 185
ashleymills 0:edf5f3d8645e 186 void TouchScreen::disableTouch() {
ashleymills 0:edf5f3d8645e 187 putc('Y');
ashleymills 0:edf5f3d8645e 188 putc((uint8_t)0x5);
ashleymills 0:edf5f3d8645e 189 putc((uint8_t)0x1);
ashleymills 0:edf5f3d8645e 190 gack();
ashleymills 0:edf5f3d8645e 191 }
ashleymills 0:edf5f3d8645e 192
ashleymills 0:edf5f3d8645e 193 void TouchScreen::setOrientation(eScreenOrientation o) {
ashleymills 0:edf5f3d8645e 194 putc('Y');
ashleymills 0:edf5f3d8645e 195 putc((uint8_t)0x4);
ashleymills 0:edf5f3d8645e 196 putc((uint8_t)o);
ashleymills 0:edf5f3d8645e 197 gack();
ashleymills 0:edf5f3d8645e 198 }
ashleymills 0:edf5f3d8645e 199
ashleymills 0:edf5f3d8645e 200 void TouchScreen::getVersion() {
ashleymills 0:edf5f3d8645e 201 putc('V');
ashleymills 0:edf5f3d8645e 202 putc((uint8_t)0x1);
ashleymills 0:edf5f3d8645e 203 dropBytes((uint16_t)5);
ashleymills 0:edf5f3d8645e 204 }
ashleymills 0:edf5f3d8645e 205
ashleymills 0:edf5f3d8645e 206 void TouchScreen::dropBytes(uint16_t numBytes) {
ashleymills 0:edf5f3d8645e 207 while(numBytes--) {
ashleymills 0:edf5f3d8645e 208 dropByte();
ashleymills 0:edf5f3d8645e 209 }
ashleymills 0:edf5f3d8645e 210 }
ashleymills 0:edf5f3d8645e 211
ashleymills 0:edf5f3d8645e 212 void TouchScreen::drawImage(char *name, uint16_t x, uint16_t y) {
ashleymills 0:edf5f3d8645e 213 putc('@');
ashleymills 0:edf5f3d8645e 214 putc('m');
ashleymills 0:edf5f3d8645e 215 printf(name);
ashleymills 0:edf5f3d8645e 216 putc((uint8_t)0);
ashleymills 0:edf5f3d8645e 217 putc(highByte((uint16_t)x));
ashleymills 0:edf5f3d8645e 218 putc(lowByte((uint16_t)x));
ashleymills 0:edf5f3d8645e 219 putc(highByte((uint16_t)y));
ashleymills 0:edf5f3d8645e 220 putc(lowByte((uint16_t)y));
ashleymills 0:edf5f3d8645e 221 putc((uint8_t)0x00);
ashleymills 0:edf5f3d8645e 222 putc((uint8_t)0x00);
ashleymills 0:edf5f3d8645e 223 putc((uint8_t)0x00);
ashleymills 0:edf5f3d8645e 224 putc((uint8_t)0x00);
ashleymills 0:edf5f3d8645e 225 gack();
ashleymills 0:edf5f3d8645e 226 }
ashleymills 0:edf5f3d8645e 227
ashleymills 0:edf5f3d8645e 228 void TouchScreen::dropByte() {
ashleymills 0:edf5f3d8645e 229 if(waitUntilReadable()) {
ashleymills 0:edf5f3d8645e 230 getc();
ashleymills 0:edf5f3d8645e 231 }
ashleymills 0:edf5f3d8645e 232 }
ashleymills 0:edf5f3d8645e 233
ashleymills 0:edf5f3d8645e 234 void TouchScreen::dropByteAndWaitUntilReadable() {
ashleymills 0:edf5f3d8645e 235 if(waitUntilReadable()) {
ashleymills 0:edf5f3d8645e 236 getc();
ashleymills 0:edf5f3d8645e 237 }
ashleymills 0:edf5f3d8645e 238 waitUntilReadable();
ashleymills 0:edf5f3d8645e 239 }
ashleymills 0:edf5f3d8645e 240
ashleymills 0:edf5f3d8645e 241 eTouchStatus TouchScreen::getTouchStatus() {
ashleymills 0:edf5f3d8645e 242 putc('o');
ashleymills 0:edf5f3d8645e 243 putc((uint8_t)0x4);
ashleymills 0:edf5f3d8645e 244 dropByteAndWaitUntilReadable();
ashleymills 0:edf5f3d8645e 245 uint8_t touchStatus = getc();
ashleymills 0:edf5f3d8645e 246 dropByte();
ashleymills 0:edf5f3d8645e 247 dropByte();
ashleymills 0:edf5f3d8645e 248 return (eTouchStatus)touchStatus;
ashleymills 0:edf5f3d8645e 249 }
ashleymills 0:edf5f3d8645e 250
ashleymills 0:edf5f3d8645e 251 TouchPoint TouchScreen::getLastTouch() {
ashleymills 0:edf5f3d8645e 252 TouchPoint p;
ashleymills 0:edf5f3d8645e 253
ashleymills 0:edf5f3d8645e 254 putc('o');
ashleymills 0:edf5f3d8645e 255 putc((uint8_t)0x05);
ashleymills 0:edf5f3d8645e 256 waitUntilReadable();
ashleymills 0:edf5f3d8645e 257 uint8_t v = getc();
ashleymills 0:edf5f3d8645e 258 p.x = (v<<0x8);
ashleymills 0:edf5f3d8645e 259 waitUntilReadable();
ashleymills 0:edf5f3d8645e 260 p.x += getc();
ashleymills 0:edf5f3d8645e 261 waitUntilReadable();
ashleymills 0:edf5f3d8645e 262 v = getc();
ashleymills 0:edf5f3d8645e 263 p.y = (v<<0x8);
ashleymills 0:edf5f3d8645e 264 waitUntilReadable();
ashleymills 0:edf5f3d8645e 265 p.y += getc();
ashleymills 0:edf5f3d8645e 266 return p;
ashleymills 0:edf5f3d8645e 267 }
ashleymills 0:edf5f3d8645e 268
ashleymills 0:edf5f3d8645e 269 void TouchScreen::setBacklight(bool state) {
ashleymills 0:edf5f3d8645e 270 putc('Y');
ashleymills 0:edf5f3d8645e 271 putc((uint8_t)0x00);
ashleymills 0:edf5f3d8645e 272 if(state) {
ashleymills 0:edf5f3d8645e 273 putc((uint8_t)0x01);
ashleymills 0:edf5f3d8645e 274 } else {
ashleymills 0:edf5f3d8645e 275 putc((uint8_t)0x00);
ashleymills 0:edf5f3d8645e 276 }
ashleymills 0:edf5f3d8645e 277 gack();
ashleymills 0:edf5f3d8645e 278 }
ashleymills 0:edf5f3d8645e 279
ashleymills 0:edf5f3d8645e 280 void TouchScreen::setContrast(uint8_t value) {
ashleymills 0:edf5f3d8645e 281 if(value>0x0F)
ashleymills 0:edf5f3d8645e 282 value = 0x0F;
ashleymills 0:edf5f3d8645e 283 putc('Y');
ashleymills 0:edf5f3d8645e 284 putc((uint8_t)0x02);
ashleymills 0:edf5f3d8645e 285 putc(value);
ashleymills 0:edf5f3d8645e 286 gack();
ashleymills 0:edf5f3d8645e 287 }
ashleymills 0:edf5f3d8645e 288
ashleymills 0:edf5f3d8645e 289 void TouchScreen::drawGraphicsFormatString(uint16_t x, uint16_t y, eInternalFont font, uint16_t textColor, uint8_t charWidth, uint8_t charHeight, char* text) {
ashleymills 0:edf5f3d8645e 290 putc('S');
ashleymills 0:edf5f3d8645e 291 putc((uint8_t)highByte(x));
ashleymills 0:edf5f3d8645e 292 putc((uint8_t)lowByte(x));
ashleymills 0:edf5f3d8645e 293 putc((uint8_t)highByte(y));
ashleymills 0:edf5f3d8645e 294 putc((uint8_t)lowByte(y));
ashleymills 0:edf5f3d8645e 295 putc((uint8_t)font);
ashleymills 0:edf5f3d8645e 296 putc((uint8_t)highByte(textColor));
ashleymills 0:edf5f3d8645e 297 putc((uint8_t)lowByte(textColor));
ashleymills 0:edf5f3d8645e 298 putc((uint8_t)charWidth);
ashleymills 0:edf5f3d8645e 299 putc((uint8_t)charHeight);
ashleymills 0:edf5f3d8645e 300 if(strlen(text)==256) { // change to own implementation of strnlen
ashleymills 0:edf5f3d8645e 301 text[256] = 0;
ashleymills 0:edf5f3d8645e 302 }
ashleymills 0:edf5f3d8645e 303 printf(text);
ashleymills 0:edf5f3d8645e 304 putc((uint8_t)0x00);
ashleymills 0:edf5f3d8645e 305 gack();
ashleymills 0:edf5f3d8645e 306 }
ashleymills 0:edf5f3d8645e 307
ashleymills 0:edf5f3d8645e 308
ashleymills 0:edf5f3d8645e 309 void TouchScreen::drawTextFormatString(uint8_t row, uint8_t column, eInternalFont font, uint16_t textColor, char* text) {
ashleymills 0:edf5f3d8645e 310 putc('s');
ashleymills 0:edf5f3d8645e 311 putc((uint8_t)column);
ashleymills 0:edf5f3d8645e 312 putc((uint8_t)row);
ashleymills 0:edf5f3d8645e 313 putc((uint8_t)font);
ashleymills 0:edf5f3d8645e 314 putc((uint8_t)highByte(textColor));
ashleymills 0:edf5f3d8645e 315 putc((uint8_t)lowByte(textColor));
ashleymills 0:edf5f3d8645e 316 if(strlen(text)==256) { // change to own implementation of strnlen
ashleymills 0:edf5f3d8645e 317 text[256] = 0;
ashleymills 0:edf5f3d8645e 318 }
ashleymills 0:edf5f3d8645e 319 printf(text);
ashleymills 0:edf5f3d8645e 320 putc((uint8_t)0x00);
ashleymills 0:edf5f3d8645e 321 gack();
ashleymills 0:edf5f3d8645e 322 }
ashleymills 0:edf5f3d8645e 323
ashleymills 0:edf5f3d8645e 324 void TouchScreen::drawRectangle(uint16_t topLeftX, uint16_t topLeftY, uint16_t botRightX, uint16_t botRightY, uint16_t color) {
ashleymills 0:edf5f3d8645e 325 putc('r');
ashleymills 0:edf5f3d8645e 326 putc(highByte(topLeftX));
ashleymills 0:edf5f3d8645e 327 putc(lowByte (topLeftX));
ashleymills 0:edf5f3d8645e 328 putc(highByte(topLeftY));
ashleymills 0:edf5f3d8645e 329 putc(lowByte (topLeftY));
ashleymills 0:edf5f3d8645e 330 putc(highByte(botRightX));
ashleymills 0:edf5f3d8645e 331 putc(lowByte (botRightX));
ashleymills 0:edf5f3d8645e 332 putc(highByte(botRightY));
ashleymills 0:edf5f3d8645e 333 putc(lowByte (botRightY));
ashleymills 0:edf5f3d8645e 334 putc(highByte(color));
ashleymills 0:edf5f3d8645e 335 putc(lowByte (color));
ashleymills 0:edf5f3d8645e 336 gack();
ashleymills 0:edf5f3d8645e 337 }
ashleymills 0:edf5f3d8645e 338
ashleymills 0:edf5f3d8645e 339 void TouchScreen::drawRectangleWH(uint16_t topLeftX, uint16_t topLeftY, uint16_t width, uint16_t height, uint16_t color) {
ashleymills 0:edf5f3d8645e 340 uint16_t botRightX = topLeftX + width;
ashleymills 0:edf5f3d8645e 341 uint16_t botRightY = topLeftY + height;
ashleymills 0:edf5f3d8645e 342 putc('r');
ashleymills 0:edf5f3d8645e 343 putc(highByte(topLeftX));
ashleymills 0:edf5f3d8645e 344 putc(lowByte (topLeftX));
ashleymills 0:edf5f3d8645e 345 putc(highByte(topLeftY));
ashleymills 0:edf5f3d8645e 346 putc(lowByte (topLeftY));
ashleymills 0:edf5f3d8645e 347 putc(highByte(botRightX));
ashleymills 0:edf5f3d8645e 348 putc(lowByte (botRightX));
ashleymills 0:edf5f3d8645e 349 putc(highByte(botRightY));
ashleymills 0:edf5f3d8645e 350 putc(lowByte (botRightY));
ashleymills 0:edf5f3d8645e 351 putc(highByte(color));
ashleymills 0:edf5f3d8645e 352 putc(lowByte (color));
ashleymills 0:edf5f3d8645e 353 gack();
ashleymills 0:edf5f3d8645e 354 }
ashleymills 0:edf5f3d8645e 355
ashleymills 0:edf5f3d8645e 356 void TouchScreen::drawRectangleWH(uint16_t topLeftX, uint16_t topLeftY, uint16_t width, uint16_t height) {
ashleymills 0:edf5f3d8645e 357 setPenSolid();
ashleymills 0:edf5f3d8645e 358 drawRectangleWH(topLeftX,topLeftY,width,height,_fillColor);
ashleymills 0:edf5f3d8645e 359 setPenWireframe();
ashleymills 0:edf5f3d8645e 360 drawRectangleWH(topLeftX,topLeftY,width,height,_strokeColor);
ashleymills 0:edf5f3d8645e 361 setPenSolid();
ashleymills 0:edf5f3d8645e 362 }
ashleymills 0:edf5f3d8645e 363
ashleymills 0:edf5f3d8645e 364
ashleymills 0:edf5f3d8645e 365 void TouchScreen::drawLine(uint16_t topLeftX, uint16_t topLeftY, uint16_t botRightX, uint16_t botRightY, uint16_t color) {
ashleymills 0:edf5f3d8645e 366 putc('L');
ashleymills 0:edf5f3d8645e 367 putc(highByte(topLeftX));
ashleymills 0:edf5f3d8645e 368 putc(lowByte (topLeftX));
ashleymills 0:edf5f3d8645e 369 putc(highByte(topLeftY));
ashleymills 0:edf5f3d8645e 370 putc(lowByte (topLeftY));
ashleymills 0:edf5f3d8645e 371 putc(highByte(botRightX));
ashleymills 0:edf5f3d8645e 372 putc(lowByte (botRightX));
ashleymills 0:edf5f3d8645e 373 putc(highByte(botRightY));
ashleymills 0:edf5f3d8645e 374 putc(lowByte (botRightY));
ashleymills 0:edf5f3d8645e 375 putc(highByte(color));
ashleymills 0:edf5f3d8645e 376 putc(lowByte (color));
ashleymills 0:edf5f3d8645e 377 gack();
ashleymills 0:edf5f3d8645e 378 }
ashleymills 0:edf5f3d8645e 379
ashleymills 0:edf5f3d8645e 380 void TouchScreen::drawChar(char c, uint16_t x, uint16_t y, uint16_t color, uint8_t width, uint8_t height) {
ashleymills 0:edf5f3d8645e 381 putc('t');
ashleymills 0:edf5f3d8645e 382 putc(c);
ashleymills 0:edf5f3d8645e 383 putc(highByte(x));
ashleymills 0:edf5f3d8645e 384 putc(lowByte (x));
ashleymills 0:edf5f3d8645e 385 putc(highByte(y));
ashleymills 0:edf5f3d8645e 386 putc(lowByte (y));
ashleymills 0:edf5f3d8645e 387 putc(highByte(color));
ashleymills 0:edf5f3d8645e 388 putc(lowByte (color));
ashleymills 0:edf5f3d8645e 389 putc(width);
ashleymills 0:edf5f3d8645e 390 putc(height);
ashleymills 0:edf5f3d8645e 391 gack();
ashleymills 0:edf5f3d8645e 392 }
ashleymills 0:edf5f3d8645e 393
ashleymills 0:edf5f3d8645e 394
ashleymills 0:edf5f3d8645e 395 void TouchScreen::setFont(uint8_t fontIndex) {
ashleymills 0:edf5f3d8645e 396 putc('F');
ashleymills 0:edf5f3d8645e 397 putc(fontIndex);
ashleymills 0:edf5f3d8645e 398 gack();
ashleymills 0:edf5f3d8645e 399 }
ashleymills 0:edf5f3d8645e 400
ashleymills 0:edf5f3d8645e 401 void TouchScreen::drawText(char *s, uint16_t x, uint16_t y) {
ashleymills 0:edf5f3d8645e 402 drawGraphicsFormatString(
ashleymills 0:edf5f3d8645e 403 x,y,
ashleymills 0:edf5f3d8645e 404 INTERNAL_FONT_8x8,
ashleymills 0:edf5f3d8645e 405 _strokeColor,
ashleymills 0:edf5f3d8645e 406 1,1,
ashleymills 0:edf5f3d8645e 407 s
ashleymills 0:edf5f3d8645e 408 );
ashleymills 0:edf5f3d8645e 409 }
ashleymills 0:edf5f3d8645e 410
ashleymills 0:edf5f3d8645e 411 void TouchScreen::setFillColor(uint16_t c) {
ashleymills 0:edf5f3d8645e 412 _fillColor = c;
ashleymills 0:edf5f3d8645e 413 }
ashleymills 0:edf5f3d8645e 414
ashleymills 0:edf5f3d8645e 415 void TouchScreen::setStrokeColor(uint16_t c) {
ashleymills 0:edf5f3d8645e 416 _strokeColor = c;
ashleymills 0:edf5f3d8645e 417 }