static int dev_connect(struct input_device *idev) { GError *err = NULL; GIOChannel *io; if (idev->disable_sdp) bt_clear_cached_session(&idev->src, &idev->dst); io = bt_io_connect(control_connect_cb, idev, NULL, &err, BT_IO_OPT_SOURCE_BDADDR, &idev->src, BT_IO_OPT_DEST_BDADDR, &idev->dst, BT_IO_OPT_PSM, L2CAP_PSM_HIDP_CTRL, BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW, BT_IO_OPT_INVALID); idev->ctrl_io = io; if (err == NULL) return 0; error("%s", err->message); g_error_free(err); return -EIO; }
static void dev_connect(struct input_device *idev, struct input_conn *iconn, GError **err) { struct fake_input *fake; DBG(""); fake = iconn->fake; if (fake) { /* Fake input device */ if (fake->connect(iconn, err)) fake->flags |= FI_FLAG_CONNECTED; } else { /* HID devices */ GIOChannel *io; if (idev->disable_sdp) bt_clear_cached_session(&idev->src, &idev->dst); io = bt_io_connect(BT_IO_L2CAP, control_connect_cb, iconn, NULL, err, BT_IO_OPT_SOURCE_BDADDR, &idev->src, BT_IO_OPT_DEST_BDADDR, &idev->dst, BT_IO_OPT_PSM, L2CAP_PSM_HIDP_CTRL, BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW, BT_IO_OPT_INVALID); iconn->ctrl_io = io; } }