Diff between 121bb927f2728fdc9902b52967d46209ae49adae and 14453fcd0e4169e3c0959ffb2e751d5f3cffb2e7

Changed Files

File Additions Deletions Status
android/bluetooth.c +7 -6 modified

Full Patch

diff --git a/android/bluetooth.c b/android/bluetooth.c
index f1ceda3..5526924 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);