Bluetooth Management API
*************************

Copyright (C) 2008-2009  Marcel Holtmann <marcel@holtmann.org>


Packet Structures
=================

	Commands:

	0       4       8      12      16      202     24      28    31
	+-------------------------------+-----------------------------+
	|  Command Code                 |  Parameter Total Length     |
        +-------------------------------+-----------------------------+
	|                                                             |

	Events:

	0       4       8      12      16      202     24      28    31
	+-------------------------------+-----------------------------+
	|  Event Code                   |  Parameter Total Length     |
        +-------------------------------+-----------------------------+
	|                                                             |


Read Management Version Information Command
===========================================

	Command Code:		0x0001
	Command Parameters:
	Return Parameters:	Version (1 Octets)
				Revision (2 Octets)


Read Management Supported Features Command
==========================================

	Command Code:		0x0002
	Command Parameters:
	Return Parameters:	Features (8 Octets)

		Feature Bit 0:	Controller Support
		Feature Bit 1:	Tracing Support


Read Controller Index List Command
==================================

	Command Code:		0x0003
	Command Parameters:
	Return Paramters:	Num_Controllers (2 Octets)
				Controller_Index[i] (2 Octets)


Read Controller Information Command
===================================

	Command Code:		0x0004
	Command Parameters:	Controller_Index (2 Octets)
	Return Parameters:	Controller_Index (2 Octets)
				Controller_Type (1 Octet)
				Powered (1 octet)
				Connectable (1 octet)
				Discoverable (1 octet)
				Pairable (1 octed)
				Security_Mode (1 octed)
				BD_ADDR (6 Octets)
				Device_Class (3 octets)
				Supported_Features (8 Octets)
				Manufacturer (2 Octets)
				HCI_Version (1 Octet)
				HCI_Revision (2 Octets)

		Controller_Type:0x00 Reserved
				0x01 Bluetooth (BR/EDR)
				0x02 802.11 (AMP)


Set Powered Command
===================

	Command Code:		0x0005
	Command Parameters:	Controller_Index (2 Octets)
				Powered (1 Octet)
	Return Paramters:	Controller_Index (2 Octets)
				Powered (1 Octet)


Set Discoverable Command
========================

	Command Code:		0x0006
	Command Parameters:	Controller_Index (2 Octets)
				Discoverable (1 Octet)
	Return Paramters:	Controller_Index (2 Octets)
				Discoverable (1 Octet)


Set Connectable Command
=======================

	Command Code:		0x0007
	Command Parameters:	Controller_Index (2 Octets)
				Connectable (1 Octet)
	Return Paramters:	Controller_Index (2 Octets)
				Connectable (1 Octet)


Set Pairable Command
====================

	Command Code:		0x0008
	Command Parameters:	Controller_Index (2 Octets)
				Pairable (1 Octet)
	Return Paramters:	Controller_Index (2 Octets)
				Pairable (1 Octet)

Add UUID Command
================

	Command Code:		0x0009
	Command Parameters:	Controller_Index (2 Octets)
				UUID (16 Octets)
				SVC_Hint (1 octet)
	Return Paramters:	Controller_Index (2 Octets)


Remove UUID Command
===================

	Command Code:		0x000A
	Command Parameters:	Controller_Index (2 Octets)
				UUID (16 Octets)
	Return Paramters:	Controller_Index (2 Octets)


Set Device Class
================

	Command Code:		0x000B
	Command Parameters:	Controller_Index (2 Octets)
				Major_Class (1 octet)
				Minor_Class (1 octed)
	Return Paramters:	Controller_Index (2 Octets)


Set Service Cache Command
=========================

	Command Code:		0x000C
	Command Parameters:	Controller_Index (2 Octets)
				Enable (1 octet)
	Return Paramters:	Controller_Index (2 Octets)


Load Keys Command
=================

	Command Code:		0x000D
	Command Parameters:	Controller_Index (2 Octets)
				Debug_Keys (1 Octet)
				Key_Count (2 Octets)
				Key1 {
					Address (6 Octets)
					Type (1 Octet)
					Value (16 Octets)
					PIN_Length (1 Octet)
				}
				Key2 { }
				...
	Return Paramters:	Controller_Index (2 Octets)


Remove Key Command
==================

	Command Code:		0x000E
	Command Parameters:	Controller_Index (2 Octets)
				Address (6 Octets)
				Disconnect (1 Octet)
	Return Paramters:	Controller_Index (2 Octets)


Disconnect Command
==================

	Command Code:		0x000F
	Command Parameters:	Controller_Index (2 Octets)
				Address (6 Octets)
	Return Paramters:	Controller_Index (2 Octets)
				Address (6 Octets)

Get Connections Command
=======================

	Command Code:		0x0010
	Command Parameters:	Controller_Index (2 Octets)
	Return Paramters:	Controller_Index (2 Octets)
				Connection_Count (2 Octets)
				Address1 (6 Octets)
				Address2 (6 Octets)
				...

PIN Code Reply Command
=======================

	Command Code:		0x0011
	Command Parameters:	Controller_Index (2 Octets)
	Return Paramters:	Controller_Index (2 Octets)
				Address (6 Octets)
				PIN_Length (1 Octet)
				PIN_Code (16 Octets)


