Changeset fa8d346 in mainline for uspace/app/mkbd/main.c


Ignore:
Timestamp:
2011-05-24T22:19:26Z (13 years ago)
Author:
Lubos Slovak <lubos.slovak@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8d3f198
Parents:
9dddb3d
Message:

Fixes in mkbd and libusbhid.

  • Fixed initialization of report parser in mkbd.
  • Fixed usb_hid_process_report_descriptor() - added some parameters.
File:
1 edited

Legend:

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

    r9dddb3d rfa8d346  
    6060static int dev_phone = -1;
    6161
    62 static int initialize_report_parser(int dev_phone, usb_hid_report_t *report)
    63 {
    64         report = (usb_hid_report_t *)malloc(sizeof(usb_hid_report_t));
    65         if (report == NULL) {
    66                 return ENOMEM;
    67         }
    68        
    69         int rc = usb_hid_report_init(report);
    70         if (rc != EOK) {
    71                 usb_hid_free_report(report);
     62static int initialize_report_parser(int dev_phone, usb_hid_report_t **report)
     63{
     64        *report = (usb_hid_report_t *)malloc(sizeof(usb_hid_report_t));
     65        if (*report == NULL) {
     66                return ENOMEM;
     67        }
     68       
     69        int rc = usb_hid_report_init(*report);
     70        if (rc != EOK) {
     71                usb_hid_free_report(*report);
     72                *report = NULL;
     73                printf("usb_hid_report_init() failed.\n");
    7274                return rc;
    7375        }
     
    7880            dev_phone, &report_desc_size);
    7981        if (rc != EOK) {
    80                 usb_hid_free_report(report);
     82                usb_hid_free_report(*report);
     83                *report = NULL;
     84                printf("usbhid_dev_get_report_descriptor_length() failed.\n");
    8185                return rc;
    8286        }
    8387       
    8488        if (report_desc_size == 0) {
    85                 usb_hid_free_report(report);
     89                usb_hid_free_report(*report);
     90                *report = NULL;
     91                printf("usbhid_dev_get_report_descriptor_length() returned 0.\n");
    8692                return EINVAL;  // TODO: other error code?
    8793        }
     
    8995        uint8_t *desc = (uint8_t *)malloc(report_desc_size);
    9096        if (desc == NULL) {
    91                 usb_hid_free_report(report);
     97                usb_hid_free_report(*report);
     98                *report = NULL;
    9299                return ENOMEM;
    93100        }
     
    98105            &actual_size);
    99106        if (rc != EOK) {
    100                 usb_hid_free_report(report);
     107                usb_hid_free_report(*report);
     108                *report = NULL;
    101109                free(desc);
     110                printf("usbhid_dev_get_report_descriptor() failed.\n");
    102111                return rc;
    103112        }
    104113       
    105114        if (actual_size != report_desc_size) {
    106                 usb_hid_free_report(report);
     115                usb_hid_free_report(*report);
     116                *report = NULL;
    107117                free(desc);
     118                printf("usbhid_dev_get_report_descriptor() returned wrong size:"
     119                    " %zu, expected: %zu.\n", actual_size, report_desc_size);
    108120                return EINVAL;  // TODO: other error code?
    109121        }
     
    111123        // initialize the report parser
    112124       
    113         rc = usb_hid_parse_report_descriptor(report, desc, report_desc_size);
     125        rc = usb_hid_parse_report_descriptor(*report, desc, report_desc_size);
    114126        free(desc);
    115127       
    116128        if (rc != EOK) {
    117129                free(desc);
     130                printf("usb_hid_parse_report_descriptor() failed.\n");
    118131                return rc;
    119132        }
     
    215228       
    216229        usb_hid_report_t *report = NULL;
    217         rc = initialize_report_parser(dev_phone, report);
     230        rc = initialize_report_parser(dev_phone, &report);
    218231        if (rc != EOK) {
    219232                printf("Failed to initialize report parser: %s\n",
Note: See TracChangeset for help on using the changeset viewer.