Changeset d97d209 in mainline for uspace/lib/usbvirt/ctrlpipe.c


Ignore:
Timestamp:
2010-10-10T22:01:32Z (14 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2c970ee
Parents:
0e41957
Message:

API change in virtual USB device

Instead of passing individual items of device request, the whole
structure is passed-in.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbvirt/ctrlpipe.c

    r0e41957 rd97d209  
    4545        ((value & GET_MIDBITS_MASK(size, shift)) >> shift)
    4646
    47 static usb_direction_t request_get_direction(uint8_t request_type)
    48 {
    49         int bit7 = GET_MIDBITS(request_type, 1, 7);
    50         return bit7 ? USB_DIRECTION_IN : USB_DIRECTION_OUT;
    51 }
    52 
    5347static int request_get_type(uint8_t request_type)
    5448{
     
    5650}
    5751
    58 static int request_get_recipient(uint8_t request_type)
    59 {
    60         return GET_MIDBITS(request_type, 5, 0);
    61 }
    6252
    63 
    64 typedef struct {
    65         uint8_t request_type;
    66         uint8_t request;
    67         uint16_t value;
    68         uint16_t index;
    69         uint16_t length;
    70 } __attribute__ ((packed)) devreq_setup_packet_t;
    7153
    7254int control_pipe(void *buffer, size_t size)
    7355{
    74         if (size < sizeof(devreq_setup_packet_t)) {
     56        if (size < sizeof(usb_device_request_setup_packet_t)) {
    7557                return ENOMEM;
    7658        }
    7759       
    78         devreq_setup_packet_t *request = (devreq_setup_packet_t *) buffer;
    79         uint8_t *remaining_data = ((uint8_t *) request) + sizeof(devreq_setup_packet_t);
     60        usb_device_request_setup_packet_t *request = (usb_device_request_setup_packet_t *) buffer;
     61        uint8_t *remaining_data = ((uint8_t *) request) + sizeof(usb_device_request_setup_packet_t);
    8062       
    81         usb_direction_t direction = request_get_direction(request->request_type);
    8263        int type = request_get_type(request->request_type);
    83         int recipient = request_get_recipient(request->request_type);
    84        
    8564       
    8665        switch (type) {
    8766                case REQUEST_TYPE_STANDARD:
    88                         return handle_std_request(direction, recipient,
    89                             request->request, request->value,
    90                             request->index, request->length,
    91                             remaining_data);
     67                        return handle_std_request(request, remaining_data);
    9268                        break;
    9369                case REQUEST_TYPE_CLASS:
    9470                        if (DEVICE_HAS_OP(device, on_devreq_class)) {
    9571                                return device->ops->on_devreq_class(device,
    96                                     direction, recipient,
    97                                     request->request, request->value,
    98                                     request->index, request->length,
    99                                     remaining_data);
     72                                    request, remaining_data);
    10073                        }
    10174                        break;
Note: See TracChangeset for help on using the changeset viewer.