All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gowtham Anandha Babu <gowtham.ab@samsung.com>
To: 'Luiz Augusto von Dentz' <luiz.dentz@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: RE: [PATCH BlueZ 8/8] obexd/client: Add supported_features support
Date: Mon, 01 Dec 2014 17:47:21 +0530	[thread overview]
Message-ID: <003a01d00d60$d0424590$70c6d0b0$@samsung.com> (raw)
In-Reply-To: <1417423638-29222-8-git-send-email-luiz.dentz@gmail.com>

Hi Luiz,

> -----Original Message-----
> From: linux-bluetooth-owner@vger.kernel.org [mailto:linux-bluetooth-
> owner@vger.kernel.org] On Behalf Of Luiz Augusto von Dentz
> Sent: Monday, December 01, 2014 2:17 PM
> To: linux-bluetooth@vger.kernel.org
> Subject: [PATCH BlueZ 8/8] obexd/client: Add supported_features support
> 
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> 
> This adds supported_features support to obc_driver so driver can provide
> this information when connecting.
> 
> This is required by PBAP 1.2 (page 48):
> 
>   'Mandatory if the PSE advertises a PbapSupportedFeatures attribute in
>    its SDP record, else excluded.'
> ---
>  obexd/client/driver.h  |  1 +
>  obexd/client/pbap.c    | 36 ++++++++++++++++++++++++++++++++++++
>  obexd/client/session.c | 25 ++++++++++++++++++++++++-
>  3 files changed, 61 insertions(+), 1 deletion(-)
> 
> diff --git a/obexd/client/driver.h b/obexd/client/driver.h index
> f1c0646..0112219 100644
> --- a/obexd/client/driver.h
> +++ b/obexd/client/driver.h
> @@ -26,6 +26,7 @@ struct obc_driver {
>  	const char *uuid;
>  	void *target;
>  	gsize target_len;
> +	void *(*supported_features) (struct obc_session *session);
>  	int (*probe) (struct obc_session *session);
>  	void (*remove) (struct obc_session *session);  }; diff --git
> a/obexd/client/pbap.c b/obexd/client/pbap.c index 812a7fb..57632b4
> 100644
> --- a/obexd/client/pbap.c
> +++ b/obexd/client/pbap.c
> @@ -76,6 +76,7 @@
>  #define PRIMARY_COUNTER_TAG	0X0A
>  #define SECONDARY_COUNTER_TAG	0X0B
>  #define DATABASEID_TAG		0X0D
> +#define SUPPORTED_FEATURES_TAG  0x10
> 
>  #define DOWNLOAD_FEATURE	0x00000001
>  #define BROWSE_FEATURE		0x00000002
> @@ -1230,6 +1231,40 @@ static void parse_service_record(struct pbap_data
> *pbap)
> 
>  }
> 
> +static void *pbap_supported_features(struct obc_session *session) {
> +	const void *data;
> +	uint16_t version;
> +
> +	/* Version */
> +	data = obc_session_get_attribute(session,
> SDP_ATTR_PFILE_DESC_LIST);
> +	if (!data)
> +		return NULL;
> +
> +	version = GPOINTER_TO_UINT(data);
> +
> +	if (version < 0x0102)
> +		return NULL;
> +
> +	/* Supported Feature Bits */
> +	data = obc_session_get_attribute(session,
> +
> 	SDP_ATTR_PBAP_SUPPORTED_FEATURES);
> +	if (!data)
> +		return NULL;
> +
> +	return g_obex_apparam_set_uint32(NULL,
> SUPPORTED_FEATURES_TAG,
> +						DOWNLOAD_FEATURE |
> +						BROWSE_FEATURE |
> +						DATABASEID_FEATURE |
> +						FOLDER_VERSION_FEATURE
> |
> +						VCARD_SELECTING_FEATURE
> |
> +						ENHANCED_CALLS_FEATURE
> |
> +						UCI_FEATURE |
> +						UID_FEATURE |
> +						REFERENCING_FEATURE |
> +						DEFAULT_IMAGE_FEATURE);
> +}
> +
>  static int pbap_probe(struct obc_session *session)  {
>  	struct pbap_data *pbap;
> @@ -1274,6 +1309,7 @@ static struct obc_driver pbap = {
>  	.uuid = PBAP_UUID,
>  	.target = OBEX_PBAP_UUID,
>  	.target_len = OBEX_PBAP_UUID_LEN,
> +	.supported_features = pbap_supported_features,
>  	.probe = pbap_probe,
>  	.remove = pbap_remove
>  };
> diff --git a/obexd/client/session.c b/obexd/client/session.c index
> 9bba6c6..d2ae4fd 100644
> --- a/obexd/client/session.c
> +++ b/obexd/client/session.c
> @@ -345,6 +345,7 @@ static void transport_func(GIOChannel *io, GError
> *err, gpointer user_data)
>  	struct obc_driver *driver = session->driver;
>  	struct obc_transport *transport = session->transport;
>  	GObex *obex;
> +	GObexApparam *apparam;
>  	GObexTransportType type;
>  	int tx_mtu = -1;
>  	int rx_mtu = -1;
> @@ -370,7 +371,29 @@ static void transport_func(GIOChannel *io, GError
> *err, gpointer user_data)
> 
>  	g_io_channel_set_close_on_unref(io, TRUE);
> 
> -	if (driver->target != NULL)
> +	apparam = NULL;
> +
> +	if (driver->supported_features)
> +		apparam = driver->supported_features(session);
> +
> +	if (apparam) {
> +		uint8_t buf[1024];
> +		ssize_t len;
> +
> +		len = g_obex_apparam_encode(apparam, buf, sizeof(buf));
> +		if (driver->target)
> +			g_obex_connect(obex, connect_cb, callback, &err,
> +					G_OBEX_HDR_TARGET,
> +					driver->target, driver->target_len,
> +					G_OBEX_HDR_APPARAM,
> +					buf, len,
> +					G_OBEX_HDR_INVALID);
> +		else
> +			g_obex_connect(obex, connect_cb, callback, &err,
> +					G_OBEX_HDR_APPARAM, buf, len,
> +					G_OBEX_HDR_INVALID);
> +		g_obex_apparam_free(apparam);
> +	} else if (driver->target)
>  		g_obex_connect(obex, connect_cb, callback, &err,
>  			G_OBEX_HDR_TARGET, driver->target, driver-
> >target_len,
>  			G_OBEX_HDR_INVALID);
> --
> 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



I applied this patch locally and tested with PTS. 
The PTS test case: TP/SSM/BV-09-C [PCE Shares PbapSupportedFeature bits] is
failing.
According to PBAP V1.2 Spec - Section 6.4 - OBEX Connect request format, the
PbapSupportedFeatures 
are shared during obex connect(after applying the this patch). 
Still the above test case is failing.
Am I mapping anything wrong?


Regards,
Gowtham Anandha Babu


  reply	other threads:[~2014-12-01 12:17 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-01  8:47 [PATCH BlueZ 1/8] obexd/client: Add support for reading version Luiz Augusto von Dentz
2014-12-01  8:47 ` [PATCH BlueZ 2/8] obexd/client: Parse PBAP record Luiz Augusto von Dentz
2014-12-01  8:47 ` [PATCH BlueZ 3/8] obexd/client: Add Folder property Luiz Augusto von Dentz
2014-12-01  8:47 ` [PATCH BlueZ 4/8] obexd/client: Add DatabaseIdentifier property Luiz Augusto von Dentz
2014-12-01  8:47 ` [PATCH BlueZ 5/8] obexd/client: Add folder counters properties Luiz Augusto von Dentz
2014-12-01  8:47 ` [PATCH BlueZ 6/8] obexd/client: Add FixedImageSize property Luiz Augusto von Dentz
2014-12-01  8:47 ` [PATCH BlueZ 7/8] obexd/client: Add UpdateVersion to PhonebookAccess Luiz Augusto von Dentz
2014-12-01  8:47 ` [PATCH BlueZ 8/8] obexd/client: Add supported_features support Luiz Augusto von Dentz
2014-12-01 12:17   ` Gowtham Anandha Babu [this message]
2014-12-01 12:51     ` Luiz Augusto von Dentz
2014-12-01 13:31       ` Gowtham Anandha Babu
2014-12-01 13:34         ` Luiz Augusto von Dentz
2014-12-01 14:00           ` Luiz Augusto von Dentz
     [not found]             ` <003c01d00d71$f818ba20$e84a2e60$@samsung.com>
2014-12-01 14:41               ` Luiz Augusto von Dentz
2014-12-02  6:37                 ` Gowtham Anandha Babu
2014-12-02  9:32                   ` Luiz Augusto von Dentz
2014-12-02  9:39 ` [PATCH BlueZ 1/8] obexd/client: Add support for reading version Luiz Augusto von Dentz

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='003a01d00d60$d0424590$70c6d0b0$@samsung.com' \
    --to=gowtham.ab@samsung.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=luiz.dentz@gmail.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.