Vishal Talwar / Mbed 2 deprecated mbipanel_serial_display

Dependencies:   mbed mbipanel

Committer:
indraastra
Date:
Thu May 24 19:22:32 2012 +0000
Revision:
0:e0f222acdecd
Child:
1:25121f821584

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
indraastra 0:e0f222acdecd 1 #include "mbed.h"
indraastra 0:e0f222acdecd 2 #include "mbipanel.h"
indraastra 0:e0f222acdecd 3
indraastra 0:e0f222acdecd 4 using namespace mbipanel;
indraastra 0:e0f222acdecd 5 using namespace mbipanel::hardware;
indraastra 0:e0f222acdecd 6
indraastra 0:e0f222acdecd 7 DigitalOut led(LED1);
indraastra 0:e0f222acdecd 8
indraastra 0:e0f222acdecd 9 class SerialDisplay {
indraastra 0:e0f222acdecd 10 public:
indraastra 0:e0f222acdecd 11 SerialDisplay(Serial& com) {
indraastra 0:e0f222acdecd 12 com_ = &com;
indraastra 0:e0f222acdecd 13 // Set up large board.
indraastra 0:e0f222acdecd 14 mbicfg_ = new MBI(1, 4, mbipanel::MBI5030, cfg::pixelcfg_large1x4);
indraastra 0:e0f222acdecd 15 panelcfg_ = new Panel(8, 2, *mbicfg_);
indraastra 0:e0f222acdecd 16 gridcfg_ = new PanelGrid(1, 1, *panelcfg_);
indraastra 0:e0f222acdecd 17
indraastra 0:e0f222acdecd 18 PinName pincfg[4] = {p18, p19, p20, p21};
indraastra 0:e0f222acdecd 19 display_ = new Display(*gridcfg_, pincfg);
indraastra 0:e0f222acdecd 20 display_->configure_12bit();
indraastra 0:e0f222acdecd 21 }
indraastra 0:e0f222acdecd 22
indraastra 0:e0f222acdecd 23 ~SerialDisplay() {
indraastra 0:e0f222acdecd 24 delete display_;
indraastra 0:e0f222acdecd 25 delete mbicfg_;
indraastra 0:e0f222acdecd 26 delete panelcfg_;
indraastra 0:e0f222acdecd 27 delete gridcfg_;
indraastra 0:e0f222acdecd 28 }
indraastra 0:e0f222acdecd 29
indraastra 0:e0f222acdecd 30 void start() {
indraastra 0:e0f222acdecd 31 // Wait for any token to arrive to signal the start of communication.
indraastra 0:e0f222acdecd 32 while (!com_->readable()) { }
indraastra 0:e0f222acdecd 33 com_.printf("Hello. Starting...\n");
indraastra 0:e0f222acdecd 34 command_loop();
indraastra 0:e0f222acdecd 35 }
indraastra 0:e0f222acdecd 36
indraastra 0:e0f222acdecd 37 private:
indraastra 0:e0f222acdecd 38 // Respond to commands arriving over the serial port.
indraastra 0:e0f222acdecd 39 void command_loop() {
indraastra 0:e0f222acdecd 40 while (true) {
indraastra 0:e0f222acdecd 41 if (com_->readable()) {
indraastra 0:e0f222acdecd 42 // LED turns on while a command is being interpreted.
indraastra 0:e0f222acdecd 43 led = !led;
indraastra 0:e0f222acdecd 44 char c = com_->getc();
indraastra 0:e0f222acdecd 45 if (c == 'p') {
indraastra 0:e0f222acdecd 46 // Set pixel.
indraastra 0:e0f222acdecd 47 int x, y, r, g, b, w;
indraastra 0:e0f222acdecd 48 com_.scanf("x%dy%dr%dg%db%dw%d", &x, &y, &r, &g, &b, &w);
indraastra 0:e0f222acdecd 49 display_->set(x, y, r, g, b, w);
indraastra 0:e0f222acdecd 50 } else if (c == '+') {
indraastra 0:e0f222acdecd 51 // Draw display.
indraastra 0:e0f222acdecd 52 display_->draw();
indraastra 0:e0f222acdecd 53 com_.printf("Drawing!");
indraastra 0:e0f222acdecd 54 } else if (c == '-') {
indraastra 0:e0f222acdecd 55 // Clear display.
indraastra 0:e0f222acdecd 56 display_->reset();
indraastra 0:e0f222acdecd 57 com_.printf("Resetting!");
indraastra 0:e0f222acdecd 58 }
indraastra 0:e0f222acdecd 59 led = !led;
indraastra 0:e0f222acdecd 60 }
indraastra 0:e0f222acdecd 61 }
indraastra 0:e0f222acdecd 62 }
indraastra 0:e0f222acdecd 63
indraastra 0:e0f222acdecd 64 Serial* com_;
indraastra 0:e0f222acdecd 65 Display* display_;
indraastra 0:e0f222acdecd 66 MBI* mbicfg_;
indraastra 0:e0f222acdecd 67 Panel* panelcfg_;
indraastra 0:e0f222acdecd 68 PanelGrid* gridcfg_;
indraastra 0:e0f222acdecd 69 };
indraastra 0:e0f222acdecd 70
indraastra 0:e0f222acdecd 71 int main() {
indraastra 0:e0f222acdecd 72 Serial com(p9, p10);
indraastra 0:e0f222acdecd 73 com.baud(115200);
indraastra 0:e0f222acdecd 74 SerialDisplay display(com);
indraastra 0:e0f222acdecd 75 display.start();
indraastra 0:e0f222acdecd 76 }