USB low speed packet capture

Dependencies:   mbed

Committer:
va009039
Date:
Mon Apr 29 08:11:31 2013 +0000
Revision:
0:654d7d47e816
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:654d7d47e816 1 // main.cpp 2013/4/29
va009039 0:654d7d47e816 2 #include "mbed.h"
va009039 0:654d7d47e816 3 #include "mbed_debug.h"
va009039 0:654d7d47e816 4 #include "usbpkt.h"
va009039 0:654d7d47e816 5
va009039 0:654d7d47e816 6 DigitalIn usb_data_p(p21); // USB DATA+
va009039 0:654d7d47e816 7 DigitalIn usb_data_m(p22); // USB DATA-
va009039 0:654d7d47e816 8 DigitalOut led_usb(LED1);
va009039 0:654d7d47e816 9
va009039 0:654d7d47e816 10 #define DISP_RAW 0
va009039 0:654d7d47e816 11 #define BUFFER_SIZE (1024*16)
va009039 0:654d7d47e816 12 #define MAX_PACKET_COUNT 35
va009039 0:654d7d47e816 13
va009039 0:654d7d47e816 14 #define USB_MASK (3<<4)
va009039 0:654d7d47e816 15 #define USB_DATA (2<<4)
va009039 0:654d7d47e816 16
va009039 0:654d7d47e816 17 DigitalOut led_run(LED4);
va009039 0:654d7d47e816 18 Serial pc(USBTX, USBRX);
va009039 0:654d7d47e816 19
va009039 0:654d7d47e816 20 extern "C" {
va009039 0:654d7d47e816 21 uint8_t* capraw(uint8_t* buf, int size, int count); // lowspeed.s
va009039 0:654d7d47e816 22 }
va009039 0:654d7d47e816 23
va009039 0:654d7d47e816 24 uint8_t buf[BUFFER_SIZE];
va009039 0:654d7d47e816 25
va009039 0:654d7d47e816 26 int main() {
va009039 0:654d7d47e816 27 pc.baud(921600);
va009039 0:654d7d47e816 28 debug("%s\n", __FILE__);
va009039 0:654d7d47e816 29
va009039 0:654d7d47e816 30 usb_data_p.mode(PullNone);
va009039 0:654d7d47e816 31 usb_data_m.mode(PullNone);
va009039 0:654d7d47e816 32
va009039 0:654d7d47e816 33 while(1) {
va009039 0:654d7d47e816 34 uint8_t* ret = capraw(buf, sizeof(buf)-16, MAX_PACKET_COUNT);
va009039 0:654d7d47e816 35 usbpkt pkt;
va009039 0:654d7d47e816 36 pkt.reset();
va009039 0:654d7d47e816 37 uint8_t* p = buf;
va009039 0:654d7d47e816 38 while(p < ret) {
va009039 0:654d7d47e816 39 uint8_t d = *p++;
va009039 0:654d7d47e816 40 if ((d&USB_MASK) == 0) { // EOP ?
va009039 0:654d7d47e816 41 debug_if(DISP_RAW, "\n");
va009039 0:654d7d47e816 42 //pkt.printHEX(stdout);
va009039 0:654d7d47e816 43 pkt.printUSB(stdout);
va009039 0:654d7d47e816 44 pkt.reset();
va009039 0:654d7d47e816 45 } else {
va009039 0:654d7d47e816 46 pkt.inputRaw((d&USB_DATA) ? 1 : 0);
va009039 0:654d7d47e816 47 debug_if(DISP_RAW, "%c", (d&USB_DATA) ? '*' : '.');
va009039 0:654d7d47e816 48 }
va009039 0:654d7d47e816 49 }
va009039 0:654d7d47e816 50 debug("\n");
va009039 0:654d7d47e816 51 wait_ms(200);
va009039 0:654d7d47e816 52 led_run = !led_run;
va009039 0:654d7d47e816 53 }
va009039 0:654d7d47e816 54 }