Disconnect and reconnect the OBEX session on change path

According to AVRCP 1.6.2, Section 5.14.2.2.2, the controller shall ensure
the OBEX session is disconnected and image handles are cleaned up any
time the UIDs change or, for a database unaware player (which we are),
we change paths successfully. This is further enforced with a PTS test
as well.

This change adds a "refresh" operation that will disconnect and
reconnect to OBEX without tearing down the actual L2CAP connection. This
operation is suggested by the specification in section 4.1.8. The
refresh operation is called on notification of a successful change path
operation. Since we don't support the UIDs changed event, so this should
satisfy PTS for now. In the event we do support UIDs changed we will have
to also call refreshCoverArt() there as well.

Not all Target devices support the recommendation section 4.1.8 of the
specification. Some treat an OBEX level disconnect as an indiation to
close the entire L2CAP connection. This was fixed in this change by
assuming that all disconnected states that occur when we had a client in
our set are incoming and thus unepected. We rightfully try to reconnect
at this point.

Tag: #compatibility
Bug: 149592384
Test: Build, flash, interop test, atest BluetoothInstrumentationTests
Merged-In: Icd4b2f1ac00bf32855f436be57212c8bc264a9f7
Change-Id: Icd4b2f1ac00bf32855f436be57212c8bc264a9f7
3 files changed
tree: 3dd07537619990625a84aac4348defa2b93b55ec
  1. android/