bruno LARNAUDIE
/
HTTPServer
Diff: HTTPServerHelloWorld.cpp
- Revision:
- 0:58c3d014a4e7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HTTPServerHelloWorld.cpp Tue Sep 06 18:05:46 2011 +0000 @@ -0,0 +1,103 @@ +#include "mbed.h" +#include "EthernetNetIf.h" +#include "HTTPServer.h" +#include "HTTPClient.h" + +#define LOCAL "local" +Serial pc(p9,p10); +HTTPServer svr; + +DigitalOut led1(LED1, "led1"); +DigitalOut led2(LED2, "led2"); +DigitalOut led3(LED3, "led3"); +DigitalOut led4(LED4, "led4"); + +EthernetNetIf eth( + IpAddr(169,254,113,94), //IP Address + IpAddr(255,255,0,0), //Network Mask + IpAddr(129,168,1,1), //Gateway /129.168.1.1 + IpAddr(129,168,1,1) //DNS /129.168.1.1 +); + +LocalFileSystem local(LOCAL); +HTTPClient http; + +void lire_repertoire(struct dirent *p, DIR *d,FILE *file); + + +int main() { + + DIR *d; + struct dirent *p; + d = opendir("/" LOCAL); + + pc.baud(9600); + pc.printf("Setting up...\n\r"); + EthernetErr ethErr = eth.setup(); + if(ethErr) + { + pc.printf("Error %d in setup.\n\r", ethErr); + return -1; + } + pc.printf("Setup OK\n\r"); + + FSHandler::mount("/local", "/"); //Mount /local path on web root path + + svr.addHandler<FSHandler>("/"); + svr.addHandler<RPCHandler>("/rpc"); + svr.bind(80); + + pc.printf("En Ecoute...\n\r"); + + Timer tm; + tm.start(); + + FILE *fp = fopen( "/" LOCAL "/testmbed.htm", "w"); + if ( fp == NULL ) + { + pc.printf("Could not open file for write\n"); + } + fprintf(fp,"<B><font size=\"5\"> Liste de programme dans le Mbed :</font></B><br><br>"); + lire_repertoire(p,d,fp); + + fclose(fp); + pc.printf("\n - OK\n\r"); + + IpAddr ip = eth.getIp(); + pc.printf("Addresse IP local: %d.%d.%d.%d\r\n", ip[0], ip[1], ip[2], ip[3]); + HTTPText txt; + HTTPResult r = http.get("http://www.martobre.fr/films/get_ip.php", &txt); + + if(r==HTTP_OK) + { + pc.printf("Adresse IP public :\n\r\"%s\"\n\r", txt.gets()); + } + else + { + pc.printf("Error %d\n", r); + } + + //Listen indefinitely + while(true) + { + Net::poll(); + if(tm.read()>.5) + { + led1=!led1; //Show that we are alive + tm.start(); + } + } +} +void lire_repertoire(struct dirent *p, DIR *d,FILE *file){ + char compteur=0; + + if ( d != NULL ){ + while ( (p = readdir(d)) != NULL ){ + compteur++; + fprintf(file,"%d/%s <br>",compteur, p->d_name); + } + } + else{ + pc.printf("Could not open directory!\r"); + } +} \ No newline at end of file