USB protocol analyzer

Dependencies:   mbed

/media/uploads/va009039/lpc1114-usb.jpg

control:
/media/uploads/va009039/lpc1114-usb-1.png

interrupt in:
/media/uploads/va009039/lpc1114-usb-2.png

Committer:
va009039
Date:
Wed Jun 18 01:33:32 2014 +0000
Revision:
0:0faa55631ffe
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:0faa55631ffe 1 #pragma once
va009039 0:0faa55631ffe 2
va009039 0:0faa55631ffe 3 typedef enum {
va009039 0:0faa55631ffe 4 ACK = 0x02,
va009039 0:0faa55631ffe 5 NAK = 0x0a,
va009039 0:0faa55631ffe 6 STALL = 0x0e,
va009039 0:0faa55631ffe 7 DATA0 = 0x03,
va009039 0:0faa55631ffe 8 DATA1 = 0x0b,
va009039 0:0faa55631ffe 9 IN = 0x09,
va009039 0:0faa55631ffe 10 OUT = 0x01,
va009039 0:0faa55631ffe 11 SETUP = 0x0d,
va009039 0:0faa55631ffe 12 } pid_t;
va009039 0:0faa55631ffe 13
va009039 0:0faa55631ffe 14 typedef enum {
va009039 0:0faa55631ffe 15 SEQ_SYNC,
va009039 0:0faa55631ffe 16 SEQ_PID,
va009039 0:0faa55631ffe 17 SEQ_ADDR,
va009039 0:0faa55631ffe 18 SEQ_ENDP,
va009039 0:0faa55631ffe 19 SEQ_CRC5,
va009039 0:0faa55631ffe 20 SEQ_DATA,
va009039 0:0faa55631ffe 21 SEQ_CRC16,
va009039 0:0faa55631ffe 22 } seq_t;
va009039 0:0faa55631ffe 23
va009039 0:0faa55631ffe 24 class BaseUsbProtocolAnalyzer {
va009039 0:0faa55631ffe 25 public:
va009039 0:0faa55631ffe 26 BaseUsbProtocolAnalyzer();
va009039 0:0faa55631ffe 27 void init();
va009039 0:0faa55631ffe 28 void input(uint8_t data);
va009039 0:0faa55631ffe 29 bool disp_bit;
va009039 0:0faa55631ffe 30 bool disp_cycle;
va009039 0:0faa55631ffe 31 protected:
va009039 0:0faa55631ffe 32 virtual void output(char c) = 0;
va009039 0:0faa55631ffe 33
va009039 0:0faa55631ffe 34 private:
va009039 0:0faa55631ffe 35 static const int CYCLE = 32;
va009039 0:0faa55631ffe 36 void inputBit(uint8_t pat, int len);
va009039 0:0faa55631ffe 37 void inputLSB(int lsb);
va009039 0:0faa55631ffe 38 void output(const char* s);
va009039 0:0faa55631ffe 39 bool bit_stuffing;
va009039 0:0faa55631ffe 40 seq_t seq;
va009039 0:0faa55631ffe 41 struct {
va009039 0:0faa55631ffe 42 pid_t pid;
va009039 0:0faa55631ffe 43 uint8_t addr;
va009039 0:0faa55631ffe 44 uint8_t endp;
va009039 0:0faa55631ffe 45 uint8_t crc5;
va009039 0:0faa55631ffe 46 uint8_t data[8+2]; // data and crc16
va009039 0:0faa55631ffe 47 } packet;
va009039 0:0faa55631ffe 48 int bit_count;
va009039 0:0faa55631ffe 49 int data_count;
va009039 0:0faa55631ffe 50 };