Annotation of XNU/iokit/IOKit/usb/IOUSBInterface.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * Copyright (c) 1998 Apple Computer, Inc.  All rights reserved.
        !            24:  *
        !            25:  * HISTORY
        !            26:  *
        !            27:  */
        !            28: 
        !            29: 
        !            30: #ifndef _IOKIT_IOUSBINTERFACE_H
        !            31: #define _IOKIT_IOUSBINTERFACE_H
        !            32: 
        !            33: #include <IOKit/IOService.h>
        !            34: #include <libkern/c++/OSData.h>
        !            35: 
        !            36: #include <IOKit/usb/USB.h>
        !            37: #include <IOKit/usb/IOUSBNub.h>
        !            38: 
        !            39: class IOUSBDevice;
        !            40: 
        !            41: /*!
        !            42:     @class IOUSBInterface
        !            43:     @abstract The object representing an interface of a device on the USB bus.
        !            44:     @discussion This class provides functionality to find the pipes of an interface and
        !            45:        to read the descriptors associated with an interface. When an interface is open()ed,
        !            46:        all its pipes are created
        !            47: */
        !            48: class IOUSBInterface : public IOUSBNub
        !            49: {
        !            50:     OSDeclareDefaultStructors(IOUSBInterface)
        !            51: 
        !            52: protected:
        !            53:     IOUSBPipe *                        _pipeList[kUSBMaxPipes];
        !            54:     const IOUSBConfigurationDescriptor *_configDesc;
        !            55:     const IOUSBInterfaceDescriptor *   _interfaceDesc;
        !            56:     IOUSBDevice *                      _device;
        !            57:     UInt8                              _currentAlt;
        !            58: 
        !            59:     virtual void cleanPipes(void);     // close all pipes (except pipe zero)
        !            60:     // Create an IOUserClient object to handle communication with User task
        !            61:     virtual IOReturn newUserClient( task_t             owningTask,
        !            62:                                 void *                 security_id,
        !            63:                                 UInt32                 type,
        !            64:                                 IOUserClient **        handler );
        !            65: 
        !            66: 
        !            67: public:
        !            68: 
        !            69:     virtual bool init(OSDictionary * propTable,
        !            70:                const IOUSBConfigurationDescriptor *cfDesc,
        !            71:                       const IOUSBInterfaceDescriptor *ifDesc);
        !            72:     virtual bool attach(IOService *provider);
        !            73:     virtual bool finalize(IOOptionBits options);
        !            74: 
        !            75:     /*!
        !            76:         @function findNextAltInterface
        !            77:         return alternate interface descriptor satisfying the requirements specified in request, or NULL if there aren't any.
        !            78:         request is updated with the properties of the returned interface.
        !            79:         @param current interface descriptor to start searching from, NULL to start at alternate interface 0.
        !            80:         @param request specifies what properties an interface must have to match.
        !            81:         @result Pointer to a matching interface descriptor, or NULL if none match.
        !            82:     */
        !            83:     virtual const IOUSBInterfaceDescriptor *findNextAltInterface(const IOUSBInterfaceDescriptor *current,
        !            84:                                                         FindInterfaceRequest *request);
        !            85: 
        !            86:     /*!
        !            87:        @function findNextPipe
        !            88:        Find a pipe of the interface that matches the requirements, either
        !            89:        starting from the beginning of the interface's pipe list or from a specified
        !            90:        pipe.
        !            91:        @param current Pipe to start searching from, NULL to start from beginning of list.
        !            92:        @param request Requirements for pipe to match, updated with the found pipe's
        !            93:        properties.
        !            94:        @result Pointer to the pipe, or NULL if no pipe matches the request.
        !            95:     */
        !            96:     virtual IOUSBPipe *findNextPipe(IOUSBPipe *current,
        !            97:                                IOUSBFindEndpointRequest *request);
        !            98: 
        !            99:     /*!
        !           100:         @function findNextAssociatedDescriptor
        !           101:         Find the next descriptor of the requested type associated with the interface.
        !           102:        @param current Descriptor to start searching from, NULL to start from beginning of list.
        !           103:        @param type Descriptor type to search for, or kUSBAnyDesc to return any descriptor type.
        !           104:        @result Pointer to the descriptor, or NULL if no matching descriptors found.
        !           105:     */
        !           106:     virtual const IOUSBDescriptorHeader *
        !           107:        findNextAssociatedDescriptor(const void *current, UInt8 type);
        !           108: 
        !           109:     /*!
        !           110:         @function setAlternateInterface
        !           111:         Select the specified alternate interface.
        !           112:        @param alternateSetting Alternate setting (from the alternate interface's interface descriptor).
        !           113:     */
        !           114:     virtual IOReturn setAlternateInterface(UInt8 alternateSetting);
        !           115: 
        !           116:     /* Open / Close, overriden to open/close all the pipes */
        !           117:     virtual bool open(          IOService *       forClient,
        !           118:                          IOOptionBits     options = 0,
        !           119:                          void *                   arg = 0 );
        !           120:     virtual void close(  IOService *      forClient,
        !           121:                          IOOptionBits     options = 0 );
        !           122: 
        !           123:     // Lowlevel requests for non-standard device requests
        !           124:     virtual IOReturn deviceRequest(IOUSBDevRequest     *request,
        !           125:                                    IOUSBCompletion     *completion = 0);
        !           126: 
        !           127:     /*!
        !           128:         @function getConfigValue
        !           129:        returns the device configuration value for the interface
        !           130:        @result The device configuration value.
        !           131:     */
        !           132:     UInt8 getConfigValue();
        !           133:     /*!
        !           134:         @function interfaceDescriptor
        !           135:         returns the interface descriptor for the interface
        !           136:        @result Pointer to the interface descriptor.
        !           137:     */
        !           138:     const IOUSBInterfaceDescriptor * interfaceDescriptor();
        !           139:     /*!
        !           140:         @function device
        !           141:         returns the device the interface is part of.
        !           142:        @result Pointer to the device.
        !           143:     */
        !           144:     IOUSBDevice * device();
        !           145: };
        !           146: 
        !           147: #endif /* _IOKIT_IOUSBINTERFACE_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.