Bluetooth: HID: Add support for HID Device Role

This patch adds the HID Device Role support in Bluetooth framework.
Also AIDL and callback related files for HID Device role are added
to provide interface for third party applications to communicate with
HID device Service.

Change-Id: Id03a362b7bcfa2e76056fa0197eaac12ce49b5a2
CRs-Fixed: 573086
Bluetooth: Changes for LPP and extended LE scan

This patch includes implementation of a new Bluetooth
Adapter named QBluetoothAdapter for implementing LE
specific tasks that the default adapter doesnt perform.
This patch also implements Low power proximity and extended
LE scan functionality based on service UUIDs.

CRs-Fixed: 581289
Change-Id: I63e0593f79c8929d4e18cee0472fcb401c8892e7
Bluetooth: Cleaning up sap service object to avoid serviceRecord leaks

A case where script is running to do BT ON/OFF 2000 times. Sap service
class object is leaked while turning OFF BT, when it is referenced
(Directly OR Indirectly due to its member variables). So Garbage
Collector doesn't collect class object which is referenced. Setting
NULL for service class object & service connection, while cleaning up
those variable to mark as weak reference. Any objects memory is
immediately claimed by GC, which are marked as weak reference.

Change-Id: I905d1e542c159c8f9addcb8491aee900697c9006
CRs-Fixed: 591180
Bluetooth: Fix to avoid framework reboot during monkey.

A case where monkey is running & sometimes framework is
disconnected due to unhandled java Exception during the
binding of DUN, SAP, HID device & PAN service on unsuccessful
binding. So it never handled. Handing java exception while binding
DUN, SAP, HID device & PAN  services to solve this issue.

Change-Id: Idea710593a3f9496305f636042605303e73e7749
CRs-Fixed: 564709
Bluetooth: HID-C: Add support for error parameter for reportError

This patch adds support for error parameter in reportError providing
better flexibiltiy to application to respond to errors for Set Report
received from HID Host.

Change-Id: Ieada7be8a6a91d310f20849af9e5a9b04766f4a5
CRs-Fixed: 595139
Increases Gatt connection timeout value to be 30 secs

Some LE devices take more time to establish
LE connection. This change increases the
connection timeout value to take care of
this scenario.

Change-Id: Ie4cc79b53301f230553df02afd5d64dec637fe5d
CRs-fixed: 582556
Bluetooth: Validate input parameters of gatt characteristics

If the input parameters of gatt characteristics are not valid
return false

Change-Id: Icf44439992cb068339f7a4c4e50a3f28c25db6ce
CRs-Fixed: 534763
Bluetooth: Fix PXP LPP app link loss reconnection

When BLE link loss reconnection happens,the host is
not able to send Vendor specific commands
to the controller to start monitoring the RSSI
values.

CRs-fixed: 597822

Change-Id: I436889fae7f7d42c4f532690b726271ffc136e94
Bluetooth: Fix to avoid framework reboot during monkey.

A case where monkey is running & sometimes framework is
disconnected due to unhandled java Exception during the
unbinding of HID device service on unsuccessful unbinding.
Handling java Illegal Argument exception while unbinding
HID device service solves this issue.

Change-Id: I61a5620e756119d25f2a235e67d6404b216f4cbf
CRs-Fixed: 601533
Bluetooth: Add SDK apis for Wipower and Peripheral feature

changes needed for Wipower and Periferal features.

CRs-fixed: 587811

Change-Id: Ibe73124daf78c79498fd1a6cbbcd75a88006c688
Bluetooth: Handle exceptions for bluetoot socket read

Handled IO exception in read function of BluetootSocket,
and also introduced a null check for mSocketIS.

CRs-Fixed: 605606
Change-Id: Ic948c72269e0de486a8f49163830528b002198ff
Bluetooth: Fix for FileDescriptor leakage causing ANR

Fix to close the native fds gracefully. detachFD has been removed
in order to close the native fds

Change-Id: I6afca60bcf6adc82ad6a63d8706267d8ed3bd579
CRs-fixed: 623575
Bluetooth: Added new key to store last connected A2dp Sep type

Changes made to add new key and API to store, retrieve the last
connected A2dp Sep type using Content Resolver.

CRs-fixed: 599358
Change-Id: I2648603cc456921ec1896fb498b602416bd79e72
Bluetooth: Adds check to verify Bluetooth adapter state

This checks whether bluetooth is turned ON or not in
BLE stop scan process. BLE scan apis are called from applications
so need to check if BT adapter state is ON to avoid Bluetooth
crash

Change-Id: Ifc472be9b3f8baf978d6cdca2e4743a75b951635
CRs-Fixed: 634617
Bluetooth: Adds check to verify Bluetooth adapter state

This checks whether bluetooth is turned ON or not in BLE
start scan process.BLE scan apis are called from applications
so need to check if BT adapter state is ON to avoid Bluetooth
crash

CRs-fixed: 649274
Change-Id: Ic075e1560bba2cabbfac2e1477932f9ad3144067
BT: HF: Control verbose logging at runtime.

Verbose logging in BluetoothHeadset can be
controlled from adb shell.

Change-Id: If63974402a4fc91065c8007a224388af12f49cf7
CRs-Fixed: 601899
Bluetooth: Fix to avoid object leaks during BT OFF

A case where script is running to do BT ON/OFF 2000 times,
Each time while turning off BT FULL_CONNECTED_ASYNC_CHANNEL
is disconnected by Pan Service. HALF_CONNECTED_ASYNC_CHANNEL
is not disconnected, which leads memory leak in Pan Service
object as messenger passed by PanService & ASYNC Channel object.
which are still referred from BT tethering framework code. So GC
does not claim for these objects. HALF_CONNECTED_ASYNC_CHANNEL
should be disconnected, once FULL_CONNECTED_ASYNC_CHANNEL
is disconnected to solve this issue.

Change-Id: I5a7a2beb0169a755cf4f3f37fd0a0ab7d08fd9e5
CRs-Fixed: 591180
Bluetooth: Avoid fd leak for Bluetooth server socket connections

-As the close function of local socket implementation is dependent
 on mFdCreatedInternally, it will not be set for bluetooth server
 sockets, this will lead to fd leak on bluetooth socket connection.

-Exposed the API to set mFdCreatedExternally flag to close fd which
 was opened externally, so that when the actual close request comes
 fd will be closed successfully based on flag check.

CRs-Fixed: 638042
Change-Id: I22c6a973b30531407148f9d9e50820422d4427b0
Fix MAP SDP record generation [2/3].

Give the bluetooth app API to register a server socket for a specific
UUID/port pair. It needs that for registering two OBEX server instances.

Change-Id: I6ede7f2777040af4e653eceb14ea47a2c03abfae
OBEX: Reduce Obex MTU size for A2DP or SCO concurrency

Reduce Obex MTU to 8k from 64k when OPP send is tried with
SCO / A2DP streaming in progress, so that the continue
response for first complete Obex PUT packet is received
from SOC within 50 seconds time frame.

CRs-Fixed: 571865
Change-Id: I1eae114f57f2a92ee4b26c82d8f55fafe02775b8