Bluetooth SCO Audio Plugin
==========================

The SCO Audio Plugin communicate through abstract socket name
"\0bluez_sco_socket".

	.----SCO----.                             .--Android--.
	|   Plugin  |                             |   Daemon  |
	|           |          Command            |           |
	|           | --------------------------> |           |
	|           |                             |           |
	|           | <-------------------------- |           |
	|           |          Response           |           |
	|           |                             |           |
	|           |                             |           |
	|           |                             |           |
	'-----------'                             '-----------'


	SCO HAL                               Daemon
	----------------------------------------------------

	call get_fd()                    --> Get SCO socket fd
	return get_fd()                  <-- Return SCO socket fd and mtu

SCO Audio Service (ID 0)
========================

	Opcode 0x00 - Error response

		Response parameters: Status (1 octet)

	Opcode 0x01 - Get SCO fd command

		Command parameters: Remote address (6 octets)
		Response parameters: MTU (2 octets)
				     File descriptor (inline)
