diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/Makefile.am | 5 | ||||
| -rwxr-xr-x | test/list-devices | 52 | ||||
| -rw-r--r-- | test/service-did.xml | 33 | ||||
| -rw-r--r-- | test/service-ftp.xml | 37 | ||||
| -rw-r--r-- | test/service-opp.xml | 50 | ||||
| -rw-r--r-- | test/service-record.dtd | 66 | ||||
| -rw-r--r-- | test/service-spp.xml | 25 | ||||
| -rwxr-xr-x | test/simple-agent | 112 | ||||
| -rwxr-xr-x | test/simple-service | 127 | ||||
| -rwxr-xr-x | test/test-adapter | 91 | ||||
| -rwxr-xr-x | test/test-device | 128 | ||||
| -rwxr-xr-x | test/test-discovery | 43 | ||||
| -rwxr-xr-x | test/test-manager | 27 | 
13 files changed, 795 insertions, 1 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index 16b80e7d..ba2bdc65 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -39,6 +39,9 @@ endif  INCLUDES = -I$(top_srcdir)/common -EXTRA_DIST = apitest hsplay hsmicro bdaddr.8 dbusdef.py +EXTRA_DIST = apitest hsplay hsmicro bdaddr.8 dbusdef.py \ +	list-devices test-discovery test-manager test-adapter test-device \ +	simple-service simple-agent service-record.dtd \ +	service-did.xml service-spp.xml service-opp.xml service-ftp.xml  MAINTAINERCLEANFILES = Makefile.in diff --git a/test/list-devices b/test/list-devices new file mode 100755 index 00000000..ec6c580a --- /dev/null +++ b/test/list-devices @@ -0,0 +1,52 @@ +#!/usr/bin/python + +import dbus + +bus = dbus.SystemBus() + +manager = dbus.Interface(bus.get_object("org.bluez", "/"), +						"org.bluez.Manager") + +def extract_uuids(uuid_list): +	list = "" +	for uuid in uuid_list: +		if (uuid.endswith("-0000-1000-8000-00805f9b34fb")): +			if (uuid.startswith("0000")): +				val = "0x" + uuid[4:8] +			else: +				val = "0x" + uuid[0:8] +		else: +			val = str(uuid) +		list = list + val + " " +	return list + +adapter_list = manager.ListAdapters() + +for i in adapter_list: +	adapter = dbus.Interface(bus.get_object("org.bluez", i), +							"org.bluez.Adapter") +	print "[ " + i + " ]" + +	properties  = adapter.GetProperties() +	for key in properties.keys(): +		print "    %s = %s" % (key, properties[key]) + +	device_list = adapter.ListDevices() + +	for n in device_list: +		device = dbus.Interface(bus.get_object("org.bluez", n), +							"org.bluez.Device") +		print "    [ " + n + " ]" + +		properties = device.GetProperties() +		for key in properties.keys(): +			value = properties[key] +			if (key == "UUIDs"): +				list = extract_uuids(value) +				print "        %s = %s" % (key, list) +			elif (key == "Class"): +				print "        %s = 0x%06x" % (key, value) +			else: +				print "        %s = %s" % (key, value) + +	print diff --git a/test/service-did.xml b/test/service-did.xml new file mode 100644 index 00000000..52eb68c0 --- /dev/null +++ b/test/service-did.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<record> +  <attribute id="0x0001"> +    <sequence> +      <uuid value="0x1200"/> +    </sequence> +  </attribute> + +  <attribute id="0x0200"> +    <uint16 value="0x0102" name="id"/> +  </attribute> + +  <attribute id="0x0201"> +    <uint16 value="0x0a12" name="vendor"/> +  </attribute> + +  <attribute id="0x0202"> +    <uint16 value="0x4711" name="product"/> +  </attribute> + +  <attribute id="0x0203"> +    <uint16 value="0x0000" name="version"/> +  </attribute> + +  <attribute id="0x0204"> +    <boolean value="true"/> +  </attribute> + +  <attribute id="0x0205"> +    <uint16 value="0x0002" name="source"/> +  </attribute> +</record> diff --git a/test/service-ftp.xml b/test/service-ftp.xml new file mode 100644 index 00000000..1bda8857 --- /dev/null +++ b/test/service-ftp.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<record> +  <attribute id="0x0001"> +    <sequence> +      <uuid value="0x1106"/> +    </sequence> +  </attribute> + +  <attribute id="0x0004"> +    <sequence> +      <sequence> +        <uuid value="0x0100"/> +      </sequence> +      <sequence> +        <uuid value="0x0003"/> +        <uint8 value="23" name="channel"/> +      </sequence> +      <sequence> +        <uuid value="0x0008"/> +      </sequence> +    </sequence> +  </attribute> + +  <attribute id="0x0009"> +    <sequence> +      <sequence> +        <uuid value="0x1106"/> +        <uint16 value="0x0100" name="version"/> +      </sequence> +    </sequence> +  </attribute> + +  <attribute id="0x0100"> +    <text value="OBEX File Transfer" name="name"/> +  </attribute> +</record> diff --git a/test/service-opp.xml b/test/service-opp.xml new file mode 100644 index 00000000..351b4a41 --- /dev/null +++ b/test/service-opp.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<record> +  <attribute id="0x0001"> +    <sequence> +      <uuid value="0x1105"/> +    </sequence> +  </attribute> + +  <attribute id="0x0004"> +    <sequence> +      <sequence> +        <uuid value="0x0100"/> +      </sequence> +      <sequence> +        <uuid value="0x0003"/> +        <uint8 value="23" name="channel"/> +      </sequence> +      <sequence> +        <uuid value="0x0008"/> +      </sequence> +    </sequence> +  </attribute> + +  <attribute id="0x0009"> +    <sequence> +      <sequence> +        <uuid value="0x1105"/> +        <uint16 value="0x0100" name="version"/> +      </sequence> +    </sequence> +  </attribute> + +  <attribute id="0x0100"> +    <text value="OBEX Object Push" name="name"/> +  </attribute> + +  <attribute id="0x0303"> +    <sequence> +      <uint8 value="0x01"/> +      <uint8 value="0x01"/> +      <uint8 value="0x02"/> +      <uint8 value="0x03"/> +      <uint8 value="0x04"/> +      <uint8 value="0x05"/> +      <uint8 value="0x06"/> +      <uint8 value="0xff"/> +    </sequence> +  </attribute> +</record> diff --git a/test/service-record.dtd b/test/service-record.dtd new file mode 100644 index 00000000..f53be5d0 --- /dev/null +++ b/test/service-record.dtd @@ -0,0 +1,66 @@ +<!ELEMENT record (attribute)*> + +<!ELEMENT attribute (sequence|alternate|text|url|uuid|boolean|uint8|uint16|uint32|uint64|nil)+> +<!ATTLIST attribute id CDATA #REQUIRED> + +<!ELEMENT sequence (sequence|alternate|text|url|uuid|boolean|uint8|uint16|uint32|uint64|uint128|int8|int16|int32|int64|int128|nil)+> + +<!ELEMENT alternate (sequence|alternate|text|url|uuid|boolean|uint8|uint16|uint32|uint64|uint128|int8|int16|int32|int64|int128|nil)+> + +<!ELEMENT text EMPTY> +<!ATTLIST text value CDATA #REQUIRED> +<!ATTLIST text name CDATA> +<!ATTLIST text encoding (normal|hex) "normal"> + +<!ELEMENT url EMPTY> +<!ATTLIST url value CDATA #REQUIRED> +<!ATTLIST url name CDATA> + +<!ELEMENT uuid EMPTY> +<!ATTLIST uuid value CDATA #REQUIRED> + +<!ELEMENT boolean EMPTY> +<!ATTLIST boolean value CDATA #REQUIRED> +<!ATTLIST boolean name CDATA> + +<!ELEMENT uint8 EMPTY> +<!ATTLIST uint8 value CDATA #REQUIRED> +<!ATTLIST uint8 name CDATA> + +<!ELEMENT uint16 EMPTY> +<!ATTLIST uint16 value CDATA #REQUIRED> +<!ATTLIST uint16 name CDATA> + +<!ELEMENT uint32 EMPTY> +<!ATTLIST uint32 value CDATA #REQUIRED> +<!ATTLIST uint32 name CDATA> + +<!ELEMENT uint64 EMPTY> +<!ATTLIST uint64 value CDATA #REQUIRED> +<!ATTLIST uint64 name CDATA> + +<!ELEMENT uint128 EMPTY> +<!ATTLIST uint128 value CDATA #REQUIRED> +<!ATTLIST uint128 name CDATA> + +<!ELEMENT int8 EMPTY> +<!ATTLIST int8 value CDATA #REQUIRED> +<!ATTLIST int8 name CDATA> + +<!ELEMENT int16 EMPTY> +<!ATTLIST int16 value CDATA #REQUIRED> +<!ATTLIST int16 name CDATA> + +<!ELEMENT int32 EMPTY> +<!ATTLIST int32 value CDATA #REQUIRED> +<!ATTLIST int32 name CDATA> + +<!ELEMENT int64 EMPTY> +<!ATTLIST int64 value CDATA #REQUIRED> +<!ATTLIST int64 name CDATA> + +<!ELEMENT int128 EMPTY> +<!ATTLIST int128 value CDATA #REQUIRED> +<!ATTLIST int128 name CDATA> + +<!ELEMENT nil EMPTY> diff --git a/test/service-spp.xml b/test/service-spp.xml new file mode 100644 index 00000000..2b156c3f --- /dev/null +++ b/test/service-spp.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<record> +  <attribute id="0x0001"> +    <sequence> +      <uuid value="0x1101"/> +    </sequence> +  </attribute> + +  <attribute id="0x0004"> +    <sequence> +      <sequence> +        <uuid value="0x0100"/> +      </sequence> +      <sequence> +        <uuid value="0x0003"/> +        <uint8 value="23" name="channel"/> +      </sequence> +    </sequence> +  </attribute> + +  <attribute id="0x0100"> +    <text value="COM5" name="name"/> +  </attribute> +</record> diff --git a/test/simple-agent b/test/simple-agent new file mode 100755 index 00000000..0d3dc1f7 --- /dev/null +++ b/test/simple-agent @@ -0,0 +1,112 @@ +#!/usr/bin/python + +import gobject + +import sys +import dbus +import dbus.service +import dbus.mainloop.glib + +class Rejected(dbus.DBusException): +	_dbus_error_name = "org.bluez.Error.Rejected" + +class Agent(dbus.service.Object): +	exit_on_release = True + +	def set_exit_on_release(self, exit_on_release): +		self.exit_on_release = exit_on_release + +	@dbus.service.method("org.bluez.Agent", +					in_signature="", out_signature="") +	def Release(self): +		print "Release" +		if self.exit_on_release: +			mainloop.quit() + +	@dbus.service.method("org.bluez.Agent", +					in_signature="os", out_signature="") +	def Authorize(self, device, uuid): +		print "Authorize (%s, %s)" % (device, uuid) + +	@dbus.service.method("org.bluez.Agent", +					in_signature="o", out_signature="s") +	def RequestPinCode(self, device): +		print "RequestPinCode (%s)" % (device) +		return raw_input("Enter PIN Code: ") + +	@dbus.service.method("org.bluez.Agent", +					in_signature="o", out_signature="u") +	def RequestPasskey(self, device): +		print "RequestPasskey (%s)" % (device) +		passkey = raw_input("Enter passkey: ") +		return dbus.UInt32(passkey) + +	@dbus.service.method("org.bluez.Agent", +					in_signature="ou", out_signature="") +	def DisplayPasskey(self, device, passkey): +		print "DisplayPasskey (%s, %d)" % (device, passkey) + +	@dbus.service.method("org.bluez.Agent", +					in_signature="ou", out_signature="") +	def RequestConfirmation(self, device, passkey): +		print "RequestConfirmation (%s, %d)" % (device, passkey) +		confirm = raw_input("Confirm passkey (yes/no): ") +		if (confirm == "yes"): +			return +		raise Rejected("Passkey doesn't match") + +	@dbus.service.method("org.bluez.Agent", +					in_signature="s", out_signature="") +	def ConfirmModeChange(self, mode): +		print "ConfirmModeChange (%s)" % (mode) + +	@dbus.service.method("org.bluez.Agent", +					in_signature="", out_signature="") +	def Cancel(self): +		print "Cancel" + +def create_device_reply(device): +	print "New device (%s)" % (device) +	mainloop.quit() + +def create_device_error(error): +	print "Creating device failed: %s" % (error) +	mainloop.quit() + +if __name__ == '__main__': +	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + +	bus = dbus.SystemBus() +	manager = dbus.Interface(bus.get_object("org.bluez", "/"), +							"org.bluez.Manager") + +	if len(sys.argv) > 1: +		path = manager.FindAdapter(sys.argv[1]) +	else: +		path = manager.DefaultAdapter() + +	adapter = dbus.Interface(bus.get_object("org.bluez", path), +							"org.bluez.Adapter") + +	path = "/test/agent" +	agent = Agent(bus, path) + +	mainloop = gobject.MainLoop() + +	if len(sys.argv) > 2: +		if len(sys.argv) > 3: +			device = adapter.FindDevice(sys.argv[2]) +			adapter.RemoveDevice(device) + +		agent.set_exit_on_release(False) +		adapter.CreatePairedDevice(sys.argv[2], path, "DisplayYesNo", +					reply_handler=create_device_reply, +					error_handler=create_device_error) +	else: +		adapter.RegisterAgent(path, "DisplayYesNo") +		print "Agent registered" + +	mainloop.run() + +	#adapter.UnregisterAgent(path) +	#print "Agent unregistered" diff --git a/test/simple-service b/test/simple-service new file mode 100755 index 00000000..5279a3a6 --- /dev/null +++ b/test/simple-service @@ -0,0 +1,127 @@ +#!/usr/bin/python + +import sys +import time +import dbus + +xml = ' \ +<?xml version="1.0" encoding="UTF-8" ?> 	\ +<record>					\ +  <attribute id="0x0001">			\ +    <sequence>					\ +      <uuid value="0x1101"/>			\ +    </sequence>					\ +  </attribute>					\ +						\ +  <attribute id="0x0002">			\ +     <uint32 value="0"/>			\ +  </attribute>					\ +						\ +  <attribute id="0x0003">			\ +    <uuid value="00001101-0000-1000-8000-00805f9b34fb"/> \ +  </attribute>					\ +						\ +  <attribute id="0x0004">			\ +    <sequence>					\ +      <sequence>				\ +        <uuid value="0x0100"/>			\ +      </sequence>				\ +      <sequence>				\ +        <uuid value="0x0003"/>			\ +        <uint8 value="23"/>			\ +      </sequence>				\ +    </sequence>					\ +  </attribute>					\ +						\ +  <attribute id="0x0005">			\ +    <sequence>					\ +      <uuid value="0x1002"/>			\ +    </sequence>					\ +  </attribute>					\ +						\ +  <attribute id="0x0006">			\ +    <sequence>					\ +      <uint16 value="0x656e"/>			\ +      <uint16 value="0x006a"/>			\ +      <uint16 value="0x0100"/>			\ +    </sequence>					\ +  </attribute>					\ +						\ +  <attribute id="0x0007">			\ +     <uint32 value="0"/>			\ +  </attribute>					\ +						\ +  <attribute id="0x0008">			\ +     <uint8 value="0xff"/>			\ +  </attribute>					\ +						\ +  <attribute id="0x0009">			\ +    <sequence>					\ +      <sequence>				\ +        <uuid value="0x1101"/>			\ +        <uint16 value="0x0100"/>		\ +      </sequence>				\ +    </sequence>					\ +  </attribute>					\ +						\ +  <attribute id="0x000a">			\ +    <url value="http://www.bluez.org/"/>	\ +  </attribute>					\ +						\ +  <attribute id="0x000b">			\ +    <url value="http://www.bluez.org/"/>	\ +  </attribute>					\ +						\ +  <attribute id="0x000c">			\ +    <url value="http://www.bluez.org/"/>	\ +  </attribute>					\ +						\ +  <attribute id="0x0100">			\ +    <text value="Serial Port"/>			\ +  </attribute>					\ +						\ +  <attribute id="0x0101">			\ +    <text value="Serial Port Service"/>		\ +  </attribute>					\ +						\ +  <attribute id="0x0102">			\ +     <text value="BlueZ"/>			\ +  </attribute>					\ +						\ +  <attribute id="0x0200">			\ +    <sequence>					\ +      <uint16 value="0x0100"/>			\ +    </sequence>					\ +  </attribute>					\ +						\ +  <attribute id="0x0201">			\ +     <uint32 value="0"/>			\ +  </attribute>					\ +</record>					\ +' + +bus = dbus.SystemBus() +manager = dbus.Interface(bus.get_object("org.bluez", "/"), +						"org.bluez.Manager") + +if len(sys.argv) > 1: +	path = manager.FindAdapter(sys.argv[1]) +else: +	path = manager.DefaultAdapter() + +adapter = dbus.Interface(bus.get_object("org.bluez", path), +						"org.bluez.Adapter") + +handle = adapter.AddServiceRecord(xml) + +print "Service record with handle 0x%04x added" % (handle) + +print "Press CTRL-C to remove service record" + +try: +	time.sleep(1000) +	print "Terminating session" +except: +	pass + +adapter.RemoveServiceRecord(dbus.UInt32(handle)) diff --git a/test/test-adapter b/test/test-adapter new file mode 100755 index 00000000..2ec8adef --- /dev/null +++ b/test/test-adapter @@ -0,0 +1,91 @@ +#!/usr/bin/python + +import sys +import dbus +import time + +bus = dbus.SystemBus() + +manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager") + +adapter = dbus.Interface(bus.get_object("org.bluez", manager.DefaultAdapter()), +							"org.bluez.Adapter") + +if (len(sys.argv) < 2): +	print "Usage: %s <command>" % (sys.argv[0]) +	print "" +	print "  address" +	print "  name [name]" +	print "  mode [mode]" +	print "  requestmode <mode>" +	print "  discoverabletimeout [timeout]" +	print "  periodicdiscovery [on/off]" +	print "  addservicerecord <file>" +	sys.exit(1) + +if (sys.argv[1] == "address"): +	properties = adapter.GetProperties() +	print properties["Address"] +	sys.exit(0) + +if (sys.argv[1] == "name"): +	if (len(sys.argv) < 3): +		properties = adapter.GetProperties() +		print properties["Name"] +	else: +		adapter.SetProperty("Name", sys.argv[2]) +	sys.exit(0) + +if (sys.argv[1] == "mode"): +	if (len(sys.argv) < 3): +		properties = adapter.GetProperties() +		print properties["Mode"] +	else: +		adapter.SetProperty("Mode", sys.argv[2]) +	sys.exit(0) + +if (sys.argv[1] == "requestmode"): +	if (len(sys.argv) < 3): +		print "Need mode parameter" +	else: +		adapter.RequestMode(sys.argv[2]) +	sys.exit(0) + +if (sys.argv[1] == "discoverabletimeout"): +	if (len(sys.argv) < 3): +		properties = adapter.GetProperties() +		print properties["DiscoverableTimeout"] +	else: +		timeout = dbus.UInt32(sys.argv[2]) +		adapter.SetProperty("DiscoverableTimeout", timeout) +	sys.exit(0) + +if (sys.argv[1] == "periodicdiscovery"): +	if (len(sys.argv) < 3): +		properties = adapter.GetProperties() +		print properties["PeriodicDiscovery"] +	else: +		if (sys.argv[2] == "on"): +			value = dbus.Boolean(1) +		elif (sys.argv[2] == "off"): +			value = dbus.Boolean(0) +		else: +			value = dbus.Boolean(sys.argv[2]) +		adapter.SetProperty("PeriodicDiscovery", value) +		time.sleep(120) +	sys.exit(0) + +if (sys.argv[1] == "addservicerecord"): +	if (len(sys.argv) < 3): +		print "Need file parameter" +	else: +		f = open(sys.argv[2]) +		record = f.read() +		f.close() +		handle = adapter.AddServiceRecord(record) +		print "0x%x" % (handle) +		time.sleep(120) +	sys.exit(0) + +print "Unknown command" +sys.exit(1) diff --git a/test/test-device b/test/test-device new file mode 100755 index 00000000..f8f2d14a --- /dev/null +++ b/test/test-device @@ -0,0 +1,128 @@ +#!/usr/bin/python + +import sys +import dbus +import re + +bus = dbus.SystemBus() + +manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager") + +adapter = dbus.Interface(bus.get_object("org.bluez", manager.DefaultAdapter()), +							"org.bluez.Adapter") + +if (len(sys.argv) < 2): +	print "Usage: %s <command>" % (sys.argv[0]) +	print "" +	print "  list" +	print "  create <address>" +	print "  remove <address|path>" +	print "  discover <address> [pattern]" +	print "  class <address>" +	print "  name <address>" +	print "  alias <address> [alias]" +	print "  trusted <address> [yes/no]" +	sys.exit(1) + +if (sys.argv[1] == "list"): +	list = adapter.ListDevices() +	print list +	sys.exit(0) + +if (sys.argv[1] == "create"): +	if (len(sys.argv) < 3): +		print "Need address parameter" +	else: +		device = adapter.CreateDevice(sys.argv[2]) +		print device +	sys.exit(0) + +if (sys.argv[1] == "remove"): +	if (len(sys.argv) < 3): +		print "Need address or object path parameter" +	else: +		try: +			path = adapter.FindDevice(sys.argv[2]) +		except: +			path = sys.argv[2] +		adapter.RemoveDevice(path) +	sys.exit(0) + +if (sys.argv[1] == "discover"): +	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") +		if (len(sys.argv) < 4): +			pattern = "" +		else: +			pattern = sys.argv[3] +		services = device.DiscoverServices(pattern); +		for key in services.keys(): +			p = re.compile(">.*?<") +			xml = p.sub("><", services[key].replace("\n", "")) +			print "[ 0x%5x ]" % (key) +			print xml +			print +	sys.exit(0) + +if (sys.argv[1] == "class"): +	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") +		properties = device.GetProperties() +		print "0x%06x" % (properties["Class"]) +	sys.exit(0) + +if (sys.argv[1] == "name"): +	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") +		properties = device.GetProperties() +		print properties["Name"] +	sys.exit(0) + +if (sys.argv[1] == "alias"): +	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") +		if (len(sys.argv) < 4): +			properties = device.GetProperties() +			print properties["Alias"] +		else: +			device.SetProperty("Alias", sys.argv[3]) +	sys.exit(0) + +if (sys.argv[1] == "trusted"): +	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") +		if (len(sys.argv) < 4): +			properties = device.GetProperties() +			print properties["Trusted"] +		else: +			if (sys.argv[3] == "yes"): +				value = dbus.Boolean(1) +			elif (sys.argv[3] == "no"): +				value = dbus.Boolean(0) +			else: +				value = dbus.Boolean(sys.argv[3]) +			device.SetProperty("Trusted", value) +	sys.exit(0) + +print "Unknown command" +sys.exit(1) diff --git a/test/test-discovery b/test/test-discovery new file mode 100755 index 00000000..874de66f --- /dev/null +++ b/test/test-discovery @@ -0,0 +1,43 @@ +#!/usr/bin/python + +import gobject + +import dbus +import dbus.mainloop.glib + +def device_found(address, properties): +	print "[ " + address + " ]" + +	for key in properties.keys(): +		value = properties[key] +		if (key == "Class"): +			print "    %s = 0x%06x" % (key, value) +		else: +			print "    %s = %s" % (key, value) + +def discovery_completed(): +	mainloop.quit() + +if __name__ == '__main__': +	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + +	bus = dbus.SystemBus() +	manager = dbus.Interface(bus.get_object("org.bluez", "/"), +							"org.bluez.Manager") + +	path = manager.DefaultAdapter() +	adapter = dbus.Interface(bus.get_object("org.bluez", path), +							"org.bluez.Adapter") + +	bus.add_signal_receiver(device_found, +			dbus_interface = "org.bluez.Adapter", +					signal_name = "DeviceFound") + +	bus.add_signal_receiver(discovery_completed, +			dbus_interface = "org.bluez.Adapter", +					signal_name = "DiscoveryCompleted") + +	adapter.DiscoverDevices() + +	mainloop = gobject.MainLoop() +	mainloop.run() diff --git a/test/test-manager b/test/test-manager new file mode 100755 index 00000000..759b6a48 --- /dev/null +++ b/test/test-manager @@ -0,0 +1,27 @@ +#!/usr/bin/python + +import gobject + +import dbus +import dbus.mainloop.glib + +def adapter_added(path): +	print "Adapter with path %s added" % (path) + +def adapter_removed(path): +	print "Adapter with path %s removed" % (path) + +if __name__ == "__main__": +	dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + +	bus = dbus.SystemBus() + +	manager = dbus.Interface(bus.get_object('org.bluez', '/org/bluez'), +							'org.bluez.Manager') + +	manager.connect_to_signal("AdapterAdded", adapter_added) + +	manager.connect_to_signal("AdapterRemoved", adapter_removed) + +	mainloop = gobject.MainLoop() +	mainloop.run()  | 
