Connection Manager hierarchy
=================

Service		org.ofono
Interface	org.ofono.ConnectionManager
Object path	[variable]

Methods		dict GetProperties()

			Returns all global system properties. See the
			properties section for available properties.

		void SetProperty(string property, variant value)

			Sets the property to a desired value

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

		void DeactivateAll()

			Deactivates all active contexts.

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

		array{object,dict} GetContexts()

			Get array of context objects and properties.

			The method should only be call once per application.
			Further changes shall be monitored via ContextAdded
			ContextRemoved signals.

		object AddContext(string type)

			Creates a new Primary context.  The type contains
			the intended purpose of the context.

			For possible values of the type parameter see the
			Type documentation of ConnectionContext interface.
			Returns the object path of the created context.

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

		void RemoveContext(object context)

			Removes a primary context.  All secondary contexts, if
			any, associated with the primary context are also
			removed.

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

		void ResetContexts()

			Removes all contexts and re-provisions from the APN
			database. Contexts must all be deactivated for this
			method to work, and the atom must not be powered.

			Possible Errors: [service].Error.InProgress
					 [service].Error.InvalidArguments
					 [service].Error.NotAllowed

Signals		PropertyChanged(string property, variant value)

			This signal indicates a changed value of the given
			property.

		ContextAdded(object path, dict properties)

			Signal that gets emitted when a new context has
			been created.  It contains the context object path
			and its properties.

		ContextRemoved(object path)

			Signal that gets emitted when a context has been
			removed.  The object path of the context is only
			included for reference.  Its properties are no
			longer accessible at this point.

Properties	boolean Attached [readonly]

			Contains whether the Packet Radio Service is attached.
			The attach state might change dynamically based on
			availability of network resources.  If this value
			changes to false, the user can assume that all
			contexts have been deactivated.

			If the modem is detached, certain features will not
			be available, e.g. receiving SMS over packet radio
			or network initiated PDP activation.

		string Bearer [readonly, optional]

			Contains the data bearer technology as reported by the
			GPRS service registration (if known).

			Possible values are:
			"none", "gprs", "edge", "umts", "hsdpa", "hsupa",
			"hspa" (HSDPA and HSUPA at the same time) and
			"lte"

		boolean Suspended [readonly, optional]

			Contains whether the GPRS service is suspended.
			During suspended state the modem is attached to the
			GPRS service and all contexts remain established,
			however, data transfer is not possible.

			The suspended state may be entered if the modem is
			temporarily out of network coverage. GPRS class B
			modems will suspend GPRS whenever a voice call is
			active at the same time. GPRS may also be suspended
			if the network does not support simultaneous packet
			data and voice. Various signalling procedures may
			also cause GPRS to be briefly suspended.

			As the suspension may be brief, clients should wait
			for an appropriate time for GPRS service to resume
			before taking corrective action.

		boolean RoamingAllowed [readwrite]

			Contains whether data roaming is allowed.  In the off
			setting, if the packet radio registration state
			indicates that the modem is roaming, oFono will
			automatically detach and no further connection
			establishment will be possible.

		boolean Powered [readwrite]

			Controls whether packet radio use is allowed. Setting
			this value to off detaches the modem from the
			Packet Domain network.

Connection Context hierarchy
=================

Service		org.ofono
Interface	org.ofono.ConnectionContext
Object path	[variable]

Methods		dict GetProperties()
			Returns all properties for the context object.

		void SetProperty(string property, variant value)

			Sets the property to a desired value

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

Signals		PropertyChanged(string property, variant value)

			This signal indicates a changed value of the given
			property.

Properties	boolean Active [readwrite]

			Holds whether the context is activated.  This value
			can be set to activate / deactivate the context.

		string AccessPointName [readwrite]

			Holds the name of the access point.  This is
			abbreviated as APN.  This value cannot be changed when
			the context is active.

		string Type [readwrite]

			Contains the intended usage type for this context.
			The currently supported values are:
				"internet" - General internet connectivity
				"mms" - Used by MMS related services
				"wap" - Used by WAP related services
				"ims" - Used by IMS related services

		string AuthenticationMethod [readwrite]
			Holds the PPP authentication method to use.  Valid
			values are "pap", "chap" and "none".
			Defaults to "chap".

		string Username [readwrite]

			Holds the username to be used for authentication
			purposes.  This value cannot be changed when the
			context is active.

		string Password [readwrite]

			Holds the password to be used for authentication
			purposes.  This value cannot be changed when the
			context is active.

		string Protocol [readwrite]

			Holds the protocol for this context.  Valid values
			are: "ip", "ipv6" and "dual".

		string Name [readwrite]

			The name is a free form string that describes this
			context.  The name should not be empty and limited
			to a short string for display purposes.

		dict Settings [readonly, optional]

			Holds all the IP network settings

			string Interface [readonly, optional]

				Holds the interface of the network interface
				used by this context (e.g. "ppp0" "usb0")

			string Method [readonly, optional]

				Holds the IP network config method
					"static"- Set IP network statically
					"dhcp"  - Set IP network through DHCP

			string Address [readonly, optional]

				Holds the IP address for this context.

			string Netmask [readonly, optional]

				Holds the Netmask for this context.

			array{string} DomainNameServers [readonly, optional]

				Holds the list of domain name servers for this
				context.

			string Gateway [readonly, optional]

				Holds the gateway IP for this connection.

			string Proxy [readonly, MMS only]

				Holds the current proxy information for
				using this context.

				In combination with the Interface value
				this allows access to the services offered
				by this context.

				It is possible that this reflects just the
				MessageProxy property if such a routing can
				be set up.  However this can also be pointing
				to a local proxy on 127.0.0.1 and then using
				the loopback interace lo for it.

				Users of this context should bind to the
				provided interface and only attempt access
				via this proxy.  All other values are left
				out in this case.

		dict IPv6.Settings [readonly, optional]

			Holds all the IPv6 network settings

			string Interface [readonly, optional]

				Holds the interface of the network interface
				used by this context (e.g. "ppp0" "usb0")

			string Address [readonly, optional]

				Holds the IP address for this context.

			byte PrefixLength [readonly, optional]

				Holds the prefix length.

			array{string} DomainNameServers [readonly, optional]

				Holds the list of domain name servers for this
				context.

			string Gateway [readonly, optional]

				Holds the gateway IP for this connection.

		string MessageProxy [readwrite, MMS only]

			Holds the MMS Proxy setting.

		string MessageCenter [readwrite, MMS only]

			Holds the MMSC setting.
