From 14453fcd0e4169e3c0959ffb2e751d5f3cffb2e7 Mon Sep 17 00:00:00 2001 From: Lukasz Rymanowski Date: Tue, 2 Sep 2014 15:55:01 +0200 Subject: [PATCH] android/bluetooth: Improve sending bond state notification This patch makes sure that any bond state changes of remote device is corretly distributed to Android framework. --- android/bluetooth.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/android/bluetooth.c b/android/bluetooth.c index f1ceda35d..5526924ff 100644 --- a/android/bluetooth.c +++ b/android/bluetooth.c @@ -886,13 +886,14 @@ static void update_bond_state(struct device *dev, uint8_t status, return; /* - * For incoming just works bonding we will switch here from - * non bonded to bonded directly. This is something Android - * will not handle in their bond state machine. To make Android - * handle it corretly we need to send BONDING state before BOND + * When internal bond state changes from bond to non-bond or other way, + * BfA needs to send bonding state to Android in the middle. Otherwise + * Android will not handle it correctly */ - if (old_bond == HAL_BOND_STATE_NONE && - new_bond == HAL_BOND_STATE_BONDED) + if ((old_bond == HAL_BOND_STATE_NONE && + new_bond == HAL_BOND_STATE_BONDED) || + (old_bond == HAL_BOND_STATE_BONDED && + new_bond == HAL_BOND_STATE_NONE)) send_bond_state_change(dev, HAL_STATUS_SUCCESS, HAL_BOND_STATE_BONDING); -- 2.47.3