VoiceCallManager hierarchy
==========================

Service		org.ofono
Interface	org.ofono.VoiceCallManager
Object path	[variable prefix]/{modem0,modem1,...}

Methods		dict GetProperties()

			Returns properties for the VoiceCallManager Interface.
			See the properties section for available properties.

		array{object,dict} GetCalls()

			Get an array of call object paths and properties
			that represents the currently present calls.

			This method call should only be used once when an
			application starts up.  Further call additions and
			removal shall be monitored via CallAdded and
			CallRemoved signals.

		object Dial(string number, string hide_callerid)

			Initiates a new outgoing call. Returns the object path
			to the newly created call. The hide_callerid variable
			holds the CLIR override for this call.
			The defines values are:
				"" or "default" - Default (Network) CLIR mode
							is used
				"enabled" - Hides callerid, CLIR Invocation
						is used
				"disabled" - Shows callerid, CLIR Suppression
						is used

			This is usually implemented using the ATD AT command.

			NOTE: If an active call (single or multiparty) exists,
			then it is automatically put on hold if the dial
			procedure is successful.

			Possible Errors: [service].Error.InProgress
					 [service].Error.InvalidArguments
					 [service].Error.InvalidFormat
					 [service].Error.NotImplemented
					 [service].Error.Failed

		void Transfer()

			Joins the currently Active (or Outgoing, depending
			on network support) and Held calls together and
			disconnects both calls. In effect transferring
			one party to the other. This procedure requires
			an Active and Held call and the Explicit Call Transfer
			(ECT) supplementary service to be active.

			This functionality is generally implemented by using
			the +CHLD=4 AT command.

			Possible Errors: [service].Error.InProgress
					 [service].Error.NotImplemented
					 [service].Error.Failed

		void SwapCalls()

			Swaps Active and Held calls.  The effect of this
			is that all calls (0 or more including calls in a
			multi-party conversation) that were Active are now Held,
			and all calls (0 or more) that were Held are now Active.

			GSM specification does not allow calls to be swapped
			in the case where Held, Active and Waiting calls exist.
			Some modems implement this anyway, thus it is
			manufacturer specific whether this method will succeed
			in the case of Held, Active and Waiting calls.

			This functionality is generally implemented by using
			the +CHLD=2 AT command.

			Possible Errors: [service].Error.InProgress
					 [service].Error.NotImplemented
					 [service].Error.Failed

		void ReleaseAndAnswer()

			Releases currently active call (0 or more) and
			answers the currently waiting call. Please note that
			if the current call is a multiparty call, then all
			parties in the multi-party call will be released.

			Possible Errors: [service].Error.InProgress
					 [service].Error.NotImplemented
					 [service].Error.Failed

		void HoldAndAnswer()

			Puts the current call (including multi-party calls) on
			hold and answers the currently waiting call. Calling
			this function when a user already has a both Active and
			Held calls is invalid, since in GSM a user can have
			only a single Held call at a time.

                        Possible Errors: [service].Error.InProgress
					 [service].Error.NotImplemented
					 [service].Error.Failed

		void HangupAll()

			Releases all calls except waiting calls. This includes
			multiparty calls.

                        Possible Errors: [service].Error.InProgress
					 [service].Error.NotImplemented
					 [service].Error.Failed

		array{object} PrivateChat(object call)

			Places the multi-party call on hold and makes desired
			call active. This is used to accomplish private chat
			functionality.  Note that if there are only two calls
			(three parties) in the multi-party call the result will
			be two regular calls, one held and one active. The
			Multiparty call will need to be setup again by using the
			CreateMultiparty method.  Returns the new list of calls
			participating in the multiparty call.

			This is usually implemented using the +CHLD=2X command.

                        Possible Errors: [service].Error.InProgress
					 [service].Error.InvalidArguments
					 [service].Error.InvalidFormat
					 [service].Error.NotFound
					 [service].Error.NotImplemented
					 [service].Error.Failed

		array{object} CreateMultiparty()

			Joins active and held calls together into a multi-party
			call. If one of the calls is already a multi-party
			call, then the other call is added to the multiparty
			conversation. Returns the new list of calls
			participating in the multiparty call.

			There can only be one subscriber controlled multi-party
			call according to the GSM specification.

			This is usually implemented using the +CHLD=3 AT
			command.

                        Possible Errors: [service].Error.InProgress
					 [service].Error.NotImplemented
					 [service].Error.Failed

		void HangupMultiparty()

			Hangs up the multi-party call.  All participating
			calls are released.

                        Possible Errors: [service].Error.InProgress
					 [service].Error.NotImplemented
					 [service].Error.Failed

		void SendTones(string tones)

			Sends the DTMF tones to the network.  The tones have
			a fixed duration.  Tones can be one of: '0' - '9',
			'*', '#', 'A', 'B', 'C', 'D'.  The last four are
			typically not used in normal circumstances.

                        Possible Errors: [service].Error.InProgress
					 [service].Error.NotImplemented
					 [service].Error.InvalidArguments
					 [service].Error.InvalidFormat
					 [service].Error.Failed

Signals		CallAdded(object path, dict properties)

			Signal that is sent when a new call is added.  It
			contains the object path of the new voice call and
			also its properties.

			Applications get the whole properties via this
			signal and don't need to call GetProperties on
			the voice call object.

		CallRemoved(object path)

			Signal that is sent when a voice call has been
			released.  The object path is no longer accessible
			after this signal and only emitted for reference.

			NOTE: If the VoiceCallManager interface becomes
			unavailable, this signal is not guaranteed to be
			emitted for remaining calls.  The applications are
			expected to monitor changes in Modem.Interfaces
			property.

		PropertyChanged(string property, variant value)

			Signal is emitted whenever a property has changed.
			The new value is passed as the signal argument.

		BarringActive(string type) [experimental]

			Signal emitted when an outgoing voice call is made and
			the call has been barred by the network due to the
			remote party's "Call Barring" Supplementary Services
			settings for incoming calls. In this case the type
			parameter in the signal set to "remote".
			The signal is also emitted when an outgoing voice call
			is made and the call has been barred by the network due
			to the local "Call Barring" Supplementary Services
			settings for outgoing calls. In this case the type
			parameter in the signal is set to "local".

		Forwarded(string type) [experimental]

			Signal emitted when an outgoing voice call is made and
			the call has been redirected to another number due to
			the remote party's "Call Forwarding" Supplementary
			Services settings. In this case the type parameter in
			the signal is set to "outgoing".
			The signal is also emitted when the incoming voice call
			is a redirected call due to a call forwarding operation.
			In this case the type parameter in the signal is set to
			"incoming".

Properties	array{string} EmergencyNumbers [readonly]

			Contains the list of emergency numbers recognized
			by oFono.  This list is based on the default set
			of numbers provided by the specification and any
			extra numbers provisioned by the carrier on the
			SIM.
