Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbdev/include/usb/dev/driver.h

    r6883abfa r70452dd4  
    3636#define LIBUSBDEV_DRIVER_H_
    3737
    38 #include <usb/hc.h>
    39 #include <usb/dev/usb_device_connection.h>
    4038#include <usb/dev/pipes.h>
    4139
     
    4543        usb_standard_device_descriptor_t device;
    4644        /** Full configuration descriptor of current configuration. */
    47         const uint8_t *configuration;
     45        uint8_t *configuration;
    4846        size_t configuration_size;
    4947} usb_device_descriptors_t;
     
    5553typedef struct {
    5654        /** Interface descriptor. */
    57         const usb_standard_interface_descriptor_t *interface;
     55        usb_standard_interface_descriptor_t *interface;
    5856        /** Pointer to start of descriptor tree bound with this interface. */
    59         const uint8_t *nested_descriptors;
     57        uint8_t *nested_descriptors;
    6058        /** Size of data pointed by nested_descriptors in bytes. */
    6159        size_t nested_descriptors_size;
     
    7472/** USB device structure. */
    7573typedef struct {
    76         /** Connection to USB hc, used by wire and arbitrary requests. */
    77         usb_hc_connection_t hc_conn;
    78         /** Connection backing the pipes.
    79          * Typically, you will not need to use this attribute at all.
    80          */
    81         usb_device_connection_t wire;
    8274        /** The default control pipe. */
    8375        usb_pipe_t ctrl_pipe;
     
    9587        int interface_no;
    9688
    97         /** Alternative interfaces. */
    98         usb_alternate_interfaces_t alternate_interfaces;
     89        /** Alternative interfaces.
     90         * Set to NULL when the driver controls whole device
     91         * (i.e. more (or any) interfaces).
     92         */
     93        usb_alternate_interfaces_t *alternate_interfaces;
    9994
    10095        /** Some useful descriptors. */
    10196        usb_device_descriptors_t descriptors;
    10297
    103         /** Generic DDF device backing this one. DO NOT TOUCH! */
     98        /** Generic DDF device backing this one. */
    10499        ddf_dev_t *ddf_dev;
    105100        /** Custom driver data.
     
    108103         */
    109104        void *driver_data;
     105
     106        /** Connection backing the pipes.
     107         * Typically, you will not need to use this attribute at all.
     108         */
     109        usb_device_connection_t wire;
    110110} usb_device_t;
    111111
    112112/** USB driver ops. */
    113113typedef struct {
    114         /** Callback when a new device was added to the system. */
    115         int (*device_add)(usb_device_t *);
    116         /** Callback when a device is about to be removed from the system. */
    117         int (*device_rem)(usb_device_t *);
    118         /** Callback when a device was removed from the system. */
    119         int (*device_gone)(usb_device_t *);
     114        /** Callback when new device is about to be controlled by the driver. */
     115        int (*add_device)(usb_device_t *);
    120116} usb_driver_ops_t;
    121117
     
    156152\endcode
    157153         */
    158         const usb_endpoint_description_t **endpoints;
     154        usb_endpoint_description_t **endpoints;
    159155        /** Driver ops. */
    160         const usb_driver_ops_t *ops;
     156        usb_driver_ops_t *ops;
    161157} usb_driver_t;
    162158
    163 int usb_driver_main(const usb_driver_t *);
    164 
    165 int usb_device_init(usb_device_t *, ddf_dev_t *,
    166     const usb_endpoint_description_t **, const char **);
    167 void usb_device_deinit(usb_device_t *);
     159int usb_driver_main(usb_driver_t *);
    168160
    169161int usb_device_select_interface(usb_device_t *, uint8_t,
    170     const usb_endpoint_description_t **);
     162    usb_endpoint_description_t **);
    171163
    172164int usb_device_retrieve_descriptors(usb_pipe_t *, usb_device_descriptors_t *);
    173 void usb_device_release_descriptors(usb_device_descriptors_t *);
     165int usb_device_create_pipes(ddf_dev_t *, usb_device_connection_t *,
     166    usb_endpoint_description_t **, uint8_t *, size_t, int, int,
     167    usb_endpoint_mapping_t **, size_t *);
     168int usb_device_destroy_pipes(ddf_dev_t *, usb_endpoint_mapping_t *, size_t);
     169int usb_device_create(ddf_dev_t *, usb_endpoint_description_t **, usb_device_t **, const char **);
     170void usb_device_destroy(usb_device_t *);
    174171
    175 int usb_device_create_pipes(usb_device_connection_t *,
    176     const usb_endpoint_description_t **, const uint8_t *, size_t, int, int,
    177     usb_endpoint_mapping_t **, size_t *);
    178 void usb_device_destroy_pipes(usb_endpoint_mapping_t *, size_t);
     172size_t usb_interface_count_alternates(uint8_t *, size_t, uint8_t);
     173int usb_alternate_interfaces_create(uint8_t *, size_t, int,
     174    usb_alternate_interfaces_t **);
    179175
    180 void * usb_device_data_alloc(usb_device_t *, size_t);
    181 
    182 size_t usb_interface_count_alternates(const uint8_t *, size_t, uint8_t);
    183 int usb_alternate_interfaces_init(usb_alternate_interfaces_t *,
    184     const uint8_t *, size_t, int);
    185 void usb_alternate_interfaces_deinit(usb_alternate_interfaces_t *);
    186176#endif
    187177/**
Note: See TracChangeset for help on using the changeset viewer.