diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2010-12-14 16:35:10 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2010-12-14 16:35:10 +0000 |
commit | c50f2a170433a0f85212c81374bbb62806ad3768 (patch) | |
tree | a2a1f5aad769298908aeb89c0634bd8eb2a12680 | |
parent | a27081f6dd44ec2fa6fa02a2c08af2c6730591c8 (diff) | |
download | nuttx-c50f2a170433a0f85212c81374bbb62806ad3768.tar.gz nuttx-c50f2a170433a0f85212c81374bbb62806ad3768.tar.bz2 nuttx-c50f2a170433a0f85212c81374bbb62806ad3768.zip |
Add MS class skeleton
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3174 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r-- | nuttx/drivers/usbhost/usbhost_storage.c | 128 | ||||
-rw-r--r-- | nuttx/include/nuttx/usb/usbhost.h | 23 |
2 files changed, 149 insertions, 2 deletions
diff --git a/nuttx/drivers/usbhost/usbhost_storage.c b/nuttx/drivers/usbhost/usbhost_storage.c new file mode 100644 index 000000000..a26a8b37b --- /dev/null +++ b/nuttx/drivers/usbhost/usbhost_storage.c @@ -0,0 +1,128 @@ +/**************************************************************************** + * drivers/usbhost/usbhost_storage.c + * + * Copyright (C) 2010 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt <spudmonkey@racsa.co.cr> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> + +#include <nuttx/usb/usb.h> +#include <nuttx/usb/usbhost.h> + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static struct usbhost_class_s *usbhost_create(struct usbhost_driver_s *drvr); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +struct usbhost_registry_s g_storage = +{ + NULL, /* flink */ + usbhost_create, /* create */ + { + USB_CLASS_MASS_STORAGE, /* id.class */ + 0, /* id.vid */ + 0 /* id.pid */ + } +}; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: usbhost_create + * + * Description: + * This function implements the create() method of struct usb_registry_s. + * The create() method is a callback into the class implementation. It is + * used to (1) create a new instance of the USB host class state and to (2) + * bind a USB host driver "session" to the class instance. Use of this + * create() method will support environments where there may be multiple + * USB ports and multiple USB devices simultaneously connected. + * + * Input Parameters: + * drvr - An instance of struct usbhost_driver_s that the class + * implementation will "bind" to its state structure and will + * subsequently use to communicate with the USB host driver. + * + * Returned Values: + * On success, this function will return a non-NULL instance of struct + * usbhost_class_s that can be used by the USB host driver to communicate + * with the USB host class. NULL is returned on failure; this function + * will fail only if the drvr input parameter is NULL or if there are + * insufficient resources to create another USB host class instance. + * + ****************************************************************************/ + +static struct usbhost_class_s *usbhost_create(struct usbhost_driver_s *drvr) +{ +#warning "Not implemented" + return NULL; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: usbhost_storageinit + * + * Description: + * Initialize the USB host storage class. This function should be called + * be platform-specific code in order to initialize and register support + * for the USB host storage class. + * + * Input Parameters: + * None + * + * Returned Values: + * On success this function will return zero (OK); A negated errno value + * will be returned on failure. + * + ****************************************************************************/ + +int usbhost_storageinit(void) +{ + /* Advertise our availability to support mass storage devices */ + + return usbhost_registerclass(&g_storage); +} + diff --git a/nuttx/include/nuttx/usb/usbhost.h b/nuttx/include/nuttx/usb/usbhost.h index 867843170..972584fd1 100644 --- a/nuttx/include/nuttx/usb/usbhost.h +++ b/nuttx/include/nuttx/usb/usbhost.h @@ -113,7 +113,7 @@ struct usbhost_registry_s * provide those instances in write-able memory (RAM). */ - struct usbhsot_registry_s flink; + struct usbhost_registry_s flink; /* This is a callback into the class implementation. It is used to (1) create * a new instance of the USB host class state and to (2) bind a USB host driver @@ -122,7 +122,7 @@ struct usbhost_registry_s * simultaneously connected (see the CLASS_CREATE() macro above). */ - struct usbhost_class_s *(*create)(struct usbhost_driver_s *drvr); + struct usbhost_class_s *(*create)(struct usbhost_driver_s *drvr); /* This information uniquely identifies the USB host class implementation that * goes with a specific USB device. @@ -191,6 +191,25 @@ EXTERN int usbhost_registerclass(struct usbhost_registry_s *class); EXTERN const struct usbhost_registry_s *usbhost_findclass(const struct usbhost_id_s *id); +/**************************************************************************** + * Name: usbhost_storageinit + * + * Description: + * Initialize the USB host storage class. This function should be called + * be platform-specific code in order to initialize and register support + * for the USB host storage class. + * + * Input Parameters: + * None + * + * Returned Values: + * On success this function will return zero (OK); A negated errno value + * will be returned on failure. + * + ****************************************************************************/ + +EXTERN int usbhost_storageinit(void); + #undef EXTERN #if defined(__cplusplus) } |