Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface HTTPServer RemoteIR SDFileSystem mbed-rpc mbed-rtos mbed
Fork of SmartRemote by
main.cpp
- Committer:
- sammacjunkie
- Date:
- 2013-12-03
- Revision:
- 8:858f7605c769
- Parent:
- 7:7b3f53b5e737
- Child:
- 9:47c413188c0d
File content as of revision 8:858f7605c769:
#include "mbed.h"
#include "EthernetInterface.h"
#include "HTTPServer.h"
#include "FsHandler.h"
#include "RpcHandler.h"
#include "rtos.h"
DigitalOut led1(LED1);
//Start IR
#include "ReceiverIR.h"
#include "TransmitterIR.h"
#include "IR.h"
//END IR
// Start DB
#include <stdio.h>
#include <stdlib.h>
#include "SDFileSystem.h"
#include "db.h"
// End DB
// Start RPC
#include "RPCVariable.h"
int Request = 0;
int Learn = 0;
char Learn_name0;
char Learn_name1;
char Learn_name2;
char Learn_name3;
char Learn_name4;
char Learn_name5;
char Learn_name6;
char Learn_name7;
char Learn_name8;
char Learn_name9;
//Make these variables accessible over RPC by attaching them to an RPCVariable
RPCVariable<int> RPCRequest(&Request, "Request");
RPCVariable<int> RPCLearn(&Learn, "Learn");
RPCVariable<char> RPCLearner0(&Learn_name0, "Learn_name0");
RPCVariable<char> RPCLearner1(&Learn_name1, "Learn_name1");
RPCVariable<char> RPCLearner2(&Learn_name2, "Learn_name2");
RPCVariable<char> RPCLearner3(&Learn_name3, "Learn_name3");
RPCVariable<char> RPCLearner4(&Learn_name4, "Learn_name4");
RPCVariable<char> RPCLearner5(&Learn_name5, "Learn_name5");
RPCVariable<char> RPCLearner6(&Learn_name6, "Learn_name6");
RPCVariable<char> RPCLearner7(&Learn_name7, "Learn_name7");
RPCVariable<char> RPCLearner8(&Learn_name8, "Learn_name8");
RPCVariable<char> RPCLearner9(&Learn_name9, "Learn_name9");
// End RPC
Serial pc(USBTX, USBRX, "pc");
//  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");
SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed
int main()
{
    printf("Setting up Apache...\n \r");
    HTTPFsRequestHandler::mount("/local/", "/");
    svr.addHandler<HTTPFsRequestHandler>("/");
    svr.addHandler<HTTPRpcRequestHandler>("/rpc");
    EthernetInterface eth;
    eth.setup(300000);
    eth.init(); //Use DHCP
    eth.connect();
    // Now start the server on port 80.
    if (!svr.start(80, ð)) {
        error("Server not starting !");
        exit(0);
    }
    printf("IP: %s\n \r", eth.getIPAddress());
    printf("Setup OK\n \r");
    // DB Init
    mkdir("/sd/SmartRemote", 0777);
    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, Request, results_name, results_code);
    fclose(fread);
    */
    //End DB init
    //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) {
        svr.poll();
        if(tm.read()>.5) {
            tm.start();
        }
        if (Learn) {
            led1 = 1;
            {
                bitlength1 = receive(&format, buf1, sizeof(buf1));
                if (bitlength1 < 0) {
                    continue;
                }
                display_status("RECV", bitlength1);
                display_data(buf1, bitlength1);
                //display_format(format);
            }
            printf("%d",buf1);
            //printf("%s",Learn_name);
            led1 = 0;
            Learn = 0;
        }
    }
    return 0;
}
            
    