Service hierarchy
=================

Service		org.ofono.mms
Interface	org.ofono.mms.Service
Object path	[variable prefix]/{service0,service1,...}

Methods		array{object,dict} GetMessages()

			Get an array of message objects and properties
			that represents the currently received and sent
			messages.

			This method call should only be used once when an
			service becomes available.  Further message additions
			and removal shall be monitored via MessageAdded and
			MessageRemoved signals.

			Possible Errors: [service].Error.InvalidArguments

		dict GetProperties()

			Returns properties for the manager object. See
			the properties section for available properties.

			Possible Errors: [service].Error.NotImplemented

		object SendMessage(array{string} recipients, variant smil,
					array{string id, string content-type,
							string filename})
		OR

		object SendMessage(array{string} recipients, array{dict, value},
					array{string id, string content-type,
							string filename})

			Send a new message to recipients with SMIL body and
			list of attachement content types, identifiers and
			filenames. The SMIL body is required to be in UTF-8
			format.

			On success a message object will be created and
			also signaled by MessageAdded signal.

			The initial status of the message is a draft and
			and will be updated once sending has succeeded.

			array{dict, value}
			Dict Options:
			DeliveryReport (True/False): Override Default Delivery
						     report option

			Subject (string): Add a Subject to the MMS

			smil (string): Add smil to the MMS

			Possible Errors:
				[service].Error.InvalidArguments
				[service].Error.UnsupportedMessage
				[service].Error.TransientFailure
				[service].Error.TransientNetworkProblem
				[service].Error.PermanentFailure
				[service].Error.PermanentServiceDenied
				[service].Error.PermanentMessageFormatCorrupt
				[service].Error.PermanentInvalidAddress
				[service].Error.PermanentContentNotAccepted
				[service].Error.PermanentLackOfPrepaid

		void SetProperty(string name, variant value)

			Changes the value of the specified property.

			Possible Errors: [service].Error.InvalidArguments


Signals		MessageAdded(object path, dict properties)

			Signal that is sent when a new message is added. It
			contains the object path of new message, its
			properties.

		MessageRemoved(object path)

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

		MessageSendError(a{sv}: "ErrorType": uint32 error_type,
		                        "Host": string host,
		                        "MessagePath": string message_path)

			Signal that is sent when there is a transmit
			error with an MMS. Note that this may expand in the future

			error type:
			enum mms_tx_rx_error {
				MMS_TX_RX_ERROR_UNKNOWN,
				MMS_TX_RX_ERROR_DNS,
				MMS_TX_RX_ERROR_HTTP
			};

			host: the host the MMS was trying to contact

			message_path: The dbus path of the MMS message

		MessageReceiveError(a{sv}: "ErrorType": uint32 error_type,
		                           "Host": string host,
		                           "From": string from)

			Signal that is sent when there is a transmit
			error with an MMS. Note that this may expand in the future

			error type:
			enum mms_tx_rx_error {
				MMS_TX_RX_ERROR_UNKNOWN,
				MMS_TX_RX_ERROR_DNS,
				MMS_TX_RX_ERROR_HTTP
			};

			host: the host the MMS was trying to contact

			from: who the MMS is from if being received
			      (in e164 format)

Properties	boolean UseDeliveryReports

			This property controls whether MMS Status Reports,
			sometimes better known as Delivery Reports are to be
			used.  If enabled, all outgoing MMS messages will be
			flagged to request a status report from the MMSC.
