All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukasz Rymanowski <lukasz.rymanowski@gmail.com>
To: Szymon Janc <szymon.janc@tieto.com>
Cc: "linux-bluetooth@vger.kernel.org" <linux-bluetooth@vger.kernel.org>
Subject: Re: [PATCH 03/16] android/hal-gatt: Implement client scan_filter_add_remove
Date: Tue, 18 Nov 2014 11:43:03 +0100	[thread overview]
Message-ID: <CAN_7+YY7TwdeEQnC=Re-UY81RHGzsF4q=WTzugvQb52dAqDEzw@mail.gmail.com> (raw)
In-Reply-To: <1416263288-30530-3-git-send-email-szymon.janc@tieto.com>

Hi Szymon,

On Mon, Nov 17, 2014 at 11:27 PM, Szymon Janc <szymon.janc@tieto.com> wrote:
> This adds required IPC message, HAL implementation and daemon stub
> handler
> ---
>  android/gatt.c     | 16 ++++++++++++++++
>  android/hal-gatt.c | 35 ++++++++++++++++++++++++++++++++---
>  android/hal-msg.h  | 17 +++++++++++++++++
>  3 files changed, 65 insertions(+), 3 deletions(-)
>
> diff --git a/android/gatt.c b/android/gatt.c
> index a441e4f..f104a2c 100644
> --- a/android/gatt.c
> +++ b/android/gatt.c
> @@ -5553,6 +5553,19 @@ static void handle_client_scan_filter_setup(const void *buf, uint16_t len)
>                                         HAL_STATUS_UNSUPPORTED);
>  }
>
> +static void handle_client_scan_filter_add_remove(const void *buf, uint16_t len)
> +{
> +       const struct hal_cmd_gatt_client_scan_filter_add_remove *cmd = buf;
> +
> +       DBG("client_if %u", cmd->client_if);
> +
> +       /* TODO */
> +
> +       ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
> +                               HAL_OP_GATT_CLIENT_SCAN_FILTER_ADD_REMOVE,
> +                               HAL_STATUS_UNSUPPORTED);
> +}
> +
>  static const struct ipc_handler cmd_handlers[] = {
>         /* HAL_OP_GATT_CLIENT_REGISTER */
>         { handle_client_register, false,
> @@ -5662,6 +5675,9 @@ static const struct ipc_handler cmd_handlers[] = {
>         /* HAL_OP_GATT_CLIENT_SCAN_FILTER_SETUP */
>         { handle_client_scan_filter_setup, false,
>                 sizeof(struct hal_cmd_gatt_client_scan_filter_setup) },
> +       /* HAL_OP_GATT_CLIENT_SCAN_FILTER_ADD_REMOVE */
> +       { handle_client_scan_filter_add_remove, true,
> +               sizeof(struct hal_cmd_gatt_client_scan_filter_add_remove) },
>  };
>
>  static uint8_t read_by_group_type(const uint8_t *cmd, uint16_t cmd_len,
> diff --git a/android/hal-gatt.c b/android/hal-gatt.c
> index f4c3d31..3291d47 100644
> --- a/android/hal-gatt.c
> +++ b/android/hal-gatt.c
> @@ -1345,11 +1345,40 @@ static bt_status_t scan_filter_add_remove(int client_if, int action,
>                                                 int data_len, char *p_data,
>                                                 int mask_len, char *p_mask)
>  {
> -       DBG("");
> +       char buf[IPC_MTU];
> +       struct hal_cmd_gatt_client_scan_filter_add_remove *cmd = (void *) buf;
> +       size_t cmd_len;
>
> -       /* TODO */
> +       if (!interface_ready())
> +               return BT_STATUS_NOT_READY;
>
> -       return BT_STATUS_UNSUPPORTED;
> +       if (!p_uuid || !p_uuid_mask || !bd_addr)
> +               return BT_STATUS_PARM_INVALID;
> +
> +       cmd_len = sizeof(*cmd) + data_len + mask_len;
> +       if (cmd_len > IPC_MTU)
> +               return BT_STATUS_FAIL;
> +
> +       cmd->client_if = client_if;
> +       cmd->action = action;
> +       cmd->filter_type = filt_type;
> +       cmd->filter_index = filt_index;
> +       cmd->company_id = company_id;
> +       cmd->company_id_mask = company_id_mask;
> +       memcpy(cmd->uuid, p_uuid, sizeof(*p_uuid));
> +       memcpy(cmd->uuid_mask, p_uuid_mask, sizeof(*p_uuid_mask));
> +       memcpy(cmd->address, bd_addr, sizeof(*bd_addr));
> +       cmd->address_type = addr_type;
> +
> +       cmd->data_len = data_len;
> +       memcpy(cmd->data_mask, p_data, data_len);
> +
> +       cmd->mask_len = mask_len;
> +       memcpy(cmd->data_mask + data_len, p_mask, mask_len);
> +
> +       return hal_ipc_cmd(HAL_SERVICE_ID_GATT,
> +                               HAL_OP_GATT_CLIENT_SCAN_FILTER_ADD_REMOVE,
> +                               cmd_len, cmd, NULL, NULL, NULL);
>  }
>
>  static bt_status_t scan_filter_clear(int client_if, int filt_index)
> diff --git a/android/hal-msg.h b/android/hal-msg.h
> index c74c76b..94d0069 100644
> --- a/android/hal-msg.h
> +++ b/android/hal-msg.h
> @@ -1044,6 +1044,23 @@ struct hal_cmd_gatt_client_scan_filter_setup {
>         int32_t found_timeout_cnt;
>  } __attribute__((packed));
>
> +#define HAL_OP_GATT_CLIENT_SCAN_FILTER_ADD_REMOVE      0x025
> +struct hal_cmd_gatt_client_scan_filter_add_remove {
> +       int32_t client_if;
> +       int32_t action;
> +       int32_t filter_type;
> +       int32_t filter_index;
> +       int32_t company_id;
> +       int32_t company_id_mask;
> +       uint8_t uuid[16];
> +       uint8_t uuid_mask[16];
> +       uint8_t address[6];
> +       uint8_t address_type;
> +       int32_t data_len;
> +       int32_t mask_len;
> +       uint8_t data_mask[0];

Maybe comment here would be good saying  that first data_len bytes of
data_mask[] is for data and so on?
Or maybe some tlv could be used here?

> +} __attribute__((packed));
> +
>  /* Handsfree client HAL API */
>
>  #define HAL_OP_HF_CLIENT_CONNECT               0x01
> --
> 1.9.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

\Łukasz

  reply	other threads:[~2014-11-18 10:43 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-17 22:27 [PATCH 01/16] android/hal-gatt: Implement Android 5 callbacks Szymon Janc
2014-11-17 22:27 ` [PATCH 02/16] android/hal-gatt: Implement client scan_filter_param_setup Szymon Janc
2014-11-17 22:27 ` [PATCH 03/16] android/hal-gatt: Implement client scan_filter_add_remove Szymon Janc
2014-11-18 10:43   ` Lukasz Rymanowski [this message]
2014-11-17 22:27 ` [PATCH 04/16] android/hal-gatt: Implement client scan_filter_clear Szymon Janc
2014-11-17 22:27 ` [PATCH 05/16] android/hal-gatt: Implement client scan_filter_enable Szymon Janc
2014-11-17 22:27 ` [PATCH 06/16] android/hal-gatt: Implement client configure_mtu Szymon Janc
2014-11-17 22:27 ` [PATCH 07/16] android/hal-gatt: Implement client conn_parameter_update Szymon Janc
2014-11-17 22:28 ` [PATCH 08/16] android/hal-gatt: Implement client set_scan_parameters Szymon Janc
2014-11-17 22:28 ` [PATCH 09/16] android/hal-gatt: Implement client multi_adv_enable Szymon Janc
2014-11-17 22:28 ` [PATCH 10/16] android/hal-gatt: Implement client handle_client_update_multi_adv Szymon Janc
2014-11-17 22:28 ` [PATCH 11/16] android/hal-gatt: Implement client multi_adv_set_inst_data Szymon Janc
2014-11-18 10:58   ` Lukasz Rymanowski
2014-11-17 22:28 ` [PATCH 12/16] android/hal-gatt: Implement client multi_adv_disable Szymon Janc
2014-11-17 22:28 ` [PATCH 13/16] android/hal-gatt: Implement client batchscan_cfg_storage Szymon Janc
2014-11-17 22:28 ` [PATCH 14/16] android/hal-gatt: Implement client batchscan_enb_batch_scan Szymon Janc
2014-11-17 22:28 ` [PATCH 15/16] android/hal-gatt: Implement client batchscan_dis_batch_scan Szymon Janc
2014-11-17 22:28 ` [PATCH 16/16] android/hal-gatt: Implement client batchscan_read_reports Szymon Janc
2014-11-19 12:14 ` [PATCH 01/16] android/hal-gatt: Implement Android 5 callbacks Szymon Janc

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAN_7+YY7TwdeEQnC=Re-UY81RHGzsF4q=WTzugvQb52dAqDEzw@mail.gmail.com' \
    --to=lukasz.rymanowski@gmail.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=szymon.janc@tieto.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.