Ika Shouyu Poppoyaki - LPC82x supported

Dependencies:   MODSERIAL mbed

Fork of ika_shouyu_poppoyaki by Tedd OKANO

Committer:
k4zuki
Date:
Sat Oct 18 07:36:54 2014 +0000
Revision:
42:2b40666d8177
Parent:
39:f68f9fa1e88e
LPC82x series supported (only 824 is tested)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 21:e149d0bdbf4a 1 #include "mbed.h"
okano 22:bd98a782fba6 2 #include "serial_utilities.h"
okano 30:e0d7524661ca 3 #include "isp.h"
okano 21:e149d0bdbf4a 4
okano 21:e149d0bdbf4a 5 Serial pc ( USBTX,USBRX );
okano 21:e149d0bdbf4a 6
okano 21:e149d0bdbf4a 7 #if 0
okano 21:e149d0bdbf4a 8 Serial target( p28, p27 );
okano 21:e149d0bdbf4a 9 #else
okano 21:e149d0bdbf4a 10 #define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512
okano 21:e149d0bdbf4a 11 #define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 512
okano 21:e149d0bdbf4a 12 #include "MODSERIAL.h"
okano 21:e149d0bdbf4a 13 MODSERIAL target( p28, p27 ); //
okano 21:e149d0bdbf4a 14 #endif
okano 21:e149d0bdbf4a 15
okano 26:a63e73885b21 16 Timeout timeout;
okano 26:a63e73885b21 17
okano 26:a63e73885b21 18 int timeout_flag = 0;
okano 26:a63e73885b21 19
okano 26:a63e73885b21 20
okano 21:e149d0bdbf4a 21 void set_target_baud_rate( int baud_rate )
okano 21:e149d0bdbf4a 22 {
okano 21:e149d0bdbf4a 23 target.baud( baud_rate );
okano 21:e149d0bdbf4a 24 }
okano 21:e149d0bdbf4a 25
okano 21:e149d0bdbf4a 26
okano 21:e149d0bdbf4a 27 void usb_serial_bridge_operation( void )
okano 21:e149d0bdbf4a 28 {
okano 21:e149d0bdbf4a 29 while (1) {
okano 21:e149d0bdbf4a 30
okano 21:e149d0bdbf4a 31 if ( pc.readable() ) {
okano 21:e149d0bdbf4a 32 target.putc( pc.getc() );
okano 21:e149d0bdbf4a 33 }
okano 21:e149d0bdbf4a 34
okano 21:e149d0bdbf4a 35 if ( target.readable() ) {
okano 21:e149d0bdbf4a 36 pc.putc( target.getc() );
okano 21:e149d0bdbf4a 37 }
okano 21:e149d0bdbf4a 38 }
okano 21:e149d0bdbf4a 39 }
okano 21:e149d0bdbf4a 40
okano 21:e149d0bdbf4a 41
okano 21:e149d0bdbf4a 42 void put_string( char *s )
okano 21:e149d0bdbf4a 43 {
okano 21:e149d0bdbf4a 44 char c;
okano 21:e149d0bdbf4a 45
okano 21:e149d0bdbf4a 46 while ( c = *s++ ) {
okano 21:e149d0bdbf4a 47 target.putc( c );
okano 28:689c3880e0e4 48 toggle_led( 0 );
okano 21:e149d0bdbf4a 49 }
okano 21:e149d0bdbf4a 50 }
okano 21:e149d0bdbf4a 51
okano 21:e149d0bdbf4a 52
okano 21:e149d0bdbf4a 53 void put_binary( char *b, int size )
okano 21:e149d0bdbf4a 54 {
okano 28:689c3880e0e4 55 for ( int i = 0; i < size; i++ ) {
okano 21:e149d0bdbf4a 56 target.putc( *b++ );
okano 28:689c3880e0e4 57 toggle_led( 0 );
okano 28:689c3880e0e4 58 }
okano 21:e149d0bdbf4a 59 }
okano 21:e149d0bdbf4a 60
okano 21:e149d0bdbf4a 61 void set_flag()
okano 21:e149d0bdbf4a 62 {
okano 21:e149d0bdbf4a 63 timeout_flag = 1;
okano 21:e149d0bdbf4a 64 }
okano 21:e149d0bdbf4a 65
okano 21:e149d0bdbf4a 66
okano 21:e149d0bdbf4a 67 void get_string( char *s )
okano 21:e149d0bdbf4a 68 {
okano 21:e149d0bdbf4a 69 int i = 0;
okano 21:e149d0bdbf4a 70 char c = 0;
okano 21:e149d0bdbf4a 71 timeout_flag = 0;
okano 21:e149d0bdbf4a 72
okano 21:e149d0bdbf4a 73 timeout.attach( &set_flag, 1 );
okano 21:e149d0bdbf4a 74
okano 21:e149d0bdbf4a 75 do {
okano 21:e149d0bdbf4a 76 do {
okano 21:e149d0bdbf4a 77 if ( target.readable() ) {
okano 21:e149d0bdbf4a 78 c = target.getc();
okano 21:e149d0bdbf4a 79
okano 21:e149d0bdbf4a 80 if ( ( c == '\n') || (c == '\r') )
okano 21:e149d0bdbf4a 81 break;
okano 21:e149d0bdbf4a 82
okano 21:e149d0bdbf4a 83 *s++ = c;
okano 21:e149d0bdbf4a 84 i++;
okano 28:689c3880e0e4 85 toggle_led( 1 );
okano 21:e149d0bdbf4a 86 }
okano 21:e149d0bdbf4a 87
okano 21:e149d0bdbf4a 88 if ( timeout_flag )
okano 21:e149d0bdbf4a 89 return;
okano 21:e149d0bdbf4a 90 } while ( 1 );
okano 21:e149d0bdbf4a 91 } while ( !i );
okano 21:e149d0bdbf4a 92
okano 21:e149d0bdbf4a 93 *s = '\0';
okano 21:e149d0bdbf4a 94 }
okano 21:e149d0bdbf4a 95
okano 21:e149d0bdbf4a 96
okano 21:e149d0bdbf4a 97 int get_binary( char *b, int length )
okano 21:e149d0bdbf4a 98 {
okano 21:e149d0bdbf4a 99 int i;
okano 21:e149d0bdbf4a 100
okano 21:e149d0bdbf4a 101 timeout_flag = 0;
okano 21:e149d0bdbf4a 102 timeout.attach( &set_flag, 1 );
okano 21:e149d0bdbf4a 103
okano 39:f68f9fa1e88e 104 for ( i = 0; i < length; ) {
okano 28:689c3880e0e4 105 if ( target.readable() ) {
okano 21:e149d0bdbf4a 106 *b++ = target.getc();
okano 39:f68f9fa1e88e 107 i++;
okano 28:689c3880e0e4 108 toggle_led( 1 );
okano 28:689c3880e0e4 109 }
okano 29:96e28bc1bd99 110
okano 21:e149d0bdbf4a 111 if ( timeout_flag )
okano 21:e149d0bdbf4a 112 return ( i );
okano 21:e149d0bdbf4a 113 }
okano 21:e149d0bdbf4a 114
okano 21:e149d0bdbf4a 115 return ( i );
okano 21:e149d0bdbf4a 116 }
okano 21:e149d0bdbf4a 117
okano 21:e149d0bdbf4a 118
okano 21:e149d0bdbf4a 119 char read_byte( void )
okano 21:e149d0bdbf4a 120 {
okano 21:e149d0bdbf4a 121 while ( !target.readable() )
okano 21:e149d0bdbf4a 122 ;
okano 21:e149d0bdbf4a 123
okano 21:e149d0bdbf4a 124 return ( target.getc() );
okano 21:e149d0bdbf4a 125 }
okano 21:e149d0bdbf4a 126
okano 21:e149d0bdbf4a 127