All of lore.kernel.org
 help / color / mirror / Atom feed
From: Szymon Janc <szymon.janc@tieto.com>
To: Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH 1/2] android/gatt: Handle Register gatt client command
Date: Sat, 08 Mar 2014 21:03:46 +0100	[thread overview]
Message-ID: <1878703.V8asBRyydQ@leonov> (raw)
In-Reply-To: <1394197499-2207-1-git-send-email-grzegorz.kolodziejczyk@tieto.com>

Hi Grzegorz,

On Friday 07 of March 2014 14:04:58 Grzegorz Kolodziejczyk wrote:
> This adds register gatt client app command handling.
> ---
>  android/gatt.c | 63
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed,
> 62 insertions(+), 1 deletion(-)
> 
> diff --git a/android/gatt.c b/android/gatt.c
> index ce85af4..f8f7208 100644
> --- a/android/gatt.c
> +++ b/android/gatt.c
> @@ -31,6 +31,7 @@
>  #include <glib.h>
> 
>  #include "ipc.h"
> +#include "ipc-common.h"
>  #include "lib/bluetooth.h"
>  #include "gatt.h"
>  #include "src/log.h"
> @@ -38,13 +39,73 @@
> 
>  static struct ipc *hal_ipc = NULL;
>  static bdaddr_t adapter_addr;
> +static int32_t client_if_counter;

Just use local static variable in function that use this counter.

> +
> +struct gatt_client {
> +	int32_t client_if;
> +	uint8_t uuid[16];
> +};
> +
> +GList *gatt_client_list = NULL;

This should be static. Also don't mix statics and type definitions.
And name it gatt_clients or just clients.

> +
> +static int find_client_uuid(gconstpointer data, gconstpointer user_data)
> +{
> +	const uint8_t *exp_uuid = user_data;
> +	const uint8_t *cur_uuid = ((struct gatt_client *)data)->uuid;
> +	struct gatt_client *client;
> +
> +	if (memcmp(exp_uuid, cur_uuid, sizeof(client->uuid)))
> +		return 1;
> +
> +	return 0;
> +}

Just return memcmp(); should be enough.

> +

This extra empty line is not needed.

> 
>  static void handle_client_register(const void *buf, uint16_t len)
>  {
> +	const struct hal_cmd_gatt_client_register *cmd = buf;
> +	struct hal_ev_gatt_client_register_client ev;
> +	struct gatt_client *client;
> +	GList *found_client_uuid;
> +
>  	DBG("");
> 
> +	if (!cmd->uuid) {
> +		error("no uuid received");

Lets prefix all info and error messages with "gatt: "

> +		goto failed;
> +	}
> +
> +	found_client_uuid = g_list_find_custom(gatt_client_list,
> +					&cmd->uuid, find_client_uuid);
> +
> +	if (found_client_uuid) {

if (g_list_find_custom(..)) {
}

> +		error("client uuid is already on list");
> +		goto failed;
> +	}
> +
> +	client = g_new0(struct gatt_client, 1);
> +	g_memmove(client->uuid, cmd->uuid, sizeof(client->uuid));

Why g_memmove? Just use memcpy() here.

> +
> +	client->client_if = ++client_if_counter;
> +
> +	gatt_client_list = g_list_append(gatt_client_list, client);
> +
>  	ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_CLIENT_REGISTER,
> -							HAL_STATUS_FAILED);
> +							HAL_STATUS_SUCCESS);

I would add status variable and pass it to ipc_send_rsp() at the end of 
function.

> +
> +	ev.status = HAL_STATUS_SUCCESS;
> +	ev.client_if = client->client_if;
> +	g_memmove(ev.app_uuid, client->uuid, sizeof(client->uuid));

memcpy();

> +
> +	ipc_send_notif(hal_ipc, HAL_SERVICE_ID_GATT,
> +			HAL_EV_GATT_CLIENT_REGISTER_CLIENT, sizeof(ev), &ev);
> +
> +	return;
> +
> +failed:
> +	ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
> +				HAL_OP_GATT_CLIENT_REGISTER, HAL_STATUS_FAILED);
> +
>  }
> 
>  static void handle_client_unregister(const void *buf, uint16_t len)

-- 
BR
Szymon Janc

      parent reply	other threads:[~2014-03-08 20:03 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-07 13:04 [PATCH 1/2] android/gatt: Handle Register gatt client command Grzegorz Kolodziejczyk
2014-03-07 13:04 ` [PATCH 2/2] android/gatt: Handle Unregister " Grzegorz Kolodziejczyk
2014-03-08 20:14   ` Szymon Janc
2014-03-08 20:03 ` Szymon Janc [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=1878703.V8asBRyydQ@leonov \
    --to=szymon.janc@tieto.com \
    --cc=grzegorz.kolodziejczyk@tieto.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.