ver 2.11:
	Initial support for the kernel security manager.
	Use bit zero for vendor packets in the filter type bitmask.
	Add SIM Access types for service discovery.
	Add more audio/video profile translations.
	Add another company identifier.
	Add the missing HCI error codes.
	Add RFCOMM socket options.
	Add definition for the SECURE link mode.
	Add functions for reading and writing the inquiry mode.
	Add functions for AFH related settings and information.
	Add version identifier for the Bluetooth 2.0 specification.

ver 2.10:
	Fix and extend the unaligned access macros.
	Make compiling with debug information optional.
	Don't override CFLAGS from configure.

ver 2.9:
	Add L2CAP info type and info result definitions.
	Add value for L2CAP_CONF_RFC_MODE.
	Change RSSI value to signed instead of unsigned.
	Allow UUID32 values as protocol identifiers.

ver 2.8:
	Fix the event code of inquiry with RSSI.
	Add defines and UUID's for audio/video profiles.
	Add AVDTP protocol identifier.
	Add HIDP subclass field.
	Add PKGConfig support.
	Remove dummy SDP library.

ver 2.7:
	Fix display of decoded LMP features.
	Update company identifiers.
	Add AFH related types.
	Add first bits from EDR prototyping specification.
	Add support for inquiry with RSSI.
	Add HCRP related SDP functions.
	Add HIDP header file.

ver 2.6:
	Use R2 for default value of pscan_rep_mode.
	Add new company identifiers.
	Add BNEP and CMTP header files.
	Add the SDP library.

ver 2.5:
	Add decoding of Bluetooth 1.2 features.
	Add link manager version parameter for Bluetooth 1.2.
	Add new company identifiers.
	Support for transmit power level.
	Support for park, sniff and hold mode.
	Support for role switch.
	Support for reading the clock offset.
	Use R1 for default value of pscan_rep_mode.

ver 2.4:
	Added const qualifiers to appropriate function arguments.
	Minor fixes.

ver 2.3:
	Fix hci_for_each_dev() for big endian machines.
	Support for voice settings.
	RPM package.

ver 2.2:
	Updated RFCOMM header file.
	Additional HCI command and event defines.

ver 2.1.1:
	Resurrect hci_remote_name.

ver 2.1:
	New HCI functions:
		hci_{read, write}_class_of_dev(),
		hci_{read, write}_current_iac_lap(),
		hci_write_local_name()
	Added RFCOMM header file.
	Minor fixes.

ver 2.0:
	Additional company IDs.
	Minor fixes.

ver 2.0-pre10:
	Fix hci_inquiry function to return errors and accept user buffers.
	New functions hci_devba, hci_devid, hci_for_each_dev and hci_get_route.
	Additional company IDs.
	Makefile and other minor fixes.

ver 2.0-pre9:
	LMP features to string translation support.
	Additional HCI command and event defines.
	Extended hci_filter API.

ver 2.0-pre8:
	Additional HCI ioctls and defines.
	All strings and buffers are allocated dynamically.
	ba2str, str2ba automatically swap bdaddress.
	Minor fixes and cleanup.

ver 2.0-pre7:
	Bluetooth libraries and header files is now a separate package.
	New build environment uses automake and libtool.
	Massive header files cleanup.

ver 2.0-pre6:
	API cleanup and additions.

ver 2.0-pre4:
	HCI filter enhancements.

ver 2.0-pre3:
	Cleanup.

ver 2.0-pre2:
	Additional HCI library functions.
	Documentation update.
	
ver 2.0-pre1:
	Minor fixes and improvements.
