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
stripe.cpp@5:76d46f565551, 2012-09-20 (annotated)
- 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?
User | Revision | Line number | New 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 | } |