Embedded web server
Dependencies: EthernetNetIf HTTPServer SDFileSystem mbed
Fork of webserver by
This web server serves pages from an SD card and supports RPC calls for the PWM and GPIO
main.cpp@5:a8e0af266847, 2013-03-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |