USBMSD SD card Hello World for Mbed platforms
Dependencies: mbed USBMSD_SD USBDevice
Diff: USBDevice/USBDevice/USBDevice.h
- Revision:
- 16:c753717bfd4d
- Parent:
- 15:f848b71c4440
- Child:
- 17:364ef42e502d
--- a/USBDevice/USBDevice/USBDevice.h Tue Dec 06 14:07:51 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ -/* USBDevice.h */ -/* Generic USB device */ -/* Copyright (c) 2011 ARM Limited. All rights reserved. */ - -#ifndef USBDEVICE_H -#define USBDEVICE_H - -#include "mbed.h" -#include "USBDevice_Types.h" -#include "USBBusInterface.h" - - - -class USBDevice: public USBHAL -{ -public: - USBDevice(uint16_t vendor_id, uint16_t product_id, uint16_t product_release); - - /* - * Check if the device is configured - * - * @returns true if configured, false otherwise - */ - bool configured(void); - - /* - * Connect a device - */ - void connect(void); - - /* - * Disconnect a device - */ - void disconnect(void); - - /* - * Add an endpoint - * - * @param endpoint endpoint which will be added - * @param maxPacket Maximum size of a packet which can be sent for this endpoint - * @returns true if successful, false otherwise - */ - bool addEndpoint(uint8_t endpoint, uint32_t maxPacket); - - /* - * Start a reading on a certain endpoint. - * You can access the result of the reading by USBDevice_read - * - * @param endpoint endpoint which will be read - * @param maxSize the maximum length that can be read - * @return true if successful - */ - bool readStart(uint8_t endpoint, uint16_t maxSize); - - /* - * Read a certain endpoint. Before calling this function, USBUSBDevice_readStart - * must be called. - * - * Warning: blocking - * - * @param endpoint endpoint which will be read - * @param buffer buffer will be filled with the data received - * @param size the number of bytes read will be stored in *size - * @param maxSize the maximum length that can be read - * @returns true if successful - */ - bool readEP(uint8_t endpoint, uint8_t * buffer, uint16_t * size, uint16_t maxSize); - - /* - * Read a certain endpoint. - * - * Warning: non blocking - * - * @param endpoint endpoint which will be read - * @param buffer buffer will be filled with the data received (if data are available) - * @param size the number of bytes read will be stored in *size - * @param maxSize the maximum length that can be read - * @returns true if successful - */ - bool readEP_NB(uint8_t endpoint, uint8_t * buffer, uint16_t * size, uint16_t maxSize); - - /* - * Write a certain endpoint. - * - * Warning: blocking - * - * @param endpoint endpoint to write - * @param buffer data contained in buffer will be write - * @param size the number of bytes to write - * @param maxSize the maximum length that can be written on this endpoint - */ - bool write(uint8_t endpoint, uint8_t * buffer, uint16_t size, uint16_t maxSize); - - - /* - * Write a certain endpoint. - * - * Warning: non blocking - * - * @param endpoint endpoint to write - * @param buffer data contained in buffer will be write - * @param size the number of bytes to write - * @param maxSize the maximum length that can be written on this endpoint - */ - bool writeNB(uint8_t endpoint, uint8_t * buffer, uint16_t size, uint16_t maxSize); - - - /* - * Called by USBDevice layer on bus reset. Warning: Called in ISR context - * - * May be used to reset state - */ - 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 - * and class specific requests - * - * @returns true if class handles this request - */ - virtual bool USBCallback_request() { return false; }; - - /* - * Called by USBDevice on Endpoint0 request completion - * if the 'notify' flag has been set to true. Warning: Called in ISR context - * - * In this case it is used to indicate that a HID report has - * been received from the host on endpoint 0 - * - * @param buf buffer received on endpoint 0 - * @param length length of this buffer - */ - virtual void USBCallback_requestCompleted(uint8_t * buf, uint16_t length) {}; - - /* - * Called by USBDevice layer. Set configuration of the device. - * For instance, you can add all endpoints that you need on this function. - * - * @param configuration Number of the configuration - */ - virtual bool USBCallback_setConfiguration(uint8_t configuration) { return false; }; - - /* - * Called by USBDevice layer. Set interface/alternate of the device. - * - * @param interface Number of the interface to be configured - * @param alternate Number of the alternate to be configured - * @returns true if class handles this request - */ - virtual bool USBCallback_setInterface(uint16_t interface, uint8_t alternate) { return false; }; - - /* - * Get device descriptor. Warning: this method has to store the length of the report descriptor in reportLength. - * - * @returns pointer to the device descriptor - */ - virtual uint8_t * deviceDesc(); - - /* - * Get configuration descriptor - * - * @returns pointer to the configuration descriptor - */ - virtual uint8_t * configurationDesc(){return NULL;}; - - /* - * Get string lang id descriptor - * - * @return pointer to the string lang id descriptor - */ - virtual uint8_t * stringLangidDesc(); - - /* - * Get string manufacturer descriptor - * - * @returns pointer to the string manufacturer descriptor - */ - virtual uint8_t * stringImanufacturerDesc(); - - /* - * Get string product descriptor - * - * @returns pointer to the string product descriptor - */ - virtual uint8_t * stringIproductDesc(); - - /* - * Get string serial descriptor - * - * @returns pointer to the string serial descriptor - */ - virtual uint8_t * stringIserialDesc(); - - /* - * Get string configuration descriptor - * - * @returns pointer to the string configuration descriptor - */ - virtual uint8_t * stringIConfigurationDesc(); - - /* - * Get string interface descriptor - * - * @returns pointer to the string interface descriptor - */ - virtual uint8_t * stringIinterfaceDesc(); - - /* - * Get the length of the report descriptor - * - * @returns length of the report descriptor - */ - virtual uint16_t reportDescLength() { return 0; }; - - - -protected: - virtual void busReset(void); - virtual void EP0setupCallback(void); - virtual void EP0out(void); - virtual void EP0in(void); - 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); - bool requestGetDescriptor(void); - bool controlOut(void); - bool controlIn(void); - bool requestSetAddress(void); - bool requestSetConfiguration(void); - bool requestSetFeature(void); - bool requestClearFeature(void); - bool requestGetStatus(void); - bool requestSetup(void); - bool controlSetup(void); - void decodeSetupPacket(uint8_t *data, SETUP_PACKET *packet); - bool requestGetConfiguration(void); - bool requestGetInterface(void); - bool requestSetInterface(void); - - CONTROL_TRANSFER transfer; - USB_DEVICE device; - - uint16_t currentInterface; - uint8_t currentAlternate; -}; - - -#endif