Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/usbinfo/info.c

    rb1c6e58 r5ccb15c  
    2727 */
    2828
    29 /** @addtogroup usbinfo
     29/** @addtogroup usb
    3030 * @{
    3131 */
    3232/**
    3333 * @file
    34  * Dumping of generic device properties.
     34 * @brief
    3535 */
    3636#include <stdio.h>
    3737#include <str_error.h>
    3838#include <errno.h>
    39 #include <usb/pipes.h>
    40 #include <usb/recognise.h>
    41 #include <usb/request.h>
     39#include <usb/usbdrv.h>
    4240#include "usbinfo.h"
    4341
    44 int dump_device(devman_handle_t hc_handle, usb_address_t address)
     42int dump_device(int hc_phone, usb_address_t address)
    4543{
    46         int rc;
    47         usb_device_connection_t wire;
    48         usb_endpoint_pipe_t ctrl_pipe;
    49 
    50         /*
    51          * Initialize pipes.
    52          */
    53         rc = usb_device_connection_initialize(&wire, hc_handle, address);
    54         if (rc != EOK) {
    55                 fprintf(stderr,
    56                     NAME ": failed to create connection to the device: %s.\n",
    57                     str_error(rc));
    58                 goto leave;
    59         }
    60         rc = usb_endpoint_pipe_initialize_default_control(&ctrl_pipe, &wire);
    61         if (rc != EOK) {
    62                 fprintf(stderr,
    63                     NAME ": failed to create default control pipe: %s.\n",
    64                     str_error(rc));
    65                 goto leave;
    66         }
    67         rc = usb_endpoint_pipe_start_session(&ctrl_pipe);
    68         if (rc != EOK) {
    69                 fprintf(stderr,
    70                     NAME ": failed to start session on control pipe: %s.\n",
    71                     str_error(rc));
    72                 goto leave;
    73         }
    74 
    7544        /*
    7645         * Dump information about possible match ids.
     
    7847        match_id_list_t match_id_list;
    7948        init_match_ids(&match_id_list);
    80         rc = usb_device_create_match_ids(&ctrl_pipe, &match_id_list);
     49        int rc = usb_drv_create_device_match_ids(hc_phone, &match_id_list, address);
    8150        if (rc != EOK) {
    8251                fprintf(stderr,
    8352                    NAME ": failed to fetch match ids of the device: %s.\n",
    8453                    str_error(rc));
    85                 goto leave;
     54                return rc;
    8655        }
    8756        dump_match_ids(&match_id_list);
     
    9160         */
    9261        usb_standard_device_descriptor_t device_descriptor;
    93         rc = usb_request_get_device_descriptor(&ctrl_pipe, &device_descriptor);
     62        usb_dprintf(NAME, 1,
     63            "usb_drv_req_get_device_descriptor(%d, %d, %p)\n",
     64            hc_phone, (int) address, &device_descriptor);
     65
     66        rc = usb_drv_req_get_device_descriptor(hc_phone, address,
     67            &device_descriptor);
    9468        if (rc != EOK) {
    9569                fprintf(stderr,
    9670                    NAME ": failed to fetch standard device descriptor: %s.\n",
    9771                    str_error(rc));
    98                 goto leave;
     72                return rc;
    9973        }
    100         dump_usb_descriptor((uint8_t *)&device_descriptor, sizeof(device_descriptor));
     74        dump_standard_device_descriptor(&device_descriptor);
    10175
    10276        /*
     
    10579        usb_standard_configuration_descriptor_t config_descriptor;
    10680        int config_index = 0;
    107         rc = usb_request_get_bare_configuration_descriptor(&ctrl_pipe,
    108             config_index, &config_descriptor);
     81        usb_dprintf(NAME, 1,
     82            "usb_drv_req_get_bare_configuration_descriptor(%d, %d, %d, %p)\n",
     83            hc_phone, (int) address, config_index, &config_descriptor);
     84
     85        rc = usb_drv_req_get_bare_configuration_descriptor(hc_phone, address,
     86            config_index, &config_descriptor );
    10987        if (rc != EOK) {
    11088                fprintf(stderr,
    11189                    NAME ": failed to fetch standard configuration descriptor: %s.\n",
    11290                    str_error(rc));
    113                 goto leave;
     91                return rc;
    11492        }
    115         //dump_standard_configuration_descriptor(config_index, &config_descriptor);
     93        dump_standard_configuration_descriptor(config_index,
     94            &config_descriptor);
    11695
    11796        void *full_config_descriptor = malloc(config_descriptor.total_length);
    118         rc = usb_request_get_full_configuration_descriptor(&ctrl_pipe,
     97        usb_dprintf(NAME, 1,
     98            "usb_drv_req_get_full_configuration_descriptor(%d, %d, %d, %p, %zu)\n",
     99            hc_phone, (int) address, config_index,
     100            full_config_descriptor, config_descriptor.total_length);
     101
     102        rc = usb_drv_req_get_full_configuration_descriptor(hc_phone, address,
    119103            config_index,
    120104            full_config_descriptor, config_descriptor.total_length, NULL);
     
    123107                    NAME ": failed to fetch full configuration descriptor: %s.\n",
    124108                    str_error(rc));
    125                 goto leave;
     109                return rc;
    126110        }
     111        dump_buffer("Full configuration descriptor:",
     112            full_config_descriptor, config_descriptor.total_length);
    127113
    128114        dump_descriptor_tree(full_config_descriptor,
    129115            config_descriptor.total_length);
    130116
    131         /*
    132          * Get supported languages of STRING descriptors.
    133          */
    134         l18_win_locales_t *langs;
    135         size_t langs_count;
    136         rc = usb_request_get_supported_languages(&ctrl_pipe,
    137             &langs, &langs_count);
    138         if (rc != EOK) {
    139                 fprintf(stderr,
    140                     NAME ": failed to get list of supported languages: %s.\n",
    141                     str_error(rc));
    142                 goto skip_strings;
    143         }
    144 
    145         printf("String languages (%zu):", langs_count);
    146         size_t i;
    147         for (i = 0; i < langs_count; i++) {
    148                 printf(" 0x%04x", (int) langs[i]);
    149         }
    150         printf(".\n");
    151 
    152         /*
    153          * Dump all strings in all available langages;
    154          */
    155         for (i = 0; i < langs_count; i++) {
    156                 l18_win_locales_t lang = langs[i];
    157 
    158                 printf("%sStrings for language 0x%04x:\n", get_indent(0),
    159                     (int) lang);
    160 
    161                 /*
    162                  * Try all indexes - we will see what pops-up ;-).
    163                  * However, to speed things up, we will stop after
    164                  * encountering several broken (or nonexistent ones)
    165                  * descriptors in line.
    166                  */
    167                 size_t idx;
    168                 size_t failed_count = 0;
    169                 for (idx = 1; idx < 0xFF; idx++) {
    170                         char *string;
    171                         rc = usb_request_get_string(&ctrl_pipe, idx, lang,
    172                             &string);
    173                         if (rc != EOK) {
    174                                 failed_count++;
    175                                 if (failed_count > 3) {
    176                                         break;
    177                                 }
    178                                 continue;
    179                         }
    180                         printf("%sString #%zu: \"%s\"\n", get_indent(1),
    181                             idx, string);
    182                         free(string);
    183                         failed_count = 0; /* Reset failed counter. */
    184                 }
    185         }
    186 
    187 
    188 skip_strings:
    189 
    190         rc = EOK;
    191 
    192 leave:
    193         /* Ignoring errors here. */
    194         usb_endpoint_pipe_end_session(&ctrl_pipe);
    195 
    196         return rc;
     117        return EOK;
    197118}
    198119
Note: See TracChangeset for help on using the changeset viewer.