From: "Gustavo F. Padovan" <gustavo@padovan.org>
To: Santiago Carot-Nemesio <sancane@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH 01/25] Initial support for MCAP
Date: Tue, 11 May 2010 01:11:27 -0300 [thread overview]
Message-ID: <20100511041127.GA29087@vigoh> (raw)
In-Reply-To: <1273486527-7855-1-git-send-email-sancane@gmail.com>
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.
>
> 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?
> +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?
>
> 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
> +#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
>
> --
> 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
--
Gustavo F. Padovan
http://padovan.org
next prev parent reply other threads:[~2010-05-11 4:11 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 ` Gustavo F. Padovan [this message]
2010-05-11 7:38 ` [PATCH 01/25] Initial support for MCAP Santiago Carot-Nemesio
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=20100511041127.GA29087@vigoh \
--to=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).