Simple code to demonstrate how to mount the internal flash and deploy files via http server requests (http://mbed_ip_address/demo.htm) Note: Demo program to be used on the GeekSessionLab Talk (November 2011). http://devrendezvous.com/?lang=en

Dependencies:   EthernetNetIf mbed HTTPServer

main.cpp

Committer:
botdream
Date:
2011-10-27
Revision:
0:b1e16a7d2c19

File content as of revision 0:b1e16a7d2c19:

//---------------------------------------------------------------------------------------------
#include "mbed.h"
#include "EthernetNetIf.h"
#include "HTTPServer.h"
//---------------------------------------------------------------------------------------------
DigitalOut myled(LED1);
Serial pc(USBTX, USBRX); // tx, rx
//---------------------------------------------------------------------------------------------
#define internaldebug // send debug messages to USB Serial port (9600,1,N)
//#define dhcpenable    // auto-setup IP Address from DHCP router
//---------------------------------------------------------------------------------------------
// Timer Interrupt - NetPool
//---------------------------------------------------------------------------------------------
Ticker netpool;
//---------------------------------------------------------------------------------------------
// Ethernet Object Setup
//---------------------------------------------------------------------------------------------
#ifdef dhcpenable
  EthernetNetIf eth;  
#else
  EthernetNetIf eth(
    IpAddr(192,168,1,100), //IP Address
    IpAddr(255,255,255,0), //Network Mask
    IpAddr(192,168,1,254), //Gateway
    IpAddr(192,168,1,254)  //DNS
  );
#endif
//---------------------------------------------------------------------------------------------
// HTTP Server
//---------------------------------------------------------------------------------------------
HTTPServer httpserver;
LocalFileSystem fs("webfs");
//---------------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------------
// ISR -> Pool Ethernet - will be triggered by netpool ticker
//---------------------------------------------------------------------------------------------
void netpoolupdate()
{
    Net::poll();
}
//---------------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------------
// MAIN
//---------------------------------------------------------------------------------------------
int main() 
{
  // Set Serial Port Transfer Rate
  pc.baud(115200);  

  //--------------------------------------------------------
  // Setting Ethernet
  //--------------------------------------------------------    
  #ifdef internaldebug
    printf("\r\nSetting up Ethernet interface!\r\n");
  #endif
  // Create return object for error check
  EthernetErr ethErr = eth.setup(); 
  if(ethErr)
  {
    #ifdef internaldebug
      printf("\r\nError %d in Ethernet setup.\r\n", ethErr);
    #endif
    return -1;
  }
  #ifdef internaldebug
    printf("\r\nEthernet setup completed with success!\r\n");
  #endif  
  //--------------------------------------------------------    

  //--------------------------------------------------------
  // adding Handlers 
  //--------------------------------------------------------  
  FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
  
  httpserver.addHandler<FSHandler>("/"); //Default handler      
  //--------------------------------------------------------
  
  //--------------------------------------------------------
  // bind http server to port 80 (Listen)
  //--------------------------------------------------------       
  httpserver.bind(80);  
  #ifdef internaldebug
    printf("Listening on port 80!\r\n");
  #endif
  //--------------------------------------------------------         
    
  //--------------------------------------------------------
  // ISR -> attach timer interrupt to update Net::Pool();
  //--------------------------------------------------------
  netpool.attach(&netpoolupdate, 0.1);
  //--------------------------------------------------------

  //--------------------------------------------------------    
  // 
  //--------------------------------------------------------    
  // main loop
  while(1) 
  {
    myled = 1;
    wait(0.5);
    myled = 0;
    wait(0.5);
  }
}
//---------------------------------------------------------------------------------------------