Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbkbd/kbddev.c

    r7f2e33a ref354b6  
    128128        0x15, 0x00,  //   Logical Minimum (0),
    129129        0x25, 0x01,  //   Logical Maximum (1),
     130        //0x85, 0x00,  //   Report ID,
     131        //0xA4,      //   Push
    130132        0x81, 0x02,  //   Input (Data, Variable, Absolute),   ; Modifier byte
    131         0x95, 0x01,  //   Report Count (1),
    132         0x75, 0x08,  //   Report Size (8),
     133        //0xB4,      //   Pop
     134        0x75, 0x08,  //   Report Size (1),
     135        0x95, 0x01,  //   Report Count (8),       
    133136        0x81, 0x01,  //   Input (Constant),                   ; Reserved byte
    134137        0x95, 0x05,  //   Report Count (5),
     
    265268static void usb_kbd_set_led(usb_kbd_t *kbd_dev)
    266269{
    267         if (kbd_dev->output_size == 0) {
    268                 return;
    269         }
    270        
    271270        unsigned i = 0;
    272271       
     
    290289       
    291290        usb_log_debug("Creating output report.\n");
    292        
    293         int rc = usb_hid_report_output_translate(kbd_dev->parser,
    294             kbd_dev->led_path,
    295             USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
    296             kbd_dev->output_buffer,
    297             kbd_dev->output_size, kbd_dev->led_data, kbd_dev->led_output_size);
     291
     292        usb_hid_report_output_set_data(kbd_dev->parser, kbd_dev->led_path,
     293                                       USB_HID_PATH_COMPARE_END , kbd_dev->led_data,
     294                                       kbd_dev->led_output_size);
     295        int rc = usb_hid_report_output_translate(kbd_dev->parser, 0,
     296            kbd_dev->output_buffer, kbd_dev->output_size);
    298297       
    299298        if (rc != EOK) {
     
    545544 *                  according to HID Usage Tables.
    546545 * @param count Number of key codes in report (size of the report).
    547  * @param report_id
     546 * @param modifiers Bitmap of modifiers (Ctrl, Alt, Shift, GUI).
    548547 * @param arg User-specified argument. Expects pointer to the keyboard device
    549548 *            structure representing the keyboard.
     
    552551 */
    553552static void usb_kbd_process_keycodes(const uint8_t *key_codes, size_t count,
    554     uint8_t report_id, void *arg)
     553    uint8_t modifiers, void *arg)
    555554{
    556555        if (arg == NULL) {
     
    563562        assert(kbd_dev != NULL);
    564563
    565         usb_log_debug("Got keys from parser (report id: %u): %s\n",
    566             report_id, usb_debug_str_buffer(key_codes, count, 0));
     564        usb_log_debug("Got keys from parser (report id: %d): %s\n", modifiers,
     565            usb_debug_str_buffer(key_codes, count, 0));
    567566       
    568567        if (count != kbd_dev->key_count) {
     
    614613        usb_hid_report_path_t *path = usb_hid_report_path();
    615614        usb_hid_report_path_append_item(path, USB_HIDUT_PAGE_KEYBOARD, 0);
    616         usb_hid_report_path_set_report_id(path, 0);
    617        
    618         int rc = usb_hid_parse_report(kbd_dev->parser, buffer,
    619             actual_size, path,
    620             USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,
    621             callbacks, kbd_dev);
     615
     616        int rc = usb_hid_parse_report(kbd_dev->parser, buffer, actual_size);
     617        usb_hid_descriptor_print (kbd_dev->parser);
    622618
    623619        usb_hid_report_path_free (path);
     
    663659        memset(kbd_dev, 0, sizeof(usb_kbd_t));
    664660       
    665         kbd_dev->parser = (usb_hid_report_parser_t *)(malloc(sizeof(
    666             usb_hid_report_parser_t)));
     661        kbd_dev->parser = (usb_hid_report_t *)(malloc(sizeof(
     662            usb_hid_report_t)));
    667663        if (kbd_dev->parser == NULL) {
    668664                usb_log_fatal("No memory!\n");
     
    732728       
    733729        /* Initialize the report parser. */
    734         rc = usb_hid_parser_init(kbd_dev->parser);
    735         if (rc != EOK) {
    736                 usb_log_error("Failed to initialize report parser.\n");
    737                 return rc;
    738         }
     730        //rc = usb_hid_parser_init(kbd_dev->parser);
     731        //if (rc != EOK) {
     732        //      usb_log_error("Failed to initialize report parser.\n");
     733        //      return rc;
     734        //}
    739735       
    740736        /* Get the report descriptor and parse it. */
     
    767763        usb_hid_report_path_t *path = usb_hid_report_path();
    768764        usb_hid_report_path_append_item(path, USB_HIDUT_PAGE_KEYBOARD, 0);
    769        
    770         usb_hid_report_path_set_report_id(path, 0);
    771        
    772765        kbd_dev->key_count = usb_hid_report_input_length(
    773             kbd_dev->parser, path,
    774             USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY);
     766            kbd_dev->parser, path, USB_HID_PATH_COMPARE_END);
    775767        usb_hid_report_path_free (path);
    776768       
     
    789781        kbd_dev->output_size = 0;
    790782        kbd_dev->output_buffer = usb_hid_report_output(kbd_dev->parser,
    791             &kbd_dev->output_size);
    792         if (kbd_dev->output_buffer == NULL && kbd_dev->output_size != 0) {
     783            &kbd_dev->output_size, 0x00);
     784        if (kbd_dev->output_buffer == NULL) {
    793785                usb_log_warning("Error creating output report buffer.\n");
    794786                free(kbd_dev->keys);
     
    801793        usb_hid_report_path_append_item(
    802794            kbd_dev->led_path, USB_HIDUT_PAGE_LED, 0);
     795        usb_hid_report_path_set_report_id(kbd_dev->led_path, 0x00);
    803796       
    804797        kbd_dev->led_output_size = usb_hid_report_output_size(kbd_dev->parser,
    805             kbd_dev->led_path,
    806             USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY);
     798            kbd_dev->led_path, USB_HID_PATH_COMPARE_END);
    807799       
    808800        usb_log_debug("Output report size (in items): %zu\n",
     
    849841         * Set Idle rate
    850842         */
    851         usb_kbd_set_led(kbd_dev);
     843        usb_kbd_set_led(kbd_dev);       
    852844       
    853845        usbhid_req_set_idle(&kbd_dev->usb_dev->ctrl_pipe,
     
    934926        // destroy the parser
    935927        if ((*kbd_dev)->parser != NULL) {
    936                 usb_hid_free_report_parser((*kbd_dev)->parser);
     928                usb_hid_free_report((*kbd_dev)->parser);
    937929        }
    938930       
Note: See TracChangeset for help on using the changeset viewer.