Changeset e765ccb in mainline for uspace/lib/usbhid/src/hidiface.c


Ignore:
Timestamp:
2011-05-20T10:44:53Z (13 years ago)
Author:
Lubos Slovak <lubos.slovak@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e7079cf
Parents:
d1fb591
Message:

Changed HID driver interface and modified mkbd + fixes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbhid/src/hidiface.c

    rd1fb591 re765ccb  
    4646 * @return Number of usages returned or negative error code.
    4747 */
    48 int usbhid_dev_get_event_length(int dev_phone)
     48int usbhid_dev_get_event_length(int dev_phone, size_t *size)
    4949{
    5050        if (dev_phone < 0) {
     
    5656            IPC_M_USBHID_GET_EVENT_LENGTH, &len);
    5757        if (rc == EOK) {
    58                 return (int) len;
    59         } else {
    60                 return rc;
     58                *size = (size_t) len;
    6159        }
     60       
     61        return rc;
    6262}
    6363
     
    7474 * @return Error code.
    7575 */
    76 int usbhid_dev_get_event(int dev_phone, uint16_t *usage_pages, uint16_t *usages,
    77     size_t usage_count, size_t *actual_usage_count, unsigned int flags)
     76int usbhid_dev_get_event(int dev_phone, int32_t *buf,
     77    size_t size, size_t *actual_size, unsigned int flags)
    7878{
    7979        if (dev_phone < 0) {
    8080                return EINVAL;
    8181        }
    82         if ((usage_pages == NULL) || (usages == NULL)) {
     82        if ((buf == NULL)) {
    8383                return ENOMEM;
    8484        }
    85         if (usage_count == 0) {
     85        if (size == 0) {
    8686                return EINVAL;
    8787        }
    8888
    89         size_t buffer_size = sizeof(uint16_t) * usage_count * 2;
     89        size_t buffer_size =  size;
    9090        uint16_t *buffer = malloc(buffer_size);
    9191        if (buffer == NULL) {
     
    128128        }
    129129
    130         size_t actual_size = IPC_GET_ARG2(data_request_call);
    131         size_t items = actual_size / 2;
     130        size_t act_size = IPC_GET_ARG2(data_request_call);
    132131
    133132        /* Copy the individual items. */
    134         memcpy(usage_pages, buffer, items * sizeof(uint16_t));
    135         memcpy(usages, buffer + items, items * sizeof(uint16_t));
     133        memcpy(buf, buffer, act_size);
     134//      memcpy(usages, buffer + items, items * sizeof(int32_t));
    136135
    137         if (actual_usage_count != NULL) {
    138                 *actual_usage_count = items;
     136        if (actual_size != NULL) {
     137                *actual_size = act_size;
    139138        }
    140139
Note: See TracChangeset for help on using the changeset viewer.