Agent Manager hierarchy
=======================

Service		org.neard
Interface	org.neard.AgentManager
Object path	/org/neard

Methods		void RegisterHandoverAgent(object path, string carrier)

			Register new handover agent.

			Supported carriers are: 'bluetooth', 'wifi'.
			Only one registration will be accepted per carrier.

			Possible Errors: org.neard.Error.InvalidArguments
					 org.neard.Error.AlreadyExists.

		void UnregisterHandoverAgent(object path, string carrier)

			Unregister an existing handover agent.

			Possible Errors: org.neard.Error.InvalidArguments

		void RegisterNDEFAgent(object path, string type)

			Register new NDEF agent.

			When a record matching the registered type is found,
			the agent will get the whole NDEF as a raw byte stream.

			Possible Errors: org.neard.Error.InvalidArguments

		void UnregisterNDEFAgent(object path, string type)

			Unregister an existing NDEF agent.

			Possible Errors: org.neard.Error.InvalidArguments


HandoverAgent hierarchy
=======================

Service		unique name
Interface	org.neard.HandoverAgent
Object path	freely definable

Methods		dict RequestOOB(dict values) [experimental]

			This method gets called when the service daemon
			needs to get Out Of Band data from the handover
			agent, typically the BlueZ daemon.

			The service daemon will use this OOB data to build
			a Handover Request or Select message and send it to
			remote device.

			Values parameter is optional. It should be a dictionary
			where the keys are the field names and the values are
			the actual fields. If provided it should contain remote
			Out Of Band data received in Handover Request message.
			Those data will be stored for future use (i.e. when
			remote initialize pairing) and providing those will not
			initialize pairing.

			The return value should be a dictionary where the
			keys are the field names and the values are the
			actual fields.

			Possible Errors: org.neard.HandoverAgent.Error.InProgress
					 org.neard.HandoverAgent.Error.Failed

		void PushOOB(dict values) [experimental]

			This method gets called when service daemon received
			Handover Select message from selector and needs to pass
			remote Out Of Band data to agent to start handover.

			If there is no Bluetooth adapter or if it doesn't
			support simple pairing the agent will return an error.

			Agent shall implicitly initialize pairing if needed.

			This function returns when alternative carrier
			(Bluetooth) is ready to be used i.e. pairing has
			finished.

			Parameter should be a dictionary where the keys are the
			field names and the values are the actual fields.

			Possible Errors: org.neard.HandoverAgent.Error.InProgress
					 org.neard.HandoverAgent.Error.Failed

		void Release() [experimental]

			This method gets called when the service daemon
			unregisters the agent. An agent can use it to do
			cleanup tasks. There is no need to unregister the
			agent, because when this method gets called it has
			already been unregistered.

Fields		array{byte} EIR

			This is EIR blob as described in Bluetooth Core
			Specification 4.0 (Vol 3, Part C, chapter 8.1.6).
			Used by SSP capable devices.

		array{byte} nokia.com:bt

			This is a proprietary extension blob used by some
			Nokia Bluetooth 2.0 devices.

		array{byte} WSC

			This is a WiFi blob as described in WiFi Simple
			Configuration Technical Specification v2.0.2.1-rev4.
			(Annex L - Data Element Definitions)

		string State

			Carrier power state. This is a hint for handover agent
			about power state of carrier on remote device. Agent
			should also use it to inform neard about power state
			of its own carrier (in RequestOOB reply). It is up to
			agent to decide how to use this information.

			This field may be present only if nokia.com:bt or
			EIR field is also present.

			Possible values are "active", "inactive", "activating".


NDEFAgent hierarchy
=======================

Service		unique name
Interface	org.neard.NDEFAgent
Object path	freely definable

Methods		void GetNDEF(dict values) [experimental]

			This method gets called when the service daemon
			found an NDEF matching the registered type.

			The parameter is a dictionary where the keys are the
			field names and the values are the actual fields.

		void Release() [experimental]

			This method gets called when the service daemon
			unregisters the agent. An agent can use it to do
			cleanup tasks. There is no need to unregister the
			agent, because when this method gets called it has
			already been unregistered.

Fields		array{byte} NDEF

			This is the raw NDEF data.

		array{byte} Payload

			This is the NDEF record payload.

		object Record

			This is a record object path.
