BlueZ D-Bus Sim Access Profile API description
***********************************

Copyright (C) 2010 ST-Ericsson SA


Sim Access Profile hierarchy
============================

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

Methods		void Disconnect()

			Disconnects SAP client from the server.

			Possible errors: org.bluez.Error.Failed

		dict GetProperties()

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

			Possible Errors: org.bluez.Error.Failed

Signals		PropertyChanged(string name, variant value)

			This signal indicates a changed value of the given
			property.

Properties	boolean Connected [readonly]

			Indicates if SAP client is connected to the server.
