Re: [PATCH] android/bluetooth: Fix device found notification

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Łukasz,

On Tuesday 19 of August 2014 15:45:29 Lukasz Rymanowski wrote:
> If device is dual mode and can be seen on both LE and BREDR, then
> bdaddr_type in device struct keeps LE address type of that device.
> 
> During discovery, we should take current bdaddr_type to decide about
> passing that device up to application or not. Using dev->braddr_type might
> be misleading
> 
> This patch fix scenario when remote device is known as LE device and
> recently has been found on inquiry seesion as DUAL mode device. In such
> case, based on braddr_type and eir flags we could incorectly skip
> new device notification for Android framework.
> ---
>  android/bluetooth.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/android/bluetooth.c b/android/bluetooth.c
> index 5f163f1..64a7696 100644
> --- a/android/bluetooth.c
> +++ b/android/bluetooth.c
> @@ -1830,7 +1830,8 @@ static void update_device(struct device *dev, int8_t
> rssi, HAL_EV_REMOTE_DEVICE_PROPS, size, buf);
>  }
> 
> -static bool is_new_device(const struct device *dev, unsigned int flags)
> +static bool is_new_device(const struct device *dev, unsigned int flags,
> +							uint8_t bdaddr_type)
>  {
>  	if (dev->found)
>  		return false;
> @@ -1838,7 +1839,7 @@ static bool is_new_device(const struct device *dev,
> unsigned int flags) if (dev->bredr_paired || dev->le_paired)
>  		return false;
> 
> -	if (dev->bdaddr_type != BDADDR_BREDR &&
> +	if (bdaddr_type != BDADDR_BREDR &&
>  				!(flags & (EIR_LIM_DISC | EIR_GEN_DISC)))
>  		return false;
> 
> @@ -1867,7 +1868,7 @@ static void update_found_device(const bdaddr_t
> *bdaddr, uint8_t bdaddr_type, * Device found event needs to be send also
> for known device if this is * new discovery session. Otherwise framework
> will ignore it.
>  	 */
> -	if (is_new_device(dev, eir.flags))
> +	if (is_new_device(dev, eir.flags, bdaddr_type))
>  		update_new_device(dev, rssi, &eir);
>  	else
>  		update_device(dev, rssi, &eir, bdaddr_type);

Patch applied, thanks.

-- 
BR
Szymon Janc
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux