Changeset d7c72db in mainline


Ignore:
Timestamp:
2011-05-24T21:01: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:
a28b41d
Parents:
4e78236
Message:

A lot of changes to mkbd and HID interface.

  • mkbd Report parser initialization (getting report descriptor, parsing).
  • Getting report descriptor and its length from HID device added to HID interface (client and server stubs not implemented).
  • Fixed event type to uint8_t *.
  • Implemented these functions in generic HID driver.
  • Moved mapping from Consumer page usages to string descriptions moved to libusbhid.
  • Removed some temporary debug output.
Location:
uspace
Files:
11 edited

Legend:

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

    r4e78236 rd7c72db  
    5050#include <usb/dev/pipes.h>
    5151#include <async.h>
     52#include <usb/hid/usages/core.h>
     53#include <usb/hid/hidparser.h>
     54#include <usb/hid/hiddescriptor.h>
     55#include <usb/hid/usages/consumer.h>
     56#include <assert.h>
    5257
    5358#define NAME "mkbd"
     
    5560static int dev_phone = -1;
    5661
    57 //static void print_found_hc(size_t class_index, const char *path)
    58 //{
    59 //      // printf(NAME ": host controller %zu is `%s'.\n", class_index, path);
    60 //      printf("Bus %02zu: %s\n", class_index, path);
    61 //}
    62 //static void print_found_dev(usb_address_t addr, const char *path)
    63 //{
    64 //      // printf(NAME ":     device with address %d is `%s'.\n", addr, path);
    65 //      printf("  Device %02d: %s\n", addr, path);
    66 //}
    67 
    68 //static void print_hc_devices(devman_handle_t hc_handle)
    69 //{
    70 //      int rc;
    71 //      usb_hc_connection_t conn;
    72 
    73 //      usb_hc_connection_initialize(&conn, hc_handle);
    74 //      rc = usb_hc_connection_open(&conn);
    75 //      if (rc != EOK) {
    76 //              printf(NAME ": failed to connect to HC: %s.\n",
    77 //                  str_error(rc));
    78 //              return;
    79 //      }
    80 //      usb_address_t addr;
    81 //      for (addr = 1; addr < 5; addr++) {
    82 //              devman_handle_t dev_handle;
    83 //              rc = usb_hc_get_handle_by_address(&conn, addr, &dev_handle);
    84 //              if (rc != EOK) {
    85 //                      continue;
    86 //              }
    87 //              char path[MAX_PATH_LENGTH];
    88 //              rc = devman_get_device_path(dev_handle, path, MAX_PATH_LENGTH);
    89 //              if (rc != EOK) {
    90 //                      continue;
    91 //              }
    92 //              print_found_dev(addr, path);
    93 //      }
    94 //      usb_hc_connection_close(&conn);
    95 //}
    96 
    97 //static bool try_parse_class_and_address(const char *path,
    98 //    devman_handle_t *out_hc_handle, usb_address_t *out_device_address)
    99 //{
    100 //      size_t class_index;
    101 //      size_t address;
    102 //      int rc;
    103 //      char *ptr;
    104 
    105 //      rc = str_size_t(path, &ptr, 10, false, &class_index);
    106 //      if (rc != EOK) {
    107 //              return false;
    108 //      }
    109 //      if ((*ptr == ':') || (*ptr == '.')) {
    110 //              ptr++;
    111 //      } else {
    112 //              return false;
    113 //      }
    114 //      rc = str_size_t(ptr, NULL, 10, true, &address);
    115 //      if (rc != EOK) {
    116 //              return false;
    117 //      }
    118 //      rc = usb_ddf_get_hc_handle_by_class(class_index, out_hc_handle);
    119 //      if (rc != EOK) {
    120 //              return false;
    121 //      }
    122 //      if (out_device_address != NULL) {
    123 //              *out_device_address = (usb_address_t) address;
    124 //      }
    125 //      return true;
    126 //}
    127 
    128 //static bool resolve_hc_handle_and_dev_addr(const char *devpath,
    129 //    devman_handle_t *out_hc_handle, usb_address_t *out_device_address)
    130 //{
    131 //      int rc;
    132 
    133 //      /* Hack for QEMU to save-up on typing ;-). */
    134 //      if (str_cmp(devpath, "qemu") == 0) {
    135 //              devpath = "/hw/pci0/00:01.2/uhci-rh/usb00_a1";
    136 //      }
    137 
    138 //      /* Hack for virtual keyboard. */
    139 //      if (str_cmp(devpath, "virt") == 0) {
    140 //              devpath = "/virt/usbhc/usb00_a1/usb00_a2";
    141 //      }
    142 
    143 //      if (try_parse_class_and_address(devpath,
    144 //          out_hc_handle, out_device_address)) {
    145 //              return true;
    146 //      }
    147 
    148 //      char *path = str_dup(devpath);
    149 //      if (path == NULL) {
    150 //              return ENOMEM;
    151 //      }
    152 
    153 //      devman_handle_t hc = 0;
    154 //      bool hc_found = false;
    155 //      usb_address_t addr = 0;
    156 //      bool addr_found = false;
    157 
    158 //      /* Remove suffixes and hope that we will encounter device node. */
    159 //      while (str_length(path) > 0) {
    160 //              /* Get device handle first. */
    161 //              devman_handle_t dev_handle;
    162 //              rc = devman_device_get_handle(path, &dev_handle, 0);
    163 //              if (rc != EOK) {
    164 //                      free(path);
    165 //                      return false;
    166 //              }
    167 
    168 //              /* Try to find its host controller. */
    169 //              if (!hc_found) {
    170 //                      rc = usb_hc_find(dev_handle, &hc);
    171 //                      if (rc == EOK) {
    172 //                              hc_found = true;
    173 //                      }
    174 //              }
    175 //              /* Try to get its address. */
    176 //              if (!addr_found) {
    177 //                      addr = usb_device_get_assigned_address(dev_handle);
    178 //                      if (addr >= 0) {
    179 //                              addr_found = true;
    180 //                      }
    181 //              }
    182 
    183 //              /* Speed-up. */
    184 //              if (hc_found && addr_found) {
    185 //                      break;
    186 //              }
    187 
    188 //              /* Remove the last suffix. */
    189 //              char *slash_pos = str_rchr(path, '/');
    190 //              if (slash_pos != NULL) {
    191 //                      *slash_pos = 0;
    192 //              }
    193 //      }
    194 
    195 //      free(path);
    196 
    197 //      if (hc_found && addr_found) {
    198 //              if (out_hc_handle != NULL) {
    199 //                      *out_hc_handle = hc;
    200 //              }
    201 //              if (out_device_address != NULL) {
    202 //                      *out_device_address = addr;
    203 //              }
    204 //              return true;
    205 //      } else {
    206 //              return false;
    207 //      }
    208 //}
     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                return rc;
     73        }
     74       
     75        // get the report descriptor length from the device
     76        size_t report_desc_size;
     77        rc = usbhid_dev_get_report_descriptor_length(
     78            dev_phone, &report_desc_size);
     79        if (rc != EOK) {
     80                usb_hid_free_report(report);
     81                return rc;
     82        }
     83       
     84        if (report_desc_size == 0) {
     85                usb_hid_free_report(report);
     86                return EINVAL;  // TODO: other error code?
     87        }
     88       
     89        uint8_t *desc = (uint8_t *)malloc(report_desc_size);
     90        if (desc == NULL) {
     91                usb_hid_free_report(report);
     92                return ENOMEM;
     93        }
     94       
     95        // get the report descriptor from the device
     96        size_t actual_size;
     97        rc = usbhid_dev_get_report_descriptor(dev_phone, desc, report_desc_size,
     98            &actual_size);
     99        if (rc != EOK) {
     100                usb_hid_free_report(report);
     101                free(desc);
     102                return rc;
     103        }
     104       
     105        if (actual_size != report_desc_size) {
     106                usb_hid_free_report(report);
     107                free(desc);
     108                return EINVAL;  // TODO: other error code?
     109        }
     110       
     111        // initialize the report parser
     112       
     113        rc = usb_hid_parse_report_descriptor(report, desc, report_desc_size);
     114        free(desc);
     115       
     116        if (rc != EOK) {
     117                free(desc);
     118                return rc;
     119        }
     120       
     121        return EOK;
     122}
     123
     124static void print_key(uint8_t *buffer, size_t size, usb_hid_report_t *report)
     125{
     126        assert(buffer != NULL);
     127        assert(report != NULL);
     128       
     129        uint8_t report_id;
     130        usb_hid_parse_report(report, buffer, size, &report_id);
     131       
     132        usb_hid_report_path_t *path = usb_hid_report_path();
     133        if (path == NULL) {
     134                return;
     135        }
     136       
     137        usb_hid_report_path_append_item(path, USB_HIDUT_PAGE_CONSUMER, 0);
     138       
     139        usb_hid_report_path_set_report_id(path, report_id);
     140
     141        usb_hid_report_field_t *field = usb_hid_report_get_sibling(
     142            report, NULL, path, USB_HID_PATH_COMPARE_END
     143            | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
     144            USB_HID_REPORT_TYPE_INPUT);
     145       
     146        while (field != NULL) {
     147                if (field->value != 0) {
     148                        const char *key_str =
     149                            usbhid_multimedia_usage_to_str(field->usage);
     150                        printf("Pressed key: %s\n", key_str);
     151                }
     152               
     153                field = usb_hid_report_get_sibling(
     154                    report, field, path, USB_HID_PATH_COMPARE_END
     155                    | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
     156                    USB_HID_REPORT_TYPE_INPUT);
     157        }
     158       
     159        usb_hid_report_path_free(path);
     160}
     161
     162#define MAX_PATH_LENGTH 1024
    209163
    210164static void print_usage(char *app_name)
     
    212166#define _INDENT "      "
    213167
    214         printf(NAME ": Print out what multimedia keys were pressed.\n\n");
    215         printf("Usage: %s device\n", app_name);
    216         printf(_INDENT "The device is a devman path to the device.\n");
     168       printf(NAME ": Print out what multimedia keys were pressed.\n\n");
     169       printf("Usage: %s device\n", app_name);
     170       printf(_INDENT "The device is a devman path to the device.\n");
    217171
    218172#undef _OPTION
    219173#undef _INDENT
    220174}
    221 
    222 #define MAX_PATH_LENGTH 1024
    223175
    224176int main(int argc, char *argv[])
     
    232184        //char *devpath = argv[1];
    233185        const char *devpath = "/hw/pci0/00:06.0/ohci-rh/usb00_a2/HID0/hid";
    234 
    235 //      /* The initialization is here only to make compiler happy. */
    236 //      devman_handle_t hc_handle = 0;
    237 //      usb_address_t dev_addr = 0;
    238 //      bool found = resolve_hc_handle_and_dev_addr(devpath,
    239 //          &hc_handle, &dev_addr);
    240 //      if (!found) {
    241 //              fprintf(stderr, NAME ": device `%s' not found "
    242 //                  "or not of USB kind. Exiting.\n", devpath);
    243 //              return -1;
    244 //      }
    245        
    246 //      int rc;
    247 //      usb_hc_connection_t conn;
    248 
    249 //      usb_hc_connection_initialize(&conn, hc_handle);
    250 //      rc = usb_hc_connection_open(&conn);
    251 //      if (rc != EOK) {
    252 //              printf(NAME ": failed to connect to HC: %s.\n",
    253 //                  str_error(rc));
    254 //              return -1;
    255 //      }
    256 
    257 //      devman_handle_t dev_handle;
    258 //      rc = usb_hc_get_handle_by_address(&conn, dev_addr, &dev_handle);
    259 //      if (rc != EOK) {
    260 //              printf(NAME ": failed getting handle to the device: %s.\n",
    261 //                     str_error(rc));
    262 //              return -1;
    263 //      }
    264 
    265 //      usb_hc_connection_close(&conn);
    266186       
    267187        int rc;
     
    293213        printf("Device path: %s\n", path);
    294214       
     215       
     216        usb_hid_report_t *report = NULL;
     217        rc = initialize_report_parser(dev_phone, report);
     218        if (rc != EOK) {
     219                printf("Failed to initialize report parser: %s\n",
     220                    str_error(rc));
     221                return rc;
     222        }
     223       
     224        assert(report != NULL);
     225       
    295226        size_t size;
    296227        rc = usbhid_dev_get_event_length(dev_phone, &size);
    297228        if (rc != EOK) {
    298                 printf("Failed to get event length: %s.\n",
    299                     str_error(rc));
     229                printf("Failed to get event length: %s.\n", str_error(rc));
    300230                return rc;
    301231        }
    302232       
    303233        printf("Event length: %zu\n", size);
    304         int32_t *event = (int32_t *)malloc(size);
     234        uint8_t *event = (uint8_t *)malloc(size);
    305235        if (event == NULL) {
    306236                // hangup phone?
     
    315245                // get event from the driver
    316246                printf("Getting event from the driver.\n");
     247               
     248                /** @todo Try blocking call. */
    317249                rc = usbhid_dev_get_event(dev_phone, event, size, &actual_size,
    318250                    0);
     
    326258                printf("Got buffer: %p, size: %zu\n", event, actual_size);
    327259               
     260                print_key(event, size, report);
     261               
    328262                async_usleep(10000);
    329263        }
  • uspace/drv/usbhid/generic/hiddev.c

    r4e78236 rd7c72db  
    6262static size_t usb_generic_hid_get_event_length(ddf_fun_t *fun);
    6363
    64 static int usb_generic_hid_get_event(ddf_fun_t *fun, int32_t *buffer,
     64static int usb_generic_hid_get_event(ddf_fun_t *fun, uint8_t *buffer,
    6565    size_t size, size_t *act_size, unsigned int flags);
    6666
    6767static int usb_generic_hid_client_connected(ddf_fun_t *fun);
     68
     69static size_t usb_generic_get_report_descriptor_length(ddf_fun_t *fun);
     70
     71static int usb_generic_get_report_descriptor(ddf_fun_t *fun, uint8_t *desc,
     72    size_t size, size_t *actual_size);
    6873
    6974/*----------------------------------------------------------------------------*/
     
    7176static usbhid_iface_t usb_generic_iface = {
    7277        .get_event = usb_generic_hid_get_event,
    73         .get_event_length = usb_generic_hid_get_event_length
     78        .get_event_length = usb_generic_hid_get_event_length,
     79        .get_report_descriptor_length = usb_generic_get_report_descriptor_length,
     80        .get_report_descriptor = usb_generic_get_report_descriptor
    7481};
    7582
     
    100107/*----------------------------------------------------------------------------*/
    101108
    102 static int usb_generic_hid_get_event(ddf_fun_t *fun, int32_t *buffer,
     109static int usb_generic_hid_get_event(ddf_fun_t *fun, uint8_t *buffer,
    103110    size_t size, size_t *act_size, unsigned int flags)
    104111{
     
    129136        // note that we already received this report
    130137//      report_received = true;
     138       
     139        return EOK;
     140}
     141
     142/*----------------------------------------------------------------------------*/
     143
     144static size_t usb_generic_get_report_descriptor_length(ddf_fun_t *fun)
     145{
     146        usb_log_debug("Generic HID: Get report descriptor length.\n");
     147       
     148        if (fun == NULL || fun->driver_data == NULL) {
     149                usb_log_debug("No function");
     150                return EINVAL;
     151        }
     152       
     153        usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
     154       
     155        return hid_dev->report_desc_size;
     156}
     157
     158/*----------------------------------------------------------------------------*/
     159
     160static int usb_generic_get_report_descriptor(ddf_fun_t *fun, uint8_t *desc,
     161    size_t size, size_t *actual_size)
     162{
     163        usb_log_debug("Generic HID: Get report descriptor.\n");
     164       
     165        if (fun == NULL || fun->driver_data == NULL) {
     166                usb_log_debug("No function");
     167                return EINVAL;
     168        }
     169       
     170        usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
     171       
     172        if (hid_dev->report_desc_size > size) {
     173                return EINVAL;  // TODO: other error code
     174        }
     175       
     176        memcpy(desc, hid_dev->report_desc, hid_dev->report_desc_size);
     177        *actual_size = hid_dev->report_desc_size;
    131178       
    132179        return EOK;
  • uspace/drv/usbhid/multimedia/keymap.c

    r4e78236 rd7c72db  
    7575};
    7676
    77 static const char *usb_hid_consumer_usage_str[0x29d] = {
    78         [0x01] = "Consumer Control",
    79         [0x02] = "Numeric Key Pad",
    80         [0x03] = "Programmable Buttons",
    81         [0x04] = "Microphone",
    82         [0x05] = "Headphone",
    83         [0x06] = "Graphic Equalizer",
    84         [0x07] = "Reserved",
    85         [0x08] = "Reserved",
    86         [0x09] = "Reserved",
    87         [0x0a] = "Reserved",
    88         [0x0b] = "Reserved",
    89         [0x0c] = "Reserved",
    90         [0x0d] = "Reserved",
    91         [0x0e] = "Reserved",
    92         [0x0f] = "Reserved",
    93         [0x10] = "Reserved",
    94         [0x11] = "Reserved",
    95         [0x12] = "Reserved",
    96         [0x13] = "Reserved",
    97         [0x14] = "Reserved",
    98         [0x15] = "Reserved",
    99         [0x16] = "Reserved",
    100         [0x17] = "Reserved",
    101         [0x18] = "Reserved",
    102         [0x19] = "Reserved",
    103         [0x1a] = "Reserved",
    104         [0x1b] = "Reserved",
    105         [0x1c] = "Reserved",
    106         [0x1d] = "Reserved",
    107         [0x1e] = "Reserved",
    108         [0x1f] = "Reserved",
    109         [0x20] = "+10",
    110         [0x21] = "+100",
    111         [0x22] = "AM/PM",
    112         [0x23] = "Reserved",
    113         [0x24] = "Reserved",
    114         [0x25] = "Reserved",
    115         [0x26] = "Reserved",
    116         [0x27] = "Reserved",
    117         [0x28] = "Reserved",
    118         [0x29] = "Reserved",
    119         [0x2a] = "Reserved",
    120         [0x2b] = "Reserved",
    121         [0x2c] = "Reserved",
    122         [0x2d] = "Reserved",
    123         [0x2e] = "Reserved",
    124         [0x2f] = "Reserved",
    125         [0x30] = "Reserved",
    126         [0x31] = "Reserved",
    127         [0x32] = "Reserved",
    128         [0x33] = "Reserved",
    129         [0x34] = "Reserved",
    130         [0x35] = "Reserved",
    131         [0x36] = "Reserved",
    132         [0x37] = "Reserved",
    133         [0x38] = "Reserved",
    134         [0x39] = "Reserved",
    135         [0x3a] = "Reserved",
    136         [0x3b] = "Reserved",
    137         [0x3c] = "Reserved",
    138         [0x3d] = "Reserved",
    139         [0x3e] = "Reserved",
    140         [0x3f] = "Reserved",
    141         [0x40] = "Menu",
    142         [0x41] = "Menu Pick",
    143         [0x42] = "Menu Up",
    144         [0x43] = "Menu Down",
    145         [0x44] = "Menu Left",
    146         [0x45] = "Menu Right",
    147         [0x46] = "Menu Escape",
    148         [0x47] = "Menu Value Increase",
    149         [0x48] = "Menu Value Decrease",
    150         [0x49] = "Reserved",
    151         [0x4a] = "Reserved",
    152         [0x4b] = "Reserved",
    153         [0x4c] = "Reserved",
    154         [0x4d] = "Reserved",
    155         [0x4e] = "Reserved",
    156         [0x4f] = "Reserved",
    157         [0x50] = "Reserved",
    158         [0x51] = "Reserved",
    159         [0x52] = "Reserved",
    160         [0x53] = "Reserved",
    161         [0x54] = "Reserved",
    162         [0x55] = "Reserved",
    163         [0x56] = "Reserved",
    164         [0x57] = "Reserved",
    165         [0x58] = "Reserved",
    166         [0x59] = "Reserved",
    167         [0x5a] = "Reserved",
    168         [0x5b] = "Reserved",
    169         [0x5c] = "Reserved",
    170         [0x5d] = "Reserved",
    171         [0x5e] = "Reserved",
    172         [0x5f] = "Reserved",
    173         [0x60] = "Data On Screen",
    174         [0x61] = "Closed Caption",
    175         [0x62] = "Closed Caption Select",
    176         [0x63] = "VCR/TV",
    177         [0x64] = "Broadcast Mode",
    178         [0x65] = "Snapshot",
    179         [0x66] = "Still",
    180         [0x67] = "Reserved",
    181         [0x68] = "Reserved",
    182         [0x69] = "Reserved",
    183         [0x6a] = "Reserved",
    184         [0x6b] = "Reserved",
    185         [0x6c] = "Reserved",
    186         [0x6d] = "Reserved",
    187         [0x6e] = "Reserved",
    188         [0x6f] = "Reserved",
    189         [0x70] = "Reserved",
    190         [0x71] = "Reserved",
    191         [0x72] = "Reserved",
    192         [0x73] = "Reserved",
    193         [0x74] = "Reserved",
    194         [0x75] = "Reserved",
    195         [0x76] = "Reserved",
    196         [0x77] = "Reserved",
    197         [0x78] = "Reserved",
    198         [0x79] = "Reserved",
    199         [0x7a] = "Reserved",
    200         [0x7b] = "Reserved",
    201         [0x7c] = "Reserved",
    202         [0x7d] = "Reserved",
    203         [0x7e] = "Reserved",
    204         [0x7f] = "Reserved",
    205         [0x80] = "Selection",
    206         [0x81] = "Assign Selection",
    207         [0x82] = "Mode Step",
    208         [0x83] = "Recall Last",
    209         [0x84] = "Enter Channel",
    210         [0x85] = "Order Movie",
    211         [0x86] = "Channel",
    212         [0x87] = "Media Selection",
    213         [0x88] = "Media Select Computer",
    214         [0x89] = "Media Select TV",
    215         [0x8a] = "Media Select WWW",
    216         [0x8b] = "Media Select DVD",
    217         [0x8c] = "Media Select Telephone",
    218         [0x8d] = "Media Select Program Guide",
    219         [0x8e] = "Media Select Video Phone",
    220         [0x8f] = "Media Select Games",
    221         [0x90] = "Media Select Messages",
    222         [0x91] = "Media Select CD",
    223         [0x92] = "Media Select VCR",
    224         [0x93] = "Media Select Tuner",
    225         [0x94] = "Quit",
    226         [0x95] = "Help",
    227         [0x96] = "Media Select Tape",
    228         [0x97] = "Media Select Cable",
    229         [0x98] = "Media Select Satellite",
    230         [0x99] = "Media Select Security",
    231         [0x9a] = "Media Select Home",
    232         [0x9b] = "Media Select Call",
    233         [0x9c] = "Channel Increment",
    234         [0x9d] = "Channel Decrement",
    235         [0x9e] = "Media Select SAP",
    236         [0x9f] = "Reserved",
    237         [0xa0] = "VCR Plus",
    238         [0xa1] = "Once",
    239         [0xa2] = "Daily",
    240         [0xa3] = "Weekly",
    241         [0xa4] = "Monthly",
    242         [0xa5] = "Reserved",
    243         [0xa6] = "Reserved",
    244         [0xa7] = "Reserved",
    245         [0xa8] = "Reserved",
    246         [0xa9] = "Reserved",
    247         [0xaa] = "Reserved",
    248         [0xab] = "Reserved",
    249         [0xac] = "Reserved",
    250         [0xad] = "Reserved",
    251         [0xae] = "Reserved",
    252         [0xaf] = "Reserved",
    253         [0xb0] = "Play",
    254         [0xb1] = "Pause",
    255         [0xb2] = "Record",
    256         [0xb3] = "Fast Forward",
    257         [0xb4] = "Rewind",
    258         [0xb5] = "Scan Next Track",
    259         [0xb6] = "Scan Previous Trac",
    260         [0xb7] = "Stop",
    261         [0xb8] = "Eject",
    262         [0xb9] = "Random Play",
    263         [0xba] = "Select Disc",
    264         [0xbb] = "Enter Disc",
    265         [0xbc] = "Repeat",
    266         [0xbd] = "Tracking",
    267         [0xbe] = "Track Normal",
    268         [0xbf] = "Slow Tracking",
    269         [0xc0] = "Frame Forward",
    270         [0xc1] = "Frame Back",
    271         [0xc2] = "Mark",
    272         [0xc3] = "Clear Mark",
    273         [0xc4] = "Repeat From Mark",
    274         [0xc5] = "Return to Mark",
    275         [0xc6] = "Search Mark Forward",
    276         [0xc7] = "Search Mark Backwards",
    277         [0xc8] = "Counter Reset",
    278         [0xc9] = "Show Counter",
    279         [0xca] = "Tracking Increment",
    280         [0xcb] = "Tracking Decrement",
    281         [0xcc] = "Stop/Eject",
    282         [0xcd] = "Play/Pause",
    283         [0xce] = "Play/Skip",
    284         [0xcf] = "Reserved",
    285         [0xd0] = "Reserved",
    286         [0xd1] = "Reserved",
    287         [0xd2] = "Reserved",
    288         [0xd3] = "Reserved",
    289         [0xd4] = "Reserved",
    290         [0xd5] = "Reserved",
    291         [0xd6] = "Reserved",
    292         [0xd7] = "Reserved",
    293         [0xd8] = "Reserved",
    294         [0xd9] = "Reserved",
    295         [0xda] = "Reserved",
    296         [0xdb] = "Reserved",
    297         [0xdc] = "Reserved",
    298         [0xdd] = "Reserved",
    299         [0xde] = "Reserved",
    300         [0xdf] = "Reserved",
    301         [0xe0] = "Volume",
    302         [0xe1] = "Balance",
    303         [0xe2] = "Mute",
    304         [0xe3] = "Bass",
    305         [0xe4] = "Treble",
    306         [0xe5] = "Bass Boost",
    307         [0xe6] = "Surround Mode",
    308         [0xe7] = "Loudness",
    309         [0xe8] = "MPX",
    310         [0xe9] = "Volume Increment",
    311         [0xea] = "Volume Decrement",
    312         [0xeb] = "Reserved",
    313         [0xec] = "Reserved",
    314         [0xed] = "Reserved",
    315         [0xee] = "Reserved",
    316         [0xef] = "Reserved",
    317         [0xf0] = "Speed Select",
    318         [0xf1] = "Playback Speed",
    319         [0xf2] = "Standard Play",
    320         [0xf3] = "Long Play",
    321         [0xf4] = "Extended Play",
    322         [0xf5] = "Slow",
    323         [0xf6] = "Reserved",
    324         [0xf7] = "Reserved",
    325         [0xf8] = "Reserved",
    326         [0xf9] = "Reserved",
    327         [0xfa] = "Reserved",
    328         [0xfb] = "Reserved",
    329         [0xfc] = "Reserved",
    330         [0xfd] = "Reserved",
    331         [0xfe] = "Reserved",
    332         [0xff] = "Reserved",
    333         [0x100] = "Fan Enable",
    334         [0x101] = "Fan Speed",
    335         [0x102] = "Light Enable",
    336         [0x103] = "Light Illumination Level",
    337         [0x104] = "Climate Control Enable",
    338         [0x105] = "Room Temperature",
    339         [0x106] = "Security Enable",
    340         [0x107] = "Fire Alarm",
    341         [0x108] = "Police Alarm",
    342         [0x109] = "Proximity",
    343         [0x10a] = "Motion",
    344         [0x10b] = "Duress Alarm",
    345         [0x10c] = "Holdup Alarm",
    346         [0x10d] = "Medical Alarm",
    347         [0x10e] = "Reserved",
    348         [0x10f] = "Reserved",
    349         [0x110] = "Reserved",
    350         [0x111] = "Reserved",
    351         [0x112] = "Reserved",
    352         [0x113] = "Reserved",
    353         [0x114] = "Reserved",
    354         [0x115] = "Reserved",
    355         [0x116] = "Reserved",
    356         [0x117] = "Reserved",
    357         [0x118] = "Reserved",
    358         [0x119] = "Reserved",
    359         [0x11a] = "Reserved",
    360         [0x11b] = "Reserved",
    361         [0x11c] = "Reserved",
    362         [0x11d] = "Reserved",
    363         [0x11e] = "Reserved",
    364         [0x11f] = "Reserved",
    365         [0x120] = "Reserved",
    366         [0x121] = "Reserved",
    367         [0x122] = "Reserved",
    368         [0x123] = "Reserved",
    369         [0x124] = "Reserved",
    370         [0x125] = "Reserved",
    371         [0x126] = "Reserved",
    372         [0x127] = "Reserved",
    373         [0x128] = "Reserved",
    374         [0x129] = "Reserved",
    375         [0x12a] = "Reserved",
    376         [0x12b] = "Reserved",
    377         [0x12c] = "Reserved",
    378         [0x12d] = "Reserved",
    379         [0x12e] = "Reserved",
    380         [0x12f] = "Reserved",
    381         [0x130] = "Reserved",
    382         [0x131] = "Reserved",
    383         [0x132] = "Reserved",
    384         [0x133] = "Reserved",
    385         [0x134] = "Reserved",
    386         [0x135] = "Reserved",
    387         [0x136] = "Reserved",
    388         [0x137] = "Reserved",
    389         [0x138] = "Reserved",
    390         [0x139] = "Reserved",
    391         [0x13a] = "Reserved",
    392         [0x13b] = "Reserved",
    393         [0x13c] = "Reserved",
    394         [0x13d] = "Reserved",
    395         [0x13e] = "Reserved",
    396         [0x13f] = "Reserved",
    397         [0x140] = "Reserved",
    398         [0x141] = "Reserved",
    399         [0x142] = "Reserved",
    400         [0x143] = "Reserved",
    401         [0x144] = "Reserved",
    402         [0x145] = "Reserved",
    403         [0x146] = "Reserved",
    404         [0x147] = "Reserved",
    405         [0x148] = "Reserved",
    406         [0x149] = "Reserved",
    407         [0x14a] = "Reserved",
    408         [0x14b] = "Reserved",
    409         [0x14c] = "Reserved",
    410         [0x14d] = "Reserved",
    411         [0x14e] = "Reserved",
    412         [0x14f] = "Reserved",
    413         [0x150] = "Balance Right",
    414         [0x151] = "Balance Left",
    415         [0x152] = "Bass Increment",
    416         [0x153] = "Bass Decrement",
    417         [0x154] = "Treble Increment",
    418         [0x155] = "Treble Decrement",
    419         [0x156] = "Reserved",
    420         [0x157] = "Reserved",
    421         [0x158] = "Reserved",
    422         [0x159] = "Reserved",
    423         [0x15a] = "Reserved",
    424         [0x15b] = "Reserved",
    425         [0x15c] = "Reserved",
    426         [0x15d] = "Reserved",
    427         [0x15e] = "Reserved",
    428         [0x15f] = "Reserved",
    429         [0x160] = "Speaker System",
    430         [0x161] = "Channel Left",
    431         [0x162] = "Channel Right",
    432         [0x163] = "Channel Center",
    433         [0x164] = "Channel Front",
    434         [0x165] = "Channel Center Front",
    435         [0x166] = "Channel Side",
    436         [0x167] = "Channel Surround",
    437         [0x168] = "Channel Low Frequency Enhancement",
    438         [0x169] = "Channel Top",
    439         [0x16a] = "Channel Unknown",
    440         [0x16b] = "Reserved",
    441         [0x16c] = "Reserved",
    442         [0x16d] = "Reserved",
    443         [0x16e] = "Reserved",
    444         [0x16f] = "Reserved",
    445         [0x170] = "Sub-channel",
    446         [0x171] = "Sub-channel Increment",
    447         [0x172] = "Sub-channel Decrement",
    448         [0x173] = "Alternate Audio Increment",
    449         [0x174] = "Alternate Audio Decrement",
    450         [0x175] = "Reserved",
    451         [0x176] = "Reserved",
    452         [0x177] = "Reserved",
    453         [0x178] = "Reserved",
    454         [0x179] = "Reserved",
    455         [0x17a] = "Reserved",
    456         [0x17b] = "Reserved",
    457         [0x17c] = "Reserved",
    458         [0x17d] = "Reserved",
    459         [0x17e] = "Reserved",
    460         [0x17f] = "Reserved",
    461         [0x180] = "Application Launch Buttons",
    462         [0x181] = "AL Launch Buttion Configuration Tool",
    463         [0x182] = "AL Programmable Button Configuration",
    464         [0x183] = "AL Consumer Control Configuration",
    465         [0x184] = "AL Word Processor",
    466         [0x185] = "AL Text Editor",
    467         [0x186] = "AL Spreadsheet",
    468         [0x187] = "AL Graphics Editor",
    469         [0x188] = "AL Presentation App",
    470         [0x189] = "AL Database App",
    471         [0x18a] = "AL Email Reader",
    472         [0x18b] = "AL Newsreader",
    473         [0x18c] = "AL Voicemail",
    474         [0x18d] = "AL Contacts/Address Book",
    475         [0x18e] = "AL Calendar/Schedule",
    476         [0x18f] = "AL Task/Project Manager",
    477         [0x190] = "AL Log/Journal/Timecard",
    478         [0x191] = "AL Checkbook/Finance",
    479         [0x192] = "AL Calculator",
    480         [0x193] = "AL A/V Capture/Playback",
    481         [0x194] = "AL Local Machine Browser",
    482         [0x195] = "AL LAN/WAN Browser",
    483         [0x196] = "AL Internet Browser",
    484         [0x197] = "AL Remote Networking/ISP Connect",
    485         [0x198] = "AL Network Conference",
    486         [0x199] = "AL Network Chat",
    487         [0x19a] = "AL Telephony/Dialer",
    488         [0x19b] = "AL Logon",
    489         [0x19c] = "AL Logoff",
    490         [0x19d] = "AL Logon/Logoff",
    491         [0x19e] = "AL Terminal Lock/Screensaver",
    492         [0x19f] = "AL Control Panel",
    493         [0x1a0] = "AL Command Line Processor/Run",
    494         [0x1a1] = "AL Process/Task Manager",
    495         [0x1a2] = "AL Select Task/Application",
    496         [0x1a3] = "AL Next Task/Application",
    497         [0x1a4] = "AL Previous Task/Application",
    498         [0x1a5] = "AL Preemptive Halt Task/Application",
    499         [0x1a6] = "AL Integrated Help Center",
    500         [0x1a7] = "AL Documents",
    501         [0x1a8] = "AL Thesaurus",
    502         [0x1a9] = "AL Dictionary",
    503         [0x1aa] = "AL Desktop",
    504         [0x1ab] = "AL Spell Check",
    505         [0x1ac] = "AL Grammar Check",
    506         [0x1ad] = "AL Wireless Status",
    507         [0x1ae] = "AL Keyboard Layout",
    508         [0x1af] = "AL Virus Protection",
    509         [0x1b0] = "AL Encryption",
    510         [0x1b1] = "AL Screen Saver",
    511         [0x1b2] = "AL Alarms",
    512         [0x1b3] = "AL Clock",
    513         [0x1b4] = "AL File Browser",
    514         [0x1b5] = "AL Power Status",
    515         [0x1b6] = "AL Image Browser",
    516         [0x1b7] = "AL Audio Browser",
    517         [0x1b8] = "AL Movie Browser",
    518         [0x1b9] = "AL Digital Rights Manager",
    519         [0x1ba] = "AL Digital Wallet",
    520         [0x1bb] = "Reserved",
    521         [0x1bc] = "AL Instant Messaging",
    522         [0x1bd] = "AL OEM Features Tips/Tutorial Browser",
    523         [0x1be] = "AL OEM Help",
    524         [0x1bf] = "AL Online Community",
    525         [0x1c0] = "AL Entertainment Content Browser",
    526         [0x1c1] = "AL Online Shopping Browser",
    527         [0x1c2] = "AL SmartCard Information/Help",
    528         [0x1c3] = "AL Market Monitor/Finance Browser",
    529         [0x1c4] = "AL Customized Corporate News Browser",
    530         [0x1c5] = "AL Online Activity Browser",
    531         [0x1c6] = "AL Research/Search Browser",
    532         [0x1c7] = "AL Audio Player",
    533         [0x1c8] = "Reserved",
    534         [0x1c9] = "Reserved",
    535         [0x1ca] = "Reserved",
    536         [0x1cb] = "Reserved",
    537         [0x1cc] = "Reserved",
    538         [0x1cd] = "Reserved",
    539         [0x1ce] = "Reserved",
    540         [0x1cf] = "Reserved",
    541         [0x1d0] = "Reserved",
    542         [0x1d1] = "Reserved",
    543         [0x1d2] = "Reserved",
    544         [0x1d3] = "Reserved",
    545         [0x1d4] = "Reserved",
    546         [0x1d5] = "Reserved",
    547         [0x1d6] = "Reserved",
    548         [0x1d7] = "Reserved",
    549         [0x1d8] = "Reserved",
    550         [0x1d9] = "Reserved",
    551         [0x1da] = "Reserved",
    552         [0x1db] = "Reserved",
    553         [0x1dc] = "Reserved",
    554         [0x1dd] = "Reserved",
    555         [0x1de] = "Reserved",
    556         [0x1df] = "Reserved",
    557         [0x1e0] = "Reserved",
    558         [0x1e1] = "Reserved",
    559         [0x1e2] = "Reserved",
    560         [0x1e3] = "Reserved",
    561         [0x1e4] = "Reserved",
    562         [0x1e5] = "Reserved",
    563         [0x1e6] = "Reserved",
    564         [0x1e7] = "Reserved",
    565         [0x1e8] = "Reserved",
    566         [0x1e9] = "Reserved",
    567         [0x1ea] = "Reserved",
    568         [0x1eb] = "Reserved",
    569         [0x1ec] = "Reserved",
    570         [0x1ed] = "Reserved",
    571         [0x1ee] = "Reserved",
    572         [0x1ef] = "Reserved",
    573         [0x1f0] = "Reserved",
    574         [0x1f1] = "Reserved",
    575         [0x1f2] = "Reserved",
    576         [0x1f3] = "Reserved",
    577         [0x1f4] = "Reserved",
    578         [0x1f5] = "Reserved",
    579         [0x1f6] = "Reserved",
    580         [0x1f7] = "Reserved",
    581         [0x1f8] = "Reserved",
    582         [0x1f9] = "Reserved",
    583         [0x1fa] = "Reserved",
    584         [0x1fb] = "Reserved",
    585         [0x1fc] = "Reserved",
    586         [0x1fd] = "Reserved",
    587         [0x1fe] = "Reserved",
    588         [0x1ff] = "Reserved",
    589         [0x200] = "Generic GUI Application Controls",
    590         [0x201] = "AC New",
    591         [0x202] = "AC Open",
    592         [0x203] = "AC Close",
    593         [0x204] = "AC Exit",
    594         [0x205] = "AC Maximize",
    595         [0x206] = "AC Minimize",
    596         [0x207] = "AC Save",
    597         [0x208] = "AC Print",
    598         [0x209] = "AC Properties",
    599         [0x20a] = "",
    600         [0x20b] = "",
    601         [0x20c] = "",
    602         [0x20d] = "",
    603         [0x20e] = "",
    604         [0x20f] = "",
    605         [0x210] = "",
    606         [0x211] = "",
    607         [0x212] = "",
    608         [0x213] = "",
    609         [0x214] = "",
    610         [0x215] = "",
    611         [0x216] = "",
    612         [0x217] = "",
    613         [0x218] = "",
    614         [0x219] = "",
    615         [0x21a] = "AC Undo",
    616         [0x21b] = "AC Copy",
    617         [0x21c] = "AC Cut",
    618         [0x21d] = "AC Paste",
    619         [0x21e] = "AC Select All",
    620         [0x21f] = "AC Find",
    621         [0x220] = "AC Find and Replace",
    622         [0x221] = "AC Search",
    623         [0x222] = "AC Go To",
    624         [0x223] = "AC Home",
    625         [0x224] = "AC Back",
    626         [0x225] = "AC Forward",
    627         [0x226] = "AC Stop",
    628         [0x227] = "AC Refresh",
    629         [0x228] = "AC Previous Link",
    630         [0x229] = "AC Next Link",
    631         [0x22a] = "AC Bookmarks",
    632         [0x22b] = "AC History",
    633         [0x22c] = "AC Subscriptions",
    634         [0x22d] = "AC Zoom In",
    635         [0x22e] = "AC Zoom Out",
    636         [0x22f] = "AC Zoom",
    637         [0x230] = "AC Full Screen View",
    638         [0x231] = "AC Normal View",
    639         [0x232] = "AC View Toggle",
    640         [0x233] = "AC Scroll Up",
    641         [0x234] = "AC Scroll Down",
    642         [0x235] = "AC Scroll",
    643         [0x236] = "AC Pan Left",
    644         [0x237] = "AC Pan Right",
    645         [0x238] = "AC Pan",
    646         [0x239] = "AC New Window",
    647         [0x23a] = "AC Tile Horizontally",
    648         [0x23b] = "AC Tile Vertically",
    649         [0x23c] = "AC Format",
    650         [0x23d] = "AC Edit",
    651         [0x23e] = "AC Bold",
    652         [0x23f] = "AC Italics",
    653         [0x240] = "AC Undeline",
    654         [0x241] = "AC Strikethrough",
    655         [0x242] = "AC Subscript",
    656         [0x243] = "AC Superscript",
    657         [0x244] = "AC All Caps",
    658         [0x245] = "AC Rotate",
    659         [0x246] = "AC Resize",
    660         [0x247] = "AC Flip Horizontal",
    661         [0x248] = "AC Flip Vertical",
    662         [0x249] = "AC Mirror Horizontal",
    663         [0x24a] = "AC Mirror Vertical",
    664         [0x24b] = "AC Font Select",
    665         [0x24c] = "AC Font Color",
    666         [0x24d] = "AC Font Size",
    667         [0x24e] = "AC Justify Left",
    668         [0x24f] = "AC Justify Center H",
    669         [0x250] = "AC Justify Right",
    670         [0x251] = "AC Justify Block H",
    671         [0x252] = "AC Justify Top",
    672         [0x253] = "AC Justify Center V",
    673         [0x254] = "AC Justify Bottom",
    674         [0x255] = "AC Justify Block V",
    675         [0x256] = "AC Indent Decrease",
    676         [0x257] = "AC Indent Increase",
    677         [0x258] = "AC Numbered List",
    678         [0x259] = "AC Restart Numbering",
    679         [0x25a] = "AC Bulleted List",
    680         [0x25b] = "AC Promote",
    681         [0x25c] = "AC Demote",
    682         [0x25d] = "AC Yes",
    683         [0x25e] = "AC No",
    684         [0x25f] = "AC Cancel",
    685         [0x260] = "AC Catalog",
    686         [0x261] = "AC Buy/Checkout",
    687         [0x262] = "AC Add to Cart",
    688         [0x263] = "AC Expand",
    689         [0x264] = "AC Expand All",
    690         [0x265] = "AC Collapse",
    691         [0x266] = "AC Collapse All",
    692         [0x267] = "AC Print Preview",
    693         [0x268] = "AC Paste Special",
    694         [0x269] = "AC Insert Mode",
    695         [0x26a] = "AC Delete",
    696         [0x26b] = "AC Lock",
    697         [0x26c] = "AC Unlock",
    698         [0x26d] = "AC Protect",
    699         [0x26e] = "AC Unprotect",
    700         [0x26f] = "AC Attach Comment",
    701         [0x270] = "AC Delete Comment",
    702         [0x271] = "AC View Comment",
    703         [0x272] = "AC Select Word",
    704         [0x273] = "AC Select Sentence",
    705         [0x274] = "AC Select Paragraph",
    706         [0x275] = "AC Select Column",
    707         [0x276] = "AC Select Row",
    708         [0x277] = "AC Select Table",
    709         [0x278] = "AC Select Object",
    710         [0x279] = "AC Redo/Repeat",
    711         [0x27a] = "AC Sort",
    712         [0x27b] = "AC Sort Ascending",
    713         [0x27c] = "AC Sort Descending",
    714         [0x27d] = "AC Filter",
    715         [0x27e] = "AC Set Clock",
    716         [0x27f] = "AC View Clock",
    717         [0x280] = "AC Select Time Zone",
    718         [0x281] = "AC Edit Time Zones",
    719         [0x282] = "AC Set Alarm",
    720         [0x283] = "AC Clear Alarm",
    721         [0x284] = "AC Snooze Alarm",
    722         [0x285] = "AC Reset Alarm",
    723         [0x286] = "AC Synchronize",
    724         [0x287] = "AC Send/Receive",
    725         [0x288] = "AC Send To",
    726         [0x289] = "AC Reply",
    727         [0x28a] = "AC Reply All",
    728         [0x28b] = "AC Forward Msg",
    729         [0x28c] = "AC Send",
    730         [0x28d] = "AC Attach File",
    731         [0x28e] = "AC Upload",
    732         [0x28f] = "AC Download (Save Target As)",
    733         [0x290] = "AC Set Borders",
    734         [0x291] = "AC Insert Row",
    735         [0x292] = "AC Insert Column",
    736         [0x293] = "AC Insert File",
    737         [0x294] = "AC Insert Picture",
    738         [0x295] = "AC Insert Object",
    739         [0x296] = "AC Insert Symbol",
    740         [0x297] = "AC Save and Close",
    741         [0x298] = "AC Rename",
    742         [0x299] = "AC Merge",
    743         [0x29a] = "AC Split",
    744         [0x29b] = "AC Distrubute Horizontally",
    745         [0x29c] = "AC Distrubute Vertically"
    746 };
    747 
    74877/**
    74978 * Translates USB HID Usages from the Consumer Page into HelenOS keycodes.
     
    76998
    77099/**
    771  * Translates USB HID Usages from the Consumer Page into their string
    772  * representation.
    773  *
    774  * @param usage USB HID Consumer Page Usage number.
    775  *
    776  * @retval HelenOS key code corresponding to the given USB Consumer Page Usage.
    777  */
    778 const char *usb_multimedia_usage_to_str(int usage)
    779 {
    780         size_t map_length = sizeof(usb_hid_consumer_usage_str) / sizeof(char *);
    781 
    782         if ((usage < 0) || ((size_t)usage >= map_length))
    783                 return "Unknown usage";
    784 
    785         /*! @todo What if the usage is not in the table? */
    786         return usb_hid_consumer_usage_str[usage];
    787 }
    788 
    789 /**
    790100 * @}
    791101 */
  • uspace/drv/usbhid/multimedia/keymap.h

    r4e78236 rd7c72db  
    3939unsigned int usb_multimedia_map_usage(int usage);
    4040
    41 const char *usb_multimedia_usage_to_str(int usage);
    42 
    4341#endif /* USB_HID_MULTIMEDIA_KEYMAP_H_ */
    4442
  • uspace/drv/usbhid/multimedia/multimedia.c

    r4e78236 rd7c72db  
    4343#include <usb/debug.h>
    4444#include <usb/hid/usages/core.h>
     45#include <usb/hid/usages/consumer.h>
    4546
    4647#include <errno.h>
     
    359360                            usb_multimedia_map_usage(field->usage);
    360361                        const char *key_str =
    361                             usb_multimedia_usage_to_str(field->usage);
     362                            usbhid_multimedia_usage_to_str(field->usage);
    362363                        usb_log_info("Pressed key: %s\n", key_str);
    363364                        usb_multimedia_push_ev(hid_dev, multim_dev, KEY_PRESS,
  • uspace/lib/drv/generic/dev_iface.c

    r4e78236 rd7c72db  
    6161remote_iface_t *get_remote_iface(int idx)
    6262{
    63         printf("get_remote_iface(): idx: %d\n", idx);
    6463        assert(is_valid_iface_idx(idx));
    65         printf("remote iface: %p\n", remote_ifaces.ifaces[idx]);
    66        
    67         printf("remote_usbhid_iface ptr: %p\n", &remote_usbhid_iface);
    6864       
    6965        return remote_ifaces.ifaces[idx];
     
    7369get_remote_method(remote_iface_t *rem_iface, sysarg_t iface_method_idx)
    7470{
    75         printf("remote iface: %p\n", rem_iface);
    76         printf("Method count: %d\n", rem_iface->method_count);
    7771        if (iface_method_idx >= rem_iface->method_count) {
    7872                return NULL;
  • uspace/lib/drv/generic/remote_usbhid.c

    r4e78236 rd7c72db  
    4343static void remote_usbhid_get_event_length(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
    4444static void remote_usbhid_get_event(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
     45static void remote_usbhid_get_report_descriptor_length(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
     46static void remote_usbhid_get_report_descriptor(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
    4547// static void remote_usbhid_(ddf_fun_t *, void *, ipc_callid_t, ipc_call_t *);
    4648
     
    4850static remote_iface_func_ptr_t remote_usbhid_iface_ops [] = {
    4951        remote_usbhid_get_event_length,
    50         remote_usbhid_get_event
     52        remote_usbhid_get_event,
     53        remote_usbhid_get_report_descriptor_length,
     54        remote_usbhid_get_report_descriptor
    5155};
    5256
     
    117121        int rc;
    118122
    119         int32_t *data = malloc(len);
     123        uint8_t *data = malloc(len);
    120124        if (data == NULL) {
    121125                async_answer_0(data_callid, ENOMEM);
     
    143147}
    144148
     149void remote_usbhid_get_report_descriptor(ddf_fun_t *fun, void *iface,
     150    ipc_callid_t callid, ipc_call_t *call)
     151{
     152        /** @todo Implement! */
     153}
     154
     155void remote_usbhid_get_report_descriptor_length(ddf_fun_t *fun, void *iface,
     156    ipc_callid_t callid, ipc_call_t *call)
     157{
     158        /** @todo Implement! */
     159}
     160
    145161/**
    146162 * @}
  • uspace/lib/drv/include/usbhid_iface.h

    r4e78236 rd7c72db  
    4545         * Parameters: none
    4646         * Answer:
    47          * - EOK (expected always as long as device support USB HID interface)
    48          * Parameters of the answer:
    49          * - number of items
     47         * - Size of one report in bytes.
    5048         */
    5149        IPC_M_USBHID_GET_EVENT_LENGTH,
     
    6361         * It is okay if the client requests less data. Extra data must
    6462         * be truncated by the driver.
     63         *
     64         * @todo Change this comment.
    6565         */
    66         IPC_M_USBHID_GET_EVENT
     66        IPC_M_USBHID_GET_EVENT,
     67       
     68        /** Get the size of the report descriptor from the HID device.
     69         *
     70         * Parameters:
     71         * - none
     72         * Answer:
     73         * - Size of one report in bytes.
     74         * -
     75         *
     76         * @todo Finish this comment
     77         */
     78        IPC_M_USBHID_GET_REPORT_DESCRIPTOR_LENGTH,
     79       
     80        /** Get the report descriptor from the HID device.
     81         *
     82         * Parameters:
     83         * - none
     84         * Answer:
     85         * - EOK - report descriptor returned.
     86         * -
     87         *
     88         * @todo Finish this comment
     89         */
     90        IPC_M_USBHID_GET_REPORT_DESCRIPTOR
    6791} usbhid_iface_funcs_t;
    6892
     
    7599         *
    76100         * @param[in] fun DDF function answering the request.
    77          * @return Number of events or error code.
     101         * @return Size of the event in bytes.
    78102         */
    79103        size_t (*get_event_length)(ddf_fun_t *fun);
     
    87111         * @return Error code.
    88112         */
    89         int (*get_event)(ddf_fun_t *fun, int32_t *buffer, size_t size,
     113        int (*get_event)(ddf_fun_t *fun, uint8_t *buffer, size_t size,
    90114            size_t *act_size, unsigned int flags);
     115       
     116        /** Get size of the report descriptor in bytes.
     117         *
     118         * @param[in] fun DDF function answering the request.
     119         * @return Size of the report descriptor in bytes.
     120         */
     121        size_t (*get_report_descriptor_length)(ddf_fun_t *fun);
     122       
     123        /** Get the report descriptor from the HID device.
     124         *
     125         * @param[in] fun DDF function answering the request.
     126         * @param[out] desc Buffer with the report descriptor.
     127         * @param[out] size Size of the report descriptors in bytes.
     128         * @return Error code.
     129         */
     130        int (*get_report_descriptor)(ddf_fun_t *fun, uint8_t *desc,
     131            size_t size, size_t *act_size);
    91132} usbhid_iface_t;
    92133
  • uspace/lib/usbhid/Makefile

    r4e78236 rd7c72db  
    4141        src/hidpath.c \
    4242        src/hidreport.c \
     43        src/consumer.c \
    4344        src/hidreq.c
    4445
  • uspace/lib/usbhid/include/usb/hid/iface.h

    r4e78236 rd7c72db  
    3939
    4040int usbhid_dev_get_event_length(int, size_t *);
    41 int usbhid_dev_get_event(int, int32_t *, size_t, size_t *,
     41int usbhid_dev_get_event(int, uint8_t *, size_t, size_t *,
    4242    unsigned int);
     43int usbhid_dev_get_report_descriptor_length(int, size_t *);
     44int usbhid_dev_get_report_descriptor(int, uint8_t *, size_t, size_t *);
    4345
    4446#endif
  • uspace/lib/usbhid/src/hidiface.c

    r4e78236 rd7c72db  
    7474 * @return Error code.
    7575 */
    76 int usbhid_dev_get_event(int dev_phone, int32_t *buf,
     76int usbhid_dev_get_event(int dev_phone, uint8_t *buf,
    7777    size_t size, size_t *actual_size, unsigned int flags)
    7878{
     
    9292
    9393        size_t buffer_size =  size;
    94         uint16_t *buffer = malloc(buffer_size);
     94        uint8_t *buffer = malloc(buffer_size);
    9595        if (buffer == NULL) {
    9696                return ENOMEM;
     
    145145}
    146146
     147
     148int usbhid_dev_get_report_descriptor_length(int dev_phone, size_t *size)
     149{
     150        /** @todo Implement! */
     151        return ENOTSUP;
     152}
     153
     154int usbhid_dev_get_report_descriptor(int dev_phone, uint8_t *buf, size_t size,
     155    size_t *actual_size)
     156{
     157        /** @todo Implement! */
     158        return ENOTSUP;
     159}
     160
    147161/**
    148162 * @}
Note: See TracChangeset for help on using the changeset viewer.