Add to 11U68 11E68

Dependencies:   DirectoryList MODSERIAL mbed

Fork of ika_shouyu_poppoyaki by Tedd OKANO

Revision:
22:bd98a782fba6
Parent:
21:e149d0bdbf4a
Child:
26:a63e73885b21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serial_utilities.cpp	Fri Sep 13 03:34:43 2013 +0000
@@ -0,0 +1,122 @@
+#include    "mbed.h"
+#include    "serial_utilities.h"
+#include    "ika.h"
+
+Serial          pc ( USBTX,USBRX );
+
+#if 0
+Serial          target( p28, p27 );
+#else
+#define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512
+#define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 512
+#include "MODSERIAL.h"
+MODSERIAL       target( p28, p27 ); //
+#endif
+
+void set_target_baud_rate( int baud_rate )
+{
+    target.baud( baud_rate );
+}
+
+
+void usb_serial_bridge_operation( void )
+{
+    while (1) {
+
+        if ( pc.readable() ) {
+            target.putc( pc.getc() );
+        }
+
+        if ( target.readable() ) {
+            pc.putc( target.getc() );
+        }
+    }
+}
+
+
+void put_string( char *s )
+{
+    char            c;
+    static int      i   = 0;
+
+    while ( c = *s++ ) {
+        target.putc( c );
+        set_leds( i++ & 0x1 );
+    }
+}
+
+
+void put_binary( char *b, int size )
+{
+    for ( int i = 0; i < size; i++ )
+        target.putc( *b++ );
+}
+
+
+Timeout timeout;
+
+int timeout_flag    = 0;
+
+void set_flag()
+{
+    timeout_flag    = 1;
+}
+
+
+void get_string( char *s )
+{
+    int     i   = 0;
+    char    c   = 0;
+    timeout_flag    = 0;
+
+    timeout.attach( &set_flag, 1 );
+
+    do {
+        do {
+            if ( target.readable() ) {
+                c  = target.getc();
+
+                if ( ( c == '\n') || (c == '\r') )
+                    break;
+
+                *s++    = c;
+                i++;
+            }
+
+            if ( timeout_flag )
+                return;
+        } while ( 1 );
+    } while ( !i );
+
+    *s  = '\0';
+}
+
+
+int get_binary( char *b, int length )
+{
+    int i;
+
+    timeout_flag    = 0;
+    timeout.attach( &set_flag, 1 );
+
+    for ( i = 0; i < length; i++ ) {
+        if ( target.readable() )
+            *b++    = target.getc();
+
+        if ( timeout_flag )
+            return ( i );
+    }
+
+    return ( i );
+}
+
+
+char read_byte( void )
+{
+    while ( !target.readable() )
+        ;
+
+    return ( target.getc() );
+}
+
+