Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbhost/include/usb/host/endpoint.h

    r58563585 r5fd9c30  
    3232/** @file
    3333 *
     34 * Endpoint structure is tightly coupled to the bus. The bus controls the
     35 * life-cycle of endpoint. In order to keep endpoints lightweight, operations
     36 * on endpoints are part of the bus structure.
     37 *
    3438 */
    3539#ifndef LIBUSBHOST_HOST_ENDPOINT_H
     
    4246#include <atomic.h>
    4347
     48typedef struct bus bus_t;
     49typedef struct device device_t;
     50typedef struct usb_transfer_batch usb_transfer_batch_t;
     51
    4452/** Host controller side endpoint structure. */
    4553typedef struct endpoint {
     54        /** Managing bus */
     55        bus_t *bus;
    4656        /** Reference count. */
    47         atomic_t refcnt;       
     57        atomic_t refcnt;
    4858        /** Part of linked list. */
    4959        link_t link;
     60        /** USB device */
     61        device_t *device;
    5062        /** USB address. */
    51         usb_address_t address;
    52         /** USB endpoint number. */
    53         usb_endpoint_t endpoint;
     63        usb_target_t target;
    5464        /** Communication direction. */
    5565        usb_direction_t direction;
     
    6272        /** Additional opportunities per uframe */
    6373        unsigned packets;
    64         /** Necessary bandwidth. */
     74        /** Reserved bandwidth. */
    6575        size_t bandwidth;
    6676        /** Value of the toggle bit. */
    6777        unsigned toggle:1;
    6878        /** True if there is a batch using this scheduled for this endpoint. */
    69         volatile bool active;
     79        bool active;
    7080        /** Protects resources and active status changes. */
    7181        fibril_mutex_t guard;
    7282        /** Signals change of active status. */
    7383        fibril_condvar_t avail;
    74         /** High speed TT data */
    75         struct {
    76                 usb_address_t address;
    77                 unsigned port;
    78         } tt;
    79         /** Optional device specific data. */
    80         struct {
    81                 /** Device specific data. */
    82                 void *data;
    83                 /** Callback to get the value of toggle bit. */
    84                 int (*toggle_get)(void *);
    85                 /** Callback to set the value of toggle bit. */
    86                 void (*toggle_set)(void *, int);
    87         } hc_data;
     84
     85        /* This structure is meant to be extended by overriding. */
    8886} endpoint_t;
    8987
    90 extern endpoint_t *endpoint_create(usb_address_t, usb_endpoint_t,
    91     usb_direction_t, usb_transfer_type_t, usb_speed_t, size_t, unsigned int,
    92     size_t, usb_address_t, unsigned int);
    93 extern void endpoint_destroy(endpoint_t *);
     88extern void endpoint_init(endpoint_t *, bus_t *);
    9489
    9590extern void endpoint_add_ref(endpoint_t *);
    9691extern void endpoint_del_ref(endpoint_t *);
    97 
    98 extern void endpoint_set_hc_data(endpoint_t *, void *, int (*)(void *),
    99     void (*)(void *, int));
    100 extern void endpoint_clear_hc_data(endpoint_t *);
    10192
    10293extern void endpoint_use(endpoint_t *);
     
    10495
    10596extern int endpoint_toggle_get(endpoint_t *);
    106 extern void endpoint_toggle_set(endpoint_t *, int);
     97extern void endpoint_toggle_set(endpoint_t *, unsigned);
    10798
    10899/** list_get_instance wrapper.
Note: See TracChangeset for help on using the changeset viewer.