this transfers data (which is stored in "bin" file in mbed storage) into LPC1114, LPC1115, LPC81x, LPC82x, LPC1768/LPC1769 and LPC11U68/LPC11E68 internal flash memory through ISP.

Dependencies:   mbed MODSERIAL DirectoryList

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers serial_utilities.cpp Source File

serial_utilities.cpp

00001 #include    "mbed.h"
00002 #include    "serial_utilities.h"
00003 #include    "isp.h"
00004 
00005 Serial          pc ( USBTX,USBRX );
00006 
00007 #if 0
00008 Serial          target( p28, p27 );
00009 #else
00010 #define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512
00011 #define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 512
00012 #include "MODSERIAL.h"
00013 MODSERIAL       target( p28, p27 );   //
00014 //MODSERIAL       target(  p9, p10 ); //    if you need to change the UART pin, change here
00015 #endif
00016 
00017 Timeout timeout;
00018 
00019 int timeout_flag    = 0;
00020 
00021 
00022 void set_target_baud_rate( int baud_rate )
00023 {
00024     target.baud( baud_rate );
00025 }
00026 
00027 
00028 void usb_serial_bridge_operation( void )
00029 {
00030     while (1) {
00031 
00032         if ( pc.readable() ) {
00033             target.putc( pc.getc() );
00034         }
00035 
00036         if ( target.readable() ) {
00037             pc.putc( target.getc() );
00038         }
00039     }
00040 }
00041 
00042 
00043 void put_string( char *s )
00044 {
00045     char            c;
00046 
00047     while ( c = *s++ ) {
00048         target.putc( c );
00049         toggle_led( 0 );
00050     }
00051 }
00052 
00053 
00054 void put_binary( char *b, int size )
00055 {
00056     for ( int i = 0; i < size; i++ ) {
00057         target.putc( *b++ );
00058         toggle_led( 0 );
00059     }
00060 }
00061 
00062 void set_flag()
00063 {
00064     timeout_flag    = 1;
00065 }
00066 
00067 
00068 void get_string( char *s )
00069 {
00070     int     i   = 0;
00071     char    c   = 0;
00072     timeout_flag    = 0;
00073 
00074     timeout.attach( &set_flag, 1 );
00075 
00076     do {
00077         do {
00078             if ( target.readable() ) {
00079                 c  = target.getc();
00080 
00081                 if ( ( c == '\n') || (c == '\r') )
00082                     break;
00083 
00084                 *s++    = c;
00085                 i++;
00086                 toggle_led( 1 );
00087             }
00088 
00089             if ( timeout_flag )
00090                 return;
00091         } while ( 1 );
00092     } while ( !i );
00093 
00094     *s  = '\0';
00095 }
00096 
00097 
00098 int get_binary( char *b, int length )
00099 {
00100     int i;
00101 
00102     timeout_flag    = 0;
00103     timeout.attach( &set_flag, 1 );
00104 
00105     for ( i = 0; i < length; ) {
00106         if ( target.readable() ) {
00107             *b++    = target.getc();
00108             i++;
00109             toggle_led( 1 );
00110         }
00111 
00112         if ( timeout_flag )
00113             return ( i );
00114     }
00115 
00116     return ( i );
00117 }
00118 
00119 
00120 char read_byte( void )
00121 {
00122     while ( !target.readable() )
00123         ;
00124 
00125     return ( target.getc() );
00126 }
00127 
00128