linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Santiago Carot-Nemesio <scarot@libresoft.es>
To: "Gustavo F. Padovan" <gustavo@padovan.org>
Cc: Santiago Carot-Nemesio <sancane@gmail.com>,
	linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH 01/25] Initial support for MCAP
Date: Tue, 11 May 2010 09:38:49 +0200	[thread overview]
Message-ID: <1273563529.2126.20.camel@mosquito> (raw)
In-Reply-To: <20100511041127.GA29087@vigoh>

Hello Gustavo,

El mar, 11-05-2010 a las 01:11 -0300, Gustavo F. Padovan escribió:
> Hi Santiago,
> 
> * Santiago Carot-Nemesio <sancane@gmail.com> [2010-05-10 12:15:03 +0200]:
> 
> > From: Santiago Carot Nemesio <sancane@gmail.com>
> > 
> > ---
> >  Makefile.am          |   13 ++++-
> >  acinclude.m4         |    6 ++
> >  mcap/mcap.c          |   55 ++++++++++++++++
> >  mcap/mcap.h          |  176 ++++++++++++++++++++++++++++++++++++++++++++++++++
> >  mcap/mcap_internal.h |  118 +++++++++++++++++++++++++++++++++
> >  mcap/mcap_lib.h      |  163 ++++++++++++++++++++++++++++++++++++++++++++++
> >  6 files changed, 530 insertions(+), 1 deletions(-)
> >  create mode 100644 mcap/mcap.c
> >  create mode 100644 mcap/mcap.h
> >  create mode 100644 mcap/mcap_internal.h
> >  create mode 100644 mcap/mcap_lib.h
> 
> Applying this one with git am I get this:
> 
> Applying: Initial support for MCAP
> /home/padovan/p/bluez/.git/rebase-apply/patch:462: new blank line at
> EOF.
> +
> warning: 1 line adds whitespace errors.
> 

I checked the patch again and I dont see that problem applying it. Here
is what I did:
* Clone new BlueZ repository
* Save mail with the patch got from the mailing list
* Apply it with git am
..and everithing is OK.

> 
> > 
> > diff --git a/Makefile.am b/Makefile.am
> > index f991121..7d8f4b5 100644
> > --- a/Makefile.am
> > +++ b/Makefile.am
> > @@ -101,6 +101,7 @@ gdbus_sources = gdbus/gdbus.h gdbus/mainloop.c gdbus/object.c gdbus/watch.c
> >  builtin_modules =
> >  builtin_sources =
> >  builtin_nodist =
> > +mcap_sources =
> >  
> >  if PNATPLUGIN
> >  builtin_modules += pnat
> > @@ -168,6 +169,12 @@ builtin_modules += service
> >  builtin_sources += plugins/service.c
> >  endif
> >  
> > +if MCAP
> > +mcap_sources += mcap/mcap_lib.h \
> > +		mcap/mcap_internal.h \
> > +		mcap/mcap.h mcap/mcap.c
> 
> Why are you not using builtin_sources here?

MCAP is not a plugin, is just a library like BTIOChannel, etc. Plugins
that need MCAP to work should use it. That is the architecture that we
agree speaking with Claudio.

> 
> > +endif
> > +
> >  builtin_modules += hciops
> >  builtin_sources += plugins/hciops.c
> >  
> > @@ -196,7 +203,8 @@ src_bluetoothd_SOURCES = $(gdbus_sources) $(builtin_sources) \
> >  			src/adapter.h src/adapter.c \
> >  			src/device.h src/device.c \
> >  			src/dbus-common.c src/dbus-common.h \
> > -			src/dbus-hci.h src/dbus-hci.c
> > +			src/dbus-hci.h src/dbus-hci.c \
> > +			$(mcap_sources)
> >  src_bluetoothd_LDADD = lib/libbluetooth.la @GLIB_LIBS@ @DBUS_LIBS@ \
> >  							@CAPNG_LIBS@ -ldl
> >  src_bluetoothd_LDFLAGS = -Wl,--export-dynamic \
> > @@ -318,6 +326,9 @@ AM_CFLAGS = @DBUS_CFLAGS@ @GLIB_CFLAGS@ @CAPNG_CFLAGS@ \
> >  INCLUDES = -I$(builddir)/lib -I$(builddir)/src -I$(srcdir)/src \
> >  			-I$(srcdir)/audio -I$(srcdir)/sbc -I$(srcdir)/gdbus
> >  
> > +if MCAP
> > +INCLUDES += -I$(builddir)/mcap
> > +endif
> 
> Why only MCAP has a separated if for INCLUDES?

Because MCAP is optional, if you don't have any plugin using it, why you
want compile it?

