Ignore:
File:
1 edited

Legend:

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

    r70452dd4 r6883abfa  
    3636#define LIBUSBDEV_DRIVER_H_
    3737
     38#include <usb/hc.h>
     39#include <usb/dev/usb_device_connection.h>
    3840#include <usb/dev/pipes.h>
    3941
     
    4345        usb_standard_device_descriptor_t device;
    4446        /** Full configuration descriptor of current configuration. */
    45         uint8_t *configuration;
     47        const uint8_t *configuration;
    4648        size_t configuration_size;
    4749} usb_device_descriptors_t;
     
    5355typedef struct {
    5456        /** Interface descriptor. */
    55         usb_standard_interface_descriptor_t *interface;
     57        const usb_standard_interface_descriptor_t *interface;
    5658        /** Pointer to start of descriptor tree bound with this interface. */
    57         uint8_t *nested_descriptors;
     59        const uint8_t *nested_descriptors;
    5860        /** Size of data pointed by nested_descriptors in bytes. */
    5961        size_t nested_descriptors_size;
     
    7274/** USB device structure. */
    7375typedef 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;
    7482        /** The default control pipe. */
    7583        usb_pipe_t ctrl_pipe;
     
    8795        int interface_no;
    8896
    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;
     97        /** Alternative interfaces. */
     98        usb_alternate_interfaces_t alternate_interfaces;
    9499
    95100        /** Some useful descriptors. */
    96101        usb_device_descriptors_t descriptors;
    97102
    98         /** Generic DDF device backing this one. */
     103        /** Generic DDF device backing this one. DO NOT TOUCH! */
    99104        ddf_dev_t *ddf_dev;
    100105        /** Custom driver data.
     
    103108         */
    104109        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 new device is about to be controlled by the driver. */
    115         int (*add_device)(usb_device_t *);
     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 *);
    116120} usb_driver_ops_t;
    117121
     
    152156\endcode
    153157         */
    154         usb_endpoint_description_t **endpoints;
     158        const usb_endpoint_description_t **endpoints;
    155159        /** Driver ops. */
    156         usb_driver_ops_t *ops;
     160        const usb_driver_ops_t *ops;
    157161} usb_driver_t;
    158162
    159 int usb_driver_main(usb_driver_t *);
     163int usb_driver_main(const usb_driver_t *);
     164
     165int usb_device_init(usb_device_t *, ddf_dev_t *,
     166    const usb_endpoint_description_t **, const char **);
     167void usb_device_deinit(usb_device_t *);
    160168
    161169int usb_device_select_interface(usb_device_t *, uint8_t,
    162     usb_endpoint_description_t **);
     170    const usb_endpoint_description_t **);
    163171
    164172int usb_device_retrieve_descriptors(usb_pipe_t *, usb_device_descriptors_t *);
    165 int usb_device_create_pipes(ddf_dev_t *, usb_device_connection_t *,
    166     usb_endpoint_description_t **, uint8_t *, size_t, int, int,
     173void usb_device_release_descriptors(usb_device_descriptors_t *);
     174
     175int usb_device_create_pipes(usb_device_connection_t *,
     176    const usb_endpoint_description_t **, const uint8_t *, size_t, int, int,
    167177    usb_endpoint_mapping_t **, size_t *);
    168 int usb_device_destroy_pipes(ddf_dev_t *, usb_endpoint_mapping_t *, size_t);
    169 int usb_device_create(ddf_dev_t *, usb_endpoint_description_t **, usb_device_t **, const char **);
    170 void usb_device_destroy(usb_device_t *);
     178void usb_device_destroy_pipes(usb_endpoint_mapping_t *, size_t);
    171179
    172 size_t usb_interface_count_alternates(uint8_t *, size_t, uint8_t);
    173 int usb_alternate_interfaces_create(uint8_t *, size_t, int,
    174     usb_alternate_interfaces_t **);
     180void * usb_device_data_alloc(usb_device_t *, size_t);
    175181
     182size_t usb_interface_count_alternates(const uint8_t *, size_t, uint8_t);
     183int usb_alternate_interfaces_init(usb_alternate_interfaces_t *,
     184    const uint8_t *, size_t, int);
     185void usb_alternate_interfaces_deinit(usb_alternate_interfaces_t *);
    176186#endif
    177187/**
Note: See TracChangeset for help on using the changeset viewer.