BlueZ D-Bus Proximity API description
***********************************

Copyright (C) 2011  Claudio Takahasi <claudio.takahasi@openbossa.org>


Proximity hierarchy
=================

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

Methods		dict GetProperties()

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

		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.InvalidArguments

Signals		PropertyChanged(string name, variant value)

			This signal indicates a changed value of a given
			property.

Properties

		string SignalLevel[readonly]

			Alert indicating that a threshold has been reached.
			Possible values: "unknown", "good", "regular", "weak"

		string LinkLossAlertLevel [readwrite]

			Persistent property. Sets the alert level in the
			proximity reporter for link loss scenario. Values:
			"none", "mild", "high".

		string ImmediateAlertLevel [readwrite]

			Alert level to be written in the Immediate Alert Level.
			Property shared between Path Loss and Find Me.
			Values: "none", "mild", "high". Default value is
			"none". Applications can disable the alert setting
			the value to "none". If the "Target" is not found,
			"none" will be emitted after the configured timeout.
			When changing the level, signal is the confirmation
			that the value was written in the remote.
