Serial UART snooper. Connect RX and TX of the UUT to 2 x RX pins on mbed to inspect the traffic in both directions

Dependencies:   MODSERIAL Terminal mbed

Committer:
cbayley
Date:
Thu Sep 20 21:57:21 2012 +0000
Revision:
5:76d46f565551
Parent:
3:b8bad606d4f2
using my fork of Simon Ford Terminal

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cbayley 2:60e6df8211f2 1 #include <stdio.h>
cbayley 2:60e6df8211f2 2 #include <stdlib.h>
cbayley 2:60e6df8211f2 3 #include <stdarg.h>
cbayley 2:60e6df8211f2 4 #include "stripe.h"
cbayley 2:60e6df8211f2 5 #include "mbed.h"
cbayley 2:60e6df8211f2 6
cbayley 2:60e6df8211f2 7 #define sprintf mysprintf
cbayley 2:60e6df8211f2 8
cbayley 2:60e6df8211f2 9 int mysprintf( char * str, const char * format, ... )
cbayley 2:60e6df8211f2 10 {
cbayley 2:60e6df8211f2 11 char s[50];
cbayley 2:60e6df8211f2 12 va_list ap;
cbayley 2:60e6df8211f2 13
cbayley 2:60e6df8211f2 14 va_start(ap,format);
cbayley 2:60e6df8211f2 15 vsprintf(s,format,ap);
cbayley 2:60e6df8211f2 16 va_end(ap);
cbayley 2:60e6df8211f2 17
cbayley 2:60e6df8211f2 18 strncpy(str,s,strlen(s));
cbayley 2:60e6df8211f2 19 return strlen(s);
cbayley 2:60e6df8211f2 20 }
cbayley 2:60e6df8211f2 21
cbayley 2:60e6df8211f2 22 Stripe::Stripe( uint8_t bc, uint8_t oc, uint8_t ic )
cbayley 2:60e6df8211f2 23 {
cbayley 2:60e6df8211f2 24
cbayley 2:60e6df8211f2 25 memset((void*)&(this->strip),0x20,sizeof(Strip));
cbayley 2:60e6df8211f2 26 sprintf(this->strip.bgc, "\033[48;5;%03um", bc );
cbayley 2:60e6df8211f2 27 sprintf(this->strip.row[0].fgc, "\033[38;5;%03um", oc );
cbayley 2:60e6df8211f2 28 sprintf(this->strip.row[1].fgc, "\033[38;5;%03um", ic );
cbayley 2:60e6df8211f2 29 sprintf(this->strip.row[0].eol, "\n\r" );
cbayley 2:60e6df8211f2 30 sprintf(this->strip.row[1].eol, "\n\r" );
cbayley 2:60e6df8211f2 31 this->wp = 0;
cbayley 2:60e6df8211f2 32 this->rp =0;
cbayley 2:60e6df8211f2 33
cbayley 2:60e6df8211f2 34 }
cbayley 2:60e6df8211f2 35
cbayley 2:60e6df8211f2 36
cbayley 2:60e6df8211f2 37 int Stripe::advance( void )
cbayley 2:60e6df8211f2 38 {
cbayley 3:b8bad606d4f2 39 if ( ++ wp >= 16 )
cbayley 2:60e6df8211f2 40 return 0;
cbayley 2:60e6df8211f2 41 else
cbayley 2:60e6df8211f2 42 return 1;
cbayley 2:60e6df8211f2 43 }
cbayley 2:60e6df8211f2 44
cbayley 2:60e6df8211f2 45 int Stripe::inbyte( uint8_t b )
cbayley 2:60e6df8211f2 46 {
cbayley 3:b8bad606d4f2 47 sprintf(&strip.row[1].hex[wp*3], "%02X ", b );
cbayley 2:60e6df8211f2 48
cbayley 2:60e6df8211f2 49 if (b >=0x20 && b<=0x80)
cbayley 2:60e6df8211f2 50 {
cbayley 3:b8bad606d4f2 51 strip.row[1].asc[wp] = b;
cbayley 2:60e6df8211f2 52 }else{
cbayley 3:b8bad606d4f2 53 strip.row[1].asc[wp] = '.';
cbayley 2:60e6df8211f2 54 }
cbayley 3:b8bad606d4f2 55 return advance();
cbayley 2:60e6df8211f2 56 }
cbayley 2:60e6df8211f2 57
cbayley 2:60e6df8211f2 58 int Stripe::outbyte( uint8_t b )
cbayley 2:60e6df8211f2 59 {
cbayley 3:b8bad606d4f2 60 sprintf(&strip.row[0].hex[wp*3], "%02X ", b );
cbayley 2:60e6df8211f2 61
cbayley 2:60e6df8211f2 62 if (b >=0x20 && b<=0x80)
cbayley 2:60e6df8211f2 63 {
cbayley 3:b8bad606d4f2 64 strip.row[0].asc[wp] = b;
cbayley 2:60e6df8211f2 65 }else{
cbayley 3:b8bad606d4f2 66 strip.row[0].asc[wp] = '.';
cbayley 2:60e6df8211f2 67 }
cbayley 3:b8bad606d4f2 68 return advance();
cbayley 2:60e6df8211f2 69 }
cbayley 2:60e6df8211f2 70
cbayley 3:b8bad606d4f2 71 uint8_t Stripe::getc( void )
cbayley 2:60e6df8211f2 72 {
cbayley 2:60e6df8211f2 73 char c;
cbayley 2:60e6df8211f2 74
cbayley 3:b8bad606d4f2 75 while ( rp < sizeof(strip) )
cbayley 2:60e6df8211f2 76 {
cbayley 3:b8bad606d4f2 77 c = ((char*)(&strip))[rp++];
cbayley 2:60e6df8211f2 78 if (c)
cbayley 2:60e6df8211f2 79 return c;
cbayley 2:60e6df8211f2 80 }
cbayley 2:60e6df8211f2 81 return 0;
cbayley 2:60e6df8211f2 82 }