sample program for Wi-Fi TANK.

Dependencies:   EthernetNetIf mbed HTTPServer

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "EthernetNetIf.h"
00003 #include "HTTPServer.h"
00004 #include "RPCFunction.h"
00005 
00006 DigitalOut led1(LED1);
00007 DigitalOut led2(LED2);
00008 DigitalOut led3(LED3);
00009 DigitalOut led4(LED4);
00010 
00011 DigitalOut motor1(p21);
00012 DigitalOut motor2(p22);
00013 DigitalOut motor3(p23);
00014 DigitalOut motor4(p24);
00015 
00016 #if 1
00017 /*
00018  * Use DHCP
00019  */
00020         EthernetNetIf ethif;
00021 #else
00022 /*
00023  * Use "static IP address" (Parameters:IP, Subnet mask, Gateway, DNS)
00024  */
00025         EthernetNetIf ethif(IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx), IpAddr(xxx,xxx,xxx,xxx));
00026 #endif
00027     
00028     HTTPServer server;
00029     LocalFileSystem local("local");
00030     void MotorSig(char *input,char *output);
00031     RPCFunction rpcFunc(&MotorSig, "MotorSig");
00032 
00033 int main(void) {
00034 
00035     Base::add_rpc_class<DigitalOut>();
00036 
00037 
00038     if (ethif.setup()) {
00039         error("Ethernet setup failed.");
00040         return 1;
00041     }
00042     IpAddr ethIp=ethif.getIp();
00043     
00044     led1=1;
00045     wait(1);
00046     server.addHandler<SimpleHandler>("/hello");
00047     server.addHandler<RPCHandler>("/rpc");
00048     FSHandler::mount("/local", "/");
00049     server.addHandler<FSHandler>("/");
00050     server.bind(80);
00051     while (1) {
00052         Net::poll();
00053     }
00054     return 0;
00055 }
00056 
00057 
00058 void MotorSig(char *input , char *output)
00059 {
00060 
00061     //text---------------------------
00062     int length = 0;
00063     char str[] = "abcd";
00064     
00065     //get input data length
00066     for (length = 0; input[length] != '\0'; length++);
00067     
00068     //check data
00069     printf("length = %d : input = %s\n", length, input);
00070     
00071     if (strcmp(input,str) == 0){
00072         printf("input OK!\n");
00073     }
00074     //-------------------------------
00075     
00076     led1=!led1;
00077     if(*input == 'a'){
00078         led2 =! led2;
00079     }
00080     if(*input == 'F'){
00081         led3 =! led3;
00082     }
00083     
00084     
00085     switch(*input){
00086         case 'F':
00087             motor1 = 0;
00088             motor2 = 1;
00089             motor3 = 1;
00090             motor4 = 0;
00091             
00092             led1 = 0;
00093             led2 = 1;
00094             led3 = 1;
00095             led4 = 0;
00096             break;
00097             
00098         case 'L':
00099             motor1 = 1;
00100             motor2 = 0;
00101             motor3 = 1;
00102             motor4 = 0;
00103             
00104             led1 = 1;
00105             led2 = 0;
00106             led3 = 1;
00107             led4 = 0;
00108             break;
00109             
00110         case 'R':
00111             motor1 = 0;
00112             motor2 = 1;
00113             motor3 = 0;
00114             motor4 = 1;
00115             
00116             led1 = 0;
00117             led2 = 1;
00118             led3 = 0;
00119             led4 = 1;
00120             break;
00121             
00122         case 'B':
00123             motor1 = 1;
00124             motor2 = 0;
00125             motor3 = 0;
00126             motor4 = 1;
00127             
00128             led1 = 1;
00129             led2 = 0;
00130             led3 = 0;
00131             led4 = 1;
00132             break;
00133                    
00134         case 'S':
00135             motor1 = 0;
00136             motor2 = 0;
00137             motor3 = 0;
00138             motor4 = 0;
00139             
00140             led1 = 0;
00141             led2 = 0;
00142             led3 = 0;
00143             led4 = 0;
00144             break;
00145             
00146             
00147     }
00148 }
00149