Re: [PATCH BlueZ] profile: Add exception from being claimed internally

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

 



Hi Sonny,

On Wed, Jul 15, 2020 at 3:32 PM Sonny Sasaka <sonnysasaka@xxxxxxxxxxxx> wrote:
>
> This adds a flag to give exception to profiles that are considered safe
> to be both handled internally and externally via GATT API. Currently
> this includes the battery profile.
>
> ---
>  profiles/battery/battery.c | 1 +
>  src/device.c               | 2 +-
>  src/profile.h              | 5 +++++
>  3 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/profiles/battery/battery.c b/profiles/battery/battery.c
> index 4da4355a1..20aa47727 100644
> --- a/profiles/battery/battery.c
> +++ b/profiles/battery/battery.c
> @@ -354,6 +354,7 @@ static struct btd_profile batt_profile = {
>         .device_remove  = batt_remove,
>         .accept         = batt_accept,
>         .disconnect     = batt_disconnect,
> +       .claim_service_exception = true,
>  };
>
>  static int batt_init(void)
> diff --git a/src/device.c b/src/device.c
> index 0deee2707..cfa52461f 100644
> --- a/src/device.c
> +++ b/src/device.c
> @@ -3818,7 +3818,7 @@ done:
>         profile = btd_service_get_profile(service);
>
>         /* Claim attributes of internal profiles */
> -       if (!profile->external) {
> +       if (!profile->external && !profile->claim_service_exception) {

The external field was added exactly to allow it to be used externally.

>                 /* Mark the service as claimed by the existing profile. */
>                 gatt_db_service_set_claimed(attr, true);
>         }
> diff --git a/src/profile.h b/src/profile.h
> index 4448a2a6d..25e83381b 100644
> --- a/src/profile.h
> +++ b/src/profile.h
> @@ -36,6 +36,11 @@ struct btd_profile {
>
>         bool auto_connect;
>         bool external;
> +       /* Some profiles are considered safe to be handled internally and also
> +        * be exposed in the GATT API. This flag give such profiles exception
> +        * from being claimed internally.
> +        */
> +       bool claim_service_exception;
>
>         int (*device_probe) (struct btd_service *service);
>         void (*device_remove) (struct btd_service *service);
> --
> 2.26.2
>


-- 
Luiz Augusto von Dentz



[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