BaseUsbHost example program

Dependencies:   BaseUsbHost FATFileSystem mbed mbed-rtos

Committer:
va009039
Date:
Wed Dec 05 13:25:18 2012 +0000
Revision:
1:80205a2de336
Parent:
0:2a9734a95d55
add LifeCamVX700

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:80205a2de336 1 // UsbMouseHost.cpp 2012/12/5
va009039 0:2a9734a95d55 2 #include "mbed.h"
va009039 0:2a9734a95d55 3 #include "rtos.h"
va009039 0:2a9734a95d55 4 #include "BaseUsbHost.h"
va009039 1:80205a2de336 5 #define DEBUG
va009039 0:2a9734a95d55 6 #include "BaseUsbHostDebug.h"
va009039 0:2a9734a95d55 7 #define TEST
va009039 0:2a9734a95d55 8 #include "BaseUsbHostTest.h"
va009039 0:2a9734a95d55 9 #include "UsbMouseHost.h"
va009039 0:2a9734a95d55 10
va009039 0:2a9734a95d55 11 UsbMouseHost::UsbMouseHost(ControlEp* ctlEp)
va009039 0:2a9734a95d55 12 {
va009039 0:2a9734a95d55 13 if (ctlEp == NULL) { // root hub
va009039 0:2a9734a95d55 14 DBG_OHCI(LPC_USB->HcRhPortStatus1);
va009039 0:2a9734a95d55 15 int lowSpeed = 0;
va009039 0:2a9734a95d55 16 if (LPC_USB->HcRhPortStatus1 & 0x200) {
va009039 0:2a9734a95d55 17 lowSpeed = 1;
va009039 0:2a9734a95d55 18 }
va009039 1:80205a2de336 19 ctlEp = new ControlEp(lowSpeed);
va009039 1:80205a2de336 20 TEST_ASSERT_TRUE(ctlEp);
va009039 0:2a9734a95d55 21 }
va009039 1:80205a2de336 22 bool r = check(ctlEp);
va009039 1:80205a2de336 23 TEST_ASSERT(r);
va009039 1:80205a2de336 24
va009039 1:80205a2de336 25 int rc = ctlEp->SetConfiguration(1);
va009039 0:2a9734a95d55 26 TEST_ASSERT_EQUAL(rc, USB_OK);
va009039 0:2a9734a95d55 27
va009039 1:80205a2de336 28 int addr = ctlEp->GetAddr();
va009039 1:80205a2de336 29 int lowSpeed = ctlEp->GetLowSpeed();
va009039 0:2a9734a95d55 30 m_intEp = new InterruptEp(addr, 0x81, 8, lowSpeed);
va009039 0:2a9734a95d55 31 TEST_ASSERT_TRUE(m_intEp);
va009039 0:2a9734a95d55 32 }
va009039 0:2a9734a95d55 33
va009039 1:80205a2de336 34 bool UsbMouseHost::check(ControlEp* ctlEp)
va009039 1:80205a2de336 35 {
va009039 1:80205a2de336 36 if (ctlEp == NULL) {
va009039 1:80205a2de336 37 return false;
va009039 1:80205a2de336 38 }
va009039 1:80205a2de336 39 uint8_t buf[8];
va009039 1:80205a2de336 40 int r = ctlEp->GetDescriptor(1, 0, buf, 8);
va009039 1:80205a2de336 41 if (r != USB_OK) {
va009039 1:80205a2de336 42 return false;
va009039 1:80205a2de336 43 }
va009039 1:80205a2de336 44 DBG_HEX(buf, 8);
va009039 1:80205a2de336 45 if (buf[4] != 0x00) { // HID ?
va009039 1:80205a2de336 46 return false;
va009039 1:80205a2de336 47 }
va009039 1:80205a2de336 48 return true;
va009039 1:80205a2de336 49 }
va009039 1:80205a2de336 50
va009039 0:2a9734a95d55 51 int UsbMouseHost::read(uint32_t* status, int millisec)
va009039 0:2a9734a95d55 52 {
va009039 1:80205a2de336 53 int rc = m_intEp->interruptReceive(reinterpret_cast<uint8_t*>(status), 4, millisec);
va009039 0:2a9734a95d55 54 if (rc < 0) { // error?
va009039 0:2a9734a95d55 55 *status = 0x00000000;
va009039 0:2a9734a95d55 56 return rc;
va009039 0:2a9734a95d55 57 }
va009039 0:2a9734a95d55 58 return USB_OK;
va009039 0:2a9734a95d55 59 }