Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
HttpServerTcpSockets.cpp@1:3ee499525aa5, 2010-06-14 (annotated)
- Committer:
- iva2k
- Date:
- Mon Jun 14 03:24:33 2010 +0000
- Revision:
- 1:3ee499525aa5
- Parent:
- 0:e614f7875b60
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| iva2k | 0:e614f7875b60 | 1 | #define MY_DEBUG_LEVEL 2 |
| iva2k | 0:e614f7875b60 | 2 | #define MBED_BOB2 1 |
| iva2k | 0:e614f7875b60 | 3 | #define USE_SD 0 |
| iva2k | 0:e614f7875b60 | 4 | |
| iva2k | 0:e614f7875b60 | 5 | #include "mbed.h" |
| iva2k | 0:e614f7875b60 | 6 | #include "EthernetNetIf.h" |
| iva2k | 0:e614f7875b60 | 7 | #include "HTTPServer.h" |
| iva2k | 0:e614f7875b60 | 8 | #include "StreamServer.h" |
| iva2k | 0:e614f7875b60 | 9 | |
| iva2k | 0:e614f7875b60 | 10 | #if USE_SD |
| iva2k | 0:e614f7875b60 | 11 | #include "SDFileSystem.h" |
| iva2k | 0:e614f7875b60 | 12 | #endif |
| iva2k | 0:e614f7875b60 | 13 | |
| iva2k | 0:e614f7875b60 | 14 | DigitalOut led1(LED1, "led1"); |
| iva2k | 0:e614f7875b60 | 15 | DigitalOut led2(LED2, "led2"); |
| iva2k | 0:e614f7875b60 | 16 | DigitalOut led3(LED3, "led3"); |
| iva2k | 0:e614f7875b60 | 17 | DigitalOut led4(LED4, "led4"); |
| iva2k | 0:e614f7875b60 | 18 | |
| iva2k | 0:e614f7875b60 | 19 | //LocalFileSystem fs("webfs"); |
| iva2k | 0:e614f7875b60 | 20 | LocalFileSystem local("webfs"); |
| iva2k | 0:e614f7875b60 | 21 | #if USE_SD |
| iva2k | 0:e614f7875b60 | 22 | SDFileSystem sd(p5, p6, p7, p8, "sd"); // MBED-BoB2 |
| iva2k | 0:e614f7875b60 | 23 | #endif |
| iva2k | 0:e614f7875b60 | 24 | |
| iva2k | 0:e614f7875b60 | 25 | EthernetNetIf eth; |
| iva2k | 0:e614f7875b60 | 26 | //#if 0 // Fixed address |
| iva2k | 0:e614f7875b60 | 27 | //EthernetNetIf eth( |
| iva2k | 0:e614f7875b60 | 28 | // IpAddr(192,168,0,101), //IP Address |
| iva2k | 0:e614f7875b60 | 29 | // IpAddr(255,255,255,0), //Network Mask |
| iva2k | 0:e614f7875b60 | 30 | // IpAddr(192,168,0,1), //Gateway |
| iva2k | 0:e614f7875b60 | 31 | // IpAddr(192,168,0,1) //DNS |
| iva2k | 0:e614f7875b60 | 32 | //); |
| iva2k | 0:e614f7875b60 | 33 | //#endif |
| iva2k | 0:e614f7875b60 | 34 | HTTPServer svr; |
| iva2k | 0:e614f7875b60 | 35 | StreamServer stream; |
| iva2k | 1:3ee499525aa5 | 36 | Serial pc(USBTX, USBRX); |
| iva2k | 0:e614f7875b60 | 37 | |
| iva2k | 0:e614f7875b60 | 38 | int gDebug=MY_DEBUG_LEVEL; |
| iva2k | 0:e614f7875b60 | 39 | float gWait = 0.005; // Main loop wait timeout |
| iva2k | 0:e614f7875b60 | 40 | |
| iva2k | 0:e614f7875b60 | 41 | int main() { |
| iva2k | 0:e614f7875b60 | 42 | bool use_sd = false; |
| iva2k | 0:e614f7875b60 | 43 | unsigned int cnt = 0; |
| iva2k | 0:e614f7875b60 | 44 | |
| iva2k | 1:3ee499525aa5 | 45 | pc.baud(115200); |
| iva2k | 0:e614f7875b60 | 46 | Base::add_rpc_class<DigitalOut>(); |
| iva2k | 0:e614f7875b60 | 47 | |
| iva2k | 0:e614f7875b60 | 48 | printf("\r\nSetting up...\r\n"); |
| iva2k | 0:e614f7875b60 | 49 | EthernetErr ethErr = eth.setup(); |
| iva2k | 0:e614f7875b60 | 50 | if(ethErr) |
| iva2k | 0:e614f7875b60 | 51 | { |
| iva2k | 0:e614f7875b60 | 52 | printf("Error %d in setup.\n", ethErr); |
| iva2k | 0:e614f7875b60 | 53 | return -1; |
| iva2k | 0:e614f7875b60 | 54 | } |
| iva2k | 0:e614f7875b60 | 55 | printf("\r\nSetup OK\r\n"); |
| iva2k | 0:e614f7875b60 | 56 | |
| iva2k | 0:e614f7875b60 | 57 | #if USE_SD |
| iva2k | 0:e614f7875b60 | 58 | // Check if we can use SD card for the web server |
| iva2k | 0:e614f7875b60 | 59 | FILE *fp = fopen("/sd/index.htm", "r"); |
| iva2k | 0:e614f7875b60 | 60 | if (fp == NULL) { |
| iva2k | 0:e614f7875b60 | 61 | if (gDebug) printf("DEBUG: No SD card found or no index.htm file - using LocalFilesystem for WebServer.\r\n"); |
| iva2k | 0:e614f7875b60 | 62 | } else { |
| iva2k | 0:e614f7875b60 | 63 | use_sd = true; |
| iva2k | 0:e614f7875b60 | 64 | fclose(fp); |
| iva2k | 0:e614f7875b60 | 65 | if (gDebug) printf("DEBUG: Found SD card with index.htm file - using SD for WebServer.\r\n"); |
| iva2k | 0:e614f7875b60 | 66 | } |
| iva2k | 0:e614f7875b60 | 67 | #endif |
| iva2k | 0:e614f7875b60 | 68 | |
| iva2k | 0:e614f7875b60 | 69 | svr.addHandler<SimpleHandler>("/hello"); |
| iva2k | 0:e614f7875b60 | 70 | svr.addHandler<RPCHandler>("/rpc"); |
| iva2k | 0:e614f7875b60 | 71 | svr.addHandler<FSHandler>(""); //Default handler |
| iva2k | 0:e614f7875b60 | 72 | //FIXME: can't use this: , use_sd ? "/sd/" : "/local/"); |
| iva2k | 0:e614f7875b60 | 73 | //Example : Access to mbed.htm : http://a.b.c.d/webfs/mbed.htm |
| iva2k | 0:e614f7875b60 | 74 | |
| iva2k | 0:e614f7875b60 | 75 | svr.bind(80); |
| iva2k | 0:e614f7875b60 | 76 | |
| iva2k | 0:e614f7875b60 | 77 | printf("\r\nHTTP Listening...\r\n"); |
| iva2k | 0:e614f7875b60 | 78 | |
| iva2k | 0:e614f7875b60 | 79 | //#### STREAM SOCKETS |
| iva2k | 0:e614f7875b60 | 80 | stream.bind(123); |
| iva2k | 0:e614f7875b60 | 81 | |
| iva2k | 0:e614f7875b60 | 82 | Timer tm; |
| iva2k | 0:e614f7875b60 | 83 | tm.start(); |
| iva2k | 0:e614f7875b60 | 84 | //Listen indefinitely |
| iva2k | 0:e614f7875b60 | 85 | while(true) |
| iva2k | 0:e614f7875b60 | 86 | { |
| iva2k | 0:e614f7875b60 | 87 | Net::poll(); |
| iva2k | 0:e614f7875b60 | 88 | if(tm.read()>.5) |
| iva2k | 0:e614f7875b60 | 89 | { |
| iva2k | 0:e614f7875b60 | 90 | led1=!led1; //Show that we are alive |
| iva2k | 0:e614f7875b60 | 91 | if ((cnt % 4) == 0) { |
| iva2k | 0:e614f7875b60 | 92 | char buf[100]; |
| iva2k | 0:e614f7875b60 | 93 | int len = sprintf(buf, ".tick.%d======================================================================\r\n", cnt); |
| iva2k | 0:e614f7875b60 | 94 | stream.sendToAll(buf, len); |
| iva2k | 1:3ee499525aa5 | 95 | printf("%s - %d clients\r\n", buf, stream.countClients()); |
| iva2k | 1:3ee499525aa5 | 96 | // printf(".tick.%d - %d clients\r\n", cnt, stream.countClients()); |
| iva2k | 0:e614f7875b60 | 97 | } |
| iva2k | 0:e614f7875b60 | 98 | tm.start(); |
| iva2k | 0:e614f7875b60 | 99 | cnt++; |
| iva2k | 0:e614f7875b60 | 100 | } |
| iva2k | 1:3ee499525aa5 | 101 | // wait(gWait); |
| iva2k | 0:e614f7875b60 | 102 | } |
| iva2k | 0:e614f7875b60 | 103 | |
| iva2k | 0:e614f7875b60 | 104 | return 0; |
| iva2k | 0:e614f7875b60 | 105 | |
| iva2k | 0:e614f7875b60 | 106 | } |