Norimasa Okamoto
/
LPC1114_USBProtocolAnalyzer
USB protocol analyzer
control:
interrupt in:
BaseUsbProtocolAnalyzer.h@0:0faa55631ffe, 2014-06-18 (annotated)
- Committer:
- va009039
- Date:
- Wed Jun 18 01:33:32 2014 +0000
- Revision:
- 0:0faa55631ffe
first commit
Who changed what in which revision?
User | Revision | Line number | New 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 | }; |