Webserver W5500Interface for WIZ550io Ref. RTOS WebServer "Team IPN ESIME ZACATENCO"
Dependencies: W5500Interface mbed-rtos mbed
main.cpp
- Committer:
- embeddist
- Date:
- 2015-01-22
- Revision:
- 0:d6921de16a69
File content as of revision 0:d6921de16a69:
#include <stdio.h> #include <string.h> #include "mbed.h" #include "rtos.h" #include "EthernetInterface.h" #define INIT 0x1 #define SOCKET 0x2 #define CLIENTE 0x4 #define WEB 0x8 #if defined(TARGET_LPC1768) SPI spi(p5, p6, p7); // mosi, miso, sclk EthernetInterface eth(&spi, p8, p11); // spi, cs, reset #endif Serial pc(USBTX , USBRX); TCPSocketServer server; TCPSocketConnection client; int aceptado=1; int ret; char control; char dummy; int ready; char paq_en[64]; char a[]={"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n"}; char b[]={"<html>\r\n<body>\r\n"}; char c[]={"<title>WebServer WIZ550io</title>\r\n"}; char d[]={"<h2>RTOS Webserver with WIZ550io </h2>\r\n"}; char e[]={"<br /><hr>\r\n"}; char f[]={"<FONT FACE=\"Arial\" SIZE=\"2\" COLOR=\"FF0000\">"}; char g[]={"</html>"}; const char * IP_Addr = "192.168.77.34"; const char * IP_Subnet = "255.255.255.0"; const char * IP_Gateway = "192.168.77.1"; void f_ethernet_init(void); //TASK INICIALIZAR ETHERNET////////////////////////////////////// void TASK_InitEthernet(void const *argument) { while(true) { //pc.printf("TASK_InitEthernet\n"); Thread::signal_wait(INIT); f_ethernet_init(); control=SOCKET; } } ///////////////////////////////////////////////////////////////// //TASK SOCKET//////////////////////////////////////////////////// void TASK_Socket(void const *argument) { while(true) { //pc.printf("TASK_Socket\n"); Thread::signal_wait(SOCKET); control=0; //TCPSocketServer server; //crea servidor server.bind(80); //Puerto server.listen(); //Escucha por clientes //pc.printf("\nEsperando conexion con cliente...\n"); //pc.printf("\nWaiting for connection to client...\n"); //TCPSocketConnection client; //Realiza la conexion con clientes aceptado=server.accept(client); client.set_blocking(false, 1500); //timeout after (1.5)s //pc.printf("Connection from: %s\n", client.get_address()); if(!aceptado) { //pc.printf("Conectado"); //pc.printf("Connecting"); control=CLIENTE; } else { //pc.printf("Fallo la conexion con cliente"); //pc.printf("Fail the connection with client"); control=SOCKET; } } } //////////////////////////////////////////////////////////////// ///TASK_CLIENTE///////////////////////////////////////////////// void TASK_Cliente(void const *argument) { while(true) { //pc.printf("TASK_Cliente\n"); Thread::signal_wait(CLIENTE); client.send(a,sizeof(a)); client.send(b,sizeof(b)); client.send(c,sizeof(c)); client.send(d,sizeof(d)); client.send(e,sizeof(e)); client.send(f,sizeof(f)); control=WEB; ready=1; } } ///////////////////////////////////////////////////////////////// ///TASK_WEB////////////////////////////////////////////////////// void TASK_Web(void const *argument) { while(true) { //pc.printf("TASK_Web\n"); Thread::signal_wait(WEB); client.send(paq_en,sizeof(paq_en)); client.send(g,sizeof(g)); control=SOCKET; client.close(); } } ///////////////////////////////////////////////////////////////// int main() { #if defined(TARGET_LPC1768) spi.frequency(12500000); #endif Thread thread1(TASK_InitEthernet); Thread thread2(TASK_Socket); Thread thread3(TASK_Cliente); Thread thread4(TASK_Web); thread1.signal_set(INIT); while(1) { if(control==SOCKET) thread2.signal_set(SOCKET); wait(0.5); if(control==CLIENTE) { thread3.signal_set(CLIENTE); } if(control==WEB) { dummy++; sprintf(paq_en,"<FONT><BR>Valor=%d</FONT>",dummy); thread4.signal_set(WEB); if(dummy == 64) dummy =0; } } } void f_ethernet_init() { uint8_t mac[]={0x00,0x08,0xDC,0x1C,0xAA,0xCA}; // mbed_mac_address((char *)mac); //pc.printf("\tIniciando Servidor Ethernet...\n\r"); pc.printf("\tInitialize Server Ethernet...\n\r"); wait(1); ret = eth.init(mac, IP_Addr, IP_Subnet, IP_Gateway); if(!ret) { //pc.printf("Inicializado, MAC= %s\n\r",eth.getMACAddress()); pc.printf("Initialized, MAC= %s\n\r",eth.getMACAddress()); } else { //pc.printf("Fallo comunicacion... Reinicie dispositivos...\n\r"); pc.printf("Failure Communication ... Restart devices ...\n\r"); } //pc.printf("Conectando."); pc.printf("Connecting."); wait(2); pc.printf("."); wait(2); pc.printf(".\n\r"); wait(1); ret = eth.connect(); if(!ret) { //pc.printf("Conexion Establecida!\n\n\r"); pc.printf("Connection Established!\n\n\r"); wait(1); pc.printf("IP=%s\n\rMASK=%s\n\rGW=%s\n\r",eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); } else { //pc.printf("Fallo conexion... Reinicie dispositivos...\n\r"); pc.printf("Failure Communication ... Restart devices ...\n\r"); } }