am 3cf254d2: Merge change I4b3db907 into eclair
Merge commit '3cf254d2ba303da3354ed65fd7f3136e87a56b9f' into eclair-mr2 * commit '3cf254d2ba303da3354ed65fd7f3136e87a56b9f': Revert the channge where channels were not selected randomly.
This commit is contained in:
@@ -597,14 +597,6 @@ public final class BluetoothAdapter {
|
|||||||
/**
|
/**
|
||||||
* Picks RFCOMM channels until none are left.
|
* Picks RFCOMM channels until none are left.
|
||||||
* Avoids reserved channels.
|
* Avoids reserved channels.
|
||||||
* Ideally we would pick random channels, but in the current implementation
|
|
||||||
* we start with the channel that is the hash of the UUID, and try every
|
|
||||||
* available channel from there. This means that in most cases a given
|
|
||||||
* uuid will use the same channel. This is a workaround for a Bluez SDP
|
|
||||||
* bug where we are not updating the cache when the channel changes for a
|
|
||||||
* uuid.
|
|
||||||
* TODO: Fix the Bluez SDP caching bug, and go back to random channel
|
|
||||||
* selection
|
|
||||||
*/
|
*/
|
||||||
private static class RfcommChannelPicker {
|
private static class RfcommChannelPicker {
|
||||||
private static final int[] RESERVED_RFCOMM_CHANNELS = new int[] {
|
private static final int[] RESERVED_RFCOMM_CHANNELS = new int[] {
|
||||||
@@ -637,19 +629,12 @@ public final class BluetoothAdapter {
|
|||||||
}
|
}
|
||||||
mUuid = uuid;
|
mUuid = uuid;
|
||||||
}
|
}
|
||||||
/* Returns next channel, or -1 if we're out */
|
/* Returns next random channel, or -1 if we're out */
|
||||||
public int nextChannel() {
|
public int nextChannel() {
|
||||||
int channel = mUuid.hashCode(); // always pick the same channel to try first
|
if (mChannels.size() == 0) {
|
||||||
Integer channelInt;
|
return -1;
|
||||||
while (mChannels.size() > 0) {
|
|
||||||
channelInt = new Integer(channel);
|
|
||||||
if (mChannels.remove(channelInt)) {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
channel = (channel % BluetoothSocket.MAX_RFCOMM_CHANNEL) + 1;
|
|
||||||
}
|
}
|
||||||
|
return mChannels.remove(sRandom.nextInt(mChannels.size()));
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user