> 
> >  
> >  pkgconfigdir = $(libdir)/pkgconfig
> >  
> > diff --git a/acinclude.m4 b/acinclude.m4
> > index f7bb047..b512cfb 100644
> > --- a/acinclude.m4
> > +++ b/acinclude.m4
> > @@ -167,6 +167,7 @@ AC_DEFUN([AC_ARG_BLUEZ], [
> >  	serial_enable=yes
> >  	network_enable=yes
> >  	service_enable=yes
> > +	mcap_enable=no
> >  	pnat_enable=no
> >  	tracer_enable=no
> >  	tools_enable=yes
> > @@ -215,6 +216,10 @@ AC_DEFUN([AC_ARG_BLUEZ], [
> >  		service_enable=${enableval}
> >  	])
> >  
> > +	AC_ARG_ENABLE(mcap, AC_HELP_STRING([--enable-mcap], [enable mcap support]), [
> > +			mcap_enable=${enableval}
> > +	])
> > +
> >  	AC_ARG_ENABLE(pnat, AC_HELP_STRING([--enable-pnat], [enable pnat plugin]), [
> >  		pnat_enable=${enableval}
> >  	])
> > @@ -325,6 +330,7 @@ AC_DEFUN([AC_ARG_BLUEZ], [
> >  	AM_CONDITIONAL(SERIALPLUGIN, test "${serial_enable}" = "yes")
> >  	AM_CONDITIONAL(NETWORKPLUGIN, test "${network_enable}" = "yes")
> >  	AM_CONDITIONAL(SERVICEPLUGIN, test "${service_enable}" = "yes")
> > +	AM_CONDITIONAL(MCAP, test "${mcap_enable}" = "yes")
> >  	AM_CONDITIONAL(ECHOPLUGIN, test "no" = "yes")
> >  	AM_CONDITIONAL(PNATPLUGIN, test "${pnat_enable}" = "yes")
> >  	AM_CONDITIONAL(TRACER, test "${tracer_enable}" = "yes")
> > diff --git a/mcap/mcap.c b/mcap/mcap.c
> > new file mode 100644
> > index 0000000..df8dd50
> > --- /dev/null
> > +++ b/mcap/mcap.c
> > @@ -0,0 +1,55 @@
> > +/*
> > + *
> > + *  MCAP for BlueZ - Bluetooth protocol stack for Linux
> > + *
> > + *  Copyright (C) 2010 GSyC/LibreSoft, Universidad Rey Juan Carlos.
> > + *
> > + *  Authors:
> > + *  Santiago Carot-Nemesio <sancane at gmail.com>
> > + *  Jose Antonio Santos-Cadenas <santoscadenas at gmail.com>
> > + *
> > + *  This program is free software; you can redistribute it and/or modify
> > + *  it under the terms of the GNU General Public License as published by
> > + *  the Free Software Foundation; either version 2 of the License, or
> > + *  (at your option) any later version.
> > + *
> > + *  This program is distributed in the hope that it will be useful,
> > + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + *  GNU General Public License for more details.
> > + *
> > + *  You should have received a copy of the GNU General Public License
> > + *  along with this program; if not, write to the Free Software
> > + *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
> > + *
> > + */
> > +
> > +#include "logging.h"
> > +#include "btio.h"
> > +#include "error.h"
> > +
> > +#include <netinet/in.h>
> > +
> > +#include "mcap.h"
> > +#include "mcap_lib.h"
> > +#include "mcap_internal.h"
> > +
> > +struct mcap_session *mcap_create_session(struct btd_adapter *btd_adapter,
> > +					BtIOSecLevel sec,
> > +					uint16_t ccpsm,
> > +					uint16_t dcpsm,
> > +					GError **gerr,
> > +					mcap_mcl_event_cb mcl_connected,
> > +					mcap_mcl_event_cb mcl_reconnected,
> > +					mcap_mcl_event_cb mcl_disconnected,
> > +					mcap_mcl_event_cb mcl_uncached,
> > +					gpointer user_data)
> > +{
> > +	/* TODO: Create MCAP Session */
> > +	return NULL;
> > +}
> > +
> > +void mcap_close_session(struct mcap_session *ms)
> > +{
> > +	/* Free MCAP session */
> > +}
> > diff --git a/mcap/mcap.h b/mcap/mcap.h
> > new file mode 100644
> > index 0000000..598e6ce
> > --- /dev/null
> > +++ b/mcap/mcap.h
> > @@ -0,0 +1,176 @@
> > +/*
> > + *
> > + *  MCAP for BlueZ - Bluetooth protocol stack for Linux
> > + *
> > + *  Copyright (C) 2010 GSyC/LibreSoft, Universidad Rey Juan Carlos.
> > + *
> > + *  Authors:
> > + *  Santiago Carot-Nemesio <sancane at gmail.com>
> > + *  Jose Antonio Santos-Cadenas <santoscadenas at gmail.com>
> > + *
> > + *  This program is free software; you can redistribute it and/or modify
> > + *  it under the terms of the GNU General Public License as published by
> > + *  the Free Software Foundation; either version 2 of the License, or
> > + *  (at your option) any later version.
> > + *
> > + *  This program is distributed in the hope that it will be useful,
> > + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + *  GNU General Public License for more details.
> > + *
> > + *  You should have received a copy of the GNU General Public License
> > + *  along with this program; if not, write to the Free Software
> > + *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
> > + *
> > + */
> > +
> > +#ifndef __MCAP_H
> > +#define __MCAP_H
> > +
> > +#ifdef __cplusplus
> > +extern "C" {
> > +#endif
> > +
> > +#define MCAP_VERSION	0x0100	/* current version 01.00 */
> > +
> > +/* bytes to get MCAP Supported Procedures */
> > +#define MCAP_SUP_PROC	0x06
> > +
> > +/* maximum transmission unit for channels */
> > +#define MCAP_CC_MTU	48
> > +#define MCAP_DC_MTU	L2CAP_DEFAULT_MTU
> > +
> > +
> > +/* MCAP Standard Op Codes */
> > +#define MCAP_ERROR_RSP			0x00
> > +#define MCAP_MD_CREATE_MDL_REQ		0x01
> > +#define MCAP_MD_CREATE_MDL_RSP		0x02
> > +#define MCAP_MD_RECONNECT_MDL_REQ	0x03
> > +#define MCAP_MD_RECONNECT_MDL_RSP	0x04
> > +#define MCAP_MD_ABORT_MDL_REQ		0x05
> > +#define MCAP_MD_ABORT_MDL_RSP		0x06
> > +#define MCAP_MD_DELETE_MDL_REQ		0x07
> > +#define MCAP_MD_DELETE_MDL_RSP		0x08
> > +/*RESERVED                              0x09*/
> > +/*RESERVED                              0x10*/
> 
> No need for such RESERVED comments.
> 
> > +
> > +/* MCAP Clock Sync Op Codes */
> > +#define MCAP_MD_SYNC_CAP_REQ		0x11
> > +#define MCAP_MD_SYNC_CAP_RSP		0x12
> > +#define MCAP_MD_SYNC_SET_REQ		0x13
> > +#define MCAP_MD_SYNC_SET_RSP            0x14
> > +#define MCAP_MD_SYNC_INFO_IND		0x15
> > +/*RESERVED				0x16*/
> > +/*RESERVED                              0x17*/
> > +/*RESERVED                              0x18*/
> > +/*RESERVED                              0x19*/
> > +/*RESERVED                              0x20*/
> > +
> > +/* MCAP Response codes */
> > +#define MCAP_SUCCESS			0x00
> > +#define MCAP_INVALID_OP_CODE		0x01
> > +#define MCAP_INVALID_PARAM_VALUE	0x02
> > +#define MCAP_INVALID_MDEP		0x03
> > +#define MCAP_MDEP_BUSY			0x04
> > +#define MCAP_INVALID_MDL		0x05
> > +#define MCAP_MDL_BUSY			0x06
> > +#define MCAP_INVALID_OPERATION		0x07
> > +#define MCAP_RESOURCE_UNAVAILABLE	0x08
> > +#define MCAP_UNESPECIFIED_ERROR		0x09
> > +#define MCAP_REQUEST_NOT_SUPPORTED	0x0A
> > +#define MCAP_CONFIGURATION_REJECTED	0x0B
> > +/*RESERVED				0x0C-0xFF*/
> > +
> > +
> > +/* MDL IDs */
> > +#define MCAP_MDLID_RESERVED		0x0000
> > +#define MCAP_MDLID_INITIAL		0x0001
> > +#define MCAP_MDLID_FINAL		0xFEFF
> > +/*RESERVED				0xFF00-0xFFFE*/
> > +#define MCAP_ALL_MDLIDS			0xFFFF
> > +
> > +/* MDEP IDs */
> > +#define MCAP_MDEPID_INITIAL		0x00
> > +#define MCAP_MDEPID_FINAL		0x7F
> > +/*RESERVED				0x80-0xFF*/
> > +
> > +
> > +/*
> > + * MCAP Request Packet Format
> > + */
> > +
> > +typedef struct {
> > +	uint8_t         op;
> > +        uint16_t	mdl;
> > +	uint8_t		mdep;
> > +	uint8_t		conf;
> > +} __attribute__ ((packed)) mcap_md_create_mdl_req;
> > +
> > +typedef struct {
> > +        uint8_t         op;
> > +        uint16_t        mdl;
> > +} __attribute__ ((packed)) mcap_md_req;
> > +
> > +
> > +/*
> > + * MCAP Response Packet Format
> > + */
> > +
> > +typedef struct {
> > +        uint8_t         op;
> > +        uint8_t         rc;
> > +	uint16_t        mdl;
> > +} __attribute__ ((packed)) mcap4B_rsp;
> > +
> > +typedef struct {
> > +        uint8_t         op;
> > +        uint8_t         rc;
> > +        uint16_t        mdl;
> > +        uint8_t         param;
> > +} __attribute__ ((packed)) mcap5B_rsp;
> > +
> > +
> > +/*
> > + * MCAP Clock Synchronization Protocol
> > + */
> > +typedef struct {
> > +        uint8_t         op;
> > +        uint16_t        timest;
> > +} __attribute__ ((packed)) mcap_md_sync_cap_req;
> > +
> > +typedef struct {
> > +        uint8_t         op;
> > +	uint8_t         rc;
> > +	uint8_t         btclock;
> > +        uint16_t        sltime;
> > +	uint16_t        timestnr;
> > +	uint16_t        timestna;
> > +} __attribute__ ((packed)) mcap_md_sync_cap_rsp;
> > +
> > +typedef struct {
> > +        uint8_t         op;
> > +	uint8_t         timestui;
> > +        uint32_t        btclock;
> > +	uint64_t        timestst;
> > +} __attribute__ ((packed)) mcap_md_sync_set_req;
> > +
> > +typedef struct {
> > +        uint8_t         op;
> > +	uint8_t         rc;
> > +        uint32_t        btclock;
> > +	uint64_t        timestst;
> > +	uint16_t        timestsa;
> > +} __attribute__ ((packed)) mcap_md_sync_set_rsp;
> > +
> > +typedef struct {
> > +        uint8_t         op;
> > +        uint32_t        btclock;
> > +	uint64_t        timestst;
> > +	uint16_t        timestsa;
> > +} __attribute__ ((packed)) mcap_md_sync_info_ind;
> > +
> > +#ifdef __cplusplus
> > +}
> > +#endif
> > +
> > +#endif /* __MCAP_H */
> > diff --git a/mcap/mcap_internal.h b/mcap/mcap_internal.h
> > new file mode 100644
> > index 0000000..1e9f521
> > --- /dev/null
> > +++ b/mcap/mcap_internal.h
> > @@ -0,0 +1,118 @@
> > +/*
> > + *
> > + *  MCAP for BlueZ - Bluetooth protocol stack for Linux
> > + *
> > + *  Copyright (C) 2010 GSyC/LibreSoft, Universidad Rey Juan Carlos.
> > + *
> > + *  Authors:
> > + *  Santiago Carot-Nemesio <sancane at gmail.com>
> > + *  Jose Antonio Santos-Cadenas <santoscadenas at gmail.com>
> > + *
> > + *  This program is free software; you can redistribute it and/or modify
> > + *  it under the terms of the GNU General Public License as published by
> > + *  the Free Software Foundation; either version 2 of the License, or
> > + *  (at your option) any later version.
> > + *
> > + *  This program is distributed in the hope that it will be useful,
> > + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + *  GNU General Public License for more details.
> > + *
> > + *  You should have received a copy of the GNU General Public License
> > + *  along with this program; if not, write to the Free Software
> > + *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
> > + *
> > + */
> > +
> > +#ifndef __MCAP_INTERNAL_H
> > +#define __MCAP_INTERNAL_H
> > +
> > +#ifdef __cplusplus
> > +extern "C" {
> > +#endif
> > +
> > +typedef enum {
> > +	MCL_CONNECTED,
> > +	MCL_PENDING,
> > +	MCL_ACTIVE,
> > +	MCL_IDLE
> > +} MCLState;
> > +
> > +typedef enum {
> > +	MCL_ACCEPTOR,
> > +	MCL_INITIATOR,
> > +} MCLRole;
> > +
> > +typedef enum {
> > +	MCL_AVAILABLE,
> > +	MCL_WAITING_RSP,
> > +} MCAPCtrl;
> > +
> > +typedef enum {
> > +	MDL_WAITING,
> > +	MDL_CONNECTED,
> > +	MDL_DELETING,
> > +	MDL_CLOSED,
> > +} MDLState;
> > +
> > +struct mcap_mdl_cb {
> > +	mcap_mdl_event_cb 		mdl_connected;	/* Remote device has created a mdl */
> > +	mcap_mdl_event_cb 		mdl_closed;	/* Remote device has closed a mdl */
> > +	mcap_mdl_event_cb 		mdl_deleted;	/* Remote device deletion of a mdl */
> > +	mcap_mdl_event_cb		mdl_aborted;	/* Remote device aborted the mdl creation */
> > +	mcap_remote_mdl_conn_req_cb	mdl_conn_req;	/* Remote deive requested a creation of a mdl */
> > +	mcap_remote_mdl_reconn_req_cb 	mdl_reconn_req;	/* Remote device requested reconnection of a mdl */
> > +	gpointer			user_data;	/* user data */
> > +};
> > +
> > +struct mcap_session {
> > +	bdaddr_t			src;			/* Source address */
> > +	GIOChannel			*ccio;			/* Control Channel IO */
> > +	GIOChannel			*dcio;			/* Data Channel IO */
> > +	GSList				*mcls;			/* MCAP session list */
> > +	GSList				*cached;		/* List with all cached MCLs (MAX_CACHED macro) */
> > +	BtIOSecLevel			sec;			/* Security level */
> > +	mcap_mcl_event_cb		mcl_connected_cb;	/* New MCL connected */
> > +	mcap_mcl_event_cb		mcl_reconnected_cb;	/* Old MCL has been reconnected */
> > +	mcap_mcl_event_cb		mcl_disconnected_cb;	/* MCL disconnected */
> > +	mcap_mcl_event_cb		mcl_uncached_cb;	/* MCL has been removed from MCAP cache */
> > +	gpointer			user_data;		/* Data to be provided in a callbacks */
> > +};
> > +
> > +struct mcap_mcl {
> > +	struct mcap_session	*ms;		/* MCAP session where this MCL belongs */
> > +	bdaddr_t		addr;		/* device address */
> > +	GIOChannel		*cc;		/* MCAP Control Channel IO */
> > +	guint			wid;		/* MCL Watcher id */
> > +	GSList			*mdls;		/* List of Data Channels shorted by mdlid */
> > +	MCLState		state;		/* current MCL State */
> > +	MCLRole			role;		/* initiator or aceptor of this MCL*/
> 
> typo aceptor -> acceptor
> 
> > +	MCAPCtrl		req;		/* Request control flag */
> > +	void			*priv_data;	/* Temporal data to manage responses */
> > +	struct mcap_mdl_cb	*cb;		/* MDL callbacks */
> > +	guint			tid;		/* Timer id for waiting for a resposne */
> 
> typo resposne -> response
> 
> > +	uint8_t			*lcmd;		/* Last command sent */
> > +	guint			ref;		/* References counter */
> > +	uint8_t			ctrl;		/* MCL control flag */
> > +};
> > +
> > +#define	MCAP_CTRL_CACHED	0x01	/* MCL is cached */
> > +#define	MCAP_CTRL_STD_OP	0x02	/* Support for standard op codes */
> > +#define	MCAP_CTRL_SYNC_OP	0x04	/* Support for synchronization commands */
> > +#define	MCAP_CTRL_CONN		0x08	/* MCL is in connectcting process */
> 
> typo connectcting -> connecting

Ok, next I'll send a patch to fix typo errors.

> 
> > +#define	MCAP_CTRL_FREE		0x10	/* MCL is marked as releasable */
> > +#define	MCAP_CTRL_NOCACHE	0x20	/* MCL is marked as not cacheable */
> > +
> > +struct mcap_mdl {
> > +	struct mcap_mcl		*mcl;		/* MCAP mcl for this mdl */
> > +	GIOChannel		*dc;		/* MCAP Data Channel IO */
> > +	guint			wid;		/* MDL Watcher id */
> > +	uint16_t		mdlid;		/* MDL id */
> > +	uint8_t			mdep_id;	/* MCAP Data End Point */
> > +	MDLState		state;		/* MDL state */
> > +};
> > +
> > +int mcap_send_data(int sock, const uint8_t *buf, uint32_t size);
> > +void proc_sync_cmd(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len);
> 
> 
> Marcel, Johan, Luiz, is ok such overstep of line 80 on the comments?
> 
> > +
> > +#endif /* __MCAP_INTERNAL_H */
> > diff --git a/mcap/mcap_lib.h b/mcap/mcap_lib.h
> > new file mode 100644
> > index 0000000..6fed1be
> > --- /dev/null
> > +++ b/mcap/mcap_lib.h
> > @@ -0,0 +1,163 @@
> > +/*
> > + *
> > + *  MCAP for BlueZ - Bluetooth protocol stack for Linux
> > + *
> > + *  Copyright (C) 2010 GSyC/LibreSoft, Universidad Rey Juan Carlos.
> > + *
> > + *  Authors:
> > + *  Santiago Carot-Nemesio <sancane at gmail.com>
> > + *  Jose Antonio Santos-Cadenas <santoscadenas at gmail.com>
> > + *
> > + *  This program is free software; you can redistribute it and/or modify
> > + *  it under the terms of the GNU General Public License as published by
> > + *  the Free Software Foundation; either version 2 of the License, or
> > + *  (at your option) any later version.
> > + *
> > + *  This program is distributed in the hope that it will be useful,
> > + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + *  GNU General Public License for more details.
> > + *
> > + *  You should have received a copy of the GNU General Public License
> > + *  along with this program; if not, write to the Free Software
> > + *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
> > + *
> > + */
> > +
> > +#ifndef __MCAP_LIB_H
> > +#define __MCAP_LIB_H
> > +
> > +#ifdef __cplusplus
> > +extern "C" {
> > +#endif
> > +
> > +#include "adapter.h"
> > +
> > +#include <bluetooth/l2cap.h>
> > +#include "btio.h"
> > +
> > +typedef enum {
> > +/* MCAP Error Response Codes */
> > +	MCAP_ERROR_INVALID_OP_CODE = 1,
> > +	MCAP_ERROR_INVALID_PARAM_VALUE,
> > +	MCAP_ERROR_INVALID_MDEP,
> > +	MCAP_ERROR_MDEP_BUSY,
> > +	MCAP_ERROR_INVALID_MDL,
> > +	MCAP_ERROR_MDL_BUSY,
> > +	MCAP_ERROR_INVALID_OPERATION,
> > +	MCAP_ERROR_RESOURCE_UNAVAILABLE,
> > +	MCAP_ERROR_UNESPECIFIED_ERROR,
> > +	MCAP_ERROR_REQUEST_NOT_SUPPORTED,
> > +	MCAP_ERROR_CONFIGURATION_REJECTED,
> > +/* MCAP Internal Errors */
> > +	MCAP_ERROR_INVALID_ARGS,
> > +	MCAP_ERROR_ALREADY_EXISTS,
> > +	MCAP_ERROR_FAILED,
> > +} McapError;
> > +
> > +typedef enum {
> > +	MCAP_MDL_CB_INVALID,
> > +	MCAP_MDL_CB_CONNECTED,		/* mcap_mdl_event_cb */
> > +	MCAP_MDL_CB_CLOSED,		/* mcap_mdl_event_cb */
> > +	MCAP_MDL_CB_DELETED,		/* mcap_mdl_event_cb */
> > +	MCAP_MDL_CB_ABORTED,		/* mcap_mdl_event_cb */
> > +	MCAP_MDL_CB_REMOTE_CONN_REQ,	/* mcap_remote_mdl_conn_req_cb */
> > +	MCAP_MDL_CB_REMOTE_RECONN_REQ,	/* mcap_remote_mdl_reconn_req_cb */
> > +} McapMclCb;
> > +
> > +struct mcap_session;
> > +struct mcap_mcl;
> > +struct mcap_mdl;
> > +
> > +/************ Callbacks ************/
> > +
> > +/* mdl callbacks */
> > +
> > +typedef void (* mcap_mdl_event_cb) (struct mcap_mdl *mdl, gpointer data);
> > +typedef void (* mcap_mdl_operation_conf_cb) (struct mcap_mdl *mdl, uint8_t conf,
> > +						GError *err, gpointer data);
> > +typedef void (* mcap_mdl_operation_cb) (struct mcap_mdl *mdl, GError *err,
> > +						gpointer data);
> > +typedef void (* mcap_mdl_del_cb) (GError *err, gpointer data);
> > +
> > +/* Next function should return an MCAP appropiate response code */
> > +typedef uint8_t (* mcap_remote_mdl_conn_req_cb) (struct mcap_mcl *mcl,
> > +						uint8_t mdepid, uint16_t mdlid,
> > +						uint8_t *conf, gpointer data);
> > +typedef uint8_t (* mcap_remote_mdl_reconn_req_cb) (struct mcap_mdl *mdl,
> > +						gpointer data);
> > +
> > +/* mcl callbacks */
> > +
> > +typedef void (* mcap_mcl_event_cb) (struct mcap_mcl *mcl, gpointer data);
> > +typedef void (* mcap_mcl_connect_cb) (struct mcap_mcl *mcl, GError *err,
> > +								gpointer data);
> > +
> > +/************ Operations ************/
> > +
> > +/* Mdl operations*/
> > +
> > +void mcap_req_mdl_creation(struct mcap_mcl *mcl,
> > +				uint8_t mdepid,
> > +				uint8_t conf,
> > +				GError **err,
> > +				mcap_mdl_operation_conf_cb connect_cb,
> > +				gpointer user_data);
> > +void mcap_req_mdl_reconnect(struct mcap_mdl *mdl, GError **err,
> > +				mcap_mdl_operation_cb reconnect_cb,
> > +				gpointer user_data);
> > +void mcap_req_mdl_delete_all(struct mcap_mcl *mcl, GError **err,
> > +			mcap_mdl_del_cb delete_cb, gpointer user_data);
> > +void mcap_req_mdl_deletion(struct mcap_mdl *mdl, GError **err,
> > +			mcap_mdl_del_cb delete_cb, gpointer user_data);
> > +void mcap_mdl_connect(struct mcap_mdl *mdl,
> > +			BtIOType BtType,
> > +			uint16_t dcpsm,
> > +			GError **err,
> > +			mcap_mdl_operation_cb connect_cb,
> > +			gpointer user_data);
> > +void mcap_mdl_abort(struct mcap_mdl *mdl, GError **err,
> > +			mcap_mdl_del_cb abort_cb, gpointer user_data);
> > +
> > +int mcap_mdl_get_fd(struct mcap_mdl *mdl);
> > +uint16_t mcap_mdl_get_mdlid(struct mcap_mdl *mdl);
> > +
> > +/* Mcl operations*/
> > +
> > +void mcap_create_mcl(struct mcap_session *ms,
> > +				const bdaddr_t *addr,
> > +				uint16_t ccpsm,
> > +				GError **err,
> > +				mcap_mcl_connect_cb connect_cb,
> > +				gpointer user_data);
> > +void mcap_close_mcl(struct mcap_mcl *mcl, gboolean cache);
> > +void mcap_mcl_set_cb(struct mcap_mcl *mcl, GError **gerr,
> > +					gpointer user_data, McapMclCb cb1, ...);
> > +bdaddr_t mcap_mcl_get_addr(struct mcap_mcl *mcl);
> > +
> > +struct mcap_mcl *mcap_mcl_ref(struct mcap_mcl *mcl);
> > +void mcap_mcl_unref(struct mcap_mcl *mcl);
> > +
> > +/* MCAP main operations */
> > +
> > +struct mcap_session *mcap_create_session(struct btd_adapter *btd_adapter,
> > +					BtIOSecLevel sec, uint16_t ccpsm,
> > +					uint16_t dcpsm,
> > +					GError **gerr,
> > +					mcap_mcl_event_cb mcl_connected,
> > +					mcap_mcl_event_cb mcl_reconnected,
> > +					mcap_mcl_event_cb mcl_disconnected,
> > +					mcap_mcl_event_cb mcl_uncached,
> > +					gpointer user_data);
> > +
> > +void mcap_close_session(struct mcap_session *ms);
> > +
> > +uint16_t mcap_get_ctrl_psm(struct mcap_session *ms, GError **err);
> > +uint16_t mcap_get_data_psm(struct mcap_session *ms, GError **err);
> > +
> > +#ifdef __cplusplus
> > +}
> > +#endif
> > +
> > +#endif /* __MCAP_LIB_H */
> > +
> > -- 
> > 1.6.3.3
> > 
> > --

Thanks in advance for you comments.

> > 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
> 



  reply	other threads:[~2010-05-11  7:38 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-10 10:15 [PATCH 01/25] Initial support for MCAP Santiago Carot-Nemesio
2010-05-10 10:15 ` [PATCH 02/25] Initial work to create and destroy MCAP sessions Santiago Carot-Nemesio
2010-05-10 10:15   ` [PATCH 03/25] Release resources depending if MCAP should cache or not a MCL Santiago Carot-Nemesio
2010-05-10 10:15     ` [PATCH 04/25] Processing connections over control channel psm Santiago Carot-Nemesio
2010-05-10 10:15       ` [PATCH 05/25] Initial work to process standard op codes Santiago Carot-Nemesio
2010-05-10 10:15         ` [PATCH 06/25] Add functions for caching and uncaching MCLs Santiago Carot-Nemesio
2010-05-10 10:15           ` [PATCH 07/25] Initiate creation of MCLs Santiago Carot-Nemesio
2010-05-10 10:15             ` [PATCH 08/25] Profiles using MCAP can close a MCL deciding if it should be cached Santiago Carot-Nemesio
2010-05-10 10:15               ` [PATCH 09/25] Add functions to set callbacks in an MCL Santiago Carot-Nemesio
2010-05-10 10:15                 ` [PATCH 10/25] Process md_create_mdl_req command in state connected Santiago Carot-Nemesio
2010-05-10 10:15                   ` [PATCH 11/25] Process md_reconnect_mdl_req in connected state Santiago Carot-Nemesio
2010-05-10 10:15                     ` [PATCH 12/25] Process md_delete_mdl_req " Santiago Carot-Nemesio
2010-05-10 10:15                       ` [PATCH 13/25] Process standard op. codes in pending and active state Santiago Carot-Nemesio
2010-05-10 10:15                         ` [PATCH 14/25] Support for managing creation of data channels Santiago Carot-Nemesio
2010-05-10 10:15                           ` [PATCH 15/25] Support for sending md_create_mdl_req command to create a MDL Santiago Carot-Nemesio
2010-05-10 10:15                             ` [PATCH 16/25] Support for sending md_reconnect_mdl_req command Santiago Carot-Nemesio
2010-05-10 10:15                               ` [PATCH 17/25] Support for sending md_delete_mdl_req command Santiago Carot-Nemesio
2010-05-10 10:15                                 ` [PATCH 18/25] Support for sending md_abort_mdl_req command Santiago Carot-Nemesio
2010-05-10 10:15                                   ` [PATCH 19/25] Enable support to get information about mdls Santiago Carot-Nemesio
2010-05-10 10:15                                     ` [PATCH 20/25] Prepare MCAP library to process responses to standard op. codes Santiago Carot-Nemesio
2010-05-10 10:15                                       ` [PATCH 21/25] Process reply to md_create_mdl_req command Santiago Carot-Nemesio
2010-05-10 10:15                                         ` [PATCH 22/25] Process reply to md_reconnect_mdl_req command Santiago Carot-Nemesio
2010-05-10 10:15                                           ` [PATCH 23/25] Process reply to md_abort_mdl_req command Santiago Carot-Nemesio
2010-05-10 10:15                                             ` [PATCH 24/25] Process reply to md_delete_mdl_req command Santiago Carot-Nemesio
2010-05-10 10:15                                               ` [PATCH 25/25] Initial support for clock synchronization protocol Santiago Carot-Nemesio
2010-05-11  5:52                                                 ` Gustavo F. Padovan
2010-05-11  7:45                                                   ` Santiago Carot-Nemesio
2010-05-11  8:22                                                 ` [PATCH 26/26] Fix typo errors Santiago Carot-Nemesio
2010-05-11  9:19                                                   ` Johan Hedberg
2010-05-12 10:00                                       ` [PATCH 20/25] Prepare MCAP library to process responses to standard op. codes Santiago Carot-Nemesio
2010-05-12  9:59                                 ` [PATCH 17/25] Support for sending md_delete_mdl_req command Santiago Carot-Nemesio
2010-05-12  9:58                           ` [PATCH 14/25] Support for managing creation of data channels Santiago Carot-Nemesio
2010-05-12 15:00                         ` [PATCH 13/25] Process standard op. codes in pending and active state Raul Herbster
2010-05-12  9:56                   ` [PATCH 10/25] Process md_create_mdl_req command in state connected Santiago Carot-Nemesio
2010-05-12 14:33               ` [PATCH 08/25] Profiles using MCAP can close a MCL deciding if it should be cached Raul Herbster
2010-05-12 14:59                 ` Santiago Carot-Nemesio
2010-05-12 15:11                   ` Raul Herbster
2010-05-12 14:16             ` [PATCH 07/25] Initiate creation of MCLs Raul Herbster
2010-05-11 22:09     ` [PATCH 03/25] Release resources depending if MCAP should cache or not a MCL Raul Herbster
2010-05-12  7:05       ` Santiago Carot-Nemesio
2010-05-11  4:11 ` [PATCH 01/25] Initial support for MCAP Gustavo F. Padovan
2010-05-11  7:38   ` Santiago Carot-Nemesio [this message]
2010-05-11  9:59 ` [PATCH] " Santiago Carot-Nemesio
2010-05-11 10:01   ` Santiago Carot-Nemesio
     [not found]     ` <AANLkTikVs1YfnusOO8sRO9xbbOcZNU6STTlkygFvpNv3@mail.gmail.com>
2010-05-12  8:45       ` Santiago Carot-Nemesio
  -- strict thread matches above, loose matches on Subject: below --
2010-05-14 10:19 [PATCH 01/25] " Santiago Carot-Nemesio

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=1273563529.2126.20.camel@mosquito \
    --to=scarot@libresoft.es \
    --cc=gustavo@padovan.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=sancane@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).