Re: [PATCH_v3 2/3] android/health: Provide a helper funtion to search channel by id

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

 



Hi Ravi,

On Wednesday 25 of June 2014 19:30:14 Ravi kumar Veeramally wrote:
> ---
>  android/health.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 64 insertions(+), 1 deletion(-)
> 
> diff --git a/android/health.c b/android/health.c
> index 0aa588a..1ab5af1 100644
> --- a/android/health.c
> +++ b/android/health.c
> @@ -115,6 +115,12 @@ struct health_app {
>  	struct queue *devices;
>  };
>  
> +/* helper structs */
> +struct channel_search {
> +	uint16_t channel_id;
> +	struct health_channel *channel;
> +};
> +

Just define this helper struct right before first function that is using
structure. Then, also comment for file section is not really need (and those
tends to get obsolete quite quickly anyway).

>  static void send_app_reg_notify(struct health_app *app, uint8_t state)
>  {
>  	struct hal_ev_health_app_reg_state ev;
> @@ -229,6 +235,14 @@ static void free_health_app(void *data)
>  	free(app);
>  }
>  
> +static bool match_channel_by_id(const void *data, const void *user_data)
> +{
> +	const struct health_channel *channel = data;
> +	uint16_t channel_id = PTR_TO_INT(user_data);
> +
> +	return channel->id == channel_id;
> +}
> +
>  static bool match_dev_by_addr(const void *data, const void *user_data)
>  {
>  	const struct health_device *dev = data;
> @@ -269,6 +283,42 @@ static bool match_app_by_id(const void *data, const void *user_data)
>  	return app->id == app_id;
>  }
>  
> +static void device_search_channel(void *data, void *user_data)
> +{
> +	struct health_device *dev = data;
> +	struct channel_search *search = user_data;
> +
> +	if (search->channel)
> +		return;
> +
> +	search->channel = queue_find(dev->channels, match_channel_by_id,
> +						INT_TO_PTR(search->channel_id));
> +}
> +
> +static void app_search_channel(void *data, void *user_data)
> +{
> +	struct health_app *app = data;
> +	struct channel_search *search = user_data;
> +
> +	if (search->channel)
> +		return;
> +
> +	queue_foreach(app->devices, device_search_channel, search);
> +}
> +
> +static struct health_channel *search_channel_by_id(uint16_t id)
> +{
> +	struct channel_search search;
> +
> +	DBG("");
> +
> +	search.channel_id = id;
> +	search.channel = NULL;
> +	queue_foreach(apps, app_search_channel, &search);
> +
> +	return search.channel;
> +}
> +
>  static int register_service_protocols(sdp_record_t *rec,
>  					struct health_app *app)
>  {
> @@ -1518,10 +1568,23 @@ fail:
>  
>  static void bt_health_destroy_channel(const void *buf, uint16_t len)
>  {
> -	DBG("Not implemented");
> +	const struct hal_cmd_health_destroy_channel *cmd = buf;
> +	struct health_channel *channel;
> +
> +	DBG("Not Implemented");
> +
> +	channel = search_channel_by_id(cmd->channel_id);
> +	if (!channel)
> +		goto fail;
>  
>  	ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_HEALTH,
>  			HAL_OP_HEALTH_DESTROY_CHANNEL, HAL_STATUS_UNSUPPORTED);
> +
> +	return;
> +
> +fail:
> +	ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_HEALTH,
> +			HAL_OP_HEALTH_DESTROY_CHANNEL, HAL_STATUS_INVALID);
>  }
>  
>  static const struct ipc_handler cmd_handlers[] = {
> 

-- 
Best regards, 
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