D-Bus Method Return Error Codes
===============================

The motivation of having detailed error is to provide context-based failure
reasons along with D-Bus method return so that D-Bus clients can build metrics
and optimize their application based on these failure reasons. For instance, a
client can build retry mechanism for a connection failure or improve the
bottleneck of use scenario based on actionable metrics.

These error codes are context-based but not necessarily tied to interface or
method calls. For instance, if a pairing request failed due to connection
failure, connection error would be attached to the method return of Pair().

BR/EDR connection already connected
===================================
	errno:	EALREADY, EISCONN

	Either the profile is already connected or ACL connection is in place.

BR/EDR connection page timeout
==============================
	errno:	EHOSTDOWN

	Failed due to page timeout.

BR/EDR connection profile unavailable
=====================================
	errno:	ENOPROTOOPT

	Failed to find connectable services or the target service.

BR/EDR connection SDP search
============================
	errno:	none

	Failed to complete the SDP search.

BR/EDR connection create socket
===============================
	errno:	EIO

	Failed to create or connect to BT IO socket. This can also indicate
	hardware failure in the controller.

BR/EDR connection invalid arguments
===================================
	errno:	EHOSTUNREACH

	Failed due to invalid arguments.

BR/EDR connection not powered
=============================
	errno:	EHOSTUNREACH

	Failed due to adapter not powered.

BR/EDR connection not supported
===============================
	errno:	EOPNOTSUPP, EPROTONOSUPPORT

	Failed due to unsupported state transition of L2CAP channel or other
	features either by the local host or the remote.

BR/EDR connection bad socket
============================
	errno:	EBADFD

	Failed due to the socket is in bad state.

BR/EDR connection memory allocation
===================================
	errno:	ENOMEM

	Failed to allocate memory in either host stack or controller.

BR/EDR connection busy
======================
	errno:	EBUSY

	Failed due to other ongoing operations, such as pairing, busy L2CAP
	channel or the operation disallowed by the controller.

BR/EDR connection concurrent connection limit
=============================================
	errno:	EMLINK

	Failed due to reaching the concurrent connection limit to a device.

BR/EDR connection timeout
=========================
	errno:	ETIMEDOUT

	Failed due to connection timeout

BR/EDR connection refused
=========================
	errno:	ECONNREFUSED

	Refused by the remote device due to limited resource, security reason
	or unacceptable address type.

BR/EDR connection aborted by remote
===================================
	errno:	ECONNRESET

	Terminated by the remote device due to limited resource or power off.

BR/EDR connection aborted by local
==================================
	errno:	ECONNABORTED

	Aborted by the local host.

BR/EDR connection LMP protocol error
====================================
	errno:	EPROTO

	Failed due to LMP protocol error.

BR/EDR connection canceled
==========================
	errno:	none

	Failed due to cancellation caused by adapter drop, unexpected device
	drop, orincoming disconnection request before connection request is
	completed.

BR/EDR connection unknown error
===============================
	errno:	ENOSYS

	Failed due to unknown reason.

LE connection invalid arguments
===============================
	errno:	EINVAL

	Failed due to invalid arguments.

LE connection not powered
=========================
	errno:	EHOSTUNREACH

	Failed due to adapter not powered.

LE connection not supported
===========================
	errno:	EOPNOTSUPP, EPROTONOSUPPORT

	Failed due to unsupported state transition of L2CAP channel or other
	features (e.g. LE features) either by the local host or the remote.

LE connection already connected
===============================
	errno: EALREADY, EISCONN

	Either the BT IO is already connected or LE link connection in place.

LE connection bad socket
========================
	errno: EBADFD

	Failed due to the socket is in bad state.

LE connection memory allocation
===============================
	errno: ENOMEM

	Failed to allocate memory in either host stack or controller.

LE connection busy
==================
	errno:	EBUSY

	Failed due to other ongoing operations, such as pairing, connecting,
	busy L2CAP channel or the operation disallowed by the controller.

LE connection refused
=====================
	errno:	ECONNREFUSED

	Failed due to that LE is not enabled or the attempt is refused by the
	remote device due to limited resource, security reason or unacceptable
	address type.

LE connection create socket
===========================
	errno:	EIO

	Failed to create or connect to BT IO socket. This can also indicate
	hardware failure in the controller.

LE connection timeout
=====================
	errno:	ETIMEDOUT

	Failed due to connection timeout

LE connection concurrent connection limit
=========================================
	errno:	EMLINK

	Failed due to reaching the synchronous connection limit to a device.

LE connection abort by remote
=============================
	errno:	ECONNRESET

	Aborted by the remote device due to limited resource or power off.

LE connection abort by local
============================
	errno:	ECONNABORTED

	Aborted by the local host.

LE connection link layer protocol error
=======================================
	errno:	EPROTO

	Failed due to link layer protocol error.

LE connection GATT browsing
===========================
	errno:	none

	Failed to complete the GATT browsing.

LE connection unknown error
===========================
	errno:	ENOSYS

	Failed due to unknown reason.
