BlueZ D-Bus Network API description
***********************************

Copyright (C) 2004-2010  Marcel Holtmann <marcel@holtmann.org>


Network hierarchy
=================

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

Methods		string Connect(string uuid)

			Connect to the network device and return the network
			interface name. Examples of the interface name are
			bnep0, bnep1 etc.

			uuid can be either one of "gn", "panu" or "nap" (case
			insensitive) or a traditional string representation of
			UUID or a hexadecimal number.

			The connection will be closed and network device
			released either upon calling Disconnect() or when
			the client disappears from the message bus.

			Possible errors: org.bluez.Error.AlreadyConnected
					 org.bluez.Error.ConnectionAttemptFailed

		string Connect(string src_uuid, string dst_uuid)

			Connect to the network device and return the network
			interface name. Examples of the interface name are
			bnep0, bnep1 etc.

			src_uuid is the uuid of this device, while dst_uuid is
			the uuid of the device you are trying to connect to.
			uuid can be either one of "gn", "panu" or "nap" (case
			insensitive) or a traditional string representation of
			UUID or a hexadecimal number.

			The connection will be closed and network device
			released either upon calling Disconnect() or when
			the client disappears from the message bus.

			Possible errors: org.bluez.Error.AlreadyConnected
					 org.bluez.Error.ConnectionAttemptFailed

		void Disconnect()

			Disconnect from the network device.

			To abort a connection attempt in case of errors or
			timeouts in the client it is fine to call this method.

			Possible errors: org.bluez.Error.Failed

		dict GetProperties()

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

Signals		PropertyChanged(string name, variant value)

			This signal indicates a changed value of the given
			property.

Properties	boolean Connected [readonly]

			Indicates if the device is connected.

		string Interface [readonly]

			Indicates the network interface name when available.

		string UUID [readonly]

			Indicates the connection role when available.


Network server hierarchy
========================

Service		org.bluez
Interface	org.bluez.NetworkServer
Object path	/org/bluez/{hci0,hci1,...}

Methods		void Register(string uuid, string bridge)

			Register server for the provided UUID. Every new
			connection to this server will be added the bridge
			interface.

			Valid UUIDs are "gn", "panu" or "nap".

			Initially no network server SDP is provided. Only
			after this method a SDP record will be available
			and the BNEP server will be ready for incoming
			connections.

		void Unregister(string uuid)

			Unregister the server for provided UUID.

			All servers will be automatically unregistered when
			the calling application terminates.
