BlueZ D-Bus Adapter API description
***********************************

Copyright (C) 2004-2008  Marcel Holtmann <marcel@holtmann.org>
Copyright (C) 2005-2006  Johan Hedberg <johan.hedberg@nokia.com>
Copyright (C) 2005-2006  Claudio Takahasi <claudio.takahasi@indt.org.br>
Copyright (C) 2006-2007  Luiz von Dentz <luiz.dentz@indt.org.br>


Adapter hierarchy
=================

Service		org.bluez
Interface	org.bluez.Adapter
Object path	[variable prefix]/{hci0,hci1,...}

Methods		dict GetProperties()

			Returns all properties for the adapter. See the
			properties section for available properties.

			Possible Errors: org.bluez.Error.DoesNotExist
					 org.bluez.Error.InvalidArguments

		void SetProperty(string name, variant value)

			Changes the value of the specified property. Only
			properties that are listed a read-write are changeable.
			On success this will emit a PropertyChanged signal.

			Possible Errors: org.bluez.Error.DoesNotExist
					 org.bluez.Error.InvalidArguments

		void RequestMode(string mode) {deprecated}

			This method will request a mode change. The mode
			change must be confirmed by the user via the agent.

			Possible modes for this call are "connectable" and
			"discoverable". Any application that wants to use
			Bluetooth functionality can use this method to
			indicate which mode it needs to operate sucessfully.

			In case the user doesn't confirm the mode change it
			will return an error to indicate this rejection.

			Possible Errors: org.bluez.Error.DoesNotExist
					 org.bluez.Error.InvalidArguments
					 org.bluez.Error.Rejected

		void ReleaseMode() {deprecated}

			Releases a mode requested via RequestMode.

			Possible Errors: org.bluez.Error.DoesNotExist

		void RequestSession()

			This method will request a client session that
			provides operational Bluetooth. A possible mode
			change must be confirmed by the user via the agent.

			Possible Errors: org.bluez.Error.Rejected

		void ReleaseSession()

			Release a previous requested session.

			Possible Errors: org.bluez.Error.DoesNotExist

		void StartDiscovery()

			This method starts the device discovery session. This
			includes an inquiry procedure and remote device name
			resolving. Use StopDiscovery to release the sessions
			acquired.

			This process will start emitting DeviceFound and
			PropertyChanged "Discovering" signals.

			Possible errors: org.bluez.Error.NotReady
					 org.bluez.Error.Failed

		void StopDiscovery()

			This method will cancel any previous StartDiscovery
			transaction.

			Note that a discovery procedure is shared between all
			discovery sessions thus calling StopDiscovery will only
			release a single session.

			Possible errors: org.bluez.Error.NotReady
					 org.bluez.Error.Failed
					 org.bluez.Error.NotAuthorized

		object FindDevice(string address)

			Returns the object path of device for given address.
			The device object needs to be first created via
			CreateDevice or CreatePairedDevice.

			Possible Errors: org.bluez.Error.DoesNotExist
					 org.bluez.Error.InvalidArguments

		array{object} ListDevices()

			Returns list of device object paths.

			Possible errors: org.bluez.Error.InvalidArguments
					 org.bluez.Error.Failed
					 org.bluez.Error.OutOfMemory

		object CreateDevice(string address)

			Creates a new object path for a remote device. This
			method will connect to the remote device and retrieve
			all SDP records.

			If the object for the remote device already exists
			this method will fail.

			Possible errors: org.bluez.Error.InvalidArguments
					 org.bluez.Error.Failed

		object CreatePairedDevice(string address, object agent,
							string capability)

			Creates a new object path for a remote device. This
			method will connect to the remote device and retrieve
			all SDP records and then initiate the pairing.

			If previously CreateDevice was used successfully,
			this method will only initiate the pairing.

			Compared to CreateDevice this method will fail if
			the pairing already exists, but not if the object
			path already has been created. This allows applications
			to use CreateDevice first and the if needed use
			CreatePairedDevice to initiate pairing.

			The capability parameter is the same as for the
			RegisterAgent method.

			Possible errors: org.bluez.Error.InvalidArguments
					 org.bluez.Error.Failed

		void CancelDeviceCreation(string address)

			Aborts either a CreateDevice call or a
			CreatePairedDevice call.

			Possible errors: org.bluez.Error.InvalidArguments
					 org.bluez.Error.NotInProgress

		void RemoveDevice(object device)

			This removes the remote device object at the given
			path. It will remove also the pairing information.

			Possible errors: org.bluez.Error.InvalidArguments
					 org.bluez.Error.Failed

		void RegisterAgent(object agent, string capability)

			This registers the adapter wide agent.

			The object path defines the path the of the agent
			that will be called when user input is needed.

			If an application disconnects from the bus all
			of its registered agents will be removed.

			The capability parameter can have the values
			"DisplayOnly", "DisplayYesNo", "KeyboardOnly" and
			"NoInputNoOutput" which reflects the input and output
			capabilities of the agent. If an empty string is
			used it will fallback to "DisplayYesNo".

			Possible errors: org.bluez.Error.InvalidArguments
					 org.bluez.Error.AlreadyExists

		void UnregisterAgent(object agent)

			This unregisters the agent that has been previously
			registered. The object path parameter must match the
			same value that has been used on registration.

			Possible errors: org.bluez.Error.DoesNotExist

Signals		PropertyChanged(string name, variant value)

			This signal indicates a changed value of the given
			property.

		DeviceFound(string address, dict values)

			This signal will be send every time an inquiry result
			has been found by the service daemon. In general they
			only appear during a device discovery.

			The dictionary can contain bascially the same values
			that we be returned by the GetProperties method
			from the org.bluez.Device interface. In addition there
			can be values for the RSSI and the TX power level.

		DeviceDisappeared(string address)

			This signal will be send when an inquiry session for
			a periodic discovery finishes and previously found
			devices are no longer in range or visible.

		DeviceCreated(object device)

			Parameter is object path of created device.

		DeviceRemoved(object device)

			Parameter is object path of removed device.

Properties	string Address [readonly]

			The Bluetooth device address.

		string Name [readwrite]

			The Bluetooth friendly name. This value can be
			changed and a PropertyChanged signal will be emitted.

		string Mode [readwrite] {deprecated}

			The Bluetooth operation mode.

			Valid modes: "off", "connectable",
						"discoverable", "limited"

			This is deprecated by the Powered and Discoverable
			properties.

		boolean Powered [readwrite]

			Switch an adapter on or off. This will also set the
			appropiate connectable state.

		boolean Discoverable [readwrite]

			Switch an adapter to discoverable or non-discoverable
			to either make it visible or hide it. This is a global
			setting and should only be used by the settings
			application.

			If the DiscoverableTimeout is set to a non-zero
			value then the system will set this value back to
			false after the timer expired.

			In case the adapter is switched off, setting this
			value will fail.

			When changing the Powered property the new state of
			this property will be updated via a PropertyChanged
			signal.

		uint32 DiscoverableTimeout [readwrite]

			The discoverable timeout in seconds. A value of zero
			means that the timeout is disabled and it will stay in
			discoverable/limited mode forever.

			The default value for the discoverable timeout should
			be 180 seconds (3 minutes).

		boolean Discovering [readonly]

			Indicates that a device discovery procedure is active.

		array{object} Devices [readonly]

			List of device object paths.
