Ignore:
File:
1 edited

Legend:

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

    r5fd9c30 r58563585  
    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  *
    3834 */
    3935#ifndef LIBUSBHOST_HOST_ENDPOINT_H
     
    4642#include <atomic.h>
    4743
    48 typedef struct bus bus_t;
    49 typedef struct device device_t;
    50 typedef struct usb_transfer_batch usb_transfer_batch_t;
    51 
    5244/** Host controller side endpoint structure. */
    5345typedef struct endpoint {
    54         /** Managing bus */
    55         bus_t *bus;
    5646        /** Reference count. */
    57         atomic_t refcnt;
     47        atomic_t refcnt;       
    5848        /** Part of linked list. */
    5949        link_t link;
    60         /** USB device */
    61         device_t *device;
    6250        /** USB address. */
    63         usb_target_t target;
     51        usb_address_t address;
     52        /** USB endpoint number. */
     53        usb_endpoint_t endpoint;
    6454        /** Communication direction. */
    6555        usb_direction_t direction;
     
    7262        /** Additional opportunities per uframe */
    7363        unsigned packets;
    74         /** Reserved bandwidth. */
     64        /** Necessary bandwidth. */
    7565        size_t bandwidth;
    7666        /** Value of the toggle bit. */
    7767        unsigned toggle:1;
    7868        /** True if there is a batch using this scheduled for this endpoint. */
    79         bool active;
     69        volatile bool active;
    8070        /** Protects resources and active status changes. */
    8171        fibril_mutex_t guard;
    8272        /** Signals change of active status. */
    8373        fibril_condvar_t avail;
    84 
    85         /* This structure is meant to be extended by overriding. */
     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;
    8688} endpoint_t;
    8789
    88 extern void endpoint_init(endpoint_t *, bus_t *);
     90extern 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);
     93extern void endpoint_destroy(endpoint_t *);
    8994
    9095extern void endpoint_add_ref(endpoint_t *);
    9196extern void endpoint_del_ref(endpoint_t *);
     97
     98extern void endpoint_set_hc_data(endpoint_t *, void *, int (*)(void *),
     99    void (*)(void *, int));
     100extern void endpoint_clear_hc_data(endpoint_t *);
    92101
    93102extern void endpoint_use(endpoint_t *);
     
    95104
    96105extern int endpoint_toggle_get(endpoint_t *);
    97 extern void endpoint_toggle_set(endpoint_t *, unsigned);
     106extern void endpoint_toggle_set(endpoint_t *, int);
    98107
    99108/** list_get_instance wrapper.
Note: See TracChangeset for help on using the changeset viewer.