Embedded web server

Dependencies:   EthernetNetIf HTTPServer SDFileSystem mbed

Fork of webserver by Nobuki HIRAMINE

This web server serves pages from an SD card and supports RPC calls for the PWM and GPIO

Committer:
ajoliver
Date:
Tue Mar 12 16:24:54 2013 +0000
Revision:
5:a8e0af266847
Parent:
4:c5b42552ba4a
Web server modified to serve pages from an SD card.  ; Supports RPC for access the PWM and GPIO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nobuki 0:275cd7ae0902 1 #include "mbed.h"
ajoliver 1:73dceccbf2d8 2 #include "SDFileSystem.h"
nobuki 0:275cd7ae0902 3 #include "EthernetNetIf.h"
nobuki 0:275cd7ae0902 4 #include "HTTPServer.h"
nobuki 0:275cd7ae0902 5
ajoliver 1:73dceccbf2d8 6 EthernetNetIf ethif( IpAddr(10,0,0,200), // IP
nobuki 0:275cd7ae0902 7 IpAddr(255,255,255,0), // Subnet mask
ajoliver 1:73dceccbf2d8 8 IpAddr(10,0,0,1), // Gateway
ajoliver 1:73dceccbf2d8 9 IpAddr(8,8,8,8) ); // DNS
nobuki 0:275cd7ae0902 10 HTTPServer server;
ajoliver 1:73dceccbf2d8 11 SDFileSystem sd(p5, p6, p7, p8, "sd"); // Define local file mount point
nobuki 0:275cd7ae0902 12
ajoliver 3:15cd22045f66 13 DigitalOut led1(LED1); // for alive check
ajoliver 3:15cd22045f66 14 DigitalOut led2(LED2);
ajoliver 3:15cd22045f66 15 DigitalOut led3(LED3);
ajoliver 3:15cd22045f66 16 DigitalOut led4(LED4);
ajoliver 3:15cd22045f66 17
nobuki 0:275cd7ae0902 18 int main(void)
nobuki 0:275cd7ae0902 19 {
ajoliver 3:15cd22045f66 20 Base::add_rpc_class<DigitalOut>();
ajoliver 1:73dceccbf2d8 21
nobuki 0:275cd7ae0902 22 // EthernetNetIf setup
ajoliver 1:73dceccbf2d8 23 if( ethif.setup() ) {
nobuki 0:275cd7ae0902 24 return 1;
nobuki 0:275cd7ae0902 25 }
nobuki 0:275cd7ae0902 26
nobuki 0:275cd7ae0902 27 // Mount local file path on web root path
ajoliver 1:73dceccbf2d8 28 FSHandler::mount("/sd", "/");
nobuki 0:275cd7ae0902 29 // Set web root path handler
nobuki 0:275cd7ae0902 30 server.addHandler<FSHandler>("/");
ajoliver 1:73dceccbf2d8 31 server.addHandler<RPCHandler>("/rpc");
ajoliver 1:73dceccbf2d8 32
nobuki 0:275cd7ae0902 33 // Set http port
nobuki 0:275cd7ae0902 34 server.bind(80);
nobuki 0:275cd7ae0902 35
nobuki 0:275cd7ae0902 36 Timer tm;
nobuki 0:275cd7ae0902 37 tm.start();
ajoliver 4:c5b42552ba4a 38 // flash LED1 to show the server is still operating
ajoliver 1:73dceccbf2d8 39 while(1) {
nobuki 0:275cd7ae0902 40 Net::poll();
ajoliver 1:73dceccbf2d8 41 if( 1.0 < tm.read() ) {
nobuki 0:275cd7ae0902 42 led1 = !led1; // high->low, low->high
nobuki 0:275cd7ae0902 43 tm.start();
nobuki 0:275cd7ae0902 44 }
nobuki 0:275cd7ae0902 45 }
nobuki 0:275cd7ae0902 46 }