Return-Path: Date: Mon, 3 Feb 2014 11:01:28 +0200 From: Andrei Emeltchenko To: linux-bluetooth@vger.kernel.org Subject: Re: [PATCH] android/avrcp: Decouple AVRCP logic from btio Message-ID: <20140203090127.GD2930@aemeltch-MOBL1> References: <1391092704-24806-1-git-send-email-Andrei.Emeltchenko.news@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <1391092704-24806-1-git-send-email-Andrei.Emeltchenko.news@gmail.com> Sender: linux-bluetooth-owner@vger.kernel.org List-ID: On Thu, Jan 30, 2014 at 04:38:24PM +0200, Andrei Emeltchenko wrote: > From: Andrei Emeltchenko > > The patch makes AVRCP to be channel-agnostic so that it might be used in > unit tests. The idea is that all AVRCP logic would come to avrcp-lib and > channel stuff got to avrcp. > --- > android/Android.mk | 1 + > android/Makefile.am | 1 + > android/avrcp-lib.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > android/avrcp-lib.h | 32 ++++++++++++++++++++ > android/avrcp.c | 46 ++-------------------------- > 5 files changed, 124 insertions(+), 43 deletions(-) > create mode 100644 android/avrcp-lib.c > create mode 100644 android/avrcp-lib.h > > diff --git a/android/Android.mk b/android/Android.mk > index 1d12da5..09b54d6 100644 > --- a/android/Android.mk > +++ b/android/Android.mk > @@ -30,6 +30,7 @@ LOCAL_SRC_FILES := \ > bluez/android/avdtp.c \ > bluez/android/a2dp.c \ > bluez/android/avctp.c \ > + bluez/android/avrcp-lib.c \ > bluez/android/avrcp.c \ > bluez/android/pan.c \ > bluez/src/log.c \ > diff --git a/android/Makefile.am b/android/Makefile.am > index e065c0c..29cbf79 100644 > --- a/android/Makefile.am > +++ b/android/Makefile.am > @@ -34,6 +34,7 @@ android_bluetoothd_SOURCES = android/main.c \ > android/avdtp.h android/avdtp.c \ > android/a2dp.h android/a2dp.c \ > android/avctp.h android/avctp.c \ > + android/avrcp-lib.h android/avrcp-lib.c \ > android/avrcp.h android/avrcp.c \ > android/socket.h android/socket.c \ > android/pan.h android/pan.c \ > diff --git a/android/avrcp-lib.c b/android/avrcp-lib.c > new file mode 100644 > index 0000000..33d03d9 > --- /dev/null > +++ b/android/avrcp-lib.c > @@ -0,0 +1,87 @@ > +/* > + * > + * BlueZ - Bluetooth protocol stack for Linux > + * > + * Copyright (C) 2014 Intel Corporation. All rights reserved. > + * > + * > + * 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 > + * > + */ > + > +#ifdef HAVE_CONFIG_H > +#include > +#endif > + > +#include > +#include > + > +#include "lib/bluetooth.h" > + > +#include "src/log.h" > + > +#include "avctp.h" > +#include "avrcp-lib.h" > + > +static GSList *devices = NULL; > + > +void avrcp_device_free(void *data) > +{ > + struct avrcp_device *dev = data; > + > + if (dev->session) > + avctp_shutdown(dev->session); > + > + devices = g_slist_remove(devices, dev); > + g_free(dev); > +} > + > +void avrcp_free_all(void) > +{ > + g_slist_free_full(devices, avrcp_device_free); > + devices = NULL; > +} > + > +struct avrcp_device *avrcp_device_new(const bdaddr_t *dst) > +{ > + struct avrcp_device *dev; > + > + dev = g_new0(struct avrcp_device, 1); > + bacpy(&dev->dst, dst); > + devices = g_slist_prepend(devices, dev); > + > + return dev; > +} > + > +static int device_cmp(gconstpointer s, gconstpointer user_data) > +{ > + const struct avrcp_device *dev = s; > + const bdaddr_t *dst = user_data; > + > + return bacmp(&dev->dst, dst); > +} > + > +struct avrcp_device *avrcp_find(bdaddr_t *dst) > +{ > + GSList *l; > + > + l = g_slist_find_custom(devices, dst, device_cmp); > + if (l) { will fix this to !l Best regards Andrei Emeltchenko