StarBoard Orange - Example application No.2 (Version 0.0.4)

Dependencies:   mbed

Committer:
shintamainjp
Date:
Fri Aug 13 11:25:40 2010 +0000
Revision:
0:5d79cd4ac81d
Child:
3:469de11d1e1d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:5d79cd4ac81d 1 /**
shintamainjp 0:5d79cd4ac81d 2 * StarBoard Orange - Example application No.2 (Version 0.0.1)
shintamainjp 0:5d79cd4ac81d 3 * Remote IR receiver with StarBoard Orange
shintamainjp 0:5d79cd4ac81d 4 *
shintamainjp 0:5d79cd4ac81d 5 * See also ... http://mbed.org/users/shintamainjp/notebook/starboard_example2_ja/
shintamainjp 0:5d79cd4ac81d 6 * See also ... http://mbed.org/users/shintamainjp/notebook/starboard_example2_en/
shintamainjp 0:5d79cd4ac81d 7 *
shintamainjp 0:5d79cd4ac81d 8 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 0:5d79cd4ac81d 9 * http://shinta.main.jp/
shintamainjp 0:5d79cd4ac81d 10 */
shintamainjp 0:5d79cd4ac81d 11
shintamainjp 0:5d79cd4ac81d 12 #include <mbed.h>
shintamainjp 0:5d79cd4ac81d 13
shintamainjp 0:5d79cd4ac81d 14 #include "ReceiverIR.h"
shintamainjp 0:5d79cd4ac81d 15 #include "TextLCD.h"
shintamainjp 0:5d79cd4ac81d 16
shintamainjp 0:5d79cd4ac81d 17 ReceiverIR ir(p17);
shintamainjp 0:5d79cd4ac81d 18 BusOut led(LED4, LED3, LED2, LED1);
shintamainjp 0:5d79cd4ac81d 19 TextLCD lcd(p24, p25, p26, p27, p28, p29, p30);
shintamainjp 0:5d79cd4ac81d 20
shintamainjp 0:5d79cd4ac81d 21 /**
shintamainjp 0:5d79cd4ac81d 22 * Display a splash screen.
shintamainjp 0:5d79cd4ac81d 23 */
shintamainjp 0:5d79cd4ac81d 24 void splash(void) {
shintamainjp 0:5d79cd4ac81d 25 lcd.cls();
shintamainjp 0:5d79cd4ac81d 26 lcd.locate(0, 0);
shintamainjp 0:5d79cd4ac81d 27 lcd.printf("StarBoard Orange");
shintamainjp 0:5d79cd4ac81d 28 lcd.locate(0, 1);
shintamainjp 0:5d79cd4ac81d 29 lcd.printf("mbed NXP LPC1768");
shintamainjp 0:5d79cd4ac81d 30 wait(3);
shintamainjp 0:5d79cd4ac81d 31
shintamainjp 0:5d79cd4ac81d 32 lcd.cls();
shintamainjp 0:5d79cd4ac81d 33 lcd.locate(0, 0);
shintamainjp 0:5d79cd4ac81d 34 lcd.printf("Example app No.2");
shintamainjp 0:5d79cd4ac81d 35 lcd.locate(0, 1);
shintamainjp 0:5d79cd4ac81d 36 lcd.printf(" Remote IR ");
shintamainjp 0:5d79cd4ac81d 37 wait(3);
shintamainjp 0:5d79cd4ac81d 38 }
shintamainjp 0:5d79cd4ac81d 39
shintamainjp 0:5d79cd4ac81d 40 /**
shintamainjp 0:5d79cd4ac81d 41 * Entry point.
shintamainjp 0:5d79cd4ac81d 42 */
shintamainjp 0:5d79cd4ac81d 43 int main(void) {
shintamainjp 0:5d79cd4ac81d 44
shintamainjp 0:5d79cd4ac81d 45 /*
shintamainjp 0:5d79cd4ac81d 46 * Splash.
shintamainjp 0:5d79cd4ac81d 47 */
shintamainjp 0:5d79cd4ac81d 48 splash();
shintamainjp 0:5d79cd4ac81d 49
shintamainjp 0:5d79cd4ac81d 50 /*
shintamainjp 0:5d79cd4ac81d 51 * Initialize.
shintamainjp 0:5d79cd4ac81d 52 */
shintamainjp 0:5d79cd4ac81d 53 led = 0;
shintamainjp 0:5d79cd4ac81d 54 lcd.cls();
shintamainjp 0:5d79cd4ac81d 55 lcd.locate(0, 0);
shintamainjp 0:5d79cd4ac81d 56 lcd.printf("Press a button ");
shintamainjp 0:5d79cd4ac81d 57 lcd.locate(0, 1);
shintamainjp 0:5d79cd4ac81d 58 lcd.printf("on a controller.");
shintamainjp 0:5d79cd4ac81d 59
shintamainjp 0:5d79cd4ac81d 60 while (1) {
shintamainjp 0:5d79cd4ac81d 61 static int latest_bits = 0;
shintamainjp 0:5d79cd4ac81d 62 static ReceiverIR::State prev = ReceiverIR::Idle;
shintamainjp 0:5d79cd4ac81d 63
shintamainjp 0:5d79cd4ac81d 64 /*
shintamainjp 0:5d79cd4ac81d 65 * Get a current state.
shintamainjp 0:5d79cd4ac81d 66 */
shintamainjp 0:5d79cd4ac81d 67 ReceiverIR::State curr = ir.getState();
shintamainjp 0:5d79cd4ac81d 68 if (prev != curr) {
shintamainjp 0:5d79cd4ac81d 69 lcd.locate(0, 0);
shintamainjp 0:5d79cd4ac81d 70 switch (curr) {
shintamainjp 0:5d79cd4ac81d 71 case ReceiverIR::Idle:
shintamainjp 0:5d79cd4ac81d 72 lcd.printf("Idle (%2d) \n", latest_bits);
shintamainjp 0:5d79cd4ac81d 73 break;
shintamainjp 0:5d79cd4ac81d 74 case ReceiverIR::Receiving:
shintamainjp 0:5d79cd4ac81d 75 lcd.printf("Receiving \n");
shintamainjp 0:5d79cd4ac81d 76 break;
shintamainjp 0:5d79cd4ac81d 77 case ReceiverIR::Received:
shintamainjp 0:5d79cd4ac81d 78 lcd.printf("Received \n");
shintamainjp 0:5d79cd4ac81d 79 break;
shintamainjp 0:5d79cd4ac81d 80 }
shintamainjp 0:5d79cd4ac81d 81 }
shintamainjp 0:5d79cd4ac81d 82 prev = curr;
shintamainjp 0:5d79cd4ac81d 83
shintamainjp 0:5d79cd4ac81d 84 /*
shintamainjp 0:5d79cd4ac81d 85 * Update statuses if it updated.
shintamainjp 0:5d79cd4ac81d 86 */
shintamainjp 0:5d79cd4ac81d 87 if (ReceiverIR::Received == curr) {
shintamainjp 0:5d79cd4ac81d 88 led = led + 1;
shintamainjp 0:5d79cd4ac81d 89 ReceiverIR::Format format;
shintamainjp 0:5d79cd4ac81d 90 uint8_t buf[32];
shintamainjp 0:5d79cd4ac81d 91 int bc = ir.getData(&format, buf, sizeof(buf));
shintamainjp 0:5d79cd4ac81d 92 latest_bits = bc;
shintamainjp 0:5d79cd4ac81d 93 lcd.locate(10, 0);
shintamainjp 0:5d79cd4ac81d 94 switch (format) {
shintamainjp 0:5d79cd4ac81d 95 case ReceiverIR::UNKNOWN:
shintamainjp 0:5d79cd4ac81d 96 lcd.printf(": ????");
shintamainjp 0:5d79cd4ac81d 97 break;
shintamainjp 0:5d79cd4ac81d 98 case ReceiverIR::NEC:
shintamainjp 0:5d79cd4ac81d 99 lcd.printf(": NEC ");
shintamainjp 0:5d79cd4ac81d 100 break;
shintamainjp 0:5d79cd4ac81d 101 case ReceiverIR::AEHA:
shintamainjp 0:5d79cd4ac81d 102 lcd.printf(": AEHA");
shintamainjp 0:5d79cd4ac81d 103 break;
shintamainjp 0:5d79cd4ac81d 104 case ReceiverIR::SONY:
shintamainjp 0:5d79cd4ac81d 105 lcd.printf(": SONY");
shintamainjp 0:5d79cd4ac81d 106 break;
shintamainjp 0:5d79cd4ac81d 107 default:
shintamainjp 0:5d79cd4ac81d 108 break;
shintamainjp 0:5d79cd4ac81d 109 }
shintamainjp 0:5d79cd4ac81d 110 lcd.locate(0, 1);
shintamainjp 0:5d79cd4ac81d 111 for (int i = 0; i < (bc / 8); i++) {
shintamainjp 0:5d79cd4ac81d 112 lcd.printf("%02X", buf[i]);
shintamainjp 0:5d79cd4ac81d 113 }
shintamainjp 0:5d79cd4ac81d 114 for (int i = 0; i < 8 - (bc / 8); i++) {
shintamainjp 0:5d79cd4ac81d 115 lcd.printf("--");
shintamainjp 0:5d79cd4ac81d 116 }
shintamainjp 0:5d79cd4ac81d 117 }
shintamainjp 0:5d79cd4ac81d 118 }
shintamainjp 0:5d79cd4ac81d 119 }