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.
Dependencies: EthernetNetIf mbed HTTPServer
main.cpp
00001 /* //--------------------------------------------------------------------------------------------- 00002 // Request to set internal Global var "flag_blink" 00003 http://192.168.1.100/rpc/blink/write%200 00004 http://192.168.1.100/rpc/blink/write%201 00005 00006 http://192.168.1.100/rpc/blink/write 0 00007 http://192.168.1.100/rpc/blink/write 1 00008 00009 //--------------------------------------------------------------------------------------------- 00010 // resources 00011 //--------------------------------------------------------------------------------------------- 00012 http://mbed.org/handbook/C-Data-Types 00013 http://mbed.org/cookbook/RPC-Interface-Library 00014 http://mbed.org/cookbook/HTTP-Server 00015 http://mbed.org/cookbook/Ethernet 00016 http://mbed.org/handbook/Ticker 00017 //--------------------------------------------------------------------------------------------- */ 00018 #include "mbed.h" 00019 #include "EthernetNetIf.h" 00020 #include "HTTPServer.h" 00021 #include "RPCVariable.h" 00022 //--------------------------------------------------------------------------------------------- 00023 DigitalOut myled(LED1); 00024 Serial pc(USBTX, USBRX); // tx, rx 00025 //--------------------------------------------------------------------------------------------- 00026 #define internaldebug // send debug messages to USB Serial port (9600,1,N) 00027 //#define dhcpenable // auto-setup IP Address from DHCP router 00028 //--------------------------------------------------------------------------------------------- 00029 // Timer Interrupt - NetPool 00030 //--------------------------------------------------------------------------------------------- 00031 Ticker netpool; 00032 //--------------------------------------------------------------------------------------------- 00033 // Ethernet Object Setup 00034 //--------------------------------------------------------------------------------------------- 00035 #ifdef dhcpenable 00036 EthernetNetIf eth; 00037 #else 00038 EthernetNetIf eth( 00039 IpAddr(192,168,1,100), //IP Address 00040 IpAddr(255,255,255,0), //Network Mask 00041 IpAddr(192,168,1,254), //Gateway 00042 IpAddr(192,168,1,254) //DNS 00043 ); 00044 #endif 00045 //--------------------------------------------------------------------------------------------- 00046 // HTTP Server 00047 //--------------------------------------------------------------------------------------------- 00048 HTTPServer httpserver; 00049 LocalFileSystem fs("webfs"); 00050 00051 uint8_t flag_blink; 00052 //--------------------------------------------------------------------------------------------- 00053 00054 //--------------------------------------------------------------------------------------------- 00055 // ISR -> Pool Ethernet - will be triggered by netpool ticker 00056 //--------------------------------------------------------------------------------------------- 00057 void netpoolupdate() 00058 { 00059 Net::poll(); 00060 } 00061 //--------------------------------------------------------------------------------------------- 00062 00063 //--------------------------------------------------------------------------------------------- 00064 // MAIN 00065 //--------------------------------------------------------------------------------------------- 00066 int main() 00067 { 00068 // Set Serial Port Transfer Rate 00069 pc.baud(115200); 00070 00071 //-------------------------------------------------------- 00072 // Setting Ethernet 00073 //-------------------------------------------------------- 00074 #ifdef internaldebug 00075 printf("\r\nSetting up Ethernet interface!\r\n"); 00076 #endif 00077 // Create return object for error check 00078 EthernetErr ethErr = eth.setup(); 00079 if(ethErr) 00080 { 00081 #ifdef internaldebug 00082 printf("\r\nError %d in Ethernet setup.\r\n", ethErr); 00083 #endif 00084 return -1; 00085 } 00086 #ifdef internaldebug 00087 printf("\r\nEthernet setup completed with success!\r\n"); 00088 #endif 00089 //-------------------------------------------------------- 00090 00091 //-------------------------------------------------------- 00092 // adding RPC variables 00093 //-------------------------------------------------------- 00094 flag_blink = false; 00095 RPCVariable<uint8_t> RPCblink(&flag_blink, "blink"); 00096 //-------------------------------------------------------- 00097 00098 //-------------------------------------------------------- 00099 // adding Handlers 00100 //-------------------------------------------------------- 00101 FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path 00102 00103 httpserver.addHandler<RPCHandler>("/rpc"); 00104 httpserver.addHandler<FSHandler>("/"); //Default handler 00105 //-------------------------------------------------------- 00106 00107 //-------------------------------------------------------- 00108 // bind http server to port 80 (Listen) 00109 //-------------------------------------------------------- 00110 httpserver.bind(80); 00111 #ifdef internaldebug 00112 printf("Listening on port 80!\r\n"); 00113 #endif 00114 //-------------------------------------------------------- 00115 00116 //-------------------------------------------------------- 00117 // ISR -> attach timer interrupt to update Net::Pool(); 00118 //-------------------------------------------------------- 00119 netpool.attach(&netpoolupdate, 0.1); 00120 //-------------------------------------------------------- 00121 00122 //-------------------------------------------------------- 00123 // main loop 00124 //-------------------------------------------------------- 00125 // main loop 00126 while(1) 00127 { 00128 if(flag_blink) 00129 { 00130 myled = 1; 00131 wait(0.5); 00132 myled = 0; 00133 } 00134 wait(0.5); 00135 } 00136 } 00137 //---------------------------------------------------------------------------------------------
Generated on Wed Jul 13 2022 13:04:07 by
1.7.2