A smart remote using the sparkfun IR transmitter and receiver. The program also uses a web server to show the buttons on a mobile platform.

Dependencies:   EthernetInterface HTTPServer RemoteIR SDFileSystem mbed-rpc mbed-rtos mbed

Fork of SmartRemoteClean by Sarvagya Vaish

Revision:
4:36e0aa194b45
Parent:
3:a3b4d032f48f
Child:
6:70a0af38edcc
--- a/main.cpp	Mon Dec 02 20:21:10 2013 +0000
+++ b/main.cpp	Tue Dec 03 02:40:59 2013 +0000
@@ -1,7 +1,15 @@
 #include "mbed.h"
-#include "EthernetNetIf.h"
+#include "EthernetInterface.h"
 #include "HTTPServer.h"
+#include "FsHandler.h"
+#include "RpcHandler.h"
+#include "rtos.h"
 
+//Start IR
+#include "ReceiverIR.h"
+#include "TransmitterIR.h"
+#include "IR.h"
+//END IR
 
 // Start DB
 #include <stdio.h>
@@ -13,31 +21,45 @@
 
 // Start RPC
 #include "RPCVariable.h"
-int Request;
+int Request = 0;
 int Learn = 0;
 //Make these variables accessible over RPC by attaching them to an RPCVariable
-RPCVariable<int>(&Request), "Request");
-//RPCVariable RPCLearn(&Learn, "Learn");
+RPCVariable<int> RPCRequest(&Request, "Request");
+RPCVariable<int> RPCLearn(&Learn, "Learn");
 // End RPC
 
+Serial pc(USBTX, USBRX, "pc");
 
-EthernetNetIf eth;
-HTTPServer svr;
+//  Instantiate a HTTPServer to handle incoming requests
+HTTPServer  svr;
+//  Instantiate a local file system handler named 'local' which will be used later to access files on the mbed.
+LocalFileSystem local("local");
 
-DigitalOut led1(LED1);
+SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed
 
 int main()
 {
-    printf("Setting up...\n");
-    EthernetErr ethErr = eth.setup();
-    if(ethErr) {
-        printf("Error %d in setup.\n", ethErr);
-        return -1;
+
+    printf("Setting up Apache...\n \r");
+
+    HTTPFsRequestHandler::mount("/local/", "/");
+    svr.addHandler<HTTPFsRequestHandler>("/");
+    svr.addHandler<HTTPRpcRequestHandler>("/rpc");
+
+    EthernetInterface eth;
+    eth.init(); //Use DHCP
+    eth.connect();
+
+    // Now start the server on port 80.
+    if (!svr.start(80, &eth)) {
+        error("Server not starting !");
+        exit(0);
     }
-    printf("Setup OK\n");
 
-    svr.addHandler<SimpleHandler>("/"); //Default handler
-    svr.bind(80);
+    printf("IP: %s\n \r", eth.getIPAddress());
+    printf("Setup OK\n \r");
+
+
 
 
     // DB Init
@@ -45,29 +67,41 @@
 
     char code[] = "123AB";
     char name[] = "Button Name";
-    
+
     char results_code[128];
     char results_name[128];
-
+    /*
     db_insert_tuple(code, name);
     FILE *fread = fopen("/sd/SmartRemote/db.txt", "r");
-    db_find_tuple(fread, 2, results_name, results_code);
+    db_find_tuple(fread, Request, results_name, results_code);
     fclose(fread);
+    */
     //End DB init
 
 
-    printf("Listening...\n");
+    //IR Init
+    uint8_t buf1[32];
+    uint8_t buf2[32];
+    int bitlength1;
+    int bitlength2;
+    RemoteIR::Format format;
+    memset(buf1, 0x00, sizeof(buf1));
+    memset(buf2, 0x00, sizeof(buf2));
+    //END IR Init
+
+    printf("Listening...\n \r");
+
 
     Timer tm;
     tm.start();
     //Listen indefinitely
     while(true) {
-        Net::poll();
+        svr.poll();
         if(tm.read()>.5) {
-            led1=!led1; //Show that we are alive
             tm.start();
         }
     }
 
     return 0;
 }
+