Changeset 65b458c4 in mainline for uspace/drv/usbhid/kbd/kbddev.c


Ignore:
Timestamp:
2011-05-13T12:44:37Z (14 years ago)
Author:
Lubos Slovak <lubos.slovak@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
37f87fa
Parents:
97cb542
Message:

Subdriver-specific data moved to the subdriver structure.

+ DDF ops removed from hid_dev_t.

Should fix #225

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/usbhid/kbd/kbddev.c

    r97cb542 r65b458c4  
    252252        sysarg_t method = IPC_GET_IMETHOD(*icall);
    253253       
    254         usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)fun->driver_data;
    255        
    256         if (hid_dev == NULL || hid_dev->data == NULL) {
     254        usb_kbd_t *kbd_dev = (usb_kbd_t *)fun->driver_data;
     255        if (kbd_dev == NULL) {
    257256                usb_log_debug("default_connection_handler: "
    258257                    "Missing parameter.\n");
     
    260259                return;
    261260        }
    262        
    263         assert(hid_dev != NULL);
    264         assert(hid_dev->data != NULL);
    265         usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
    266261
    267262        if (method == IPC_M_CONNECT_TO_ME) {
     
    663658 *     usb_hid_parse_report().
    664659 */
    665 static void usb_kbd_process_data(usb_hid_dev_t *hid_dev,
     660static void usb_kbd_process_data(usb_hid_dev_t *hid_dev, usb_kbd_t *kbd_dev,
    666661                                 uint8_t *buffer, size_t actual_size)
    667662{
    668663        assert(hid_dev->report != NULL);
    669664        assert(hid_dev != NULL);
    670         assert(hid_dev->data != NULL);
    671        
    672         usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
     665        assert(kbd_dev != NULL);
    673666
    674667        usb_log_debug("Calling usb_hid_parse_report() with "
     
    775768/*----------------------------------------------------------------------------*/
    776769
    777 static int usb_kbd_create_function(usb_hid_dev_t *hid_dev)
     770static int usb_kbd_create_function(usb_hid_dev_t *hid_dev, usb_kbd_t *kbd_dev)
    778771{
    779772        assert(hid_dev != NULL);
    780773        assert(hid_dev->usb_dev != NULL);
     774        assert(kbd_dev != NULL);
    781775       
    782776        /* Create the function exposed under /dev/devices. */
     
    793787         * to the DDF function.
    794788         */
    795         fun->ops = &hid_dev->ops;
    796         fun->driver_data = hid_dev;   // TODO: maybe change to hid_dev->data
     789        fun->ops = &kbd_dev->ops;
     790        fun->driver_data = kbd_dev;
    797791
    798792        int rc = ddf_fun_bind(fun);
     
    841835 * @return Other value inherited from function usbhid_dev_init().
    842836 */
    843 int usb_kbd_init(usb_hid_dev_t *hid_dev)
     837int usb_kbd_init(usb_hid_dev_t *hid_dev, void **data)
    844838{
    845839        usb_log_debug("Initializing HID/KBD structure...\n");
     
    954948       
    955949        // save the KBD device structure into the HID device structure
    956         hid_dev->data = kbd_dev;
     950        //hid_dev->data = kbd_dev;
     951        *data = kbd_dev;
    957952       
    958953        // set handler for incoming calls
    959         hid_dev->ops.default_handler = default_connection_handler;
     954        kbd_dev->ops.default_handler = default_connection_handler;
    960955       
    961956        /*
     
    982977       
    983978        usb_log_debug("Creating KBD function...\n");
    984         int rc = usb_kbd_create_function(hid_dev);
     979        int rc = usb_kbd_create_function(hid_dev, kbd_dev);
    985980        if (rc != EOK) {
    986981                usb_kbd_free(&kbd_dev);
     
    993988/*----------------------------------------------------------------------------*/
    994989
    995 bool usb_kbd_polling_callback(usb_hid_dev_t *hid_dev, uint8_t *buffer,
    996      size_t buffer_size)
    997 {
    998         if (hid_dev == NULL || buffer == NULL) {
     990bool usb_kbd_polling_callback(usb_hid_dev_t *hid_dev, void *data,
     991     uint8_t *buffer, size_t buffer_size)
     992{
     993        if (hid_dev == NULL || buffer == NULL || data == NULL) {
    999994                // do not continue polling (???)
    1000995                return false;
    1001996        }
    1002997       
     998        usb_kbd_t *kbd_dev = (usb_kbd_t *)data;
     999        assert(kbd_dev != NULL);
     1000       
    10031001        // TODO: add return value from this function
    1004         usb_kbd_process_data(hid_dev, buffer, buffer_size);
     1002        usb_kbd_process_data(hid_dev, kbd_dev, buffer, buffer_size);
    10051003       
    10061004        return true;
     
    10651063/*----------------------------------------------------------------------------*/
    10661064
    1067 void usb_kbd_deinit(usb_hid_dev_t *hid_dev)
     1065void usb_kbd_deinit(usb_hid_dev_t *hid_dev, void *data)
    10681066{
    10691067        if (hid_dev == NULL) {
     
    10711069        }
    10721070       
    1073         if (hid_dev->data != NULL) {
    1074                 usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;
     1071        if (data != NULL) {
     1072                usb_kbd_t *kbd_dev = (usb_kbd_t *)data;
    10751073                if (usb_kbd_is_initialized(kbd_dev)) {
    10761074                        usb_kbd_mark_unusable(kbd_dev);
    10771075                } else {
    10781076                        usb_kbd_free(&kbd_dev);
    1079                         hid_dev->data = NULL;
    10801077                }
    10811078        }
Note: See TracChangeset for help on using the changeset viewer.