diff options
| -rw-r--r-- | hcid/adapter.c | 5 | ||||
| -rw-r--r-- | hcid/dbus-hci.c | 2 | ||||
| -rw-r--r-- | hcid/device.c | 15 | ||||
| -rw-r--r-- | hcid/device.h | 2 | ||||
| -rwxr-xr-x | hcid/test-device | 10 | 
5 files changed, 26 insertions, 8 deletions
| diff --git a/hcid/adapter.c b/hcid/adapter.c index 20b4ca1f..dead8c4d 100644 --- a/hcid/adapter.c +++ b/hcid/adapter.c @@ -3892,7 +3892,7 @@ static DBusMessage *create_device(DBusConnection *conn,  	device->temporary = FALSE; -	device_browse(device, conn, msg); +	device_browse(device, conn, msg, FALSE);  	adapter->devices = g_slist_append(adapter->devices, device); @@ -3933,8 +3933,7 @@ static DBusMessage *create_paired_device(DBusConnection *conn,  	if (cap == IO_CAPABILITY_INVALID)  		return invalid_args(msg); -	return create_bonding(conn, msg, address, agent_path, cap, -				data); +	return create_bonding(conn, msg, address, agent_path, cap, data);  }  static gint device_path_cmp(struct device *device, const gchar *path) diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index a15be13a..b2df0e69 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -1264,7 +1264,7 @@ proceed:  			dbus_message_unref(reply);  		} else {  			device->temporary = FALSE; -			device_browse(device, bonding->conn, bonding->msg); +			device_browse(device, bonding->conn, bonding->msg, FALSE);  		}  	} diff --git a/hcid/device.c b/hcid/device.c index b040df91..ef29f368 100644 --- a/hcid/device.c +++ b/hcid/device.c @@ -70,6 +70,7 @@ struct browse_req {  	DBusMessage *msg;  	struct device *device;  	int search_uuid; +	gboolean update;  };  struct hci_peer { @@ -1014,13 +1015,14 @@ static DBusMessage *set_property(DBusConnection *conn,  static DBusMessage *discover_services(DBusConnection *conn,  					DBusMessage *msg, void *user_data)  { +	struct device *device = user_data;  	const char *pattern;  	if (dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &pattern,  						DBUS_TYPE_INVALID) == FALSE)  		return NULL; -	/* FIXME start service discovery */ +	device_browse(device, conn, msg, TRUE);  	return NULL;  } @@ -1227,6 +1229,12 @@ probe:  	device_probe_drivers(device);  proceed: +	if (req->update == TRUE) { +		/* FIXME return handle/record dictonary */ +		g_dbus_send_reply(req->conn, req->msg, DBUS_TYPE_INVALID); +		goto fail; +	} +  	g_dbus_emit_signal(req->conn, dbus_message_get_path(req->msg),  				ADAPTER_INTERFACE, "DeviceCreated",  				DBUS_TYPE_OBJECT_PATH, &device->path, @@ -1238,7 +1246,7 @@ proceed:  		goto fail;  	dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &device->path, -					DBUS_TYPE_INVALID); +							DBUS_TYPE_INVALID);  	dbus_connection_send(req->conn, reply, NULL); @@ -1251,7 +1259,7 @@ fail:  }  int device_browse(struct device *device, DBusConnection *conn, -			DBusMessage *msg) +					DBusMessage *msg, gboolean update)  {  	struct adapter *adapter = device->adapter;  	struct browse_req *req; @@ -1262,6 +1270,7 @@ int device_browse(struct device *device, DBusConnection *conn,  	req->conn = dbus_connection_ref(conn);  	req->msg = dbus_message_ref(msg);  	req->device = device; +	req->update = update;  	str2ba(adapter->address, &src);  	str2ba(device->address, &dst); diff --git a/hcid/device.h b/hcid/device.h index 420985fd..88aa8aeb 100644 --- a/hcid/device.h +++ b/hcid/device.h @@ -46,7 +46,7 @@ struct device *device_create(DBusConnection *conn, struct adapter *adapter,  void device_remove(DBusConnection *conn, struct device *device);  gint device_address_cmp(struct device *device, const gchar *address);  int device_browse(struct device *device, DBusConnection *conn, -			DBusMessage *msg); +					DBusMessage *msg, gboolean update);  void device_probe_drivers(struct device *device);  #define BTD_UUIDS(args...) ((const char *[]) { args, NULL } ) diff --git a/hcid/test-device b/hcid/test-device index f82e8d38..9657b3ae 100755 --- a/hcid/test-device +++ b/hcid/test-device @@ -42,6 +42,16 @@ if (sys.argv[1] == "remove"):  		adapter.RemoveDevice(sys.argv[2])  	sys.exit(0) +if (sys.argv[1] == "update"): +	if (len(sys.argv) < 3): +		print "Need address parameter" +	else: +		path = adapter.FindDevice(sys.argv[2]) +		device = dbus.Interface(bus.get_object("org.bluez", path), +							"org.bluez.Device") +		device.DiscoverServices(""); +	sys.exit(0) +  if (sys.argv[1] == "class"):  	if (len(sys.argv) < 3):  		print "Need address parameter" | 
