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 | |
| parent | e977c52ef242556e3af44bec99c64bac91cc0b11 (diff) | |
Fake input: added initial skeleton for Connect method
| -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); | 
