All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ravi kumar Veeramally <ravikumar.veeramally@linux.intel.com>
To: "linux-bluetooth@vger.kernel.org" <linux-bluetooth@vger.kernel.org>
Subject: Re: [PATCH_v6] android/hal-health: Add HDP .register_application method
Date: Wed, 19 Mar 2014 15:04:21 +0200	[thread overview]
Message-ID: <532995D5.3030009@linux.intel.com> (raw)
In-Reply-To: <1395151108-28229-1-git-send-email-ravikumar.veeramally@linux.intel.com>


ping.

On 03/18/2014 03:58 PM, Ravi kumar Veeramally wrote:
> ---
> v6: Fixed Szymon's comment.
> v5: Fixed Johan's comment.
> v4: Added utility to copy null termiated strings to hal_string.
> ---
>   android/hal-health.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++-
>   1 file changed, 83 insertions(+), 1 deletion(-)
>
> diff --git a/android/hal-health.c b/android/hal-health.c
> index e6fe65a..ac5977f 100644
> --- a/android/hal-health.c
> +++ b/android/hal-health.c
> @@ -28,6 +28,31 @@
>   
>   static const bthl_callbacks_t *cbacks = NULL;
>   
> +static bool string_to_hal(const char *str, struct hal_string *hstr,
> +								ssize_t *len)
> +{
> +	uint8_t str_len;
> +
> +	if (!hstr || !len)
> +		return false;
> +
> +	if (!str) {
> +		hstr->len = 0;
> +		return true;
> +	}
> +
> +	str_len = strlen(str) + 1;
> +
> +	if ((*len + str_len) > IPC_MTU)
> +		return false;
> +
> +	hstr->len = str_len;
> +	*len += hstr->len;
> +	memcpy(hstr->data, str, hstr->len);
> +
> +	return true;
> +}
> +
>   static bool interface_ready(void)
>   {
>   	return cbacks != NULL;
> @@ -38,6 +63,63 @@ static bool interface_ready(void)
>   static const struct hal_ipc_handler ev_handlers[] = {
>   };
>   
> +static bt_status_t register_application(bthl_reg_param_t *reg, int *app_id)
> +{
> +	char buf[IPC_MTU];
> +	struct hal_cmd_health_reg_app *cmd = (void *) buf;
> +	struct hal_rsp_health_reg_app rsp;
> +	size_t len = sizeof(rsp);
> +	bt_status_t status;
> +	ssize_t cmd_len;
> +	uint8_t i;
> +
> +	DBG("");
> +
> +	if (!interface_ready())
> +		return BT_STATUS_NOT_READY;
> +
> +	if (!reg || !app_id)
> +		return BT_STATUS_PARM_INVALID;
> +
> +	cmd_len = sizeof(*cmd);
> +
> +	if (!string_to_hal(reg->application_name, &cmd->app_name, &cmd_len))
> +		return BT_STATUS_PARM_INVALID;
> +
> +	if (!string_to_hal(reg->provider_name, &cmd->provider_name, &cmd_len))
> +		return BT_STATUS_PARM_INVALID;
> +
> +	if (!string_to_hal(reg->srv_name, &cmd->service_name, &cmd_len))
> +		return BT_STATUS_PARM_INVALID;
> +
> +	if (!string_to_hal(reg->srv_desp, &cmd->service_descr, &cmd_len))
> +		return BT_STATUS_PARM_INVALID;
> +
> +	cmd->num_of_mdep = reg->number_of_mdeps;
> +
> +	for (i = 0; i < reg->number_of_mdeps; i++) {
> +		cmd_len += sizeof(cmd->mdep_cfg);
> +		if (cmd_len > IPC_MTU)
> +			return BT_STATUS_PARM_INVALID;
> +
> +		cmd->mdep_cfg[i].role = reg->mdep_cfg[i].mdep_role;
> +		cmd->mdep_cfg[i].data_type = reg->mdep_cfg[i].data_type;
> +		cmd->mdep_cfg[i].channel_type = reg->mdep_cfg[i].channel_type;
> +
> +		if (!string_to_hal(reg->mdep_cfg[i].mdep_description,
> +					&cmd->mdep_cfg[i].descr, &cmd_len))
> +			return BT_STATUS_PARM_INVALID;
> +	}
> +
> +	status = hal_ipc_cmd(HAL_SERVICE_ID_HEALTH, HAL_OP_HEALTH_REG_APP,
> +						cmd_len, cmd, &len, &rsp, NULL);
> +
> +	if (status == HAL_STATUS_SUCCESS)
> +		*app_id = rsp.app_id;
> +
> +	return status;
> +}
> +
>   static bt_status_t unregister_application(int app_id)
>   {
>   	struct hal_cmd_health_unreg_app cmd;
> @@ -149,7 +231,7 @@ static void cleanup(void)
>   static bthl_interface_t health_if = {
>   	.size = sizeof(health_if),
>   	.init = init,
> -	.register_application = NULL,
> +	.register_application = register_application,
>   	.unregister_application = unregister_application,
>   	.connect_channel = connect_channel,
>   	.destroy_channel = destroy_channel,


      reply	other threads:[~2014-03-19 13:04 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-18 13:58 [PATCH_v6] android/hal-health: Add HDP .register_application method Ravi kumar Veeramally
2014-03-19 13:04 ` Ravi kumar Veeramally [this message]

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=532995D5.3030009@linux.intel.com \
    --to=ravikumar.veeramally@linux.intel.com \
    --cc=linux-bluetooth@vger.kernel.org \
    /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.