Changeset 7a7bfeb3 in mainline for uspace/app/virtusbkbd


Ignore:
Timestamp:
2010-10-24T16:43:40Z (15 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
355f7c2
Parents:
b8a3cda
Message:

Virtual USB overhaul almost complete

The virtual HC, hub and keyboard are rewritten after changes to HCD API.
Comments will be added later.

Location:
uspace/app/virtusbkbd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/virtusbkbd/stdreq.c

    rb8a3cda r7a7bfeb3  
    6565                 * report descriptor.
    6666                 */
    67                 int rc = dev->send_data(dev, 0,
     67                int rc = dev->control_transfer_reply(dev, 0,
    6868                    report_descriptor, report_descriptor_size);
    6969               
  • uspace/app/virtusbkbd/virtusbkbd.c

    rb8a3cda r7a7bfeb3  
    6767        (printf("%s: %s" fmt "\n", NAME, _QUOTEME(cmd), __VA_ARGS__), cmd(__VA_ARGS__))
    6868
     69kb_status_t status;
     70
    6971static int on_incoming_data(struct usbvirt_device *dev,
    7072    usb_endpoint_t endpoint, void *buffer, size_t size)
     
    8385}
    8486
     87static int on_request_for_data(struct usbvirt_device *dev,
     88    usb_endpoint_t endpoint, void *buffer, size_t size, size_t *actual_size)
     89{
     90        if (size < 2 + KB_MAX_KEYS_AT_ONCE) {
     91                return EINVAL;
     92        }
     93       
     94        *actual_size = 2 + KB_MAX_KEYS_AT_ONCE;
     95       
     96        uint8_t data[2 + KB_MAX_KEYS_AT_ONCE];
     97        data[0] = status.modifiers;
     98        data[1] = 0;
     99       
     100        size_t i;
     101        for (i = 0; i < KB_MAX_KEYS_AT_ONCE; i++) {
     102                data[2 + i] = status.pressed_keys[i];
     103        }
     104       
     105        memcpy(buffer, &data, *actual_size);
     106       
     107        return EOK;
     108}
     109
     110
    85111/** Keyboard callbacks.
    86112 * We abuse the fact that static variables are zero-filled.
     
    89115        .standard_request_ops = &standard_request_ops,
    90116        .on_class_device_request = on_class_request,
    91         .on_data = on_incoming_data
     117        .on_data = on_incoming_data,
     118        .on_data_request = on_request_for_data
    92119};
    93120
     
    151178        }
    152179        printf("\n");
    153        
    154         uint8_t data[3 + KB_MAX_KEYS_AT_ONCE];
    155         data[0] = status->modifiers;
    156         data[1] = 0;
    157         data[2] = 0;
    158         for (i = 0; i < KB_MAX_KEYS_AT_ONCE; i++) {
    159                 data[3 + i] = status->pressed_keys[i];
    160         }
    161        
    162         int rc = keyboard_dev.send_data(&keyboard_dev, 0, data, sizeof(data));
    163         printf("%s:   Sent to VHCD (%s).\n", NAME, str_error(rc));
    164180       
    165181        fibril_sleep(1);
     
    198214        }
    199215       
     216        kb_init(&status);
     217       
    200218       
    201219        int rc = usbvirt_connect(&keyboard_dev, DEV_HCD_NAME);
     
    206224        }
    207225       
    208         kb_status_t status;
    209         kb_init(&status);
    210        
    211226        printf("%s: Simulating keyboard events...\n", NAME);
    212227        kb_process_events(&status, keyboard_events, keyboard_events_count,
Note: See TracChangeset for help on using the changeset viewer.