diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-02-23 18:45:54 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-02-23 18:45:54 +0000 |
commit | c436cfee30f6272b256f7cdbf66b2e35c70ac603 (patch) | |
tree | 0c8b72efdec350168db1012c8cb9ec9e63f3baaa /input | |
parent | e977c52ef242556e3af44bec99c64bac91cc0b11 (diff) |
Fake input: added initial skeleton for Connect method
Diffstat (limited to 'input')
-rw-r--r-- | input/device.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/input/device.c b/input/device.c index 20c2a1d0..c487b4ee 100644 --- a/input/device.c +++ b/input/device.c @@ -406,6 +406,18 @@ static const char *create_input_path(uint8_t major, uint8_t minor) return path; } +static int rfcomm_connect(struct pending_connect *pc, uint8_t ch) +{ + char addr[18]; + /* FIXME: not implemented */ + + ba2str(&pc->dst, addr); + debug("RFCOMM connecting to %s on channel:%d", addr, ch); + errno = EIO; + + return -EIO; +} + static int l2cap_connect(struct pending_connect *pc, unsigned short psm, GIOFunc cb) { @@ -673,17 +685,33 @@ static DBusHandlerResult device_connect(DBusConnection *conn, DBusMessage *msg, void *data) { struct input_device *idev = data; + struct fake_input *fake = idev->fake; struct input_manager *mgr; struct pending_connect *pc; + /* FIXME: check if the fake input is connected */ if (is_connected(&idev->dst)) return err_connection_failed(conn, msg, "Already connected"); + /* FIXME: Check if there is a pending connection */ + dbus_connection_get_object_path_data(conn, INPUT_PATH, (void *) &mgr); pc = pending_connect_new(&mgr->src, &idev->dst, conn, msg); if (!pc) return DBUS_HANDLER_RESULT_NEED_MEMORY; + /* Fake input device */ + if (fake) { + if (rfcomm_connect(pc, fake->ch) < 0) { + const char *str = strerror(errno); + error("RFCOMM connect failed: %s(%d)", str, errno); + pending_connect_free(pc); + return err_connection_failed(conn, msg, str); + } + return DBUS_HANDLER_RESULT_HANDLED; + } + + /* HID devices */ if (l2cap_connect(pc, L2CAP_PSM_HIDP_CTRL, (GIOFunc) control_connect_cb) < 0) { error("L2CAP connect failed: %s(%d)", strerror(errno), errno); |