Changes in uspace/drv/vhc/hc.c [e63a4e1:c4ba29c7] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/vhc/hc.c

    re63a4e1 rc4ba29c7  
    5050#include "hub.h"
    5151
    52 #define USLEEP_BASE (0 * 5 * 1000)
     52#define USLEEP_BASE (500 * 1000)
    5353
    54 #define USLEEP_VAR 50
     54#define USLEEP_VAR 5000
    5555
    5656#define SHORTENING_VAR 15
     
    6868static link_t transaction_list;
    6969
    70 #define TRANSACTION_FORMAT "T[%d.%d %s/%s (%d)]"
     70#define TRANSACTION_FORMAT "T[%d:%d %s (%d)]"
    7171#define TRANSACTION_PRINTF(t) \
    7272        (t).target.address, (t).target.endpoint, \
    73         usb_str_transfer_type((t).transfer_type), \
    7473        usbvirt_str_transaction_type((t).type), \
    7574        (int)(t).len
     
    7776#define transaction_get_instance(lnk) \
    7877        list_get_instance(lnk, transaction_t, link)
    79 
    80 #define HUB_STATUS_MAX_LEN (HUB_PORT_COUNT + 64)
    8178
    8279static inline unsigned int pseudo_random(unsigned int *seed)
     
    9289    usb_transaction_outcome_t outcome)
    9390{
    94         dprintf(3, "transaction " TRANSACTION_FORMAT " done, outcome: %s",
     91        dprintf(3, "processing transaction " TRANSACTION_FORMAT ", outcome: %s",
    9592            TRANSACTION_PRINTF(*transaction),
    9693            usb_str_transaction_outcome(outcome));
     
    10299/** Host controller manager main function.
    103100 */
    104 static int hc_manager_fibril(void *arg)
     101void hc_manager(void)
    105102{
    106103        list_initialize(&transaction_list);
     
    117114                }
    118115               
    119                 char ports[HUB_STATUS_MAX_LEN + 1];
    120                 virthub_get_status(&virtual_hub_device, ports, HUB_STATUS_MAX_LEN);
     116                char ports[HUB_PORT_COUNT + 2];
     117                hub_get_port_statuses(ports, HUB_PORT_COUNT + 1);
     118                dprintf(3, "virtual hub: addr=%d ports=%s",
     119                    virthub_dev.address, ports);
    121120               
    122121                link_t *first_transaction_link = transaction_list.next;
     
    125124                list_remove(first_transaction_link);
    126125               
    127 
    128                 dprintf(0, "about to process " TRANSACTION_FORMAT " [%s]",
    129                     TRANSACTION_PRINTF(*transaction), ports);
    130 
    131126                dprintf(3, "processing transaction " TRANSACTION_FORMAT "",
    132127                    TRANSACTION_PRINTF(*transaction));
     
    139134                free(transaction);
    140135        }
    141 
    142         assert(false && "unreachable");
    143         return EOK;
    144 }
    145 
    146 void hc_manager(void)
    147 {
    148         fid_t fid = fibril_create(hc_manager_fibril, NULL);
    149         if (fid == 0) {
    150                 printf(NAME ": failed to start HC manager fibril\n");
    151                 return;
    152         }
    153         fibril_add_ready(fid);
    154136}
    155137
     
    157139 */
    158140static transaction_t *transaction_create(usbvirt_transaction_type_t type,
    159     usb_target_t target, usb_transfer_type_t transfer_type,
     141    usb_target_t target,
    160142    void * buffer, size_t len,
    161143    hc_transaction_done_callback_t callback, void * arg)
     
    165147        list_initialize(&transaction->link);
    166148        transaction->type = type;
    167         transaction->transfer_type = transfer_type;
    168149        transaction->target = target;
    169150        transaction->buffer = buffer;
     
    172153        transaction->callback_arg = arg;
    173154       
    174         dprintf(3, "creating transaction " TRANSACTION_FORMAT,
     155        dprintf(1, "creating transaction " TRANSACTION_FORMAT,
    175156            TRANSACTION_PRINTF(*transaction));
    176157       
     
    181162 */
    182163void hc_add_transaction_to_device(bool setup, usb_target_t target,
    183     usb_transfer_type_t transfer_type,
    184164    void * buffer, size_t len,
    185165    hc_transaction_done_callback_t callback, void * arg)
    186166{
    187167        transaction_t *transaction = transaction_create(
    188             setup ? USBVIRT_TRANSACTION_SETUP : USBVIRT_TRANSACTION_OUT,
    189             target, transfer_type,
     168            setup ? USBVIRT_TRANSACTION_SETUP : USBVIRT_TRANSACTION_OUT, target,
    190169            buffer, len, callback, arg);
    191170        list_append(&transaction->link, &transaction_list);
     
    195174 */
    196175void hc_add_transaction_from_device(usb_target_t target,
    197     usb_transfer_type_t transfer_type,
    198176    void * buffer, size_t len,
    199177    hc_transaction_done_callback_t callback, void * arg)
    200178{
    201179        transaction_t *transaction = transaction_create(USBVIRT_TRANSACTION_IN,
    202             target, transfer_type,
    203             buffer, len, callback, arg);
     180            target, buffer, len, callback, arg);
    204181        list_append(&transaction->link, &transaction_list);
    205182}
Note: See TracChangeset for help on using the changeset viewer.