adfa

Dependencies:   4DGL-uLCD-SE NetServices mbed spxml

Fork of weather by 4180

Files at this revision

API Documentation at this revision

Comitter:
agamemaker
Date:
Thu Apr 28 02:21:46 2016 +0000
Parent:
3:9e55847f25c4
Child:
5:6c3b0bd1f680
Commit message:
hello;

Changed in this revision

NokiaLCD/NokiaLCD.cpp Show diff for this revision Revisions of this file
NokiaLCD/NokiaLCD.h Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/NokiaLCD/NokiaLCD.cpp	Wed Apr 27 20:40:34 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,459 +0,0 @@
-/* mbed Nokia LCD Library
- * Copyright (c) 2007-2010, sford
- */
-
-#include "NokiaLCD.h"
-
-#include "mbed.h"
-
-#define NOKIALCD_ROWS 16
-#define NOKIALCD_COLS 16
-#define NOKIALCD_WIDTH 130
-#define NOKIALCD_HEIGHT 132
-#define NOKIALCD_FREQUENCY 5000000
-
-NokiaLCD::NokiaLCD(PinName mosi, PinName sclk, PinName cs, PinName rst, LCDType type)
-        : _spi(mosi, NC, sclk)
-        , _rst(rst)
-        , _cs(cs) {
-
-    _type = type;
-
-    _row = 0;
-    _column = 0;
-    _foreground = 0x00FFFFFF;
-    _background = 0x00000000;
-
-    reset();
-}
-
-void NokiaLCD::reset() {
-
-    // setup the SPI interface and bring display out of reset
-    _cs = 1;
-    _rst = 0;
-    _spi.format(9);
-    _spi.frequency(NOKIALCD_FREQUENCY);
-    wait_ms(1);
-    _rst = 1;
-    wait_ms(1);
-
-    _cs = 0;
-
-    switch (_type) {
-        case LCD6100:
-            command(0xCA); // display control
-            data(0);
-            data(32);
-            data(0);
-            command(0xBB);
-            data(1);
-            command(0xD1); // oscillator on
-            command(0x94); // sleep out
-            command(0x20); // power control
-            data(0x0F);
-            command(0xA7); // invert display
-            command(0x81); // Voltage control
-            data(39);      // contrast setting: 0..63
-            data(3);       // resistance ratio
-            wait_ms(1);
-            command(0xBC);
-            data(0);
-            data(1);
-            data(4);
-            command(0xAF);  // turn on the display
-            break;
-
-        case LCD6610:
-            command(0xCA);    // display control
-            data(0);
-            data(32);
-            data(0);
-            command(0xBB);
-            data(1);
-            command(0xD1); // oscillator on
-            command(0x94); // sleep out
-            command(0x20); // power control
-            data(0x0F);
-            command(0xA7); // invert display
-            command(0x81); // Voltage control
-            data(39);      // contrast setting: 0..63
-            data(3);       // resistance ratio
-            wait_ms(1);
-            command(0xBC);
-            data(0);
-            data(0);
-            data(2);
-            command(0xAF);  // turn on the display
-            break;
-
-        case PCF8833:
-            command(0x11);  // sleep out
-            command(0x3A);  // column mode
-            data(0x05);
-            command(0x36);  // madctl
-            data(0x60);     // vertical RAM, flip x
-            command(0x25);  // setcon
-            data(0x30);// contrast 0x30
-            wait_ms(2);
-            command(0x29);//DISPON
-            command(0x03);//BSTRON
-            break;
-    }
-
-    _cs = 1;
-
-    cls();
-}
-
-void NokiaLCD::command(int value) {
-    _spi.write(value & 0xFF);
-}
-
-void NokiaLCD::data(int value) {
-    _spi.write(value | 0x100);
-}
-
-void NokiaLCD::_window(int x, int y, int width, int height) {
-    int x1 = x + 0;
-    int y1 = y + 0;
-    int x2 = x1 + width - 1;
-    int y2 = y1 + height - 1;
-
-    switch (_type) {
-        case LCD6100:
-        case LCD6610:
-            command(0x15); // column
-            data(x1);
-            data(x2);
-            command(0x75); // row
-            data(y1);
-            data(y2);
-            command(0x5C); // start write to ram
-            break;
-        case PCF8833:
-            command(0x2A);  // column
-            data(x1);
-            data(x2);
-            command(0x2B); // row
-            data(y1);
-            data(y2);
-            command(0x2C); // start write to ram
-            break;
-    }
-}
-
-void NokiaLCD::_putp(int colour) {
-    int gr = ((colour >> 20) & 0x0F)
-             | ((colour >> 8 ) & 0xF0);
-    int nb = ((colour >> 4 ) & 0x0F);
-    data(nb);
-    data(gr);
-}
-
-const unsigned char FONT8x8[97][8] = {
-    0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
-    0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // !
-    0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // "
-    0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
-    0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
-    0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // %
-    0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // &
-    0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // '
-    0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // (
-    0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // )
-    0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // *
-    0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // +
-    0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // ,
-    0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // -
-    0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
-    0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash)
-    0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30
-    0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1
-    0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2
-    0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3
-    0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4
-    0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5
-    0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6
-    0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7
-    0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8
-    0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9
-    0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // :
-    0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ;
-    0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // <
-    0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // =
-    0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // >
-    0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ?
-    0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40
-    0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A
-    0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B
-    0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C
-    0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D
-    0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E
-    0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F
-    0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G
-    0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H
-    0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I
-    0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J
-    0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K
-    0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L
-    0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M
-    0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N
-    0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O
-    0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50
-    0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q
-    0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R
-    0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S
-    0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T
-    0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U
-    0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V
-    0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W
-    0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X
-    0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y
-    0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z
-    0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [
-    0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash)
-    0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ]
-    0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _
-    0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60
-    0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a
-    0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b
-    0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c
-    0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d
-    0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e
-    0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f
-    0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g
-    0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h
-    0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i
-    0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j
-    0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k
-    0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l
-    0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m
-    0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n
-    0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o
-    0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p
-    0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q
-    0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r
-    0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s
-    0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t
-    0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u
-    0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v
-    0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w
-    0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x
-    0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y
-    0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z
-    0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // {
-    0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // |
-    0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // }
-    0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~
-    0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00
-}; // DEL
-
-void NokiaLCD::locate(int column, int row) {
-    _column = column;
-    _row = row;
-}
-
-void NokiaLCD::newline() {
-    _column = 0;
-    _row++;
-    if (_row >= _rows) {
-        _row = 0;
-    }
-}
-
-int NokiaLCD::_putc(int value) {
-    int x = _column * 8;  // FIXME: Char sizes
-    int y = _row * 8;
-    bitblit(x + 1, y + 1, 8, 8, (char*)&(FONT8x8[value - 0x1F][0]));
-
-    _column++;
-
-    if (_column >= NOKIALCD_COLS) {
-        _row++;
-        _column = 0;
-    }
-
-    if (_row >= NOKIALCD_ROWS) {
-        _row = 0;
-    }
-
-    return value;
-}
-
-void NokiaLCD::cls() {
-    fill(0, 0, NOKIALCD_WIDTH, NOKIALCD_HEIGHT, _background);
-    _row = 0;
-    _column = 0;
-}
-
-
-void NokiaLCD::window(int x, int y, int width, int height) {
-    _cs = 0;
-    _window(x, y, width, height);
-    _cs = 1;
-}
-
-void NokiaLCD::putp(int colour) {
-    _cs = 0;
-    _putp(colour);
-    _cs = 1;
-}
-
-void NokiaLCD::pixel(int x, int y, int colour) {
-    _cs = 0;
-    _window(x, y, 1, 1);
-    switch (_type) {
-        case LCD6100:
-        case PCF8833:
-
-            _putp(colour);
-
-            break;
-        case LCD6610:
-
-            int r4 = (colour >> (16 + 4)) & 0xF;
-            int g4 = (colour >> (8 + 4)) & 0xF;
-            int b4 = (colour >> (0 + 4)) & 0xF;
-            int d1 = (r4 << 4) | g4;
-            int d2 = (b4 << 4) | r4;
-            int d3 = (g4 << 4) | b4;
-            data(d1);
-            data(d2);
-            data(d3);
-
-            break;
-    }
-    _cs = 1;
-
-}
-
-void NokiaLCD::fill(int x, int y, int width, int height, int colour) {
-    _cs = 0;
-    _window(x, y, width, height);
-    switch (_type) {
-        case LCD6100:
-        case PCF8833:
-            for (int i=0; i<width*height; i++) {
-                _putp(colour);
-            }
-            break;
-        case LCD6610:
-            for (int i=0; i<width*height/2; i++) {
-                int r4 = (colour >> (16 + 4)) & 0xF;
-                int g4 = (colour >> (8 + 4)) & 0xF;
-                int b4 = (colour >> (0 + 4)) & 0xF;
-                int d1 = (r4 << 4) | g4;
-                int d2 = (b4 << 4) | r4;
-                int d3 = (g4 << 4) | b4;
-                data(d1);
-                data(d2);
-                data(d3);
-            }
-            break;
-    }
-    _window(0, 0, NOKIALCD_WIDTH, NOKIALCD_HEIGHT);
-    _cs = 1;
-}
-
-void NokiaLCD::blit(int x, int y, int width, int height, const int* colour) {
-    _cs = 0;
-    _window(x, y, width, height);
-
-    switch (_type) {
-        case LCD6100:
-        case PCF8833:
-            for (int i=0; i<width*height; i++) {
-                _putp(colour[i]);
-            }
-            break;
-        case LCD6610:
-            for (int i=0; i<width*height/2; i++) {
-                int r41 = (colour[i*2] >> (16 + 4)) & 0xF;
-                int g41 = (colour[i*2] >> (8 + 4)) & 0xF;
-                int b41 = (colour[i*2] >> (0 + 4)) & 0xF;
-
-                int r42 = (colour[i*2+1] >> (16 + 4)) & 0xF;
-                int g42 = (colour[i*2+1] >> (8 + 4)) & 0xF;
-                int b42 = (colour[i*2+1] >> (0 + 4)) & 0xF;
-                int d1 = (r41 << 4) | g41;
-                int d2 = (b41 << 4) | r42;
-                int d3 = (g42 << 4) | b42;
-                data(d1);
-                data(d2);
-                data(d3);
-            }
-            break;
-    }
-    _window(0, 0, NOKIALCD_WIDTH, NOKIALCD_HEIGHT);
-    _cs = 1;
-}
-
-void NokiaLCD::bitblit(int x, int y, int width, int height, const char* bitstream) {
-    _cs = 0;
-    _window(x, y, width, height);
-
-    switch (_type) {
-        case LCD6100:
-        case PCF8833:
-            for (int i=0; i<height*width; i++) {
-                int byte = i / 8;
-                int bit = i % 8;
-                int colour = ((bitstream[byte] << bit) & 0x80) ? _foreground : _background;
-                _putp(colour);
-            }
-            break;
-        case LCD6610:
-            for (int i=0; i<height*width/2; i++) {
-                int byte1 = (i*2) / 8;
-                int bit1 = (i*2) % 8;
-                int colour1 = ((bitstream[byte1] << bit1) & 0x80) ? _foreground : _background;
-                int byte2 = (i*2+1) / 8;
-                int bit2 = (i*2+1) % 8;
-                int colour2 = ((bitstream[byte2] << bit2) & 0x80) ? _foreground : _background;
-
-                int r41 = (colour1 >> (16 + 4)) & 0xF;
-                int g41 = (colour1 >> (8 + 4)) & 0xF;
-                int b41 = (colour1 >> (0 + 4)) & 0xF;
-
-                int r42 = (colour2 >> (16 + 4)) & 0xF;
-                int g42 = (colour2 >> (8 + 4)) & 0xF;
-                int b42 = (colour2 >> (0 + 4)) & 0xF;
-                int d1 = (r41 << 4) | g41;
-                int d2 = (b41 << 4) | r42;
-                int d3 = (g42 << 4) | b42;
-                data(d1);
-                data(d2);
-                data(d3);
-            }
-            break;
-    }
-    _window(0, 0, _width, _height);
-    _cs = 1;
-}
-
-void NokiaLCD::foreground(int c) {
-    _foreground = c;
-}
-
-void NokiaLCD::background(int c) {
-    _background = c;
-}
-
-int NokiaLCD::width() {
-    return NOKIALCD_WIDTH;
-}
-
-int NokiaLCD::height() {
-    return NOKIALCD_HEIGHT;
-}
-
-int NokiaLCD::columns() {
-    return NOKIALCD_COLS;
-}
-
-int NokiaLCD::rows() {
-    return NOKIALCD_ROWS;
-}
--- a/NokiaLCD/NokiaLCD.h	Wed Apr 27 20:40:34 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/* mbed NokiaLCD Library, for a 130x130 Nokia colour LCD
- * Copyright (c) 2007-2010, sford
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef MBED_NOKIALCD_H
-#define MBED_NOKIALCD_H
-
-#include "mbed.h"
-
-/** An interface for the 130x130 Nokia Mobile phone screens
- *
- * @code
- * #include "mbed.h"
- * #include "NokiaLCD.h"
- *
- * NokiaLCD lcd(p5, p7, p8, p9, NokiaLCD::6610); // mosi, sclk, cs, rst, type
- *
- * int main() {
- *     lcd.printf("Hello World!");
- * }
- * @endcode
- */
-class NokiaLCD : public Stream {
-
-public:
-    /** LCD panel format */
-    enum LCDType {
-        LCD6100     /**< Nokia 6100, as found on sparkfun board (default) */
-        , LCD6610   /**< Nokia 6610, as found on olimex board */
-        , PCF8833
-    };
-
-    /** Create and Nokia LCD interface, using a SPI and two DigitalOut interfaces
-     *
-     * @param mosi SPI data out
-     * @param sclk SPI clock
-     * @param cs Chip Select (DigitalOut)
-     * @param rst Reset (DigitalOut)
-     * @param type The LCDType to select driver chip variants
-     */
-    NokiaLCD(PinName mosi, PinName sclk, PinName cs, PinName rst, LCDType type = LCD6100);
-
-#if DOXYGEN_ONLY
-    /** Write a character to the LCD
-     *
-     * @param c The character to write to the display
-     */
-    int putc(int c);
-
-    /** Write a formated string to the LCD
-     *
-     * @param format A printf-style format string, followed by the
-     *               variables to use in formating the string.
-     */
-    int printf(const char* format, ...);
-#endif
-
-    /** Locate to a screen column and row
-     *
-     * @param column  The horizontal position from the left, indexed from 0
-     * @param row     The vertical position from the top, indexed from 0
-     */
-    void locate(int column, int row);
-
-    /** Clear the screen and locate to 0,0 */
-    void cls();
-
-    /** Set a pixel on te screen
-     * 
-     * @param x horizontal position from left
-     * @param y vertical position from top
-     * @param colour 24-bit colour in format 0x00RRGGBB
-     */
-    void pixel(int x, int y, int colour);
-    
-    /** Fill an area of the screen
-     * 
-     * @param x horizontal position from left
-     * @param y vertical position from top
-     * @param width width in pixels
-     * @param height height in pixels
-     * @param colour 24-bit colour in format 0x00RRGGBB
-     */    
-    void fill(int x, int y, int width, int height, int colour);
-
-    void blit(int x, int y, int width, int height, const int* colour);
-    void bitblit(int x, int y, int width, int height, const char* bitstream);
-
-    int width();
-    int height();
-    int columns();
-    int rows();
-
-    void reset();
-
-    /** Set the foreground colour
-     * 
-     * @param c 24-bit colour
-     */
-    void foreground(int c);
-
-    /** Set the background colour
-     * 
-     * @param c 24-bit colour
-     */
-    void background(int c);
-
-protected:
-    virtual void _window(int x, int y, int width, int height);
-    virtual void _putp(int colour);
-
-    void command(int value);
-    void data(int value);
-
-    void newline();
-    virtual int _putc(int c);
-    virtual int _getc() {
-        return 0;
-    }
-    void putp(int v);
-    void window(int x, int y, int width, int height);
-
-    SPI _spi;
-    DigitalOut _rst;
-    DigitalOut _cs;
-
-    LCDType _type;
-    int _row, _column, _rows, _columns, _foreground, _background, _width, _height;
-};
-
-#endif
-
-
--- a/main.cpp	Wed Apr 27 20:40:34 2016 +0000
+++ b/main.cpp	Thu Apr 28 02:21:46 2016 +0000
@@ -16,16 +16,18 @@
 HTTPClient http;
 HTTPResult result;
 bool completed = false;
