Changeset 266fcd8 in mainline


Ignore:
Timestamp:
2011-05-27T09:27:02Z (13 years ago)
Author:
Lubos Slovak <lubos.slovak@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
81d2f6a
Parents:
3c9eb46
Message:

Sending event number in get_event() interface + control in mkbd.

Location:
uspace
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/mkbd/main.c

    r3c9eb46 r266fcd8  
    140140        assert(report != NULL);
    141141       
    142         printf("Calling usb_hid_parse_report() with size %zu and "
    143             "buffer: \n", size);
    144         for (size_t i = 0; i < size; ++i) {
    145                 printf(" %X ", buffer[i]);
    146         }
    147         printf("\n");
     142//      printf("Calling usb_hid_parse_report() with size %zu and "
     143//          "buffer: \n", size);
     144//      for (size_t i = 0; i < size; ++i) {
     145//              printf(" %X ", buffer[i]);
     146//      }
     147//      printf("\n");
    148148       
    149149        uint8_t report_id;
    150150        int rc = usb_hid_parse_report(report, buffer, size, &report_id);
    151151        if (rc != EOK) {
    152                 printf("Error parsing report: %s\n", str_error(rc));
     152//              printf("Error parsing report: %s\n", str_error(rc));
    153153                return;
    154154        }
     
    168168            USB_HID_REPORT_TYPE_INPUT);
    169169       
     170//      printf("Field: %p\n", field);
     171       
    170172        while (field != NULL) {
     173//              printf("Field usage: %u, field value: %d\n", field->usage,
     174//                  field->value);
    171175                if (field->value != 0) {
    172176                        const char *key_str =
     
    179183                    | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
    180184                    USB_HID_REPORT_TYPE_INPUT);
     185//              printf("Next field: %p\n", field);
    181186        }
    182187       
     
    200205int main(int argc, char *argv[])
    201206{
     207        int act_event = -1;
    202208       
    203209        if (argc <= 1) {
     
    255261        }
    256262       
    257         printf("Event length: %zu\n", size);
     263//      printf("Event length: %zu\n", size);
    258264        uint8_t *event = (uint8_t *)malloc(size);
    259265        if (event == NULL) {
     
    262268        }
    263269       
    264         printf("Event length: %zu\n", size);
     270//      printf("Event length: %zu\n", size);
    265271       
    266272        size_t actual_size;
     273        int event_nr;
    267274       
    268275        while (1) {
    269276                // get event from the driver
    270                 printf("Getting event from the driver.\n");
     277//              printf("Getting event from the driver.\n");
    271278               
    272279                /** @todo Try blocking call. */
    273280                rc = usbhid_dev_get_event(dev_phone, event, size, &actual_size,
    274                     0);
     281                    &event_nr, 0);
    275282                if (rc != EOK) {
    276283                        // hangup phone?
     
    280287                }
    281288               
    282                 printf("Got buffer: %p, size: %zu, max size: %zu\n", event,
    283                     actual_size, size);
    284                
    285                 print_key(event, size, report);
    286                
    287                 async_usleep(10000);
     289//              printf("Got buffer: %p, size: %zu, max size: %zu\n", event,
     290//                  actual_size, size);
     291               
     292//              printf("Event number: %d, my actual event: %d\n", event_nr,
     293//                  act_event);
     294                if (event_nr > act_event) {
     295                        print_key(event, size, report);
     296                        act_event = event_nr;
     297                }
     298               
     299                async_usleep(100000);
    288300        }
    289301       
  • uspace/drv/usbhid/generic/hiddev.c

    r3c9eb46 r266fcd8  
    6363
    6464static int usb_generic_hid_get_event(ddf_fun_t *fun, uint8_t *buffer,
    65     size_t size, size_t *act_size, unsigned int flags);
     65    size_t size, size_t *act_size, int *event_nr, unsigned int flags);
    6666
    6767static int usb_generic_hid_client_connected(ddf_fun_t *fun);
     
    108108
    109109static int usb_generic_hid_get_event(ddf_fun_t *fun, uint8_t *buffer,
    110     size_t size, size_t *act_size, unsigned int flags)
     110    size_t size, size_t *act_size, int *event_nr, unsigned int flags)
    111111{
    112112        usb_log_debug2("Generic HID: Get event.\n");
    113113       
    114         if (fun == NULL || fun->driver_data == NULL) {
     114        if (fun == NULL || fun->driver_data == NULL || buffer == NULL
     115            || act_size == NULL || event_nr == NULL) {
    115116                usb_log_debug("No function");
    116117                return EINVAL;
     
    137138            hid_dev->input_report_size);
    138139        *act_size = hid_dev->input_report_size;
     140        *event_nr = usb_hid_report_number(hid_dev);
    139141       
    140142        // clear the buffer so that it will not be received twice
  • uspace/lib/drv/generic/remote_usbhid.c

    r3c9eb46 r266fcd8  
    130130
    131131        size_t act_length;
    132         rc = hid_iface->get_event(fun, data, len, &act_length, flags);
     132        int event_nr;
     133        rc = hid_iface->get_event(fun, data, len, &act_length, &event_nr, flags);
    133134        if (rc != EOK) {
    134135                free(data);
     
    147148        free(data);
    148149
    149         async_answer_0(callid, EOK);
     150        async_answer_1(callid, EOK, event_nr);
    150151}
    151152
  • uspace/lib/drv/include/usbhid_iface.h

    r3c9eb46 r266fcd8  
    109109         */
    110110        int (*get_event)(ddf_fun_t *fun, uint8_t *buffer, size_t size,
    111             size_t *act_size, unsigned int flags);
     111            size_t *act_size, int *event_nr, unsigned int flags);
    112112       
    113113        /** Get size of the report descriptor in bytes.
  • uspace/lib/usbhid/include/usb/hid/iface.h

    r3c9eb46 r266fcd8  
    3939
    4040int usbhid_dev_get_event_length(int, size_t *);
    41 int usbhid_dev_get_event(int, uint8_t *, size_t, size_t *,
     41int usbhid_dev_get_event(int, uint8_t *, size_t, size_t *, int *,
    4242    unsigned int);
    4343int usbhid_dev_get_report_descriptor_length(int, size_t *);
  • uspace/lib/usbhid/src/hidiface.c

    r3c9eb46 r266fcd8  
    7777 */
    7878int usbhid_dev_get_event(int dev_phone, uint8_t *buf,
    79     size_t size, size_t *actual_size, unsigned int flags)
     79    size_t size, size_t *actual_size, int *event_nr, unsigned int flags)
    8080{
    8181        if (dev_phone < 0) {
     
    9999        }
    100100
     101        ipc_call_t opening_request_call;
    101102        aid_t opening_request = async_send_2(dev_phone,
    102103            DEV_IFACE_ID(USBHID_DEV_IFACE), IPC_M_USBHID_GET_EVENT,
    103             flags, NULL);
     104            flags, &opening_request_call);
    104105        if (opening_request == 0) {
    105106                free(buffer);
     
    143144                *actual_size = act_size;
    144145        }
     146       
     147        if (event_nr != NULL) {
     148                *event_nr = IPC_GET_ARG1(opening_request_call);
     149        }
    145150
    146151        return EOK;
Note: See TracChangeset for help on using the changeset viewer.