starboard_orange test code for TextLCD, SD, USB and Ethernet

Dependencies:   mbed MSCFileSystem_Lib SDFileSystem

Revision:
0:bdbcdf6f3e8a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Aug 04 05:09:28 2010 +0000
@@ -0,0 +1,163 @@
+#include "mbed.h"
+
+////////////////////////////////////////
+////////    general setting     ////////
+////////////////////////////////////////
+//#define     USE_TextLCD_20x4
+#define     USE_FIXED_IP
+
+////////////////////////////////////////
+////////    For TextLCD         ////////
+////////////////////////////////////////
+#include "TextLCD.h"
+#ifdef  USE_TextLCD_20x4
+//TextLCD     lcd( p24, p26, p27, p28, p29, p30, TextLCD::LCD20x4 ); // rs, e, d0-d3
+#else
+TextLCD     lcd( p24, p26, p27, p28, p29, p30 ); // rs, e, d0-d3
+#endif
+
+////////////////////////////////////////
+////////    For SD_card         ////////
+////////////////////////////////////////
+#include "SDFileSystem.h"
+//SDFileSystem    sd(p5, p6, p7, p13, "sd");  //  mosi, miso, sclk, cs, name
+SDFileSystem  sd(p5, p6, p7, p8,  "sd");  //  mosi, miso, sclk, cs, name  (HW modification candidate)
+
+////////////////////////////////////////
+////////    For USB storage     ////////
+////////////////////////////////////////
+#include "MSCFileSystem.h"
+MSCFileSystem   usb("usb");
+
+////////////////////////////////////////
+////////    For Ethernet test   ////////
+////////////////////////////////////////
+#include "EthernetNetIf.h"
+#include "HTTPServer.h"
+#ifdef      USE_FIXED_IP
+EthernetNetIf   eth(
+    IpAddr(192,168,0,7), //IP Address
+    IpAddr(255,255,255,0), //Network Mask
+    IpAddr(192,168,0,1), //Gateway
+    IpAddr(192,168,0,1)  //DNS
+);
+#else
+EthernetNetIf   eth;
+#endif
+HTTPServer svr;
+LocalFileSystem web("local");
+
+
+void test_TextLCD( void );
+void test_file_write( char *title, char *path );
+void test_httpserver( void );
+int  position( void );
+
+int main() {
+    test_TextLCD();
+    wait( 1 );
+    test_file_write( "SD card", "/sd/star_bd.txt" );
+    wait( 1 );
+    test_file_write( "USB storage", "/usb/star_bd.txt" );
+    wait( 1 );
+    test_httpserver();
+}
+
+
+void test_TextLCD( void ) {
+    //  TextLCD test
+
+#ifdef  USE_TextLCD_20x4
+    lcd.locate( 0, 0 );
+    for ( int i = 0, c = '0'; i < 20; i++, c++ )
+        lcd.putc( c );
+
+    for ( int i = 0, c = 'A'; i < 20; i++, c++ )
+        lcd.putc( c );
+            
+    for ( int i = 0, c = 'a'; i < 20; i++, c++ )
+        lcd.putc( c );
+    for ( int i = 0, c = '0' - 10; i < 20; i++, c++ )
+        lcd.putc( c );
+    exit( 0 );
+    wait( 300 );
+    lcd.cls();
+#endif  //  USE_TextLCD_20x4
+
+    lcd.locate( 0, 0 );
+    lcd.printf( "TextLCD: OK?" );
+    lcd.locate( 0, 1 );
+    lcd.printf( "" );
+
+}
+
+void test_file_write( char *title, char *path ) {
+    //  SD card test
+    lcd.locate( 0, position() );
+    lcd.printf( "%s: ", title );
+
+    FILE *fp = fopen( path, "w" );
+    if ( fp == NULL ) {
+        lcd.printf( "error" );
+        error( "Could not open file for write\n" );
+    }
+    fprintf( fp, "The mbed writing a file through the star board orange (%s)!", title );
+    fclose( fp );
+
+    lcd.printf( "OK." );
+}
+
+
+void test_httpserver( void ) {
+    DigitalOut  led1( LED1 );
+
+    lcd.locate( 0, position() );
+    lcd.printf( "HTTP srv: " );
+
+    Base::add_rpc_class<DigitalOut>();
+
+    printf("Setting up...n");
+    EthernetErr ethErr = eth.setup();
+    if ( ethErr ) {
+        lcd.printf( "error" );
+        error( "error @ eth.setup()\n" );
+    }
+    lcd.printf("OK ");
+
+    FSHandler::mount("/local", "/");  //Mount /webfs path on web root path
+    FSHandler::mount("/sd", "/sd");   //Mount /webfs path on web sd path
+    FSHandler::mount("/usb", "/usb"); //Mount /webfs path on web usb path
+
+    svr.addHandler<FSHandler>("/");      //Default handler
+    svr.addHandler<FSHandler>("/sd");  
+    svr.addHandler<FSHandler>("/usb"); 
+    //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
+
+    svr.bind(80);
+
+    lcd.locate( 5, position() -1 );
+    lcd.printf("Listening");
+
+    Timer tm;
+    tm.start();
+    //Listen indefinitely
+    while (true) {
+        Net::poll();
+        if (tm.read()>.5) {
+            led1=!led1; //Show that we are alive
+            tm.start();
+        }
+    }
+}
+
+
+int position( void ) {
+    static int  p   = 0;
+
+#ifdef  USE_TextLCD_20x4
+    return( ++p % 4 );
+#else
+    return( ++p % 2 );
+#endif
+}
+