Changeset 79d2987 in mainline for uspace/drv/uhci-hcd/tracker.h


Ignore:
Timestamp:
2011-02-11T17:16:36Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4e8e1f5
Parents:
25971d2 (diff), 608afb9 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge development/ changes

File:
1 moved

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/tracker.h

    r25971d2 r79d2987  
    11/*
    2  * Copyright (c) 2010 Jan Vesely
     2 * Copyright (c) 2011 Jan Vesely
    33 * All rights reserved.
    44 *
     
    3232 * @brief UHCI driver
    3333 */
    34 #ifndef DRV_UHCI_CALLBACK_H
    35 #define DRV_UHCI_CALLBACK_H
     34#ifndef DRV_UHCI_TRACKER_H
     35#define DRV_UHCI_TRACKER_H
     36
     37#include <adt/list.h>
    3638
    3739#include <usbhc_iface.h>
    3840#include <usb/usb.h>
    3941
    40 #include "utils/malloc32.h"
     42#include "uhci_struct/transfer_descriptor.h"
    4143
    42 typedef struct callback
     44typedef enum {
     45        LOW_SPEED,
     46        FULL_SPEED,
     47} dev_speed_t;
     48
     49typedef struct tracker
    4350{
    44         usbhc_iface_transfer_in_callback_t callback_in;
    45         usbhc_iface_transfer_out_callback_t callback_out;
    46         void *old_buffer;
    47         void *new_buffer;
     51        link_t link;
     52        usb_target_t target;
     53        usb_transfer_type_t transfer_type;
     54        union {
     55                usbhc_iface_transfer_in_callback_t callback_in;
     56                usbhc_iface_transfer_out_callback_t callback_out;
     57        };
    4858        void *arg;
     59        char *buffer;
     60        char *packet;
    4961        size_t buffer_size;
    50         size_t actual_size;
     62        size_t max_packet_size;
     63        size_t packet_size;
     64        size_t buffer_offset;
     65        dev_speed_t speed;
    5166        device_t *dev;
    52 } callback_t;
     67        transfer_descriptor_t *td;
     68        void (*next_step)(struct tracker*);
     69        unsigned toggle:1;
     70} tracker_t;
    5371
    5472
    55 int callback_init(callback_t *instance, device_t *dev,
    56   void *buffer, size_t size, usbhc_iface_transfer_in_callback_t func_in,
    57   usbhc_iface_transfer_out_callback_t func_out, void *arg);
     73tracker_t * tracker_get(device_t *dev, usb_target_t target,
     74    usb_transfer_type_t transfer_type, size_t max_packet_size,
     75    dev_speed_t speed, char *buffer, size_t size,
     76    usbhc_iface_transfer_in_callback_t func_in,
     77    usbhc_iface_transfer_out_callback_t func_out, void *arg);
    5878
    59 #define callback_in_init(instance, dev, buffer, size, func, arg) \
    60         callback_init(instance, dev, buffer, size, func, NULL, arg)
     79void tracker_control_write(
     80    tracker_t *instance, char* setup_buffer, size_t setup_size);
    6181
    62 #define callback_out_init(instance, dev, buffer, size, func, arg) \
    63         callback_init(instance, dev, buffer, size, func, NULL, arg)
     82void tracker_control_read(
     83    tracker_t *instance, char* setup_buffer, size_t setup_size);
    6484
    65 static inline callback_t *callback_get(device_t *dev,
    66   void *buffer, size_t size, usbhc_iface_transfer_in_callback_t func_in,
    67   usbhc_iface_transfer_out_callback_t func_out, void *arg)
    68 {
    69         callback_t *instance = malloc(sizeof(callback_t));
    70         if (callback_init(instance, dev, buffer, size, func_in, func_out, arg)) {
    71                 free(instance);
    72                 instance = NULL;
    73         }
    74         return instance;
    75 }
     85void tracker_interrupt_in(tracker_t *instance);
    7686
    77 static inline void callback_fini(callback_t *instance)
    78 {
    79         assert(instance);
    80         if (instance->new_buffer)
    81                 free32(instance->new_buffer);
    82 }
     87void tracker_interrupt_out(tracker_t *instance);
    8388
    84 static inline void callback_dispose(callback_t *instance)
    85 {
    86         callback_fini(instance);
    87         free(instance);
    88 }
     89/* DEPRECATED FUNCTIONS NEEDED BY THE OLD API */
     90void tracker_control_setup_old(tracker_t *instance);
    8991
    90 void callback_run(
    91   callback_t *instance, usb_transaction_outcome_t outcome, size_t act_size);
     92void tracker_control_write_data_old(tracker_t *instance);
     93
     94void tracker_control_read_data_old(tracker_t *instance);
     95
     96void tracker_control_write_status_old(tracker_t *instance);
     97
     98void tracker_control_read_status_old(tracker_t *instance);
    9299#endif
    93100/**
Note: See TracChangeset for help on using the changeset viewer.