Proyecto de Tesis en Mecatrónica. Universidad Técnica del Norte. Ernesto Palacios <mecatronica.mid@gmail.com>

Dependencies:   EthernetNetIf HTTPServer QEI_hw RPCInterface mbed

Committer:
Yo_Robot
Date:
Wed Mar 28 23:13:53 2012 +0000
Revision:
5:c5aea1eb10bb
Parent:
4:552beeda4722
Child:
6:b4dae934e1ea
First RPC Version, seems to work ok....

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yo_Robot 4:552beeda4722 1 // GENERADOR DE FRECUENCIAS
Yo_Robot 3:8d5a9e3cd680 2
Yo_Robot 3:8d5a9e3cd680 3 #include "mbed.h"
Yo_Robot 3:8d5a9e3cd680 4 #include "setup.h"
Yo_Robot 5:c5aea1eb10bb 5 #include "EthernetNetIf.h"
Yo_Robot 5:c5aea1eb10bb 6 #include "HTTPServer.h"
Yo_Robot 5:c5aea1eb10bb 7 #include "RPCFunction.h"
Yo_Robot 5:c5aea1eb10bb 8 #include "RPCVariable.h"
Yo_Robot 5:c5aea1eb10bb 9 #include "SerialRPCInterface.h"
Yo_Robot 3:8d5a9e3cd680 10
Yo_Robot 5:c5aea1eb10bb 11 DigitalOut led1(LED1, "led1");
Yo_Robot 5:c5aea1eb10bb 12 DigitalOut led2(LED2, "led2");
Yo_Robot 5:c5aea1eb10bb 13 DigitalOut led3(LED3, "led3");
Yo_Robot 5:c5aea1eb10bb 14 DigitalOut led4(LED4, "led4");
Yo_Robot 5:c5aea1eb10bb 15
Yo_Robot 5:c5aea1eb10bb 16 LocalFileSystem fs("webfs");
Yo_Robot 5:c5aea1eb10bb 17
Yo_Robot 5:c5aea1eb10bb 18 EthernetNetIf eth;
Yo_Robot 5:c5aea1eb10bb 19 HTTPServer svr;
Yo_Robot 5:c5aea1eb10bb 20
Yo_Robot 5:c5aea1eb10bb 21 void setFq( char * input, char * output ); //Cambiar frecuencia
Yo_Robot 5:c5aea1eb10bb 22 void setPTO( char * input, char * output ); // Encender/Apagar Pulse Train Output
Yo_Robot 5:c5aea1eb10bb 23
Yo_Robot 5:c5aea1eb10bb 24
Yo_Robot 5:c5aea1eb10bb 25 //Set up custom RPC
Yo_Robot 5:c5aea1eb10bb 26 RPCFunction SetFQ(&setFq, "Frecuencia");
Yo_Robot 5:c5aea1eb10bb 27 RPCFunction SetPTO(&setPTO, "Encender");
Yo_Robot 5:c5aea1eb10bb 28
Yo_Robot 3:8d5a9e3cd680 29
Yo_Robot 3:8d5a9e3cd680 30 int main() {
Yo_Robot 3:8d5a9e3cd680 31
Yo_Robot 5:c5aea1eb10bb 32 Base::add_rpc_class<AnalogIn>();
Yo_Robot 5:c5aea1eb10bb 33 Base::add_rpc_class<AnalogOut>();
Yo_Robot 5:c5aea1eb10bb 34 Base::add_rpc_class<DigitalIn>();
Yo_Robot 5:c5aea1eb10bb 35 Base::add_rpc_class<DigitalOut>();
Yo_Robot 5:c5aea1eb10bb 36 Base::add_rpc_class<DigitalInOut>();
Yo_Robot 5:c5aea1eb10bb 37 Base::add_rpc_class<PwmOut>();
Yo_Robot 5:c5aea1eb10bb 38 Base::add_rpc_class<Timer>();
Yo_Robot 5:c5aea1eb10bb 39 Base::add_rpc_class<BusOut>();
Yo_Robot 5:c5aea1eb10bb 40 Base::add_rpc_class<BusIn>();
Yo_Robot 5:c5aea1eb10bb 41 Base::add_rpc_class<BusInOut>();
Yo_Robot 5:c5aea1eb10bb 42 Base::add_rpc_class<Serial>();
Yo_Robot 4:552beeda4722 43
Yo_Robot 5:c5aea1eb10bb 44 printf("\nSetting Up...\n");
Yo_Robot 3:8d5a9e3cd680 45
Yo_Robot 5:c5aea1eb10bb 46 EthernetErr ethErr = eth.setup();
Yo_Robot 5:c5aea1eb10bb 47 if( ethErr )
Yo_Robot 5:c5aea1eb10bb 48 {
Yo_Robot 5:c5aea1eb10bb 49 printf( "Error %d in setup\n", ethErr );
Yo_Robot 5:c5aea1eb10bb 50 return -1;
Yo_Robot 5:c5aea1eb10bb 51 }
Yo_Robot 5:c5aea1eb10bb 52
Yo_Robot 5:c5aea1eb10bb 53 printf("Configuracion Correcta\n");
Yo_Robot 4:552beeda4722 54
Yo_Robot 5:c5aea1eb10bb 55 FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
Yo_Robot 5:c5aea1eb10bb 56 FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
Yo_Robot 5:c5aea1eb10bb 57
Yo_Robot 5:c5aea1eb10bb 58 svr.addHandler<SimpleHandler>("/hello");
Yo_Robot 5:c5aea1eb10bb 59 svr.addHandler<RPCHandler>("/rpc");
Yo_Robot 5:c5aea1eb10bb 60 svr.addHandler<FSHandler>("/files");
Yo_Robot 5:c5aea1eb10bb 61 svr.addHandler<FSHandler>("/"); //Default handler
Yo_Robot 5:c5aea1eb10bb 62 //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
Yo_Robot 5:c5aea1eb10bb 63
Yo_Robot 5:c5aea1eb10bb 64 svr.bind(80);
Yo_Robot 5:c5aea1eb10bb 65 setTimer2();
Yo_Robot 4:552beeda4722 66
Yo_Robot 5:c5aea1eb10bb 67 printf("Listening...\n");
Yo_Robot 4:552beeda4722 68
Yo_Robot 3:8d5a9e3cd680 69 while(1) {
Yo_Robot 5:c5aea1eb10bb 70
Yo_Robot 5:c5aea1eb10bb 71 Net::poll();
Yo_Robot 3:8d5a9e3cd680 72
Yo_Robot 3:8d5a9e3cd680 73 }
Yo_Robot 5:c5aea1eb10bb 74 }
Yo_Robot 5:c5aea1eb10bb 75
Yo_Robot 5:c5aea1eb10bb 76
Yo_Robot 5:c5aea1eb10bb 77 void setFq( char * input, char * output )
Yo_Robot 5:c5aea1eb10bb 78 {
Yo_Robot 5:c5aea1eb10bb 79 int frequency = atoi( input );
Yo_Robot 5:c5aea1eb10bb 80 setMR2( getMRvalue( frequency ) );
Yo_Robot 5:c5aea1eb10bb 81
Yo_Robot 5:c5aea1eb10bb 82 sprintf( output, "Ok, Freq = %d", frequency);
Yo_Robot 5:c5aea1eb10bb 83 }
Yo_Robot 5:c5aea1eb10bb 84
Yo_Robot 5:c5aea1eb10bb 85 void setPTO( char * input, char * output )
Yo_Robot 5:c5aea1eb10bb 86 {
Yo_Robot 5:c5aea1eb10bb 87 int command = atoi( input );
Yo_Robot 5:c5aea1eb10bb 88
Yo_Robot 5:c5aea1eb10bb 89 if( command == 1)
Yo_Robot 5:c5aea1eb10bb 90 {
Yo_Robot 5:c5aea1eb10bb 91 startTimer2();
Yo_Robot 5:c5aea1eb10bb 92 sprintf( output, "On" );
Yo_Robot 5:c5aea1eb10bb 93 }
Yo_Robot 5:c5aea1eb10bb 94 else if( command == 0)
Yo_Robot 5:c5aea1eb10bb 95 {
Yo_Robot 5:c5aea1eb10bb 96 stopTimer2();
Yo_Robot 5:c5aea1eb10bb 97 sprintf( output, "Off" );
Yo_Robot 5:c5aea1eb10bb 98 }
Yo_Robot 5:c5aea1eb10bb 99
Yo_Robot 5:c5aea1eb10bb 100 sprintf( output, "Error, intentelo nuevamente: %c", command );
Yo_Robot 5:c5aea1eb10bb 101
Yo_Robot 5:c5aea1eb10bb 102
Yo_Robot 5:c5aea1eb10bb 103 }
Yo_Robot 5:c5aea1eb10bb 104
Yo_Robot 5:c5aea1eb10bb 105
Yo_Robot 5:c5aea1eb10bb 106
Yo_Robot 5:c5aea1eb10bb 107