USB Composite support
Dependents: mbed_cdc_hid_composite
Fork of USBDevice by
Diff: USBDevice/USBDevice.h
- Revision:
- 55:7c559fcb1d17
- Parent:
- 25:7c72828865f3
diff -r 461d954eee6b -r 7c559fcb1d17 USBDevice/USBDevice.h --- a/USBDevice/USBDevice.h Fri May 22 08:45:47 2015 +0100 +++ b/USBDevice/USBDevice.h Sun May 31 15:36:50 2015 +0000 @@ -22,11 +22,13 @@ #include "mbed.h" #include "USBDevice_Types.h" #include "USBHAL.h" +#include "USBInterface.h" + class USBDevice: public USBHAL { public: - USBDevice(uint16_t vendor_id, uint16_t product_id, uint16_t product_release); + USBDevice(uint16_t vendor_id = 0x1f00, uint16_t product_id = 0x2012, uint16_t product_release = 0x0001); /* * Check if the device is configured @@ -126,6 +128,7 @@ */ virtual void USBCallback_busReset(void) {}; + /* * Called by USBDevice on Endpoint0 request. Warning: Called in ISR context * This is used to handle extensions to standard requests @@ -133,7 +136,12 @@ * * @returns true if class handles this request */ - virtual bool USBCallback_request() { return false; }; + virtual bool USBCallback_request() { + if (_intf) + return _intf->USBCallback_request(); + else + return false; + }; /* * Called by USBDevice on Endpoint0 request completion @@ -145,7 +153,10 @@ * @param buf buffer received on endpoint 0 * @param length length of this buffer */ - virtual void USBCallback_requestCompleted(uint8_t * buf, uint32_t length) {}; + virtual void USBCallback_requestCompleted(uint8_t * buf, uint32_t length) { + if (_intf) + _intf->USBCallback_requestCompleted(buf, length); + }; /* * Called by USBDevice layer. Set configuration of the device. @@ -153,7 +164,11 @@ * * @param configuration Number of the configuration */ - virtual bool USBCallback_setConfiguration(uint8_t configuration) { return false; }; + virtual bool USBCallback_setConfiguration(uint8_t configuration) { + if (_intf) + return _intf->USBCallback_setConfiguration(configuration); + return false; + }; /* * Called by USBDevice layer. Set interface/alternate of the device. @@ -176,7 +191,11 @@ * * @returns pointer to the configuration descriptor */ - virtual uint8_t * configurationDesc(){return NULL;}; + virtual uint8_t * configurationDesc(){ + if (_intf) + return _intf->configurationDesc(); + return NULL; + }; /* * Get string lang id descriptor @@ -227,7 +246,16 @@ */ virtual uint16_t reportDescLength() { return 0; }; + CONTROL_TRANSFER * getTransferPtr(void); + virtual bool bind(USBInterface *intf) { + _intf = intf; + return true; + } + + uint16_t VENDOR_ID; + uint16_t PRODUCT_ID; + uint16_t PRODUCT_RELEASE; protected: virtual void busReset(void); @@ -237,11 +265,7 @@ virtual void connectStateChanged(unsigned int connected); virtual void suspendStateChanged(unsigned int suspended); uint8_t * findDescriptor(uint8_t descriptorType); - CONTROL_TRANSFER * getTransferPtr(void); - uint16_t VENDOR_ID; - uint16_t PRODUCT_ID; - uint16_t PRODUCT_RELEASE; private: bool addRateFeedbackEndpoint(uint8_t endpoint, uint32_t maxPacket); @@ -265,6 +289,8 @@ uint16_t currentInterface; uint8_t currentAlternate; + + USBInterface *_intf; };