Ignore:
File:
1 edited

Legend:

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

    r2aee3e06 r9223dc5c  
    5555#include "stdreq.h"
    5656
    57 /** Pause between individual key-presses in seconds. */
    58 #define KEY_PRESS_DELAY 2
     57#define LOOPS 5
    5958#define NAME "virt-usb-kbd"
    6059
     
    8483}
    8584
    86 /** Compares current and last status of pressed keys.
    87  *
    88  * @warning Has side-efect - changes status_last field.
    89  *
    90  * @param status_now Status now.
    91  * @param status_last Last status.
    92  * @param len Size of status.
    93  * @return Whether they are the same.
    94  */
    95 static bool keypress_check_with_last_request(uint8_t *status_now,
    96     uint8_t *status_last, size_t len)
    97 {
    98         bool same = true;
    99         size_t i;
    100         for (i = 0; i < len; i++) {
    101                 if (status_now[i] != status_last[i]) {
    102                         status_last[i] = status_now[i];
    103                         same = false;
    104                 }
    105         }
    106         return same;
    107 }
    108 
    10985static int on_request_for_data(struct usbvirt_device *dev,
    11086    usb_endpoint_t endpoint, void *buffer, size_t size, size_t *actual_size)
    11187{
    112         static uint8_t last_data[2 + KB_MAX_KEYS_AT_ONCE];
    113 
    11488        if (size < 2 + KB_MAX_KEYS_AT_ONCE) {
    11589                return EINVAL;
     
    127101        }
    128102       
    129         if (keypress_check_with_last_request(data, last_data,
    130             2 + KB_MAX_KEYS_AT_ONCE)) {
    131                 *actual_size = 0;
    132                 return EOK;
    133         }
    134 
    135103        memcpy(buffer, &data, *actual_size);
    136104       
     
    184152        .ops = &keyboard_ops,
    185153        .descriptors = &descriptors,
    186         .lib_debug_level = 3,
    187         .lib_debug_enabled_tags = USBVIRT_DEBUGTAG_ALL,
    188154        .name = "keyboard"
    189155};
     
    211177        printf("\n");
    212178       
    213         fibril_sleep(KEY_PRESS_DELAY);
     179        fibril_sleep(1);
    214180}
    215181
     
    257223       
    258224        printf("%s: Simulating keyboard events...\n", NAME);
    259         while (1) {
     225        while(1){
    260226                kb_process_events(&status, keyboard_events, keyboard_events_count,
    261227                        on_keyboard_change);
Note: See TracChangeset for help on using the changeset viewer.