Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usb/src/hidparser.c

    r2f60e57d re7726a4  
    4040 * @param parser Opaque HID report parser structure.
    4141 * @param data Data describing the report.
     42 * @param size Size of the descriptor in bytes.
    4243 * @return Error code.
    4344 */
     
    5455 * @param parser Opaque HID report parser structure.
    5556 * @param data Data for the report.
     57 * @param size Size of the data in bytes.
    5658 * @param callbacks Callbacks for report actions.
    5759 * @param arg Custom argument (passed through to the callbacks).
     
    6466        int i;
    6567       
    66         /* main parsing loop */
    67         while(0){
    68         }
     68        // TODO: parse report
    6969       
    70        
    71         uint8_t keys[6];
     70        uint16_t keys[6];
    7271       
    7372        for (i = 0; i < 6; ++i) {
     
    7574        }
    7675       
    77         callbacks->keyboard(keys, 6, 0, arg);
    78 
    79         return EOK;
    80 }
    81 
    82 /** Free the HID report parser structure
    83  *
    84  * @param parser Opaque HID report parser structure
    85  * @return Error code
    86  */
    87 int usb_hid_free_report_parser(usb_hid_report_parser_t *parser)
    88 {
    89 
     76        callbacks->keyboard(keys, 6, arg);
     77       
    9078        return EOK;
    9179}
     
    9381
    9482/**
    95  * Parse input report.
    96  *
    97  * @param data Data for report
    98  * @param size Size of report
    99  * @param callbacks Callbacks for report actions
    100  * @param arg Custom arguments
    101  *
    102  * @return Error code
    103  */
    104 int usb_hid_boot_keyboard_input_report(const uint8_t *data, size_t size,
    105         const usb_hid_report_in_callbacks_t *callbacks, void *arg)
    106 {
    107         int i;
    108         usb_hid_report_item_t item;
    109 
    110         /* fill item due to the boot protocol report descriptor */
    111         // modifier keys are in the first byte
    112         uint8_t modifiers = data[0];
    113 
    114         item.offset = 2; /* second byte is reserved */
    115         item.size = 8;
    116         item.count = 6;
    117         item.usage_min = 0;
    118         item.usage_max = 255;
    119         item.logical_min = 0;
    120         item.logical_max = 255;
    121 
    122         if(size != 8){
    123                 return -1;
    124         }
    125 
    126         uint8_t keys[6];
    127         for(i=item.offset; i<item.count; i++) {
    128                 keys[i-2] = data[i];
    129         }
    130 
    131         callbacks->keyboard(keys, 6, modifiers, arg);
    132         return EOK;
    133 }
    134 
    135 /**
    136  * Makes output report for keyboard boot protocol
    137  *
    138  * @param leds
    139  * @param output Output report data buffer
    140  * @param size Size of the output buffer
    141  * @return Error code
    142  */
    143 int usb_hid_boot_keyboard_output_report(uint8_t leds, uint8_t *data, size_t size)
    144 {
    145         if(size != 1){
    146                 return -1;
    147         }
    148 
    149         /* used only first five bits, others are only padding*/
    150         *data = leds;
    151         return EOK;
    152 }
    153 
    154 /**
    15583 * @}
    15684 */
Note: See TracChangeset for help on using the changeset viewer.