Dependencies:   mbed MSCFileSystem_Lib SDFileSystem

Committer:
nxpfan
Date:
Wed Jul 07 08:44:23 2010 +0000
Revision:
0:90dae25ad520

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nxpfan 0:90dae25ad520 1 // This is a sample/lib collection for the starboard
nxpfan 0:90dae25ad520 2 // Those libs are from...
nxpfan 0:90dae25ad520 3 // http://mbed.org/cookbook/Text-LCD (New TextLCD lib/sample)
nxpfan 0:90dae25ad520 4 // http://mbed.org/cookbook/SD-Card-File-System (latest as of 2010-07-07)
nxpfan 0:90dae25ad520 5 // http://mbed.org/users/chris/programs/MSCFileSystem_Lib (USB-strage)
nxpfan 0:90dae25ad520 6 // http://mbed.org/cookbook/HTTP-Server (Ethernet check with HTTP server)
nxpfan 0:90dae25ad520 7 //
nxpfan 0:90dae25ad520 8 // For the battery supply check, another program
nxpfan 0:90dae25ad520 9 // (http://mbed.org/users/nxpfan/programs/RTC_LCD__starboard_orange) can be used
nxpfan 0:90dae25ad520 10 //
nxpfan 0:90dae25ad520 11 // @nxpfan, 2010-07-07 (Wish upon a Star)
nxpfan 0:90dae25ad520 12
nxpfan 0:90dae25ad520 13 #include "mbed.h"
nxpfan 0:90dae25ad520 14
nxpfan 0:90dae25ad520 15 ////////////////////////////////////////
nxpfan 0:90dae25ad520 16 //////// general setting ////////
nxpfan 0:90dae25ad520 17 ////////////////////////////////////////
nxpfan 0:90dae25ad520 18 #define USE_TextLCD_20x4
nxpfan 0:90dae25ad520 19 #define USE_FIXED_IP
nxpfan 0:90dae25ad520 20
nxpfan 0:90dae25ad520 21 ////////////////////////////////////////
nxpfan 0:90dae25ad520 22 //////// For TextLCD ////////
nxpfan 0:90dae25ad520 23 ////////////////////////////////////////
nxpfan 0:90dae25ad520 24 #include "TextLCD.h"
nxpfan 0:90dae25ad520 25 #ifdef USE_TextLCD_20x4
nxpfan 0:90dae25ad520 26 TextLCD lcd( p24, p26, p27, p28, p29, p30, TextLCD::LCD20x4 ); // rs, e, d0-d3
nxpfan 0:90dae25ad520 27 #else
nxpfan 0:90dae25ad520 28 TextLCD lcd( p24, p26, p27, p28, p29, p30 ); // rs, e, d0-d3
nxpfan 0:90dae25ad520 29 #endif
nxpfan 0:90dae25ad520 30
nxpfan 0:90dae25ad520 31 ////////////////////////////////////////
nxpfan 0:90dae25ad520 32 //////// For SD_card ////////
nxpfan 0:90dae25ad520 33 ////////////////////////////////////////
nxpfan 0:90dae25ad520 34 #include "SDFileSystem.h"
nxpfan 0:90dae25ad520 35 SDFileSystem sd(p5, p6, p7, p13, "sd"); // mosi, miso, sclk, cs, name
nxpfan 0:90dae25ad520 36 //SDFileSystem sd(p5, p6, p7, p8, "sd"); // (HW modification candidate)
nxpfan 0:90dae25ad520 37
nxpfan 0:90dae25ad520 38 ////////////////////////////////////////
nxpfan 0:90dae25ad520 39 //////// For USB storage ////////
nxpfan 0:90dae25ad520 40 ////////////////////////////////////////
nxpfan 0:90dae25ad520 41 #include "MSCFileSystem.h"
nxpfan 0:90dae25ad520 42 MSCFileSystem usb("usb");
nxpfan 0:90dae25ad520 43
nxpfan 0:90dae25ad520 44 ////////////////////////////////////////
nxpfan 0:90dae25ad520 45 //////// For Ethernet test ////////
nxpfan 0:90dae25ad520 46 ////////////////////////////////////////
nxpfan 0:90dae25ad520 47 #include "EthernetNetIf.h"
nxpfan 0:90dae25ad520 48 #include "HTTPServer.h"
nxpfan 0:90dae25ad520 49 #ifdef USE_FIXED_IP
nxpfan 0:90dae25ad520 50 EthernetNetIf eth(
nxpfan 0:90dae25ad520 51 IpAddr(192,168,0,7), //IP Address
nxpfan 0:90dae25ad520 52 IpAddr(255,255,255,0), //Network Mask
nxpfan 0:90dae25ad520 53 IpAddr(192,168,0,1), //Gateway
nxpfan 0:90dae25ad520 54 IpAddr(192,168,0,1) //DNS
nxpfan 0:90dae25ad520 55 );
nxpfan 0:90dae25ad520 56 #else
nxpfan 0:90dae25ad520 57 EthernetNetIf eth;
nxpfan 0:90dae25ad520 58 #endif
nxpfan 0:90dae25ad520 59 HTTPServer svr;
nxpfan 0:90dae25ad520 60 LocalFileSystem web("webfs");
nxpfan 0:90dae25ad520 61
nxpfan 0:90dae25ad520 62
nxpfan 0:90dae25ad520 63 void test_TextLCD( void );
nxpfan 0:90dae25ad520 64 void test_file_write( char *title, char *path );
nxpfan 0:90dae25ad520 65 void test_httpserver( void );
nxpfan 0:90dae25ad520 66 int position( void );
nxpfan 0:90dae25ad520 67
nxpfan 0:90dae25ad520 68 int main() {
nxpfan 0:90dae25ad520 69 test_TextLCD();
nxpfan 0:90dae25ad520 70 wait( 1 );
nxpfan 0:90dae25ad520 71 test_file_write( "SD card", "/sd/testfile.txt" );
nxpfan 0:90dae25ad520 72 wait( 1 );
nxpfan 0:90dae25ad520 73 //test_file_write( "USB storage", "/usb/testfile.txt" );
nxpfan 0:90dae25ad520 74 //wait( 1 );
nxpfan 0:90dae25ad520 75 test_httpserver();
nxpfan 0:90dae25ad520 76 }
nxpfan 0:90dae25ad520 77
nxpfan 0:90dae25ad520 78
nxpfan 0:90dae25ad520 79 void test_TextLCD( void ) {
nxpfan 0:90dae25ad520 80 // TextLCD test
nxpfan 0:90dae25ad520 81
nxpfan 0:90dae25ad520 82 #ifdef USE_TextLCD_20x4
nxpfan 0:90dae25ad520 83 lcd.locate( 0, 0 );
nxpfan 0:90dae25ad520 84 for ( int i = 0, c = '0'; i < 20; i++, c++ )
nxpfan 0:90dae25ad520 85 lcd.putc( c );
nxpfan 0:90dae25ad520 86
nxpfan 0:90dae25ad520 87 for ( int i = 0, c = 'A'; i < 20; i++, c++ )
nxpfan 0:90dae25ad520 88 lcd.putc( c );
nxpfan 0:90dae25ad520 89
nxpfan 0:90dae25ad520 90 for ( int i = 0, c = 'a'; i < 20; i++, c++ )
nxpfan 0:90dae25ad520 91 lcd.putc( c );
nxpfan 0:90dae25ad520 92 for ( int i = 0, c = '0' - 10; i < 20; i++, c++ )
nxpfan 0:90dae25ad520 93 lcd.putc( c );
nxpfan 0:90dae25ad520 94
nxpfan 0:90dae25ad520 95 wait( 2 );
nxpfan 0:90dae25ad520 96 lcd.cls();
nxpfan 0:90dae25ad520 97 #endif // USE_TextLCD_20x4
nxpfan 0:90dae25ad520 98
nxpfan 0:90dae25ad520 99 lcd.locate( 0, 0 );
nxpfan 0:90dae25ad520 100 lcd.printf( "TextLCD: OK?" );
nxpfan 0:90dae25ad520 101 lcd.locate( 0, 1 );
nxpfan 0:90dae25ad520 102 lcd.printf( "" );
nxpfan 0:90dae25ad520 103
nxpfan 0:90dae25ad520 104 }
nxpfan 0:90dae25ad520 105
nxpfan 0:90dae25ad520 106 void test_file_write( char *title, char *path ) {
nxpfan 0:90dae25ad520 107 // SD card test
nxpfan 0:90dae25ad520 108 lcd.locate( 0, position() );
nxpfan 0:90dae25ad520 109 lcd.printf( "%s: ", title );
nxpfan 0:90dae25ad520 110
nxpfan 0:90dae25ad520 111 FILE *fp = fopen( path, "w" );
nxpfan 0:90dae25ad520 112 if ( fp == NULL ) {
nxpfan 0:90dae25ad520 113 lcd.printf( "error" );
nxpfan 0:90dae25ad520 114 error( "Could not open file for write\n" );
nxpfan 0:90dae25ad520 115 }
nxpfan 0:90dae25ad520 116 fprintf( fp, "Hello world, %s!", title );
nxpfan 0:90dae25ad520 117 fclose( fp );
nxpfan 0:90dae25ad520 118
nxpfan 0:90dae25ad520 119 lcd.printf( "OK." );
nxpfan 0:90dae25ad520 120 }
nxpfan 0:90dae25ad520 121
nxpfan 0:90dae25ad520 122
nxpfan 0:90dae25ad520 123 void test_httpserver( void ) {
nxpfan 0:90dae25ad520 124 DigitalOut led1( LED1 );
nxpfan 0:90dae25ad520 125
nxpfan 0:90dae25ad520 126 lcd.locate( 0, position() );
nxpfan 0:90dae25ad520 127 lcd.printf( "HTTP srv: " );
nxpfan 0:90dae25ad520 128
nxpfan 0:90dae25ad520 129 Base::add_rpc_class<DigitalOut>();
nxpfan 0:90dae25ad520 130
nxpfan 0:90dae25ad520 131 printf("Setting up...n");
nxpfan 0:90dae25ad520 132 EthernetErr ethErr = eth.setup();
nxpfan 0:90dae25ad520 133 if ( ethErr ) {
nxpfan 0:90dae25ad520 134 lcd.printf( "error" );
nxpfan 0:90dae25ad520 135 error( "error @ eth.setup()\n" );
nxpfan 0:90dae25ad520 136 }
nxpfan 0:90dae25ad520 137 lcd.printf("OK ");
nxpfan 0:90dae25ad520 138
nxpfan 0:90dae25ad520 139 FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
nxpfan 0:90dae25ad520 140
nxpfan 0:90dae25ad520 141 svr.addHandler<FSHandler>("/"); //Default handler
nxpfan 0:90dae25ad520 142
nxpfan 0:90dae25ad520 143 svr.bind(80);
nxpfan 0:90dae25ad520 144
nxpfan 0:90dae25ad520 145 lcd.locate( 5, position() -1 );
nxpfan 0:90dae25ad520 146 lcd.printf("Listening");
nxpfan 0:90dae25ad520 147
nxpfan 0:90dae25ad520 148 Timer tm;
nxpfan 0:90dae25ad520 149 tm.start();
nxpfan 0:90dae25ad520 150 //Listen indefinitely
nxpfan 0:90dae25ad520 151 while (true) {
nxpfan 0:90dae25ad520 152 Net::poll();
nxpfan 0:90dae25ad520 153 if (tm.read()>.5) {
nxpfan 0:90dae25ad520 154 led1=!led1; //Show that we are alive
nxpfan 0:90dae25ad520 155 tm.start();
nxpfan 0:90dae25ad520 156 }
nxpfan 0:90dae25ad520 157 }
nxpfan 0:90dae25ad520 158 }
nxpfan 0:90dae25ad520 159
nxpfan 0:90dae25ad520 160
nxpfan 0:90dae25ad520 161 int position( void ) {
nxpfan 0:90dae25ad520 162 static int p = 0;
nxpfan 0:90dae25ad520 163
nxpfan 0:90dae25ad520 164 #ifdef USE_TextLCD_20x4
nxpfan 0:90dae25ad520 165 return( ++p % 4 );
nxpfan 0:90dae25ad520 166 #else
nxpfan 0:90dae25ad520 167 return( ++p % 2 );
nxpfan 0:90dae25ad520 168 #endif
nxpfan 0:90dae25ad520 169 }
nxpfan 0:90dae25ad520 170