BlueZ D-Bus LE Advertising API Description
******************************************

Advertising packets are structured data which is broadcast on the LE Advertising
channels and available for all devices in range.  Because of the limited space
available in LE Advertising packets (32 bytes), each packet's contents must be
carefully controlled.

BlueZ acts as a store for the Advertisement Data which is meant to be sent.
It constructs the correct Advertisement Data from the structured
data and configured the kernel to send the correct advertisement.

Advertisement Data objects are registered freely and then referenced by BlueZ
when constructing the data sent to the kernel.

LE Advertisement Data hierarchy
===============================

Specifies the Advertisement Data to be broadcast and some advertising
parameters.  Properties which are not present will not be included in the
data.  Required advertisement data types will always be included.
All UUIDs are 128-bit versions in the API, and 16 or 32-bit
versions of the same UUID will be used in the advertising data as appropriate.

Service		org.bluez
Interface	org.bluez.LEAdvertisement1
Object path	freely definable

Methods		void Release() [noreply]

			This method gets called when the service daemon
			removes the Advertisement. A client can use it to do
			cleanup tasks. There is no need to call
			UnregisterAdvertisement because when this method gets
			called it has already been unregistered.

Properties	string Type

			Determines the type of advertising packet requested.

			Possible values: "broadcast" or "peripheral"

		array{string} ServiceUUIDs

			List of UUIDs to include in the "Service UUID" field of
			the Advertising Data.

		dict ManufacturerData

			Manufactuer Data fields to include in
			the Advertising Data.  Keys are the Manufacturer ID
			to associate with the data.

		array{string} SolicitUUIDs

			Array of UUIDs to include in "Service Solicitation"
			Advertisement Data.

		dict ServiceData

			Service Data elements to include. The keys are the
			UUID to associate with the data.

		bool IncludeTxPower

			Includes the Tx Power in the advertising packet.
			If missing, the Tx Power is not included.


LE Advertising Manager hierarchy
================================

The Advertising Manager allows external applications to register Advertisement
Data which should be broadcast to devices.  Advertisement Data elements must
follow the API for LE Advertisement Data described above.

Service		org.bluez
Interface	org.bluez.LEAdvertisingManager1 [Experimental]
Object path	/org/bluez/{hci0,hci1,...}

Methods		RegisterAdvertisement(object advertisement, dict options)

			Registers an advertisement object to be sent over the LE
			Advertising channel.  The service must be exported
			under interface LEAdvertisement1. InvalidArguments
			indicates that the object has invalid or conflicting
			properties.  InvalidLength indicates that the data
			provided generates a data packet which is too long.
			The properties of this object are parser when it is
			registered, and any changes are ignored.
			Currently only one advertisement at a time is supported,
			attempting to register two advertisements will result in
			an AlreadyExists error.

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

		UnregisterAdvertisement(object advertisement)

			This unregisters an advertisement that has been
			prevously registered.  The object path parameter must
			match the same value that has been used on registration.

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