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

Dependencies:   mbed

Revision:
0:5d79cd4ac81d
Child:
3:469de11d1e1d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Aug 13 11:25:40 2010 +0000
@@ -0,0 +1,119 @@
+/**
+ * StarBoard Orange - Example application No.2 (Version 0.0.1)
+ * Remote IR receiver with StarBoard Orange
+ *
+ * See also ... http://mbed.org/users/shintamainjp/notebook/starboard_example2_ja/
+ * See also ... http://mbed.org/users/shintamainjp/notebook/starboard_example2_en/
+ *
+ * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
+ * http://shinta.main.jp/
+ */
+
+#include <mbed.h>
+
+#include "ReceiverIR.h"
+#include "TextLCD.h"
+
+ReceiverIR ir(p17);
+BusOut led(LED4, LED3, LED2, LED1);
+TextLCD lcd(p24, p25, p26, p27, p28, p29, p30);
+
+/**
+ * Display a splash screen.
+ */
+void splash(void) {
+    lcd.cls();
+    lcd.locate(0, 0);
+    lcd.printf("StarBoard Orange");
+    lcd.locate(0, 1);
+    lcd.printf("mbed NXP LPC1768");
+    wait(3);
+
+    lcd.cls();
+    lcd.locate(0, 0);
+    lcd.printf("Example app No.2");
+    lcd.locate(0, 1);
+    lcd.printf("    Remote IR   ");
+    wait(3);
+}
+
+/**
+ * Entry point.
+ */
+int main(void) {
+
+    /*
+     * Splash.
+     */
+    splash();
+
+    /*
+     * Initialize.
+     */
+    led = 0;
+    lcd.cls();
+    lcd.locate(0, 0);
+    lcd.printf("Press a button  ");
+    lcd.locate(0, 1);
+    lcd.printf("on a controller.");
+
+    while (1) {
+        static int latest_bits = 0;
+        static ReceiverIR::State prev = ReceiverIR::Idle;
+        
+        /*
+         * Get a current state.
+         */
+        ReceiverIR::State curr = ir.getState();
+        if (prev != curr) {
+            lcd.locate(0, 0);
+            switch (curr) {
+                case ReceiverIR::Idle:
+                    lcd.printf("Idle (%2d) \n", latest_bits);
+                    break;
+                case ReceiverIR::Receiving:
+                    lcd.printf("Receiving \n");
+                    break;
+                case ReceiverIR::Received:
+                    lcd.printf("Received  \n");
+                    break;
+            }
+        }
+        prev = curr;
+
+        /*
+         * Update statuses if it updated.
+         */
+        if (ReceiverIR::Received == curr) {
+            led = led + 1;
+            ReceiverIR::Format format;
+            uint8_t buf[32];
+            int bc = ir.getData(&format, buf, sizeof(buf));
+            latest_bits = bc;
+            lcd.locate(10, 0);
+            switch (format) {
+                case ReceiverIR::UNKNOWN:
+                    lcd.printf(": ????");
+                    break;
+                case ReceiverIR::NEC:
+                    lcd.printf(": NEC ");
+                    break;
+                case ReceiverIR::AEHA:
+                    lcd.printf(": AEHA");
+                    break;
+                case ReceiverIR::SONY:
+                    lcd.printf(": SONY");
+                    break;
+                default:
+                    break;
+            }
+            lcd.locate(0, 1);
+            for (int i = 0; i < (bc / 8); i++) {
+                lcd.printf("%02X", buf[i]);
+            }
+            for (int i = 0; i < 8 - (bc / 8); i++) {
+                lcd.printf("--");
+            }
+        }
+    }
+}
\ No newline at end of file