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

Dependencies:   EthernetNetIf HTTPServer QEI_hw RPCInterface mbed

main.cpp

Committer:
Yo_Robot
Date:
2012-04-11
Revision:
13:649543aa8b1d
Parent:
12:c02b08dacc45
Child:
14:039d070732d5

File content as of revision 13:649543aa8b1d:

//  GENERADOR DE FRECUENCIAS
 
#include "mbed.h"
#include "setup.h"
#include "EthernetNetIf.h"
#include "HTTPServer.h"
#include "RPCFunction.h"
#include "RPCVariable.h"
#include "SerialRPCInterface.h"

Serial          pc( USBTX, USBRX );

DigitalOut      pin_son( p30 );   // SON
DigitalOut      pin_dir( p29 );   // SIGN+
InterruptIn     pin_alm( p14 );   // ALM 
AnalogOut       aout( p18 );      // 0.0 a 1.0 float

DigitalIn       isHTTP( p21 );   // Modo Ethernet/Serial
DigitalIn       isFast( p22 );   // Serial Alta velocidad/Baja Velocidad

LocalFileSystem fs("webfs");

EthernetNetIf eth;  
HTTPServer svr;

//  Anadir funciones al Protocolo RPC
RPCFunction SetFQ  (&setPTO_eth,  "PTO");
RPCFunction SetAOUT(&setAout_eth, "AOUT");
RPCFunction SetDIR (&setDir_eth,  "DIR");
RPCFunction SetSON (&setSON_eth,  "SON");
// falta encoders y alarma.....


int main() {
    
    if( isHTTP )   //Configura Red Ethernet
    {
        Base::add_rpc_class<AnalogIn>();
        Base::add_rpc_class<AnalogOut>();
        Base::add_rpc_class<DigitalIn>();
        Base::add_rpc_class<DigitalOut>();
        Base::add_rpc_class<DigitalInOut>();
        Base::add_rpc_class<PwmOut>();
        Base::add_rpc_class<Timer>();
        Base::add_rpc_class<BusOut>();
        Base::add_rpc_class<BusIn>();
        Base::add_rpc_class<BusInOut>();
        Base::add_rpc_class<Serial>();
    
        printf("\nSetting Up...\n");
    
        EthernetErr ethErr = eth.setup();
        if( ethErr )
        {
            printf( "Error %d en setup\n", ethErr );
            return -1;
        }
    
        printf("Configuracion Correcta\n");
    
        FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
        FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
  
        svr.addHandler<SimpleHandler>("/hello");
        svr.addHandler<RPCHandler>("/rpc");
        svr.addHandler<FSHandler>("/files");
        svr.addHandler<FSHandler>("/"); //Default handler
        //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
   
        svr.bind(80);
        
        printf("Listening...\n");
    }
    else  // Caso Contrario Añadir modo Serial
    {
        pc.attach( &ISR_Serial );
        if( isFast ) //Configurar Serial a alta velocidad
            pc.baud( 115200 );
    }
    
    setTimer2();  // Configurar PTO
    pin_son = 0;  // Servo Apagado por defecto
    aout = 0.5;   // Voltaje de salida 0V por defecto( +-10V! )
    
    while(1) 
    {
        if( isHTTP )
            Net::poll();  // Revisa la red solo si la conección es HTTP
    }
}