Changeset 4e38d69 in mainline for uspace/drv/uhci-hcd/tracker.h
- Timestamp:
- 2011-02-11T15:05:40Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5842493
- Parents:
- 1e64b250 (diff), 03197ffc (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. - File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/tracker.h
r1e64b250 r4e38d69 1 1 /* 2 * Copyright (c) 201 0Jan Vesely2 * Copyright (c) 2011 Jan Vesely 3 3 * All rights reserved. 4 4 * … … 32 32 * @brief UHCI driver 33 33 */ 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> 36 38 37 39 #include <usbhc_iface.h> 38 40 #include <usb/usb.h> 39 41 40 #include "u tils/malloc32.h"42 #include "uhci_struct/transfer_descriptor.h" 41 43 42 typedef struct callback 44 typedef enum { 45 LOW_SPEED, 46 FULL_SPEED, 47 } dev_speed_t; 48 49 typedef struct tracker 43 50 { 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 }; 48 58 void *arg; 59 char *buffer; 60 char *packet; 49 61 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; 51 66 device_t *dev; 52 } callback_t; 67 transfer_descriptor_t *td; 68 void (*next_step)(struct tracker*); 69 unsigned toggle:1; 70 } tracker_t; 53 71 54 72 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); 73 tracker_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); 58 78 59 #define callback_in_init(instance, dev, buffer, size, func, arg) \ 60 callback_init(instance, dev, buffer, size, func, NULL, arg) 79 void tracker_control_write( 80 tracker_t *instance, char* setup_buffer, size_t setup_size); 61 81 62 #define callback_out_init(instance, dev, buffer, size, func, arg) \ 63 callback_init(instance, dev, buffer, size, func, NULL, arg) 82 void tracker_control_read( 83 tracker_t *instance, char* setup_buffer, size_t setup_size); 64 84 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 } 85 void tracker_interrupt_in(tracker_t *instance); 76 86 77 static inline void callback_fini(callback_t *instance) 78 { 79 assert(instance); 80 if (instance->new_buffer) 81 free32(instance->new_buffer); 82 } 87 void tracker_interrupt_out(tracker_t *instance); 83 88 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 */ 90 void tracker_control_setup_old(tracker_t *instance); 89 91 90 void callback_run( 91 callback_t *instance, usb_transaction_outcome_t outcome, size_t act_size); 92 void tracker_control_write_data_old(tracker_t *instance); 93 94 void tracker_control_read_data_old(tracker_t *instance); 95 96 void tracker_control_write_status_old(tracker_t *instance); 97 98 void tracker_control_read_status_old(tracker_t *instance); 92 99 #endif 93 100 /**
Note:
See TracChangeset
for help on using the changeset viewer.