PIN Code Negative Reply Command
===============================

	Command Code:		0x0012
	Command Parameters:	Controller_Index (2 Octets)
	Return Paramters:	Controller_Index (2 Octets)
				Address (6 Octets)


Set IO Capability Command
=========================

	Command Code:		0x0013
	Command Parameters:	Controller_Index (2 Octets)
				IO_Capability (1 Octet)
	Return Paramters:	Controller_Index (2 Octets)


Pair Device Command
===================

	Command Code:		0x0014
	Command Parameters:	Controller_Index (2 Octets)
				Address (6 Octets)
				IO_Capability (1 Octet)
	Return Paramters:	Controller_Index (2 Octets)
				Address (6 Octets)
				Status (1 Octet)


User Confirmation Reply Command
===============================

	Command Code:		0x0015
	Command Parameters:	Controller_Index (2 Octets)
				Address (6 Octets)
	Return Paramters:	Controller_Index (2 Octets)
				Address (6 Octets)
				Status (1 Octet)


User Confirmation Negative Reply Command
========================================

	Command Code:		0x0016
	Command Parameters:	Controller_Index (2 Octets)
				Address (6 Octets)
	Return Paramters:	Controller_Index (2 Octets)
				Address (6 Octets)
				Status (1 Octet)


Read Tracing Buffer Size Command
================================

	Command Code:		<not yet assigned>
	Command Parameters:
	Return Parameters:	Status (1 Octet)
				Buffer_Size (2 Octets)

		Buffer Size in Kilobytes


Write Tracing Buffer Size Command
=================================

	Command Code:		<not yet assigned>
	Command Parameters:	Buffer_Size (2 Octets)
	Return Parameters:	Status (1 Octet)

		Buffer Size in Kilobytes


Read Controller Tracing Filter Command
=======================================

	Command Code:		<not yet assigned>
	Command Parameters:	Controller_Index (2 Octects)
	Return Parameters:	Status (1 Octet)
				Controller_Index (2 Octets)
				Tracing_Enable (1 Octect)
				Num_Filters (2 Octect)
				Protocol_UUID[i] (16 Octets)
				Protocol_Identifier[i] (16 Octets)

		Tracing_Enable:	0x00 Tracing disabled
				0x01 Command and Event tracing
				0x02 Command, Event and ACL tracing
				0x03 Command, Event, ACL and SCO tracing


Write Controller Tracing Filter Command
=======================================

	Command Code:		<not yet assigned>
	Command Parameters:	Controller_Index (2 Octects)
				Tracing_Enable (1 Octect)
				Num_Filters (2 Octect)
				Protocol_UUID[i] (16 Octets)
				Protocol_Identifier[i] (16 Octets)
	Return Paramters:	Status (1 Octet)
				Controller_Index (2 Octets)


Command Complete Event
======================

Event Code		0x0001
Event Parameters	Command_Opcode (2 Octets)
			Return_Parameters


Command Status Event
====================

Event Code		0x0002
Event Parameters	Status (1 Octet)
			Command_Opcode (2 Octets)


Controller Error Event
======================

Event Code		0x0003
Event Parameters	Error_Code (1 Octet)


Index Added Event
=================

Event Code		0x0004
Event Parameters	Controller_Index (2 Octets)


Index Removed Event
===================

Event Code		0x0005
Event Parameters	Controller_Index (2 Octets)

Controller Powered Event
========================

Event Code		0x0006
Event Parameters	Controller_Index (2 Octets)
			Powered (1 Octet)

Controller Discoverable Event
=============================

Event Code		0x0007
Event Parameters	Controller_Index (2 Octets)
			Discoverable (1 Octet)

Controller Connectable Event
============================

Event Code		0x0008
Event Parameters	Controller_Index (2 Octets)
			Connectable (1 Octet)

Controller Pairable Event
=========================

Event Code		0x0009
Event Parameters	Controller_Index (2 Octets)
			Pairable (1 Octet)

New Key Event
=============

Event Code		0x000A
Event Parameters	Controller_Index (2 Octets)
			Key {
				Address (6 Octets)
				Type (1 Octet)
				Value (16 Octets)
				PIN_Length (1 Octet)
			}
			Old_Key_Type (1 Octet)

Device Connected Event
======================

Event Code		0x000B
Event Parameters	Controller_Index (2 Octets)
			Address (6 Octets)

Device Disconnected Event
=========================

Event Code		0x000C
Event Parameters	Controller_Index (2 Octets)
			Address (6 Octets)

Connect Failed Event
====================

Event Code		0x000D
Event Parameters	Controller_Index (2 Octets)
			Address (6 Octets)
			Status (1 Octet)

PIN Code Request Event
======================

Event Code		0x000E
Event Parameters	Controller_Index (2 Octets)
			Address (6 Octets)


User Confirmation Request Event
===============================

Event Code		0x000F
Event Parameters	Controller_Index (2 Octets)
			Address (6 Octets)
			Value (4 Octets)


Authentication Failed Event
===========================

Event Code		0x0010
Event Parameters	Controller_Index (2 Octets)
			Address (6 Octets)
			Status (1 Octet)