-void request_callback(HTTPResult r) {
+void request_callback(HTTPResult r)
+{
     result = r;
     completed = true;
 }
 
-void parseWeather(SP_XmlElementNode *node, string loc) {
+void parseWeather(SP_XmlElementNode *node, string loc)
+{
     //extracts current weather XML data fields for LCD
     SP_XmlHandle handle(node);
     SP_XmlElementNode * condition = handle.getChild( "item" ).getChild("yweather:condition").toElement();
-    lcd.cls();
+    //lcd.cls();
     // Print the name of the city
     lcd.locate(0,2);
     lcd.printf("%s:", loc);
@@ -35,26 +37,27 @@
     //Print the termperature (in degrees Celcius)
     lcd.locate(0,4);
     lcd.printf("%sF",condition->getAttrValue("temp"));
-    /*//Print the date and time
-    lcd.locate(0,5);
-    lcd.printf("%s",condition->getAttrValue("date"));
-    */
 }
 
-int weather() {
+void parseTraffic(SP_XmlElementNode *node)
+{
+    //extracts current weather XML data fields for LCD
+    SP_XmlHandle handle(node);
+    SP_XmlElementNode * condition = handle.getChild( "item" ).getChild("yweather:condition").toElement();
+    //Print the weather conditions
+    lcd.locate(0,5);
+    lcd.printf("%s",condition->getAttrValue("realTime"));
+}
+
+int weather()
+{
+    char weather_domain_name[512] = "https://query.yahooapis.com/v1/public/yql?q=select%20item.condition%20from%20weather.forecast%20where%20woeid%20in%20%28select%20woeid%20from%20geo.places%281%29%20where%20text%3D%22atlanta%2C%20ga%22%29%26amp";
     // the eth and HTTP code has be taken directly from the HTTPStream documentation page
     // see http://mbed.org/cookbook/HTTP-Client-Data-Containers
-    lcd.cls();
-    
-    lcd.locate(0,2);
-    lcd.printf("net setup");
-    lcd.locate(0,3);
-    EthernetErr ethErr = eth.setup(60000);
-    if (ethErr) {
-        lcd.printf("Error in setup");
-        return -1;
-    }
-    lcd.printf("net ok");
+    //lcd.cls();
+
+    lcd.locate(0,1);
+    lcd.printf("Weather");
 
     SP_XmlDomParser parser;
     HTTPStream stream;
@@ -62,7 +65,7 @@
     char BigBuf[512 + 1] = {0};
     stream.readNext((byte*)BigBuf, 512); //Point to buffer for the first read
     //Yahoo! weather API for selected city - get XML document for parsing
-    HTTPResult r = http.get("https://query.yahooapis.com/v1/public/yql?q=select%20item.condition%20from%20weather.forecast%20where%20woeid%20in%20%28select%20woeid%20from%20geo.places%281%29%20where%20text%3D%22atlanta%2C%20ga%22%29&amp", &stream, request_callback);
+    HTTPResult r = http.get(weather_domain_name, &stream, request_callback);
     while (!completed) {
         Net::poll(); //Polls the Networking stack
         if (stream.readable()) {
@@ -83,14 +86,99 @@
     SP_XmlHandle rootHandle( parser.getDocument()->getRootElement() );
     SP_XmlElementNode * child2 = rootHandle.getChild( "results" ).getChild( "channel" )
                                  .toElement();
-    
-    //lcd.printf(BigBuf);
-    
+
+    lcd.printf(BigBuf);
+    wait(1);
+    lcd.cls();
+
     if ( child2 ) {
         parseWeather(child2, "Atlanta"); //parses XML "current-conditions" info
     }
-    
+    //lcd.printf("help");
     if ( NULL != parser.getError() ) {
         lcd.printf( "\n error: %s\n", parser.getError() );
     }
+    return 0;
+}
+
+int  traffic()
+{
+    char traf_domain_name[512] = "https://www.mapquestapi.com/directions/v2/route?key=ZoiBJSzSoqfdNiLD0Z9kZdw4uAN5QUQWzformat=xmlzxml=%3Croute%3E%3Clocations%3E%3Clocation%3E5525%20Vicarage%20WalkzJohns%20Creekz%20GA%3C/location%3E%3Clocation%3E170%205th%20St%20NWzAtlantazGA%3C/location%3E%3C/locations%3E%3C/route%3E";
+    //char traf_domain_name[512] = "https://www.mapquestapi.com/directions/v2/route?key=ZoiBJSzSoqfdNiLD0Z9kZdw4uAN5QUQW%26format=xml%26xml=%3Croute%3E%3Clocations%3E%3Clocation%3E5525%20Vicarage%20Walk%2CJohns%20Creek%2C%20GA%3C/location%3E%3Clocation%3E170%205th%20St%20NW%2CAtlanta%2CGA%3C/location%3E%3C/locations%3E%3C/route%3E";
+    //char traf_domain_name[512] = "https://www.mapquestapi.com/directions/v2/route?key=ZoiBJSzSoqfdNiLD0Z9kZdw4uAN5QUQW\&format=xml\&xml=%3Croute%3E%3Clocations%3E%3Clocation%3E5525%20Vicarage%20Walk,Johns%20Creek,%20GA%3C/location%3E%3Clocation%3E170%205th%20St%20NW,Atlanta,GA%3C/location%3E%3C/locations%3E%3C/route%3E";
+    //char* traf_domain_name;
+    //traf_domain_name = [104, 116, 116, 112, 115, 058, 047, 047, 119, 119, 119, 046, 109, 097, 112, 113, 117, 101, 115, 116, 097, 112, 105, 046, 099, 111, 109, 047, 100, 105, 114, 101, 099, 116, 105, 111, 110, 115, 047, 118, 050, 047, 114, 111, 117, 116, 101, 063, 107, 101, 121, 061, 090, 111, 105, 066, 074, 083, 122, 083, 111, 113, 102, 100, 078, 105, 076, 068, 048, 090, 057, 107, 090, 100, 119, 052, 117, 065, 078, 053, 081, 085, 081, 087, 037, 050, 054, 120, 109, 108, 061, 037, 051, 067, 114, 111, 117, 116, 101, 037, 051, 069, 037, 051, 067, 108, 111, 099, 097, 116, 105, 111, 110, 115, 037, 051, 069, 037, 051, 067, 108, 111, 099, 097, 116, 105, 111, 110, 037, 051, 069, 053, 053, 050, 053, 037, 050, 048, 086, 105, 099, 097, 114, 097, 103, 101, 037, 050, 048, 087, 097, 108, 107, 044, 074, 111, 104, 110, 115, 037, 050, 048, 067, 114, 101, 101, 107, 044, 037, 050, 048, 071, 065, 037, 051, 067, 047, 108, 111, 099, 097, 116, 105, 111, 110, 037, 051, 069, 037, 051, 067, 108, 111, 099, 097, 116, 105, 111, 110, 037, 051, 069, 049, 055, 048, 037, 050, 048, 053, 116, 104, 037, 050, 048, 083, 116, 037, 050, 048, 078, 087, 044, 065, 116, 108, 097, 110, 116, 097, 044, 071, 065, 037, 051, 067, 047, 108, 111, 099, 097, 116, 105, 111, 110, 037, 051, 069, 037, 051, 067, 047, 108, 111, 099, 097, 116, 105, 111, 110, 115, 037, 051, 069, 037, 051, 067, 047, 114, 111, 117, 116, 101, 037, 051, 069, 013 010, 013, 010];
+    // the eth and HTTP code has be taken directly from the HTTPStream documentation page
+    // see http://mbed.org/cookbook/HTTP-Client-Data-Containers
+    lcd.printf("hello1");
+    traf_domain_name[84] = 38;
+    traf_domain_name[95] = 38;
+    traf_domain_name[162] = 44;
+    traf_domain_name[176] = 44;
+    traf_domain_name[162] = 44;
+    traf_domain_name[230] = 44;
+    traf_domain_name[238] = 44;
+    
+    lcd.printf("hello2");
+    //lcd.cls();
+    lcd.locate(0,4);
+    lcd.printf("Traffic");
+
+    SP_XmlDomParser parser;
+    HTTPStream stream;
+    lcd.printf("hello3");
+    lcd.printf("%s", traf_domain_name);
+    char BigBuf[16384  + 1] = {0};
+    stream.readNext((byte*)BigBuf, 16384 ); //Point to buffer for the first read
+    //Yahoo! weather API for selected city - get XML document for parsing
+    HTTPResult r = http.get(traf_domain_name, &stream, request_callback);
+    while (!completed) {
+        Net::poll(); //Polls the Networking stack
+        if (stream.readable()) {
+            BigBuf[stream.readLen()] = 0; //Transform this buffer in a zero-terminated char* string
+            parser.append( BigBuf, strlen(BigBuf)); // stream current buffer data to the XML parser
+            stream.readNext((byte*)BigBuf, 16384 ); //Buffer has been read, now we can put more data in it
+        }
+    }
+    lcd.locate(0,2);
+    if (result == HTTP_OK) {
+        lcd.printf(" Read complete");
+    } else {
+        lcd. printf(" Error %d", result);
+        return -1;
+    }
+
+    SP_XmlHandle rootHandle( parser.getDocument()->getRootElement() );
+    SP_XmlElementNode * child2 = rootHandle.getChild( "route" )
+                                 .toElement();
+                                 
+    lcd.printf(BigBuf);
+    wait(2);
+    lcd.cls();
+    if ( child2 ) {
+        parseTraffic(child2); //parses XML "current-conditions" info
+    }
+    else{
+    lcd.printf("no child");
+    }
+    if ( NULL != parser.getError() ) {
+        lcd.printf( "\n error: %s\n", parser.getError() );
+    }
+    return 0;
+}
+
+int main()
+{
+    
+    lcd.locate(0,2);
+    lcd.printf("net setup");
+    lcd.locate(0,3);
+    EthernetErr ethErr = eth.setup(60000);
+    if (ethErr) {
+        lcd.printf("Error in setup");
+        return -1;
+    }
+    lcd.printf("net ok");
+    //weather();
+    traffic();
 }
\ No newline at end of file