bruno LARNAUDIE
/
HTTPServer
HTTPServerHelloWorld.cpp@0:58c3d014a4e7, 2011-09-06 (annotated)
- Committer:
- slowness
- Date:
- Tue Sep 06 18:05:46 2011 +0000
- Revision:
- 0:58c3d014a4e7
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
slowness | 0:58c3d014a4e7 | 1 | #include "mbed.h" |
slowness | 0:58c3d014a4e7 | 2 | #include "EthernetNetIf.h" |
slowness | 0:58c3d014a4e7 | 3 | #include "HTTPServer.h" |
slowness | 0:58c3d014a4e7 | 4 | #include "HTTPClient.h" |
slowness | 0:58c3d014a4e7 | 5 | |
slowness | 0:58c3d014a4e7 | 6 | #define LOCAL "local" |
slowness | 0:58c3d014a4e7 | 7 | Serial pc(p9,p10); |
slowness | 0:58c3d014a4e7 | 8 | HTTPServer svr; |
slowness | 0:58c3d014a4e7 | 9 | |
slowness | 0:58c3d014a4e7 | 10 | DigitalOut led1(LED1, "led1"); |
slowness | 0:58c3d014a4e7 | 11 | DigitalOut led2(LED2, "led2"); |
slowness | 0:58c3d014a4e7 | 12 | DigitalOut led3(LED3, "led3"); |
slowness | 0:58c3d014a4e7 | 13 | DigitalOut led4(LED4, "led4"); |
slowness | 0:58c3d014a4e7 | 14 | |
slowness | 0:58c3d014a4e7 | 15 | EthernetNetIf eth( |
slowness | 0:58c3d014a4e7 | 16 | IpAddr(169,254,113,94), //IP Address |
slowness | 0:58c3d014a4e7 | 17 | IpAddr(255,255,0,0), //Network Mask |
slowness | 0:58c3d014a4e7 | 18 | IpAddr(129,168,1,1), //Gateway /129.168.1.1 |
slowness | 0:58c3d014a4e7 | 19 | IpAddr(129,168,1,1) //DNS /129.168.1.1 |
slowness | 0:58c3d014a4e7 | 20 | ); |
slowness | 0:58c3d014a4e7 | 21 | |
slowness | 0:58c3d014a4e7 | 22 | LocalFileSystem local(LOCAL); |
slowness | 0:58c3d014a4e7 | 23 | HTTPClient http; |
slowness | 0:58c3d014a4e7 | 24 | |
slowness | 0:58c3d014a4e7 | 25 | void lire_repertoire(struct dirent *p, DIR *d,FILE *file); |
slowness | 0:58c3d014a4e7 | 26 | |
slowness | 0:58c3d014a4e7 | 27 | |
slowness | 0:58c3d014a4e7 | 28 | int main() { |
slowness | 0:58c3d014a4e7 | 29 | |
slowness | 0:58c3d014a4e7 | 30 | DIR *d; |
slowness | 0:58c3d014a4e7 | 31 | struct dirent *p; |
slowness | 0:58c3d014a4e7 | 32 | d = opendir("/" LOCAL); |
slowness | 0:58c3d014a4e7 | 33 | |
slowness | 0:58c3d014a4e7 | 34 | pc.baud(9600); |
slowness | 0:58c3d014a4e7 | 35 | pc.printf("Setting up...\n\r"); |
slowness | 0:58c3d014a4e7 | 36 | EthernetErr ethErr = eth.setup(); |
slowness | 0:58c3d014a4e7 | 37 | if(ethErr) |
slowness | 0:58c3d014a4e7 | 38 | { |
slowness | 0:58c3d014a4e7 | 39 | pc.printf("Error %d in setup.\n\r", ethErr); |
slowness | 0:58c3d014a4e7 | 40 | return -1; |
slowness | 0:58c3d014a4e7 | 41 | } |
slowness | 0:58c3d014a4e7 | 42 | pc.printf("Setup OK\n\r"); |
slowness | 0:58c3d014a4e7 | 43 | |
slowness | 0:58c3d014a4e7 | 44 | FSHandler::mount("/local", "/"); //Mount /local path on web root path |
slowness | 0:58c3d014a4e7 | 45 | |
slowness | 0:58c3d014a4e7 | 46 | svr.addHandler<FSHandler>("/"); |
slowness | 0:58c3d014a4e7 | 47 | svr.addHandler<RPCHandler>("/rpc"); |
slowness | 0:58c3d014a4e7 | 48 | svr.bind(80); |
slowness | 0:58c3d014a4e7 | 49 | |
slowness | 0:58c3d014a4e7 | 50 | pc.printf("En Ecoute...\n\r"); |
slowness | 0:58c3d014a4e7 | 51 | |
slowness | 0:58c3d014a4e7 | 52 | Timer tm; |
slowness | 0:58c3d014a4e7 | 53 | tm.start(); |
slowness | 0:58c3d014a4e7 | 54 | |
slowness | 0:58c3d014a4e7 | 55 | FILE *fp = fopen( "/" LOCAL "/testmbed.htm", "w"); |
slowness | 0:58c3d014a4e7 | 56 | if ( fp == NULL ) |
slowness | 0:58c3d014a4e7 | 57 | { |
slowness | 0:58c3d014a4e7 | 58 | pc.printf("Could not open file for write\n"); |
slowness | 0:58c3d014a4e7 | 59 | } |
slowness | 0:58c3d014a4e7 | 60 | fprintf(fp,"<B><font size=\"5\"> Liste de programme dans le Mbed :</font></B><br><br>"); |
slowness | 0:58c3d014a4e7 | 61 | lire_repertoire(p,d,fp); |
slowness | 0:58c3d014a4e7 | 62 | |
slowness | 0:58c3d014a4e7 | 63 | fclose(fp); |
slowness | 0:58c3d014a4e7 | 64 | pc.printf("\n - OK\n\r"); |
slowness | 0:58c3d014a4e7 | 65 | |
slowness | 0:58c3d014a4e7 | 66 | IpAddr ip = eth.getIp(); |
slowness | 0:58c3d014a4e7 | 67 | pc.printf("Addresse IP local: %d.%d.%d.%d\r\n", ip[0], ip[1], ip[2], ip[3]); |
slowness | 0:58c3d014a4e7 | 68 | HTTPText txt; |
slowness | 0:58c3d014a4e7 | 69 | HTTPResult r = http.get("http://www.martobre.fr/films/get_ip.php", &txt); |
slowness | 0:58c3d014a4e7 | 70 | |
slowness | 0:58c3d014a4e7 | 71 | if(r==HTTP_OK) |
slowness | 0:58c3d014a4e7 | 72 | { |
slowness | 0:58c3d014a4e7 | 73 | pc.printf("Adresse IP public :\n\r\"%s\"\n\r", txt.gets()); |
slowness | 0:58c3d014a4e7 | 74 | } |
slowness | 0:58c3d014a4e7 | 75 | else |
slowness | 0:58c3d014a4e7 | 76 | { |
slowness | 0:58c3d014a4e7 | 77 | pc.printf("Error %d\n", r); |
slowness | 0:58c3d014a4e7 | 78 | } |
slowness | 0:58c3d014a4e7 | 79 | |
slowness | 0:58c3d014a4e7 | 80 | //Listen indefinitely |
slowness | 0:58c3d014a4e7 | 81 | while(true) |
slowness | 0:58c3d014a4e7 | 82 | { |
slowness | 0:58c3d014a4e7 | 83 | Net::poll(); |
slowness | 0:58c3d014a4e7 | 84 | if(tm.read()>.5) |
slowness | 0:58c3d014a4e7 | 85 | { |
slowness | 0:58c3d014a4e7 | 86 | led1=!led1; //Show that we are alive |
slowness | 0:58c3d014a4e7 | 87 | tm.start(); |
slowness | 0:58c3d014a4e7 | 88 | } |
slowness | 0:58c3d014a4e7 | 89 | } |
slowness | 0:58c3d014a4e7 | 90 | } |
slowness | 0:58c3d014a4e7 | 91 | void lire_repertoire(struct dirent *p, DIR *d,FILE *file){ |
slowness | 0:58c3d014a4e7 | 92 | char compteur=0; |
slowness | 0:58c3d014a4e7 | 93 | |
slowness | 0:58c3d014a4e7 | 94 | if ( d != NULL ){ |
slowness | 0:58c3d014a4e7 | 95 | while ( (p = readdir(d)) != NULL ){ |
slowness | 0:58c3d014a4e7 | 96 | compteur++; |
slowness | 0:58c3d014a4e7 | 97 | fprintf(file,"%d/%s <br>",compteur, p->d_name); |
slowness | 0:58c3d014a4e7 | 98 | } |
slowness | 0:58c3d014a4e7 | 99 | } |
slowness | 0:58c3d014a4e7 | 100 | else{ |
slowness | 0:58c3d014a4e7 | 101 | pc.printf("Could not open directory!\r"); |
slowness | 0:58c3d014a4e7 | 102 | } |
slowness | 0:58c3d014a4e7 | 103 | } |