Ignore:
File:
1 edited

Legend:

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

    r20eaa82 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 
    5144/** Host controller side endpoint structure. */
    5245typedef struct endpoint {
    53         /** Managing bus */
    54         bus_t *bus;
    5546        /** Reference count. */
    56         atomic_t refcnt;
     47        atomic_t refcnt;       
    5748        /** Part of linked list. */
    5849        link_t link;
    59         /** USB device */
    60         device_t *device;
    6150        /** USB address. */
    62         usb_target_t target;
     51        usb_address_t address;
     52        /** USB endpoint number. */
     53        usb_endpoint_t endpoint;
    6354        /** Communication direction. */
    6455        usb_direction_t direction;
     
    7162        /** Additional opportunities per uframe */
    7263        unsigned packets;
    73         /** Reserved bandwidth. */
     64        /** Necessary bandwidth. */
    7465        size_t bandwidth;
    7566        /** Value of the toggle bit. */
    7667        unsigned toggle:1;
    7768        /** True if there is a batch using this scheduled for this endpoint. */
    78         bool active;
     69        volatile bool active;
    7970        /** Protects resources and active status changes. */
    8071        fibril_mutex_t guard;
    8172        /** Signals change of active status. */
    8273        fibril_condvar_t avail;
    83 
    84         /* 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;
    8588} endpoint_t;
    8689
    87 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 *);
    8894
    8995extern void endpoint_add_ref(endpoint_t *);
    9096extern 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 *);
    91101
    92102extern void endpoint_use(endpoint_t *);
     
    94104
    95105extern int endpoint_toggle_get(endpoint_t *);
    96 extern void endpoint_toggle_set(endpoint_t *, unsigned);
     106extern void endpoint_toggle_set(endpoint_t *, int);
    97107
    98108/** list_get_instance wrapper.
Note: See TracChangeset for help on using the changeset viewer.