diff options
author | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
---|---|---|
committer | Denys Dmytriyenko <denis@denix.org> | 2009-03-17 14:32:59 -0400 |
commit | 709c4d66e0b107ca606941b988bad717c0b45d9b (patch) | |
tree | 37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/bluez | |
parent | fa6cd5a3b993f16c27de4ff82b42684516d433ba (diff) |
rename packages/ to recipes/ per earlier agreement
See links below for more details:
http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326
http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816
Signed-off-by: Denys Dmytriyenko <denis@denix.org>
Acked-by: Mike Westerhof <mwester@dls.net>
Acked-by: Philip Balister <philip@balister.org>
Acked-by: Khem Raj <raj.khem@gmail.com>
Acked-by: Marcin Juszkiewicz <hrw@openembedded.org>
Acked-by: Koen Kooi <koen@openembedded.org>
Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/bluez')
52 files changed, 2879 insertions, 0 deletions
diff --git a/recipes/bluez/bcm2035-tool/addr-as-arg.patch b/recipes/bluez/bcm2035-tool/addr-as-arg.patch new file mode 100644 index 0000000000..28618c5bbb --- /dev/null +++ b/recipes/bluez/bcm2035-tool/addr-as-arg.patch @@ -0,0 +1,104 @@ +--- bcm2035-tool/bcm2035-tool.c 2007/05/07 12:48:06 2000 ++++ bcm2035-tool/bcm2035-tool.c 2007/05/07 12:55:47 2001 +@@ -1,6 +1,8 @@ +-/* bcm2035-tool - bcm2035 tool for Motorola EZX phones ++/* bcm2035-tool + * + * (C) 2007 by Daniel Ribeiro <drwyrm@gmail.com> ++ * ++ * MAC address as argument extension by: Jan Herman <2hp@seznam.cz> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 +@@ -17,10 +19,10 @@ + * + */ + ++/* Default MAC address */ ++#define BDADDR "\x06\x05\x04\x03\x02\x01" + + //#define PATCH_FIRMWARE +-#define BDADDR "\xab\x89\x67\x45\x23\x01" +- + + #include <stdio.h> + #include <string.h> +@@ -33,6 +35,7 @@ + #include <sys/ioctl.h> + #include <termios.h> + #include "bcm2035-tool.h" ++//#include "bluetooth.h" + + #ifdef PATCH_FIRMWARE + #include "motorola_patches.h" +@@ -180,18 +183,51 @@ + + } + ++void mac2hex(const char *mac, u_char *dst) ++{ ++ ++ int i; ++ long l; ++ char *pp; ++ ++ while (isspace(*mac)) ++ mac++; ++ ++ /* expect 6 hex octets separated by ':' or space/NUL if last octet */ ++ for (i = 0; i < 6; i++) { ++ l = strtol(mac, &pp, 16); ++ if (pp == mac || l > 0xFF || l < 0) ++ return; ++ if (!(*pp == ':' || (i == 5 && (isspace(*pp) || *pp == '\0')))) ++ return; ++ /* 5-i swaps hex chars */ ++ dst[5-i] = (u_char) l; ++ mac = pp + 1; ++ } ++ } ++ ++char bdaddr[6]; ++ + int main(int argc, char **argv) + { + int fd, i; + struct termios term; + char buf[1024]; +- char bdaddr[6]; +- +- if (argc < 2) { +- printf("use: %s <device>\n", argv[0]); ++ ++ if (argc < 3) { ++ printf("BCM2035 Tool:\n"); ++ printf("Usage: %s <device> <bdaddr>\n", argv[0]); + exit(1); + } + ++ if (strlen(argv[2]) < 17) { ++ printf("invalid argument %s!\n", argv[2]); ++ exit(1); ++ } ++ ++ /* Converts MAC address to swapped HEX */ ++ mac2hex(argv[2], bdaddr); ++ + fd = open (argv[1], O_RDWR | O_NOCTTY ); + + if(fd < 0) exit(-1); +@@ -212,7 +248,7 @@ + #endif + set_baud(fd, 460800); + +- send_cmd(fd, CMD_SET_BDADDR, BDADDR, 6); ++ send_cmd(fd, CMD_SET_BDADDR, bdaddr, 6); + + i = N_HCI; + if (ioctl(fd, TIOCSETD, &i) < 0) { +@@ -228,5 +264,3 @@ + while (1) sleep(999999999); + return 0; + } +- +- diff --git a/recipes/bluez/bcm2035-tool_0.0.bb b/recipes/bluez/bcm2035-tool_0.0.bb new file mode 100644 index 0000000000..636841de6f --- /dev/null +++ b/recipes/bluez/bcm2035-tool_0.0.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "Bluetooth firmware poker for bccm2035 chips (motorola phones and palms)" +LICENSE = "GPLv2" + +PR = "r1" + +SRC_URI = "http://people.openezx.org/wyrm/bcm2035-tool.tgz \ + file://addr-as-arg.patch;patch=1 \ + " + +S = "${WORKDIR}/${PN}" + +do_compile() { + ${CC} bcm2035-tool.c -o bcm2035-tool +} + +do_install() { + install -d ${D}${sbindir} + install -m 755 bcm2035-tool ${D}${sbindir} +} diff --git a/recipes/bluez/bluez-cups-backend_3.33.bb b/recipes/bluez/bluez-cups-backend_3.33.bb new file mode 100644 index 0000000000..40e099642a --- /dev/null +++ b/recipes/bluez/bluez-cups-backend_3.33.bb @@ -0,0 +1,27 @@ +require bluez-utils3.inc + +PR = "r1" + +DEPENDS += "cups" + +# see bluez-utils3.inc for the explanation of these option +EXTRA_OECONF = " \ + --enable-bccmd \ + --enable-hid2hci \ + --disable-alsa \ + --enable-cups \ + --enable-glib \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + " + + +FILES_${PN} = "${libdir}/cups/backend/bluetooth" +RDEPENDS_${PN} = "cups" diff --git a/recipes/bluez/bluez-cups-backend_3.36.bb b/recipes/bluez/bluez-cups-backend_3.36.bb new file mode 100644 index 0000000000..4bcb962f3c --- /dev/null +++ b/recipes/bluez/bluez-cups-backend_3.36.bb @@ -0,0 +1,26 @@ +require bluez-utils3.inc + + +DEPENDS += "cups" + +# see bluez-utils3.inc for the explanation of these option +EXTRA_OECONF = " \ + --enable-bccmd \ + --enable-hid2hci \ + --disable-alsa \ + --enable-cups \ + --enable-glib \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + " + + +FILES_${PN} = "${libdir}/cups/backend/bluetooth" +RDEPENDS_${PN} = "cups" diff --git a/recipes/bluez/bluez-dtl1-workaround/02dtl1_cs.sh b/recipes/bluez/bluez-dtl1-workaround/02dtl1_cs.sh new file mode 100644 index 0000000000..fefc72e07a --- /dev/null +++ b/recipes/bluez/bluez-dtl1-workaround/02dtl1_cs.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +case "$1" in + suspend) + if [ "`/sbin/hciconfig`" != "" ]; then + #If hciconfig outputs anything then there's probably a Bluetooth + # CF card in the slot so shut it down. + hcitool dc `hcitool con | grep ACL | sed 's/^.*\([0-9A-F]\{2\}\(:[0-9A-F]\{2\}\)\{5\}\).*$/\1/'` + hciconfig hci0 down + killall hciattach > /dev/null 2>&1 + fi + ;; + + resume) + #check for kernel version + if [ "`uname -r | grep 2.4.`" != "" ]; then + k="o" + elif [ "`uname -r | grep 2.6.`" != "" ]; then + k="ko" + else + exit 0 + fi + + if test -e /sbin/cardctl; then + CARDCTL=/sbin/cardctl + elif test -e /sbin/pccardctl; then + CARDCTL=/sbin/pccardctl + else + exit 0 + fi + + if [ "`lsmod | grep hci_uart`" != "" ]; then + #If the hci_usb module is still loaded then there's a serial based + # Bluetooth CF card in the slot, which only needs a resume to get it going + # again. + rfcomm bind all + $CARDCTL resume + hciconfig hci0 up + else + # only works for nokia dtl1 cards + for f in /lib/modules/`uname -r`/kernel/drivers/bluetooth/dtl1_cs.$k + do + #Enumerate all the self-contained Bluetooth CF card drivers + f=`echo $f | sed 's/\.'$k'$//'` + f=`basename $f` + if [ "`lsmod | grep $f`" != "" ]; then + #If one of these drivers is still loaded, then there is probably + #a non-serial based Bluetooth CF card in the slot that needs + #ejecting and reinserting to get it going again + rfcomm bind all + $CARDCTL eject + $CARDCTL insert + hciconfig hci0 up + fi + done + fi +esac diff --git a/recipes/bluez/bluez-dtl1-workaround_1.0.bb b/recipes/bluez/bluez-dtl1-workaround_1.0.bb new file mode 100644 index 0000000000..413d220508 --- /dev/null +++ b/recipes/bluez/bluez-dtl1-workaround_1.0.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "A nasty hack for for dtl1-cs driver to workaround suspend/resume." +SECTION = "console" +PRIORITY = "optional" +LICENSE = "GPL" +PR = "r1" + +SRC_URI = "file://02dtl1_cs.sh" + +do_install() { + install -d ${D}${sysconfdir}/apm/event.d/ + install -m 0755 ${WORKDIR}/02dtl1_cs.sh ${D}${sysconfdir}/apm/event.d/ +} + +#Package 02dtl1_cs.sh, which is a nasty hack to get dtl1c_cs cards working with suspend/resume +FILES_${PN} += "${sysconfdir}/apm/" + +PACKAGE_ARCH = "all" diff --git a/recipes/bluez/bluez-gnome_0.26.bb b/recipes/bluez/bluez-gnome_0.26.bb new file mode 100644 index 0000000000..135bb5ca40 --- /dev/null +++ b/recipes/bluez/bluez-gnome_0.26.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "Bluetooth configuration applet" +LICENSE = "GPL+LGPL" + +DEPENDS = "dbus-glib gconf libnotify gtk+" +RRECOMMENDS = "gnome-icon-theme" + +PR = "r4" + +SRC_URI = "http://bluez.sourceforge.net/download/${P}.tar.gz" + +inherit autotools pkgconfig gconf mime + +FILES_${PN} += "${datadir}/gconf ${datadir}/icons ${datadir}/mime/packages" + diff --git a/recipes/bluez/bluez-gnome_cvs.bb b/recipes/bluez/bluez-gnome_cvs.bb new file mode 100644 index 0000000000..728d20e5f1 --- /dev/null +++ b/recipes/bluez/bluez-gnome_cvs.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "Bluetooth configuration applet" +LICENSE = "GPL+LGPL" + +DEFAULT_PREFERENCE = "-1" + +DEPENDS = "dbus-glib gconf libnotify gtk+" + +SRC_URI = "cvs://anonymous@cvs.bluez.org/cvsroot/bluez;module=gnome \ + " + +PV = "0.13+cvs${SRCDATE}" +S = "${WORKDIR}/gnome" + +inherit autotools pkgconfig gconf + +FILES_${PN} += "${datadir}/gconf" + diff --git a/recipes/bluez/bluez-gnome_git.bb b/recipes/bluez/bluez-gnome_git.bb new file mode 100644 index 0000000000..e8bfd97419 --- /dev/null +++ b/recipes/bluez/bluez-gnome_git.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "Bluetooth configuration applet" +LICENSE = "GPL+LGPL" + +DEFAULT_PREFERENCE = "-2" + +DEPENDS = "dbus-glib gconf libnotify gtk+" + +SRC_URI = "git://people.freedesktop.org/~hadess/bluez-gnome;protocol=git \ + file://pkgconfig-add-gthread.patch;patch=1 " + +PV = "0.10+git${SRCDATE}" +S = "${WORKDIR}/git" + +inherit autotools pkgconfig gconf + +FILES_${PN} += "${datadir}/gconf" + diff --git a/recipes/bluez/bluez-gstreamer-plugin_3.33.bb b/recipes/bluez/bluez-gstreamer-plugin_3.33.bb new file mode 100644 index 0000000000..53b7eb86f2 --- /dev/null +++ b/recipes/bluez/bluez-gstreamer-plugin_3.33.bb @@ -0,0 +1,27 @@ +require bluez-utils3.inc + +PR = "r1" + +DEPENDS += "gstreamer gst-plugins-base " + +# see bluez-utils3.inc for the explanation of these option +EXTRA_OECONF = " \ + --enable-bccmd \ + --enable-hid2hci \ + --enable-alsa \ + --disable-cups \ + --enable-glib \ + --enable-gstreamer \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + " + + +FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so" diff --git a/recipes/bluez/bluez-gstreamer-plugin_3.36.bb b/recipes/bluez/bluez-gstreamer-plugin_3.36.bb new file mode 100644 index 0000000000..facad9cedd --- /dev/null +++ b/recipes/bluez/bluez-gstreamer-plugin_3.36.bb @@ -0,0 +1,26 @@ +require bluez-utils3.inc + + +DEPENDS += "gstreamer gst-plugins-base " + +# see bluez-utils3.inc for the explanation of these option +EXTRA_OECONF = " \ + --enable-bccmd \ + --enable-hid2hci \ + --enable-alsa \ + --disable-cups \ + --enable-glib \ + --enable-gstreamer \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + " + + +FILES_${PN} = "${libdir}/gstreamer-0.10/libgstbluetooth.so" diff --git a/recipes/bluez/bluez-hcidump_1.42.bb b/recipes/bluez/bluez-hcidump_1.42.bb new file mode 100644 index 0000000000..877c8db33c --- /dev/null +++ b/recipes/bluez/bluez-hcidump_1.42.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "Linux Bluetooth Stack HCI Debugger Tool." +SECTION = "console" +PRIORITY = "optional" +DEPENDS = "bluez-libs" +LICENSE = "GPL" +PR = "r0" + +SRC_URI = "http://bluez.sourceforge.net/download/bluez-hcidump-${PV}.tar.gz" +S = "${WORKDIR}/bluez-hcidump-${PV}" + +EXTRA_OECONF = "--with-bluez-libs=${STAGING_LIBDIR} --with-bluez-includes=${STAGING_INCDIR}" + +inherit autotools diff --git a/recipes/bluez/bluez-libs.inc b/recipes/bluez/bluez-libs.inc new file mode 100644 index 0000000000..d740bd80a9 --- /dev/null +++ b/recipes/bluez/bluez-libs.inc @@ -0,0 +1,22 @@ +DESCRIPTION = "Linux Bluetooth Stack Userland Libaries." +SECTION = "libs" +PRIORITY = "optional" +HOMEPAGE = "http://www.bluez.org" +LICENSE = "GPL" +PR = "r0" + +SRC_URI = "http://bluez.sourceforge.net/download/bluez-libs-${PV}.tar.gz" + +inherit autotools pkgconfig + +HEADERS = "bluetooth.h bnep.h cmtp.h hci.h hci_lib.h hidp.h l2cap.h rfcomm.h sco.h sdp.h sdp_lib.h" + +do_stage() { + oe_libinstall -a -so -C src libbluetooth ${STAGING_LIBDIR} + + install -d ${STAGING_INCDIR}/bluetooth/ + for f in ${HEADERS} + do + install -m 0644 include/$f ${STAGING_INCDIR}/bluetooth/$f + done +} diff --git a/recipes/bluez/bluez-libs_3.33.bb b/recipes/bluez/bluez-libs_3.33.bb new file mode 100644 index 0000000000..6ddf62a4fb --- /dev/null +++ b/recipes/bluez/bluez-libs_3.33.bb @@ -0,0 +1 @@ +require bluez-libs.inc diff --git a/recipes/bluez/bluez-libs_3.36.bb b/recipes/bluez/bluez-libs_3.36.bb new file mode 100644 index 0000000000..8e0e467bc9 --- /dev/null +++ b/recipes/bluez/bluez-libs_3.36.bb @@ -0,0 +1,3 @@ +require bluez-libs.inc + +PR = "r1" diff --git a/recipes/bluez/bluez-utils-3.33/hciattach-ti-bts.patch b/recipes/bluez/bluez-utils-3.33/hciattach-ti-bts.patch new file mode 100644 index 0000000000..1b208f7979 --- /dev/null +++ b/recipes/bluez/bluez-utils-3.33/hciattach-ti-bts.patch @@ -0,0 +1,477 @@ +--- bluez-utils-3.1/tools/hciattach.c.orig 2006-07-23 14:02:14.000000000 +0200 ++++ bluez-utils-3.1/tools/hciattach.c 2006-07-23 14:06:29.000000000 +0200 +@@ -60,6 +60,8 @@ + #define HCI_UART_3WIRE 2 + #define HCI_UART_H4DS 3 + ++#include "ti_bts.h" ++ + struct uart_t { + char *type; + int m_id; +@@ -70,6 +72,7 @@ + int flags; + char *bdaddr; + int (*init) (int fd, struct uart_t *u, struct termios *ti); ++ char *bts; /* bluetooth script */ + }; + + #define FLOW_CTL 0x0001 +@@ -279,6 +282,114 @@ + return 0; + } + ++static int brf6150(int fd, struct uart_t *u, struct termios *ti) ++{ ++ bts_t *bfp; ++ int i; ++ unsigned long vers; ++ unsigned char actionbuf[256]; ++ unsigned char resp[128]; /* Response */ ++ unsigned long count; ++ unsigned short atype; ++ ++ if (u->bts == NULL) /* no script, ignore */ ++ return 0; ++ ++ bfp = bts_load_script( u->bts, &vers ); ++ if (bfp == NULL) ++ return -1; ++ ++ fprintf( stderr, "Loading BTS script version %lu\n", vers ); ++ ++ while ((count = bts_next_action( bfp, actionbuf, ++ sizeof actionbuf - 1, &atype )) != 0) { ++ if (atype == ACTION_REMARKS) { ++ if (actionbuf[0] != 0) ++ fprintf( stderr, "%s\n", actionbuf ); ++ } ++ else if (atype == ACTION_SEND_COMMAND) { ++#if 0 ++ fprintf( stderr, "ACTION_SEND_COMMAND: ", (int)atype ); ++ for (i=0; i<count; i++) { ++ fprintf( stderr, "0x%02x ", actionbuf[i] ); ++ } ++ fprintf( stderr, "\n" ); ++#endif ++ int n; ++ n = write(fd, actionbuf, count); ++ if (n < 0 || n < count) { ++ perror("Failed to write TI action command"); ++ return -1; ++ } ++ } ++ else if (atype == ACTION_WAIT_EVENT) { ++ action_wait_t *wait = (action_wait_t *)actionbuf; ++#if 0 ++ fprintf( stderr, "ACTION_WAIT_EVENT: %u msec, %u size, data = ", wait->msec, wait->size ); ++ for (i=0; i<wait->size; i++) { ++ fprintf( stderr, "0x%02x ", wait->data[i] ); ++ } ++ fprintf( stderr, "\n" ); ++#endif ++ usleep(wait->msec); /* seems they give usec, not msec */ ++ /* Read reply. */ ++ if ((count = read_hci_event(fd, resp, sizeof resp)) < 0) { ++ perror("Failed to read TI command response"); ++ return -1; ++ } ++ if (count < wait->size) { ++ fprintf( stderr, "TI command response is short."); ++ } ++ for (i=0; i<wait->size; i++) { ++ if (i == 3) continue; /* ignore */ ++ if (resp[i] != wait->data[i]) { ++ fprintf( stderr, "TI command response does not match expected result.\n" ); ++ } ++ } ++ } ++ else if (atype == ACTION_SERIAL_PORT_PARAMETERS) { ++ action_serial_t *sercmd = (action_serial_t *)actionbuf; ++ ++ /* Set actual baudrate */ ++ fprintf( stderr, ++ "BTS changing baud rate to %u, flow control to %u\n", ++ sercmd->baud, sercmd->flow_control ); ++ ++ tcflush(fd, TCIOFLUSH); ++ ++ if (sercmd->flow_control) ++ ti->c_cflag |= CRTSCTS; ++ else ++ ti->c_cflag &= ~CRTSCTS; ++ if (tcsetattr(fd, TCSANOW, ti) < 0) { ++ perror("Can't set port settings"); ++ return -1; ++ } ++ ++ u->speed = sercmd->baud; ++ ++ tcflush(fd, TCIOFLUSH); ++ if (set_speed(fd, ti, sercmd->baud) < 0) { ++ perror("Can't set baud rate"); ++ return -1; ++ } ++ } ++ else if (atype == ACTION_DELAY) { ++ action_delay_t *delay = (action_delay_t *)actionbuf; ++ usleep(delay->msec); /* seems they give usec, not msec */ ++ } ++ else { ++ fprintf( stderr, "BTS action type = %d: ", (int)atype ); ++ for (i=0; i<count; i++) { ++ fprintf( stderr, "0x%02x ", actionbuf[i] ); ++ } ++ fprintf( stderr, "\n" ); ++ } ++ } ++ bts_unload_script( bfp ); ++ return 0; ++} ++ + static int texas(int fd, struct uart_t *u, struct termios *ti) + { + struct timespec tm = {0, 50000}; +@@ -328,6 +439,17 @@ + /* Print LMP subversion */ + fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] & 0xFF, resp[13] & 0xFF); + ++ if ((resp[14] >> 2) == 3) { ++ /* BRF6150 */ ++ int err; ++ ++ nanosleep(&tm, NULL); ++ if ((err = brf6150(fd, u, ti)) != 0) { ++ fprintf(stderr, "Texas module script failed (err=%d)\n", err); ++ return -1; ++ } ++ } ++ + nanosleep(&tm, NULL); + return 0; + } +@@ -1204,7 +1326,7 @@ + { + printf("hciattach - HCI UART driver initialization utility\n"); + printf("Usage:\n"); +- printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n"); ++ printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] <tty> <type | id> [speed] [flow|noflow] [bdaddr]\n"); + printf("\thciattach -l\n"); + } + +@@ -1219,11 +1341,12 @@ + struct sigaction sa; + struct pollfd p; + char dev[PATH_MAX]; ++ char *bts = NULL; + + detach = 1; + printpid = 0; + +- while ((opt=getopt(argc, argv, "bnpt:s:l")) != EOF) { ++ while ((opt=getopt(argc, argv, "bnpt:s:S:l")) != EOF) { + switch(opt) { + case 'b': + send_break = 1; +@@ -1245,6 +1368,10 @@ + init_speed = atoi(optarg); + break; + ++ case 'S': ++ bts = optarg; ++ break; ++ + case 'l': + for (i = 0; uart[i].type; i++) { + printf("%-10s0x%04x,0x%04x\n", uart[i].type, +@@ -1320,6 +1447,8 @@ + if (init_speed) + u->init_speed = init_speed; + ++ u->bts = bts; ++ + memset(&sa, 0, sizeof(sa)); + sa.sa_flags = SA_NOCLDSTOP; + sa.sa_handler = sig_alarm; +--- bluez-utils-3.1/tools/ti_bts.h.orig 2006-07-23 14:07:26.000000000 +0200 ++++ bluez-utils-3.1/tools/ti_bts.h 2006-07-23 14:07:46.000000000 +0200 +@@ -0,0 +1,116 @@ ++/* ++ * Copyright (c) 2005 Texas Instruments, Inc. ++ * Ported by SDG Systems, LLC ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ * SOFTWARE IS DISCLAIMED. ++ * ++ */ ++ ++#ifndef BT_SCRIPT_H ++#define BT_SCRIPT_H ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* ++ * Define the interface of Bluetooth Script ++ */ ++ ++typedef void bts_t; ++ ++ ++#define ACTION_SEND_COMMAND 1 /* Send out raw data (as is) */ ++#define ACTION_WAIT_EVENT 2 /* Wait for data */ ++#define ACTION_SERIAL_PORT_PARAMETERS 3 ++#define ACTION_DELAY 4 ++#define ACTION_RUN_SCRIPT 5 ++#define ACTION_REMARKS 6 ++ ++/* ++ * Structure for ACTION_SEND_COMMAND ++ */ ++typedef struct tagCActionCommand ++{ ++ unsigned char data[1]; /* Data to send */ ++} action_command_t; ++ ++/* ++ * Structure for ACTION_WAIT_EVENT ++ */ ++typedef struct tagCActionWaitEvent ++{ ++ unsigned long msec; /* in milliseconds */ ++ unsigned long size; ++ unsigned char data[1]; /* Data to wait for */ ++} action_wait_t; ++ ++ ++/* ++ * Structure for ACTION_SERIAL_PORT_PARAMETERS ++ */ ++typedef struct tagCActionSerialPortParameters ++{ ++ unsigned long baud; ++ unsigned long flow_control; ++} action_serial_t; ++ ++/* Flow Control Type */ ++#define FCT_NONE 0 ++#define FCT_HARDWARE 1 ++ ++#define DONT_CHANGE 0xFFFFFFFF /* For both baud rate and flow control */ ++ ++ ++/* ++ * Structure for ACTION_DELAY ++ */ ++typedef struct tagCActionDelay ++{ ++ unsigned long msec; /* in milliseconds */ ++} action_delay_t; ++ ++/* ++ * Structure for ACTION_RUN_SCRIPT ++ */ ++typedef struct tagCActionRunScript ++{ ++ char filename[1]; ++} action_run_t; ++ ++/* ++ * Structure for ACTION_REMARKS ++ */ ++typedef struct tagCActionRemarks ++{ ++ char m_szRemarks[1]; ++} action_remarks_t; ++ ++ ++const char *cis_create_filename(const unsigned char* cmdparms); ++bts_t * bts_load_script(const char* fname, unsigned long* version); ++unsigned long bts_next_action(const bts_t* bts_fp, unsigned char* action_buf, ++ unsigned long nMaxSize, unsigned short* ptype); ++void bts_unload_script(bts_t* bts_fp); ++ ++#ifdef __cplusplus ++}; ++#endif ++ ++#endif /* BT_SCRIPT_H */ ++ +--- bluez-utils-3.1/tools/ti_bts.c.orig 2006-07-23 14:07:28.000000000 +0200 ++++ bluez-utils-3.1/tools/ti_bts.c 2006-07-23 14:07:46.000000000 +0200 +@@ -0,0 +1,149 @@ ++/* ++ * Copyright (c) 2005 Texas Instruments, Inc. ++ * Ported by SDG Systems, LLC ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ * SOFTWARE IS DISCLAIMED. ++ * ++ */ ++ ++ ++#include <stdio.h> ++#include <stdlib.h> ++#include "ti_bts.h" ++ ++#ifndef MAKEWORD ++#define MAKEWORD(a, b) ((unsigned short)(((unsigned char)(a)) | ((unsigned short)((unsigned char)(b))) << 8)) ++#endif ++ ++#define TI_MANUFACTURER_ID 13 ++ ++/* ++ * Common Init Script specific ++ */ ++const char * ++cis_create_filename(const unsigned char* cmdparms) ++{ ++ static char bts_file[50]; ++ ++ /* Check for TI's id */ ++ unsigned short manfid = MAKEWORD(cmdparms[8], cmdparms[9]); ++ ++ if (TI_MANUFACTURER_ID == manfid) { ++ unsigned short version = MAKEWORD(cmdparms[10], cmdparms[11]); ++ ++ unsigned short chip = (version & 0x7C00) >> 10; ++ unsigned short min_ver = (version & 0x007F); ++ unsigned short maj_ver = (version & 0x0380) >> 7; ++ ++ if (0 != (version & 0x8000)) { ++ maj_ver |= 0x0008; ++ } ++ ++ sprintf( bts_file, "TIInit_%d.%d.%d.bts", ++ (int)chip, (int)maj_ver, (int)min_ver); ++ ++ return &bts_file[0]; ++ } ++ return NULL; ++} ++ ++typedef struct tagCHeader ++{ ++ unsigned long magic; ++ unsigned long version; ++ unsigned char future[24]; ++} cheader_t; ++ ++ ++/* The value 0x42535442 stands for (in ASCII) BTSB */ ++/* which is Bluetooth Script Binary */ ++#define FILE_HEADER_MAGIC 0x42535442 ++ ++ ++bts_t * ++bts_load_script(const char* fname, unsigned long* version) ++{ ++ bts_t* bts = NULL; ++ FILE* fp = fopen(fname, "rb"); ++ ++ if (NULL != fp) { ++ /* Read header */ ++ cheader_t header; ++ ++ /* Read header */ ++ if (1 == fread(&header, sizeof(header), 1, fp)) { ++ /* Check magic number for correctness */ ++ if (header.magic == FILE_HEADER_MAGIC) { ++ /* If user wants the version number */ ++ if (NULL != version) { ++ *version = header.version; ++ } ++ bts = (bts_t*)fp; ++ } ++ } ++ /* If failed reading the file, close it */ ++ if (NULL == bts) { ++ fclose(fp); ++ } ++ } ++ return bts; ++} ++ ++unsigned long ++bts_next_action(const bts_t* bts_fp, unsigned char* action_buf, ++ unsigned long nMaxSize, unsigned short* ptype) ++{ ++ unsigned long bytes = 0; ++ FILE* fp = (FILE*)bts_fp; ++ unsigned char action_hdr[4]; ++ ++ if (bts_fp == NULL) ++ return 0; ++ ++ /* Each Action has the following: */ ++ /* UINT16 type of this action */ ++ /* UINT16 size of rest */ ++ /* BYTE[] action buffer (for HCI, includes the type byte e.g. 1 for hci command) */ ++ ++ if (1 == fread(&action_hdr[0], sizeof(action_hdr), 1, fp)) { ++ unsigned short type = *(unsigned short*)&action_hdr[0]; ++ unsigned short size = *(unsigned short*)&action_hdr[2]; ++ ++ if (size <= nMaxSize) { ++ int nread = fread(action_buf, sizeof(action_buf[0]), size, fp); ++ ++ if (nread == size) { ++ *ptype = type; ++ bytes = (unsigned long)size; ++ } ++ } ++ } ++ ++ return bytes; ++} ++ ++void ++bts_unload_script(bts_t* bts_fp) ++{ ++ FILE* fp = (FILE*)bts_fp; ++ ++ if (NULL != fp) { ++ fclose(fp); ++ } ++} ++ +--- bluez-utils-3.1/tools/Makefile.am.orig 2006-07-23 14:06:59.000000000 +0200 ++++ bluez-utils-3.1/tools/Makefile.am 2006-07-23 14:07:18.000000000 +0200 +@@ -45,7 +45,7 @@ + + noinst_PROGRAMS = hcisecfilter ppporc + +-hciattach_SOURCES = hciattach.c hciattach_st.c ++hciattach_SOURCES = hciattach.c hciattach_st.c ti_bts.h ti_bts.c + hciattach_LDADD = @BLUEZ_LIBS@ + + hciconfig_SOURCES = hciconfig.c csr.h csr.c diff --git a/recipes/bluez/bluez-utils-3.x/hciattach-ti-bts.patch b/recipes/bluez/bluez-utils-3.x/hciattach-ti-bts.patch new file mode 100644 index 0000000000..8fe37de9d3 --- /dev/null +++ b/recipes/bluez/bluez-utils-3.x/hciattach-ti-bts.patch @@ -0,0 +1,489 @@ +--- bluez-utils-2.24/tools/hciattach.c.orig 2005-12-10 15:14:36.000000000 +0100 ++++ bluez-utils-2.24/tools/hciattach.c 2006-01-22 13:56:13.000000000 +0100 +@@ -57,6 +57,8 @@ + #define HCI_UART_3WIRE 2 + #define HCI_UART_H4DS 3 + ++#include "ti_bts.h" ++ + struct uart_t { + char *type; + int m_id; +@@ -66,6 +68,7 @@ + int speed; + int flags; + int (*init) (int fd, struct uart_t *u, struct termios *ti); ++ char *bts; /* bluetooth script */ + }; + + #define FLOW_CTL 0x0001 +@@ -241,6 +244,114 @@ + return 0; + } + ++static int brf6150(int fd, struct uart_t *u, struct termios *ti) ++{ ++ bts_t *bfp; ++ int i; ++ unsigned long vers; ++ unsigned char actionbuf[256]; ++ unsigned char resp[128]; /* Response */ ++ unsigned long count; ++ unsigned short atype; ++ ++ if (u->bts == NULL) /* no script, ignore */ ++ return 0; ++ ++ bfp = bts_load_script( u->bts, &vers ); ++ if (bfp == NULL) ++ return -1; ++ ++ fprintf( stderr, "Loading BTS script version %lu\n", vers ); ++ ++ while ((count = bts_next_action( bfp, actionbuf, ++ sizeof actionbuf - 1, &atype )) != 0) { ++ if (atype == ACTION_REMARKS) { ++ if (actionbuf[0] != 0) ++ fprintf( stderr, "%s\n", actionbuf ); ++ } ++ else if (atype == ACTION_SEND_COMMAND) { ++#if 0 ++ fprintf( stderr, "ACTION_SEND_COMMAND: ", (int)atype ); ++ for (i=0; i<count; i++) { ++ fprintf( stderr, "0x%02x ", actionbuf[i] ); ++ } ++ fprintf( stderr, "\n" ); ++#endif ++ int n; ++ n = write(fd, actionbuf, count); ++ if (n < 0 || n < count) { ++ perror("Failed to write TI action command"); ++ return -1; ++ } ++ } ++ else if (atype == ACTION_WAIT_EVENT) { ++ action_wait_t *wait = (action_wait_t *)actionbuf; ++#if 0 ++ fprintf( stderr, "ACTION_WAIT_EVENT: %u msec, %u size, data = ", wait->msec, wait->size ); ++ for (i=0; i<wait->size; i++) { ++ fprintf( stderr, "0x%02x ", wait->data[i] ); ++ } ++ fprintf( stderr, "\n" ); ++#endif ++ usleep(wait->msec); /* seems they give usec, not msec */ ++ /* Read reply. */ ++ if ((count = read_hci_event(fd, resp, sizeof resp)) < 0) { ++ perror("Failed to read TI command response"); ++ return -1; ++ } ++ if (count < wait->size) { ++ fprintf( stderr, "TI command response is short."); ++ } ++ for (i=0; i<wait->size; i++) { ++ if (i == 3) continue; /* ignore */ ++ if (resp[i] != wait->data[i]) { ++ fprintf( stderr, "TI command response does not match expected result.\n" ); ++ } ++ } ++ } ++ else if (atype == ACTION_SERIAL_PORT_PARAMETERS) { ++ action_serial_t *sercmd = (action_serial_t *)actionbuf; ++ ++ /* Set actual baudrate */ ++ fprintf( stderr, ++ "BTS changing baud rate to %u, flow control to %u\n", ++ sercmd->baud, sercmd->flow_control ); ++ ++ tcflush(fd, TCIOFLUSH); ++ ++ if (sercmd->flow_control) ++ ti->c_cflag |= CRTSCTS; ++ else ++ ti->c_cflag &= ~CRTSCTS; ++ if (tcsetattr(fd, TCSANOW, ti) < 0) { ++ perror("Can't set port settings"); ++ return -1; ++ } ++ ++ u->speed = sercmd->baud; ++ ++ tcflush(fd, TCIOFLUSH); ++ if (set_speed(fd, ti, sercmd->baud) < 0) { ++ perror("Can't set baud rate"); ++ return -1; ++ } ++ } ++ else if (atype == ACTION_DELAY) { ++ action_delay_t *delay = (action_delay_t *)actionbuf; ++ usleep(delay->msec); /* seems they give usec, not msec */ ++ } ++ else { ++ fprintf( stderr, "BTS action type = %d: ", (int)atype ); ++ for (i=0; i<count; i++) { ++ fprintf( stderr, "0x%02x ", actionbuf[i] ); ++ } ++ fprintf( stderr, "\n" ); ++ } ++ } ++ bts_unload_script( bfp ); ++ return 0; ++} ++ + static int texas(int fd, struct uart_t *u, struct termios *ti) + { + struct timespec tm = {0, 50000}; +@@ -281,14 +392,25 @@ + } while (resp[4] != cmd[1] && resp[5] != cmd[2]); + + /* Verify manufacturer */ +- if ((resp[11] & 0xFF) != 0x0d) ++ if (resp[11] != 0x0d) + fprintf(stderr,"WARNING : module's manufacturer is not Texas Instrument\n"); + + /* Print LMP version */ +- fprintf(stderr, "Texas module LMP version : 0x%02x\n", resp[10] & 0xFF); ++ fprintf(stderr, "TI module LMP version : 0x%02x\n", resp[10]); + + /* Print LMP subversion */ +- fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] & 0xFF, resp[13] & 0xFF); ++ fprintf(stderr, "TI module LMP sub-version : 0x%02x%02x\n", resp[14], resp[13]); ++ if ((resp[14] >> 2) == 3) { ++ int err; ++ nanosleep(&tm, NULL); ++ ++ /* BRF6150 */ ++ if ((err=brf6150( fd, u, ti )) != 0) { ++ fprintf( stderr, "TI script failed (err=%d)\n", ++ err ); ++ return -1; ++ } ++ } + + nanosleep(&tm, NULL); + return 0; +@@ -953,7 +1075,7 @@ + { + printf("hciattach - HCI UART driver initialization utility\n"); + printf("Usage:\n"); +- printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow]\n"); ++ printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] <tty> <type | id> [speed] [flow|noflow]\n"); + printf("\thciattach -l\n"); + } + +@@ -970,11 +1092,12 @@ + pid_t pid; + struct sigaction sa; + char dev[PATH_MAX]; ++ char *bts = NULL; + + detach = 1; + printpid = 0; + +- while ((opt=getopt(argc, argv, "bnpt:s:l")) != EOF) { ++ while ((opt=getopt(argc, argv, "bnpt:s:S:l")) != EOF) { + switch(opt) { + case 'b': + send_break = 1; +@@ -996,6 +1119,10 @@ + init_speed = atoi(optarg); + break; + ++ case 'S': ++ bts = optarg; ++ break; ++ + case 'l': + for (i = 0; uart[i].type; i++) { + printf("%-10s0x%04x,0x%04x\n", uart[i].type, +@@ -1067,6 +1194,8 @@ + if (init_speed) + u->init_speed = init_speed; + ++ u->bts = bts; ++ + memset(&sa, 0, sizeof(sa)); + sa.sa_flags = SA_NOCLDSTOP; + sa.sa_handler = sig_alarm; +--- bluez-utils-2.24/tools/Makefile.am.orig 2005-12-03 07:22:16.000000000 +0100 ++++ bluez-utils-2.24/tools/Makefile.am 2006-01-22 13:53:59.000000000 +0100 +@@ -37,6 +37,9 @@ + + noinst_PROGRAMS = hcisecfilter ppporc + ++hciattach_SOURCES = hciattach.c ti_bts.h ti_bts.c ++hciattach_LDADD = @BLUEZ_LIBS@ ++ + hciconfig_SOURCES = hciconfig.c csr.h csr.c + hciconfig_LDADD = @BLUEZ_LIBS@ $(top_builddir)/common/libtextfile.a + +--- bluez-utils-2.24/tools/ti_bts.h.orig 2006-01-22 13:56:38.000000000 +0100 ++++ bluez-utils-2.24/tools/ti_bts.h 2006-01-22 13:53:59.000000000 +0100 +@@ -0,0 +1,116 @@ ++/* ++ * Copyright (c) 2005 Texas Instruments, Inc. ++ * Ported by SDG Systems, LLC ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ * SOFTWARE IS DISCLAIMED. ++ * ++ */ ++ ++#ifndef BT_SCRIPT_H ++#define BT_SCRIPT_H ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* ++ * Define the interface of Bluetooth Script ++ */ ++ ++typedef void bts_t; ++ ++ ++#define ACTION_SEND_COMMAND 1 /* Send out raw data (as is) */ ++#define ACTION_WAIT_EVENT 2 /* Wait for data */ ++#define ACTION_SERIAL_PORT_PARAMETERS 3 ++#define ACTION_DELAY 4 ++#define ACTION_RUN_SCRIPT 5 ++#define ACTION_REMARKS 6 ++ ++/* ++ * Structure for ACTION_SEND_COMMAND ++ */ ++typedef struct tagCActionCommand ++{ ++ unsigned char data[1]; /* Data to send */ ++} action_command_t; ++ ++/* ++ * Structure for ACTION_WAIT_EVENT ++ */ ++typedef struct tagCActionWaitEvent ++{ ++ unsigned long msec; /* in milliseconds */ ++ unsigned long size; ++ unsigned char data[1]; /* Data to wait for */ ++} action_wait_t; ++ ++ ++/* ++ * Structure for ACTION_SERIAL_PORT_PARAMETERS ++ */ ++typedef struct tagCActionSerialPortParameters ++{ ++ unsigned long baud; ++ unsigned long flow_control; ++} action_serial_t; ++ ++/* Flow Control Type */ ++#define FCT_NONE 0 ++#define FCT_HARDWARE 1 ++ ++#define DONT_CHANGE 0xFFFFFFFF /* For both baud rate and flow control */ ++ ++ ++/* ++ * Structure for ACTION_DELAY ++ */ ++typedef struct tagCActionDelay ++{ ++ unsigned long msec; /* in milliseconds */ ++} action_delay_t; ++ ++/* ++ * Structure for ACTION_RUN_SCRIPT ++ */ ++typedef struct tagCActionRunScript ++{ ++ char filename[1]; ++} action_run_t; ++ ++/* ++ * Structure for ACTION_REMARKS ++ */ ++typedef struct tagCActionRemarks ++{ ++ char m_szRemarks[1]; ++} action_remarks_t; ++ ++ ++const char *cis_create_filename(const unsigned char* cmdparms); ++bts_t * bts_load_script(const char* fname, unsigned long* version); ++unsigned long bts_next_action(const bts_t* bts_fp, unsigned char* action_buf, ++ unsigned long nMaxSize, unsigned short* ptype); ++void bts_unload_script(bts_t* bts_fp); ++ ++#ifdef __cplusplus ++}; ++#endif ++ ++#endif /* BT_SCRIPT_H */ ++ +--- bluez-utils-2.24/tools/ti_bts.c.orig 2006-01-22 13:56:36.000000000 +0100 ++++ bluez-utils-2.24/tools/ti_bts.c 2006-01-22 13:56:31.000000000 +0100 +@@ -0,0 +1,149 @@ ++/* ++ * Copyright (c) 2005 Texas Instruments, Inc. ++ * Ported by SDG Systems, LLC ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ * CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ * SOFTWARE IS DISCLAIMED. ++ * ++ */ ++ ++ ++#include <stdio.h> ++#include <stdlib.h> ++#include "ti_bts.h" ++ ++#ifndef MAKEWORD ++#define MAKEWORD(a, b) ((unsigned short)(((unsigned char)(a)) | ((unsigned short)((unsigned char)(b))) << 8)) ++#endif ++ ++#define TI_MANUFACTURER_ID 13 ++ ++/* ++ * Common Init Script specific ++ */ ++const char * ++cis_create_filename(const unsigned char* cmdparms) ++{ ++ static char bts_file[50]; ++ ++ /* Check for TI's id */ ++ unsigned short manfid = MAKEWORD(cmdparms[8], cmdparms[9]); ++ ++ if (TI_MANUFACTURER_ID == manfid) { ++ unsigned short version = MAKEWORD(cmdparms[10], cmdparms[11]); ++ ++ unsigned short chip = (version & 0x7C00) >> 10; ++ unsigned short min_ver = (version & 0x007F); ++ unsigned short maj_ver = (version & 0x0380) >> 7; ++ ++ if (0 != (version & 0x8000)) { ++ maj_ver |= 0x0008; ++ } ++ ++ sprintf( bts_file, "TIInit_%d.%d.%d.bts", ++ (int)chip, (int)maj_ver, (int)min_ver); ++ ++ return &bts_file[0]; ++ } ++ return NULL; ++} ++ ++typedef struct tagCHeader ++{ ++ unsigned long magic; ++ unsigned long version; ++ unsigned char future[24]; ++} cheader_t; ++ ++ ++/* The value 0x42535442 stands for (in ASCII) BTSB */ ++/* which is Bluetooth Script Binary */ ++#define FILE_HEADER_MAGIC 0x42535442 ++ ++ ++bts_t * ++bts_load_script(const char* fname, unsigned long* version) ++{ ++ bts_t* bts = NULL; ++ FILE* fp = fopen(fname, "rb"); ++ ++ if (NULL != fp) { ++ /* Read header */ ++ cheader_t header; ++ ++ /* Read header */ ++ if (1 == fread(&header, sizeof(header), 1, fp)) { ++ /* Check magic number for correctness */ ++ if (header.magic == FILE_HEADER_MAGIC) { ++ /* If user wants the version number */ ++ if (NULL != version) { ++ *version = header.version; ++ } ++ bts = (bts_t*)fp; ++ } ++ } ++ /* If failed reading the file, close it */ ++ if (NULL == bts) { ++ fclose(fp); ++ } ++ } ++ return bts; ++} ++ ++unsigned long ++bts_next_action(const bts_t* bts_fp, unsigned char* action_buf, ++ unsigned long nMaxSize, unsigned short* ptype) ++{ ++ unsigned long bytes = 0; ++ FILE* fp = (FILE*)bts_fp; ++ unsigned char action_hdr[4]; ++ ++ if (bts_fp == NULL) ++ return 0; ++ ++ /* Each Action has the following: */ ++ /* UINT16 type of this action */ ++ /* UINT16 size of rest */ ++ /* BYTE[] action buffer (for HCI, includes the type byte e.g. 1 for hci command) */ ++ ++ if (1 == fread(&action_hdr[0], sizeof(action_hdr), 1, fp)) { ++ unsigned short type = *(unsigned short*)&action_hdr[0]; ++ unsigned short size = *(unsigned short*)&action_hdr[2]; ++ ++ if (size <= nMaxSize) { ++ int nread = fread(action_buf, sizeof(action_buf[0]), size, fp); ++ ++ if (nread == size) { ++ *ptype = type; ++ bytes = (unsigned long)size; ++ } ++ } ++ } ++ ++ return bytes; ++} ++ ++void ++bts_unload_script(bts_t* bts_fp) ++{ ++ FILE* fp = (FILE*)bts_fp; ++ ++ if (NULL != fp) { ++ fclose(fp); ++ } ++} ++ diff --git a/recipes/bluez/bluez-utils-3.x/hcid.conf b/recipes/bluez/bluez-utils-3.x/hcid.conf new file mode 100644 index 0000000000..44e9c46fb0 --- /dev/null +++ b/recipes/bluez/bluez-utils-3.x/hcid.conf @@ -0,0 +1,72 @@ +# +# HCI daemon configuration file. +# +# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $ +# + +# HCId options +options { + # Automatically initialize new devices + autoinit yes; + + # Security Manager mode + # none - Security manager disabled + # auto - Use local PIN for incoming connections + # user - Always ask user for a PIN + # + security auto; + + # Pairing mode + # none - Pairing disabled + # multi - Allow pairing with already paired devices + # once - Pair once and deny successive attempts + pairing multi; + + # PIN helper + pin_helper /bin/bluepin; + + # D-Bus PIN helper + # dbus_pin_helper; +} + +# Default settings for HCI devices +device { + # Local device name + # %d - device id + # %h - host name + name "%h"; + + # Local device class + class 0x120112; + + # Default packet type + #pkt_type DH1,DM1,HV1; + + # Inquiry and Page scan + iscan enable; pscan enable; + + # Default link mode + # none - no specific policy + # accept - always accept incoming connections + # master - become master on incoming connections, + # deny role switch on outgoing connections + # + #lm accept,master; + # + lm accept; + + # Default link policy + # none - no specific policy + # rswitch - allow role switch + # hold - allow hold mode + # sniff - allow sniff mode + # park - allow park mode + # + #lp hold,sniff; + # + lp rswitch,hold,sniff,park; + + # Authentication and Encryption + #auth enable; + encrypt enable; +} diff --git a/recipes/bluez/bluez-utils-alsa_3.33.bb b/recipes/bluez/bluez-utils-alsa_3.33.bb new file mode 100644 index 0000000000..a1e3e85818 --- /dev/null +++ b/recipes/bluez/bluez-utils-alsa_3.33.bb @@ -0,0 +1,25 @@ +require bluez-utils3.inc + +PR = "r1" + +DEPENDS += "alsa-lib" + +# see bluez-utils3.inc for the explanation of these option +EXTRA_OECONF = " \ + --enable-bccmd \ + --disable-hid2hci \ + --enable-alsa \ + --disable-cups \ + --enable-glib \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + " + +FILES_${PN} = "${libdir}/alsa-lib/libasound*" diff --git a/recipes/bluez/bluez-utils-alsa_3.36.bb b/recipes/bluez/bluez-utils-alsa_3.36.bb new file mode 100644 index 0000000000..c35eec04e0 --- /dev/null +++ b/recipes/bluez/bluez-utils-alsa_3.36.bb @@ -0,0 +1,24 @@ +require bluez-utils3.inc + + +DEPENDS += "alsa-lib" + +# see bluez-utils3.inc for the explanation of these option +EXTRA_OECONF = " \ + --enable-bccmd \ + --disable-hid2hci \ + --enable-alsa \ + --disable-cups \ + --enable-glib \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + " + +FILES_${PN} = "${libdir}/alsa-lib/libasound*" diff --git a/recipes/bluez/bluez-utils-dbus/dbus-2.24.patch b/recipes/bluez/bluez-utils-dbus/dbus-2.24.patch new file mode 100644 index 0000000000..d8ec946a0b --- /dev/null +++ b/recipes/bluez/bluez-utils-dbus/dbus-2.24.patch @@ -0,0 +1,53 @@ +--- bluez-utils-2.24/acinclude.m4.orig 2006-01-12 08:21:38.000000000 +0100 ++++ bluez-utils-2.24/acinclude.m4 2006-01-12 08:23:18.000000000 +0100 +@@ -131,46 +131,15 @@ + ]) + + AC_DEFUN([AC_PATH_DBUS], [ +- dbus_prefix=${prefix} +- +- AC_ARG_WITH(dbus, AC_HELP_STRING([--with-dbus=DIR], [D-BUS library is installed in DIR]), [ +- if (test "${withval}" != "yes"); then +- dbus_prefix=${withval} +- fi +- ]) +- +- ac_save_CPPFLAGS=$CPPFLAGS +- ac_save_LDFLAGS=$LDFLAGS +- +- DBUS_CFLAGS="-DDBUS_API_SUBJECT_TO_CHANGE" +- test -d "${dbus_prefix}/include/dbus-1.0" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/include/dbus-1.0" +- if (test "${prefix}" = "${bluez_prefix}"); then +- test -d "${libdir}/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${libdir}/dbus-1.0/include" +- else +- test -d "${dbus_prefix}/lib64/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/lib64/dbus-1.0/include" +- test -d "${dbus_prefix}/lib/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/lib/dbus-1.0/include" +- fi ++ if pkg-config --exists dbus-1; then ++ dbus_found=yes ; DBUS_CFLAGS="`pkg-config --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE" ++ DBUS_LIBS="`pkg-config --libs dbus-1`" + + CPPFLAGS="$CPPFLAGS $DBUS_CFLAGS" +- AC_CHECK_HEADER(dbus/dbus.h, dbus_found=yes, dbus_found=no) +- +- DBUS_LIBS="" +- if (test "${prefix}" = "${dbus_prefix}"); then +- test -d "${libdir}" && DBUS_LIBS="$DBUS_LIBS -L${libdir}" +- else +- test -d "${dbus_prefix}/lib64" && DBUS_LIBS="$DBUS_LIBS -L${dbus_prefix}/lib64" +- test -d "${dbus_prefix}/lib" && DBUS_LIBS="$DBUS_LIBS -L${dbus_prefix}/lib" +- fi +- + LDFLAGS="$LDFLAGS $DBUS_LIBS" +- AC_CHECK_LIB(dbus-1, dbus_error_init, DBUS_LIBS="$DBUS_LIBS -ldbus-1", dbus_found=no) +- AC_CHECK_LIB(dbus-1, dbus_message_iter_get_basic, dummy=yes, dbus_found=no) +- +- CPPFLAGS=$ac_save_CPPFLAGS +- LDFLAGS=$ac_save_LDFLAGS +- + AC_SUBST(DBUS_CFLAGS) + AC_SUBST(DBUS_LIBS) ++ fi + ]) + + AC_DEFUN([AC_PATH_FUSE], [ diff --git a/recipes/bluez/bluez-utils-dbus/dbus.patch b/recipes/bluez/bluez-utils-dbus/dbus.patch new file mode 100644 index 0000000000..c5ab129469 --- /dev/null +++ b/recipes/bluez/bluez-utils-dbus/dbus.patch @@ -0,0 +1,58 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- bluez-utils-2.20/acinclude.m4~dbus.patch ++++ bluez-utils-2.20/acinclude.m4 +@@ -211,46 +211,15 @@ + ]) + + AC_DEFUN([AC_PATH_DBUS], [ +- dbus_prefix=${prefix} +- +- AC_ARG_WITH(dbus, AC_HELP_STRING([--with-dbus=DIR], [D-BUS library is installed in DIR]), [ +- if (test "${withval}" != "yes"); then +- dbus_prefix=${withval} +- fi +- ]) +- +- ac_save_CPPFLAGS=$CPPFLAGS +- ac_save_LDFLAGS=$LDFLAGS +- +- DBUS_CFLAGS="-DDBUS_API_SUBJECT_TO_CHANGE" +- test -d "${dbus_prefix}/include/dbus-1.0" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/include/dbus-1.0" +- if (test "${prefix}" = "${bluez_prefix}"); then +- test -d "${libdir}/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${libdir}/dbus-1.0/include" +- else +- test -d "${dbus_prefix}/lib64/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/lib64/dbus-1.0/include" +- test -d "${dbus_prefix}/lib/dbus-1.0/include" && DBUS_CFLAGS="$DBUS_CFLAGS -I${dbus_prefix}/lib/dbus-1.0/include" +- fi ++ if pkg-config --exists dbus-1; then ++ dbus_found=yes ; DBUS_CFLAGS="`pkg-config --cflags dbus-1` -DDBUS_API_SUBJECT_TO_CHANGE" ++ DBUS_LIBS="`pkg-config --libs dbus-1`" + + CPPFLAGS="$CPPFLAGS $DBUS_CFLAGS" +- AC_CHECK_HEADER(dbus/dbus.h, dbus_found=yes, dbus_found=no) +- +- DBUS_LIBS="" +- if (test "${prefix}" = "${dbus_prefix}"); then +- test -d "${libdir}" && DBUS_LIBS="$DBUS_LIBS -L${libdir}" +- else +- test -d "${dbus_prefix}/lib64" && DBUS_LIBS="$DBUS_LIBS -L${dbus_prefix}/lib64" +- test -d "${dbus_prefix}/lib" && DBUS_LIBS="$DBUS_LIBS -L${dbus_prefix}/lib" +- fi +- + LDFLAGS="$LDFLAGS $DBUS_LIBS" +- AC_CHECK_LIB(dbus-1, dbus_error_init, DBUS_LIBS="$DBUS_LIBS -ldbus-1", dbus_found=no) +- AC_CHECK_LIB(dbus-1, dbus_message_iter_get_basic, AC_DEFINE(HAVE_DBUS_MESSAGE_ITER_GET_BASIC, 1, [Define to 1 if you have the dbus_message_iter_get_basic() function.])) +- +- CPPFLAGS=$ac_save_CPPFLAGS +- LDFLAGS=$ac_save_LDFLAGS +- + AC_SUBST(DBUS_CFLAGS) + AC_SUBST(DBUS_LIBS) ++ fi + ]) + + AC_DEFUN([AC_ARG_BLUEZ], [ diff --git a/recipes/bluez/bluez-utils-dbus/hcid-alignment-fix.patch b/recipes/bluez/bluez-utils-dbus/hcid-alignment-fix.patch new file mode 100644 index 0000000000..276281c14e --- /dev/null +++ b/recipes/bluez/bluez-utils-dbus/hcid-alignment-fix.patch @@ -0,0 +1,42 @@ +--- bluez-utils-2.20/hcid/dbus.c.orig 2005-09-21 11:27:26 +0200 ++++ bluez-utils-2.20/hcid/dbus.c 2005-09-21 11:27:35 +0200 +@@ -120,6 +121,7 @@ + DBusMessage *message; + #ifdef HAVE_DBUS_MESSAGE_ITER_GET_BASIC + uint8_t *addr = (uint8_t *) &ci->bdaddr; ++ uint32_t ci_out = ci->out; + #else + DBusMessageIter iter; + #endif +@@ -138,7 +140,7 @@ + bacpy(&req->bda, &ci->bdaddr); + + #ifdef HAVE_DBUS_MESSAGE_ITER_GET_BASIC +- dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &ci->out, ++ dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &ci_out, + DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE, + &addr, sizeof(bdaddr_t), DBUS_TYPE_INVALID); + #else +@@ -261,6 +263,8 @@ + DBusMessage *message; + #ifndef HAVE_DBUS_MESSAGE_ITER_GET_BASIC + DBusMessageIter iter; ++#else ++ int32_t tmp_rssi = rssi; + #endif + char *local_addr, *peer_addr; + bdaddr_t tmp; +@@ -276,11 +280,12 @@ + } + + #ifdef HAVE_DBUS_MESSAGE_ITER_GET_BASIC ++ + dbus_message_append_args(message, + DBUS_TYPE_STRING, &local_addr, + DBUS_TYPE_STRING, &peer_addr, + DBUS_TYPE_UINT32, &class, +- DBUS_TYPE_INT32, &rssi, ++ DBUS_TYPE_INT32, &tmp_rssi, + DBUS_TYPE_INVALID); + #else + dbus_message_append_iter_init(message, &iter); diff --git a/recipes/bluez/bluez-utils-dbus/hcid.conf b/recipes/bluez/bluez-utils-dbus/hcid.conf new file mode 100644 index 0000000000..ab3ca2aaee --- /dev/null +++ b/recipes/bluez/bluez-utils-dbus/hcid.conf @@ -0,0 +1,72 @@ +# +# HCI daemon configuration file. +# +# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $ +# + +# HCId options +options { + # Automatically initialize new devices + autoinit yes; + + # Security Manager mode + # none - Security manager disabled + # auto - Use local PIN for incoming connections + # user - Always ask user for a PIN + # + security auto; + + # Pairing mode + # none - Pairing disabled + # multi - Allow pairing with already paired devices + # once - Pair once and deny successive attempts + pairing multi; + + # PIN helper + # pin_helper /usr/bin/bluepin; + + # D-Bus PIN helper + dbus_pin_helper; +} + +# Default settings for HCI devices +device { + # Local device name + # %d - device id + # %h - host name + name "%h"; + + # Local device class + class 0x120112; + + # Default packet type + #pkt_type DH1,DM1,HV1; + + # Inquiry and Page scan + iscan enable; pscan enable; + + # Default link mode + # none - no specific policy + # accept - always accept incoming connections + # master - become master on incoming connections, + # deny role switch on outgoing connections + # + #lm accept,master; + # + lm accept; + + # Default link policy + # none - no specific policy + # rswitch - allow role switch + # hold - allow hold mode + # sniff - allow sniff mode + # park - allow park mode + # + #lp hold,sniff; + # + lp rswitch,hold,sniff,park; + + # Authentication and Encryption + #auth enable; + encrypt enable; +} diff --git a/recipes/bluez/bluez-utils-dbus/smash.patch b/recipes/bluez/bluez-utils-dbus/smash.patch new file mode 100644 index 0000000000..55cdbb7284 --- /dev/null +++ b/recipes/bluez/bluez-utils-dbus/smash.patch @@ -0,0 +1,11 @@ +--- bluez-utils-2.11/hcid/dbus.c.old 2004-12-31 16:35:12.000000000 +0000 ++++ bluez-utils-2.11/hcid/dbus.c 2004-12-31 16:39:58.000000000 +0000 +@@ -89,6 +89,8 @@ + + memset(&pr, 0, sizeof(pr)); + bacpy(&pr.bdaddr, &req->bda); ++ if (len > sizeof (pr.pin_code)) ++ goto error; + memcpy(pr.pin_code, pin, len); + pr.pin_len = len; + hci_send_cmd(req->dev, OGF_LINK_CTL, OCF_PIN_CODE_REPLY, diff --git a/recipes/bluez/bluez-utils.inc b/recipes/bluez/bluez-utils.inc new file mode 100644 index 0000000000..298650a080 --- /dev/null +++ b/recipes/bluez/bluez-utils.inc @@ -0,0 +1,67 @@ +DESCRIPTION = "Linux Bluetooth Stack Userland Utilities." +SECTION = "console" +PRIORITY = "optional" +DEPENDS = "gstreamer gst-plugins-base bluez-libs-${PV} libusb-compat dbus cups" +PROVIDES = "bluez-utils-dbus" +RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus" +RREPLACES = "bluez-utils-dbus" +RCONFLICTS_${PN} = "bluez-utils-nodbus" +LICENSE = "GPL" + +SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \ + file://hcid.conf \ + file://hciattach-ti-bts.patch;patch=1 \ + file://handle-eintr.patch;patch=1;status=applied" +SRC_URI_append_r1000 = " file://hciattach.sh" +SRC_URI_append_ghi270 = " file://hciattach.sh" + +# Almost all serial CF cards w/ manfid 0x0000,0x0000 seem to use the bcs protocol +# Let's default to that instead of 'any' until further notice... +SRC_URI += " file://default-manfid-0x0-to-bcps.patch;patch=1" + +S = "${WORKDIR}/bluez-utils-${PV}" + +EXTRA_OECONF = "--enable-initscripts --enable-bccmd --enable-bcm203x --enable-hid2hci --enable-cups" +# --enable-obex enable OBEX support +# --enable-alsa enable ALSA support +# --enable-cups install CUPS backend support +# --enable-bccmd install BCCMD interface utility +# --enable-avctrl install Audio/Video control utility +# --enable-hid2hci install HID mode switching utility +# --enable-dfutool install DFU firmware upgrade utility + +inherit autotools update-rc.d + +INITSCRIPT_NAME = "bluetooth" +INITSCRIPT_PARAMS = "defaults 23 19" + +do_install_append() { + install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/ + mv ${D}${sbindir}/* ${D}${base_sbindir}/ + mv ${D}${bindir}/* ${D}${base_bindir}/ + rmdir ${D}${bindir} ${D}${sbindir} + chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig + install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/ + install -m 0755 ${S}/daemon/.libs/passkey-agent ${D}${base_bindir}/ +} + +do_install_append_r1000() { + install -d ${D}${sysconfdir} ${D}${sysconfdir}/bluetooth + install -m 0755 ${WORKDIR}/hciattach.sh ${D}${sysconfdir}/bluetooth/hciattach +} + +do_install_append_ghi270() { + install -d ${D}${sysconfdir} ${D}${sysconfdir}/bluetooth + install -m 0755 ${WORKDIR}/hciattach.sh ${D}${sysconfdir}/bluetooth/hciattach +} + +CONFFILES_${PN} = "${sysconfdir}/bluetooth/hcid.conf ${sysconfdir}/bluetooth/rfcomm.conf \ + ${sysconfdir}/default/bluetooth" + +PACKAGES =+ " bluez-cups-backend" + +FILES_${PN} += " ${libdir}/alsa-lib/*.so " +FILES_${PN}-dev += " ${libdir}/alsa-lib/*.la " + +FILES_bluez-cups-backend = "${libdir}/cups/backend/bluetooth" +RDEPENDS_bluez-cups-backend = "cups" diff --git a/recipes/bluez/bluez-utils/handle-eintr.patch b/recipes/bluez/bluez-utils/handle-eintr.patch new file mode 100644 index 0000000000..effe5d9696 --- /dev/null +++ b/recipes/bluez/bluez-utils/handle-eintr.patch @@ -0,0 +1,23 @@ +--- bluez-utils-3.9.org/tools/hciattach.c 2007-01-28 20:16:48.000000000 +0000 ++++ bluez-utils-3.9/tools/hciattach.c 2007-02-12 16:50:49.000000000 +0000 +@@ -1135,7 +1256,7 @@ + int main(int argc, char *argv[]) + { + struct uart_t *u = NULL; +- int detach, printpid, opt, i, n, ld; ++ int detach, printpid, opt, i, n, ld, err; + int to = 5; + int init_speed = 0; + int send_break = 0; +@@ -1286,7 +1414,10 @@ + + while (!__io_canceled) { + p.revents = 0; +- if (poll(&p, 1, 500)) ++ err = poll(&p, 1, 500); ++ if (err < 0 && errno == EINTR) ++ continue; ++ if (err) + break; + } + diff --git a/recipes/bluez/bluez-utils/hcid.conf b/recipes/bluez/bluez-utils/hcid.conf new file mode 100644 index 0000000000..a7164f6eb0 --- /dev/null +++ b/recipes/bluez/bluez-utils/hcid.conf @@ -0,0 +1,57 @@ +# +# HCI daemon configuration file. +# + +# HCId options +options { + # Automatically initialize new devices + autoinit yes; + + # Security Manager mode + # none - Security manager disabled + # auto - Use local PIN for incoming connections + # user - Always ask user for a PIN + # + security auto; + + # Pairing mode + # none - Pairing disabled + # multi - Allow pairing with already paired devices + # once - Pair once and deny successive attempts + pairing multi; + + # Default PIN code for incoming connections + passkey "1234"; +} + +# Default settings for HCI devices +device { + # Local device name + # %d - device id + # %h - host name + name "%h (%d)"; + + # Local device class + class 0x120112; + + # Default packet type + #pkt_type DH1,DM1,HV1; + + # Inquiry and Page scan + iscan enable; pscan enable; + + # Default link mode + # none - no specific policy + # accept - always accept incoming connections + # master - become master on incoming connections, + # deny role switch on outgoing connections + lm accept; + + # Default link policy + # none - no specific policy + # rswitch - allow role switch + # hold - allow hold mode + # sniff - allow sniff mode + # park - allow park mode + lp rswitch,hold,sniff,park; +} diff --git a/recipes/bluez/bluez-utils/hid2hci_usb_init.patch b/recipes/bluez/bluez-utils/hid2hci_usb_init.patch new file mode 100644 index 0000000000..ed15fd5a1b --- /dev/null +++ b/recipes/bluez/bluez-utils/hid2hci_usb_init.patch @@ -0,0 +1,33 @@ +# Signed-off-by: Khem Raj <raj.khem@gmail.com> +# +# Use the new usb1 API for usb_init() and check for fails from +# usb_init (). Currently we see a crash on a system which does +# not have USB because usb_init() fails and it cleans up all initialized +# data (e.g. ctx) which is used in subsequent calls to libusb +# We return immediately if usb_init() fails for some reason. + +Index: bluez-4.24/tools/hid2hci.c +=================================================================== +--- bluez-4.24.orig/tools/hid2hci.c 2008-10-25 23:40:34.000000000 -0700 ++++ bluez-4.24/tools/hid2hci.c 2008-12-29 22:06:04.000000000 -0800 +@@ -337,7 +337,7 @@ + int main(int argc, char *argv[]) + { + struct device_info dev[16]; +- int i, opt, num, quiet = 0, mode = HCI; ++ int i, ret, opt, num, quiet = 0, mode = HCI; + + while ((opt = getopt_long(argc, argv, "+01qh", main_options, NULL)) != -1) { + switch (opt) { +@@ -361,8 +361,9 @@ + argc -= optind; + argv += optind; + optind = 0; +- +- usb_init(); ++ ret = libusb_init(); ++ if (ret < 0) ++ return ret; + + num = find_devices(mode, dev, sizeof(dev) / sizeof(dev[0])); + if (num <= 0) { diff --git a/recipes/bluez/bluez-utils/ppoll-uclibc-arm-r0.patch b/recipes/bluez/bluez-utils/ppoll-uclibc-arm-r0.patch new file mode 100644 index 0000000000..391a7ae3de --- /dev/null +++ b/recipes/bluez/bluez-utils/ppoll-uclibc-arm-r0.patch @@ -0,0 +1,14 @@ +Index: bluez-utils-3.9/common/ppoll.h +=================================================================== +--- bluez-utils-3.9.orig/common/ppoll.h 2007-05-17 17:42:23.000000000 +0200 ++++ bluez-utils-3.9/common/ppoll.h 2007-05-17 17:43:18.000000000 +0200 +@@ -1,4 +1,8 @@ +-static inline int ppoll(struct pollfd *fds, nfds_t nfds, ++#ifdef ppoll ++#undef ppoll ++#endif ++#define ppoll bluez_ppoll ++static inline int bluez_ppoll(struct pollfd *fds, nfds_t nfds, + const struct timespec *timeout, const sigset_t *sigmask) + { + return poll(fds, nfds, timeout ? timeout->tv_sec * 1000 : 500); diff --git a/recipes/bluez/bluez-utils/sbc-thumb.patch b/recipes/bluez/bluez-utils/sbc-thumb.patch new file mode 100644 index 0000000000..3505426053 --- /dev/null +++ b/recipes/bluez/bluez-utils/sbc-thumb.patch @@ -0,0 +1,11 @@ +--- bluez/sbc/sbc_math.h~ 2008-03-05 20:18:03.000000000 +0000 ++++ bluez/sbc/sbc_math.h 2008-10-27 13:39:27.000000000 +0000 +@@ -59,7 +59,7 @@ + + #define SBC_FIXED_0(val) { val = 0; } + #define MUL(a, b) ((a) * (b)) +-#ifdef __arm__ ++#if defined(__arm__) && !defined(__thumb__) + #define MULA(a, b, res) ({ \ + int tmp = res; \ + __asm__( \ diff --git a/recipes/bluez/bluez-utils/uclibc-fix.patch b/recipes/bluez/bluez-utils/uclibc-fix.patch new file mode 100644 index 0000000000..6d4753c2e5 --- /dev/null +++ b/recipes/bluez/bluez-utils/uclibc-fix.patch @@ -0,0 +1,46 @@ +Uclibc doesn't define or support speeds above 115200. So check the existence +of the defines before allowing them to actually be used. + +Index: bluez-utils-3.9/tools/hciattach.c +=================================================================== +--- bluez-utils-3.9.orig/tools/hciattach.c 2007-05-17 12:34:28.000000000 +1000 ++++ bluez-utils-3.9/tools/hciattach.c 2007-05-17 12:40:20.000000000 +1000 +@@ -105,22 +105,38 @@ + return B57600; + case 115200: + return B115200; ++#ifdef B230400 + case 230400: + return B230400; ++#endif ++#ifdef B460800 + case 460800: + return B460800; ++#endif ++#ifdef B500000 + case 500000: + return B500000; ++#endif ++#ifdef B576000 + case 576000: + return B576000; ++#endif ++#ifdef B921600 + case 921600: + return B921600; ++#endif ++#ifdef B1000000 + case 1000000: + return B1000000; ++#endif ++#ifdef B1152000 + case 1152000: + return B1152000; ++#endif ++#ifdef B1500000 + case 1500000: + return B1500000; ++#endif + default: + return B57600; + } diff --git a/recipes/bluez/bluez-utils3.inc b/recipes/bluez/bluez-utils3.inc new file mode 100644 index 0000000000..703788f0f8 --- /dev/null +++ b/recipes/bluez/bluez-utils3.inc @@ -0,0 +1,148 @@ +DESCRIPTION = "Linux Bluetooth Stack Userland Utilities." +SECTION = "console" +PRIORITY = "optional" +DEPENDS = "gstreamer gst-plugins-base bluez-libs-${PV} libusb-compat dbus glib-2.0" +PROVIDES = "bluez-utils-dbus" +RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus" +RREPLACES = "bluez-utils-dbus" +RCONFLICTS_${PN} = "bluez-utils-nodbus" +LICENSE = "GPL" + +FILESPATH = "${FILE_DIRNAME}/bluez-utils-${PV}:${FILE_DIRNAME}/bluez-utils" + +# ti patch should be sent it upstream! +SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \ + file://hcid.conf \ + file://hciattach-ti-bts.patch;patch=1 \ + file://sbc-thumb.patch;patch=1" + + +S = "${WORKDIR}/bluez-utils-${PV}" + +inherit autotools update-rc.d + +EXTRA_OECONF = " \ + --enable-bccmd \ + --enable-hid2hci \ + --enable-alsa \ + --enable-cups \ + --enable-glib \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + " + +# The config options are explained below: + +# --enable-obex enable OBEX support +# --enable-alsa enable ALSA support, not needed for nokia770, nokia800 and om-gtao1 +# --enable-cups install CUPS backend support +# --enable-bccmd install BCCMD interface utility +# --enable-avctrl install Audio/Video control utility +# --enable-hid2hci install HID mode switching utility +# --enable-dfutool install DFU firmware upgrade utility + +# --enable-glib For systems that use and install GLib anyway +# --disable-sdpd The sdpd is obsolete and should no longer be used. This of course requires that hcid will be started with -s to enable the SDP server + +#Following services can be enabled so far: +# --enable-network +# --enable-serial +# --enable-input +# --enable-audio +# --enable-echo + +#There is no need to modify any init script. They will be started +#automatically or on demand. Only /etc/bluetooth/*.service files should +#be patched to change name or the autostart value. +# --enable-configfile +# --enable-initscripts + +#For even smaller -doc packages +# --disable-manpages +# --disable-pcmciarules + +#I haven't seen any embedded device with HID proxy support. So simply +#disable it: +# --disable-hid2hci + +OE_LT_RPATH_ALLOW = "any" +OE_LT_RPATH_ALLOW[export]="1" + +do_install_append() { + install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/ + if [ "${sbindir}" != "${base_sbindir}" ]; then + mv ${D}${sbindir}/* ${D}${base_sbindir}/ + rmdir ${D}${sbindir} + fi + if [ "${bindir}" != "${base_bindir}" ]; then + mv ${D}${bindir}/* ${D}${base_bindir}/ + rmdir ${D}${bindir} + fi + chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig + install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/ + install -m 0644 ${S}/rfcomm/rfcomm.conf ${D}${sysconfdir}/bluetooth/ + install -m 0755 ${S}/daemon/.libs/passkey-agent ${D}${base_bindir}/ ||true + install -m 0755 ${S}/test/.libs/passkey-agent ${D}${base_bindir}/ ||true +} + + +INITSCRIPT_NAME = "bluetooth" +INITSCRIPT_PARAMS = "defaults 23 19" + + +PACKAGES =+ "${PN}-compat" + + +FILES_${PN} = " \ + ${base_sbindir}/hcid \ + ${libdir}/bluetooth \ + ${sysconfdir}/init.d/bluetooth \ + ${sysconfdir}/bluetooth/*.service \ + ${sysconfdir}/bluetooth/hcid.conf \ + ${sysconfdir}/default \ + ${sysconfdir}/dbus-1 \ + ${base_sbindir}/hciattach \ + " + +FILES_${PN}-dbg += " \ + ${libdir}/bluetooth/.debug \ + ${libdir}/cups/backend/.debug \ + ${libdir}/alsa-lib/.debug \ + " + +FILES_${PN}-compat = " \ + ${base_bindir}/sdptool \ + ${base_bindir}/dund \ + ${base_bindir}/rctest \ + ${base_bindir}/ciptool \ + ${base_bindir}/l2test \ + ${base_bindir}/rfcomm \ + ${base_bindir}/hcitool \ + ${base_bindir}/pand \ + ${base_bindir}/hidd \ + ${base_bindir}/l2ping \ + ${base_sbindir}/hciconfig \ + ${base_sbindir}/bccmd \ + ${base_sbindir}/hciemu \ + ${base_sbindir}/hid2hci \ + ${base_bindir}/passkey-agent \ + ${sysconfdir}/bluetooth/rfcomm.conf \ + " + + + + + + + + + + + diff --git a/recipes/bluez/bluez-utils_3.33.bb b/recipes/bluez/bluez-utils_3.33.bb new file mode 100644 index 0000000000..dc098e3137 --- /dev/null +++ b/recipes/bluez/bluez-utils_3.33.bb @@ -0,0 +1,67 @@ +require bluez-utils3.inc + +PR = "r3" + +# see bluez-utils3.inc for the explanation of these option +EXTRA_OECONF = " \ + --enable-bccmd \ + --enable-hid2hci \ + --enable-hidd \ + --enable-pand \ + --enable-dund \ + --disable-alsa \ + --disable-cups \ + --enable-glib \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + --enable-hidd \ + --enable-obex \ + --enable-pand \ + --enable-dund \ + --enable-avctrl \ + --enable-hid2hci \ + --enable-dfutool \ + " + +CONFFILES_${PN} = " \ + ${sysconfdir}/bluetooth/hcid.conf \ + ${sysconfdir}/default/bluetooth \ + " + +CONFFILES_${PN}-compat = " \ + ${sysconfdir}/bluetooth/rfcomm.conf \ + " + +PACKAGES =+ "bluez-audio" + +FILES_${PN} = " \ + ${base_sbindir}/hcid \ + ${libdir}/bluetooth/plugins/*.so \ + ${sysconfdir}/init.d/bluetooth \ + ${sysconfdir}/bluetooth/hcid.conf \ + ${sysconfdir}/default \ + ${sysconfdir}/dbus-1 \ + ${base_sbindir}/hciattach \ + " + +FILES_bluez-audio = " \ + ${libdir}/bluetooth/plugins/libaudio.so \ + ${libdir}/gstreamer-0.10/*.so \ + " + +FILES_${PN}-dbg += " \ + ${libdir}/bluetooth/plugins/.debug \ + ${libdir}/gstreamer-0.10/.debug \ + " + +FILES_${PN}-dev += " \ + ${libdir}/bluetooth/plugins/*.la \ + ${libdir}/gstreamer-0.10/*.la \ + " diff --git a/recipes/bluez/bluez-utils_3.36.bb b/recipes/bluez/bluez-utils_3.36.bb new file mode 100644 index 0000000000..bd319e85f2 --- /dev/null +++ b/recipes/bluez/bluez-utils_3.36.bb @@ -0,0 +1,72 @@ +require bluez-utils3.inc + +PR = "r4" + +# removed hciattach-ti-bts.patch (landed upstream) +SRC_URI = "http://bluez.sourceforge.net/download/bluez-utils-${PV}.tar.gz \ + file://hcid.conf \ + file://sbc-thumb.patch;patch=1" + +# see bluez-utils3.inc for the explanation of these option +EXTRA_OECONF = " \ + --enable-bccmd \ + --enable-hid2hci \ + --enable-hidd \ + --enable-pand \ + --enable-dund \ + --disable-alsa \ + --disable-cups \ + --enable-glib \ + --disable-sdpd \ + --enable-network \ + --enable-serial \ + --enable-input \ + --enable-audio \ + --enable-echo \ + --enable-configfile \ + --enable-initscripts \ + --enable-test \ + --enable-hidd \ + --enable-obex \ + --enable-pand \ + --enable-dund \ + --enable-avctrl \ + --enable-hid2hci \ + --enable-dfutool \ +" + +CONFFILES_${PN} = " \ + ${sysconfdir}/bluetooth/hcid.conf \ + ${sysconfdir}/default/bluetooth \ + " + +CONFFILES_${PN}-compat = " \ + ${sysconfdir}/bluetooth/rfcomm.conf \ + " + +PACKAGES =+ "bluez-audio" + +FILES_${PN} = " \ + ${base_sbindir}/hcid \ + ${libdir}/bluetooth/plugins/*.so \ + ${sysconfdir}/init.d/bluetooth \ + ${sysconfdir}/bluetooth/hcid.conf \ + ${sysconfdir}/default \ + ${sysconfdir}/dbus-1 \ + ${base_sbindir}/hciattach \ + " + +FILES_bluez-audio = " \ + ${libdir}/bluetooth/plugins/libaudio.so \ + ${libdir}/gstreamer-0.10/*.so \ + " + +FILES_${PN}-dbg += " \ + ${libdir}/bluetooth/plugins/.debug \ + ${libdir}/gstreamer-0.10/.debug \ + " + +FILES_${PN}-dev += " \ + ${libdir}/bluetooth/plugins/*.la \ + ${libdir}/gstreamer-0.10/*.la \ + " diff --git a/recipes/bluez/bluez.inc b/recipes/bluez/bluez.inc new file mode 100644 index 0000000000..711ac383be --- /dev/null +++ b/recipes/bluez/bluez.inc @@ -0,0 +1,95 @@ +DESCRIPTION = "Linux Bluetooth Stack Userland Utilities and libraries." +SECTION = "console" +PRIORITY = "optional" +HOMEPAGE = "http://www.bluez.org" +LICENSE = "GPL" +PR = "r0" + +DEPENDS = "gstreamer gst-plugins-base libusb1 dbus glib-2.0" +PROVIDES = "bluez-utils-dbus" +RPROVIDES_${PN} = "bluez-pan bluez-sdp bluez-utils-dbus" +RREPLACES = "bluez-utils-dbus" +RCONFLICTS_${PN} = "bluez-utils-nodbus" + +FILESPATH = "${FILE_DIRNAME}/bluez-utils-${PV}:${FILE_DIRNAME}/bluez-utils" + +S = "${WORKDIR}/bluez-${PV}" + +inherit autotools update-rc.d pkgconfig + +OE_LT_RPATH_ALLOW = "any" +OE_LT_RPATH_ALLOW[export]="1" + +do_install_append() { + install -d ${D}${base_sbindir} ${D}${base_bindir}/ ${D}${sysconfdir}/apm/event.d/ + if [ "${sbindir}" != "${base_sbindir}" ]; then + mv ${D}${sbindir}/* ${D}${base_sbindir}/ + rmdir ${D}${sbindir} + fi + if [ "${bindir}" != "${base_bindir}" ]; then + mv ${D}${bindir}/* ${D}${base_bindir}/ + rmdir ${D}${bindir} + fi + chmod u+s ${D}${base_sbindir}/hciattach ${D}${base_sbindir}/hciconfig + install -m 0644 ${WORKDIR}/hcid.conf ${D}${sysconfdir}/bluetooth/ + install -m 0644 ${S}/rfcomm/rfcomm.conf ${D}${sysconfdir}/bluetooth/ + install -m 0755 ${S}/daemon/.libs/passkey-agent ${D}${base_bindir}/ ||true + install -m 0755 ${S}/test/.libs/passkey-agent ${D}${base_bindir}/ ||true +} + + +INITSCRIPT_NAME = "bluetooth" +INITSCRIPT_PARAMS = "defaults 23 19" + + +PACKAGES =+ "${PN}-compat" + + +FILES_${PN} = " \ + ${base_sbindir}/hcid \ + ${libdir}/bluetooth \ + ${sysconfdir}/init.d/bluetooth \ + ${sysconfdir}/bluetooth/*.service \ + ${sysconfdir}/bluetooth/hcid.conf \ + ${sysconfdir}/default \ + ${sysconfdir}/dbus-1 \ + ${base_sbindir}/hciattach \ + " + +FILES_${PN}-dbg += " \ + ${libdir}/bluetooth/.debug \ + ${libdir}/cups/backend/.debug \ + ${libdir}/alsa-lib/.debug \ + " + +FILES_${PN}-compat = " \ + ${base_bindir}/sdptool \ + ${base_bindir}/dund \ + ${base_bindir}/rctest \ + ${base_bindir}/ciptool \ + ${base_bindir}/l2test \ + ${base_bindir}/rfcomm \ + ${base_bindir}/hcitool \ + ${base_bindir}/pand \ + ${base_bindir}/hidd \ + ${base_bindir}/l2ping \ + ${base_sbindir}/hciconfig \ + ${base_sbindir}/bccmd \ + ${base_sbindir}/hciemu \ + ${base_sbindir}/hid2hci \ + ${base_bindir}/passkey-agent \ + ${sysconfdir}/bluetooth/rfcomm.conf \ + " + +HEADERS = "bluetooth.h bnep.h cmtp.h hci.h hci_lib.h hidp.h l2cap.h rfcomm.h sco.h sdp.h sdp_lib.h" + +do_stage_prepend() { + oe_libinstall -so -C lib libbluetooth ${STAGING_LIBDIR} + + install -d ${STAGING_INCDIR}/bluetooth/ + for f in ${HEADERS} + do + install -m 0644 include/$f ${STAGING_INCDIR}/bluetooth/$f + done +} + diff --git a/recipes/bluez/bluez4/fix-dfutool-usb-declaration-mismatch.patch b/recipes/bluez/bluez4/fix-dfutool-usb-declaration-mismatch.patch new file mode 100644 index 0000000000..b1ee510e8b --- /dev/null +++ b/recipes/bluez/bluez4/fix-dfutool-usb-declaration-mismatch.patch @@ -0,0 +1,13 @@ +Index: bluez-4.27/tools/dfutool.c +=================================================================== +--- bluez-4.27.orig/tools/dfutool.c ++++ bluez-4.27/tools/dfutool.c +@@ -59,7 +59,7 @@ + #endif + + #ifdef NEED_USB_GET_BUSSES +-static inline struct usb_bus *usb_get_busses(void) ++inline struct usb_bus *usb_get_busses(void) + { + return usb_busses; + } diff --git a/recipes/bluez/bluez4/hid2hci_usb_init.patch b/recipes/bluez/bluez4/hid2hci_usb_init.patch new file mode 100644 index 0000000000..ed15fd5a1b --- /dev/null +++ b/recipes/bluez/bluez4/hid2hci_usb_init.patch @@ -0,0 +1,33 @@ +# Signed-off-by: Khem Raj <raj.khem@gmail.com> +# +# Use the new usb1 API for usb_init() and check for fails from +# usb_init (). Currently we see a crash on a system which does +# not have USB because usb_init() fails and it cleans up all initialized +# data (e.g. ctx) which is used in subsequent calls to libusb +# We return immediately if usb_init() fails for some reason. + +Index: bluez-4.24/tools/hid2hci.c +=================================================================== +--- bluez-4.24.orig/tools/hid2hci.c 2008-10-25 23:40:34.000000000 -0700 ++++ bluez-4.24/tools/hid2hci.c 2008-12-29 22:06:04.000000000 -0800 +@@ -337,7 +337,7 @@ + int main(int argc, char *argv[]) + { + struct device_info dev[16]; +- int i, opt, num, quiet = 0, mode = HCI; ++ int i, ret, opt, num, quiet = 0, mode = HCI; + + while ((opt = getopt_long(argc, argv, "+01qh", main_options, NULL)) != -1) { + switch (opt) { +@@ -361,8 +361,9 @@ + argc -= optind; + argv += optind; + optind = 0; +- +- usb_init(); ++ ret = libusb_init(); ++ if (ret < 0) ++ return ret; + + num = find_devices(mode, dev, sizeof(dev) / sizeof(dev[0])); + if (num <= 0) { diff --git a/recipes/bluez/bluez4/sbc-thumb.patch b/recipes/bluez/bluez4/sbc-thumb.patch new file mode 100644 index 0000000000..3505426053 --- /dev/null +++ b/recipes/bluez/bluez4/sbc-thumb.patch @@ -0,0 +1,11 @@ +--- bluez/sbc/sbc_math.h~ 2008-03-05 20:18:03.000000000 +0000 ++++ bluez/sbc/sbc_math.h 2008-10-27 13:39:27.000000000 +0000 +@@ -59,7 +59,7 @@ + + #define SBC_FIXED_0(val) { val = 0; } + #define MUL(a, b) ((a) * (b)) +-#ifdef __arm__ ++#if defined(__arm__) && !defined(__thumb__) + #define MULA(a, b, res) ({ \ + int tmp = res; \ + __asm__( \ diff --git a/recipes/bluez/bluez4_4.31.bb b/recipes/bluez/bluez4_4.31.bb new file mode 100644 index 0000000000..5063950c94 --- /dev/null +++ b/recipes/bluez/bluez4_4.31.bb @@ -0,0 +1,60 @@ +DESCRIPTION = "Linux Bluetooth Stack Userland V4" +SECTION = "libs" +PRIORITY = "optional" +DEPENDS = "gst-plugins-base alsa-lib libusb-compat dbus-glib" +HOMEPAGE = "http://www.bluez.org" +LICENSE = "GPL" +PR = "r3" + +SRC_URI = "\ + http://www.kernel.org/pub/linux/bluetooth/bluez-${PV}.tar.gz \ + file://fix-dfutool-usb-declaration-mismatch.patch;patch=1 \ + file://sbc-thumb.patch;patch=1 \ +# file://hid2hci_usb_init.patch;patch=1 \ +" +S = "${WORKDIR}/bluez-${PV}" + +inherit autotools pkgconfig + +OE_LT_RPATH_ALLOW = "any" +OE_LT_RPATH_ALLOW[export] = "1" + +EXTRA_OECONF = "\ + --enable-gstreamer \ + --enable-alsa \ + --enable-usb \ + --enable-netlink \ + --enable-tools \ + --enable-bccmd \ + --enable-hid2hci \ + --enable-dfutool \ + --enable-hidd \ + --enable-pandd \ + --enable-dund \ + --disable-cups \ + --enable-test \ + --enable-manpages \ + --enable-configfiles \ + --enable-initscripts \ + --disable-pcmciarules \ +" + +do_install_append() { + install -m 0644 ${S}/audio/audio.conf ${D}/${sysconfdir}/bluetooth/ + install -m 0644 ${S}/network/network.conf ${D}/${sysconfdir}/bluetooth/ + install -m 0644 ${S}/input/input.conf ${D}/${sysconfdir}/bluetooth/ +} + +PACKAGES =+ "gst-plugin-bluez libasound-module-bluez" + +FILES_gst-plugin-bluez = "${libdir}/gstreamer-0.10/lib*.so" +FILES_libasound-module-bluez = "${libdir}/alsa-lib/lib*.so" +FILES_${PN} += "${libdir}/bluetooth/plugins/*.so" +FILES_${PN}-dev += "\ + ${libdir}/bluetooth/plugins/*.la \ + ${libdir}/*/*.la \ +" +FILES_${PN}-dbg += "\ + ${libdir}/bluetooth/plugins/.debug \ + ${libdir}/*/.debug \ +" diff --git a/recipes/bluez/files/base.patch b/recipes/bluez/files/base.patch new file mode 100644 index 0000000000..337c9aa73e --- /dev/null +++ b/recipes/bluez/files/base.patch @@ -0,0 +1,33 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- bluez-utils-2.17/pcmcia/bluetooth~base.patch ++++ bluez-utils-2.17/pcmcia/bluetooth +@@ -15,9 +15,16 @@ + + if [ -r ./shared ]; then . ./shared ; else . /etc/pcmcia/shared ; fi + ++# Give the port some time to complete initialization ++sleep 5 ++ + # Get device attributes + get_info $DEVICE + ++test "$DEVICE" = "ttyS7" && DEVICE="/dev/tts/7" ++test -z "$MANFID" && MANFID="bcsp" ++test "$MANFID" = "0000,0000" && MANFID="bcsp" ++ + # + # Serial devices + # +@@ -25,7 +32,7 @@ + IRQ=`setserial /dev/$DEVICE | sed -e 's/.*IRQ: //'` + setserial /dev/$DEVICE irq 0 ; setserial /dev/$DEVICE irq $IRQ + +- /usr/sbin/hciattach $DEVICE $MANFID ++ /sbin/hciattach $DEVICE $MANFID + } + stop_serial() { + do_fuser -k -HUP /dev/$DEVICE > /dev/null diff --git a/recipes/bluez/files/blueboxes.patch b/recipes/bluez/files/blueboxes.patch new file mode 100644 index 0000000000..c429b06c06 --- /dev/null +++ b/recipes/bluez/files/blueboxes.patch @@ -0,0 +1,18 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- bluez-utils-2.14/pcmcia/bluetooth.conf~base ++++ bluez-utils-2.14/pcmcia/bluetooth.conf +@@ -26,6 +26,10 @@ + version "Brain Boxes", "Bluetooth PC Card" + bind "serial_cs" class "bluetooth" + ++card "F+ Bluetooth_Card, BCSP" ++ manfid 0x0160, 0xaba0 ++ bind "serial_cs" class "bluetooth" ++ + card "IBM Bluetooth PC Card II" + version "IBM", "Bluetooth PC Card II" + bind "serial_cs" class "bluetooth" diff --git a/recipes/bluez/files/bluetooth.conf b/recipes/bluez/files/bluetooth.conf new file mode 100644 index 0000000000..872084702a --- /dev/null +++ b/recipes/bluez/files/bluetooth.conf @@ -0,0 +1,13 @@ +# +# additional cards for /etc/pcmcia/bluetooth.conf +# Note for OE: This file is _appended_ to the stock +# bluetooth.conf in bluez-utils, so no need to duplicate +# entries for individual cards. +# +card "CSR BT01x0M Bluetooth CF Card" + version "Bluetooth BT0100M", "", "" + bind "serial_cs" class "bluetooth" + +card "Socket Bluetooth CF Card Rev. G" + manfid 0x0104, 0x0096 + bind "serial_cs" class "bluetooth" diff --git a/recipes/bluez/files/bluetooth.default b/recipes/bluez/files/bluetooth.default new file mode 100644 index 0000000000..4817d38c60 --- /dev/null +++ b/recipes/bluez/files/bluetooth.default @@ -0,0 +1,37 @@ +# Bluetooth configuraton file + +# Start of hcid (allowed values are "true" and "false") +HCID_ENABLE=true + +# Config file for hcid +HCID_CONFIG="/etc/bluetooth/hcid.conf" + +# Start sdpd (allowed values are "true" and "false") +SDPD_ENABLE=true + +# Start hidd (allowed values are "true" and "false") +HIDD_ENABLE=true + +# Arguments to hidd +HIDD_OPTIONS="" + +# Run hid2hci (allowed values are "true" and "false") +HID2HCI_ENABLE=true + +# Bind rfcomm devices (allowed values are "true" and "false") +RFCOMM_ENABLE=true + +# Config file for rfcomm +RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf" + +# Start dund (allowed values are "true" and "false") +DUND_ENABLE=false + +# Arguments to dund +DUND_OPTIONS="--listen --persist" + +# Start pand (allowed values are "true" and "false") +PAND_ENABLE=false + +# Arguments to pand +PAND_OPTIONS="--listen --role NAP" diff --git a/recipes/bluez/files/default-manfid-0x0-to-bcps.patch b/recipes/bluez/files/default-manfid-0x0-to-bcps.patch new file mode 100644 index 0000000000..3d993543b3 --- /dev/null +++ b/recipes/bluez/files/default-manfid-0x0-to-bcps.patch @@ -0,0 +1,22 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- bluez-utils-2.16/tools/hciattach.c~default-manfid-0x0-to-bcps ++++ bluez-utils-2.16/tools/hciattach.c +@@ -796,13 +796,12 @@ + } + + struct uart_t uart[] = { ++ { "bcsp", 0x0000, 0x0000, HCI_UART_BCSP, 115200, 115200, 0, bcsp }, + { "any", 0x0000, 0x0000, HCI_UART_H4, 115200, 115200, FLOW_CTL, NULL }, + { "ericsson", 0x0000, 0x0000, HCI_UART_H4, 57600, 115200, FLOW_CTL, ericsson }, + { "digi", 0x0000, 0x0000, HCI_UART_H4, 9600, 115200, FLOW_CTL, digi }, + { "texas", 0x0000, 0x0000, HCI_UART_H4, 115200, 115200, FLOW_CTL, texas }, + +- { "bcsp", 0x0000, 0x0000, HCI_UART_BCSP, 115200, 115200, 0, bcsp }, +- + /* Xircom PCMCIA cards: Credit Card Adapter and Real Port Adapter */ + { "xircom", 0x0105, 0x080a, HCI_UART_H4, 115200, 115200, FLOW_CTL, NULL }, + diff --git a/recipes/bluez/files/hciattach_devlength.patch b/recipes/bluez/files/hciattach_devlength.patch new file mode 100644 index 0000000000..8d84cb1b00 --- /dev/null +++ b/recipes/bluez/files/hciattach_devlength.patch @@ -0,0 +1,11 @@ +--- bluez-utils-2.21/tools/hciattach.c.orig 2005-12-15 16:29:55.000000000 +0100 ++++ bluez-utils-2.21/tools/hciattach.c 2005-12-15 16:29:37.000000000 +0100 +@@ -973,7 +973,7 @@ + int send_break = 0; + pid_t pid; + struct sigaction sa; +- char dev[20]; ++ char dev[25]; + + detach = 1; + printpid = 0; diff --git a/recipes/bluez/files/no-user-include.patch b/recipes/bluez/files/no-user-include.patch new file mode 100644 index 0000000000..8c1b1b6d6d --- /dev/null +++ b/recipes/bluez/files/no-user-include.patch @@ -0,0 +1,18 @@ +Do not add -I/usr/include to the compile line just because we will +install bluez-utils there says zecke... + +Index: bluez-utils-2.25/acinclude.m4 +=================================================================== +--- bluez-utils-2.25.orig/acinclude.m4 2006-05-18 12:39:57.473577920 +0200 ++++ bluez-utils-2.25/acinclude.m4 2006-05-19 00:58:52.694599848 +0200 +@@ -69,7 +69,9 @@ + ac_save_LDFLAGS=$LDFLAGS + + BLUEZ_CFLAGS="" +- test -d "${bluez_prefix}/include" && BLUEZ_CFLAGS="$BLUEZ_CFLAGS -I${bluez_prefix}/include" ++ if test "$cross_compiling" = no; then ++ test -d "${bluez_prefix}/include" && BLUEZ_CFLAGS="$BLUEZ_CFLAGS -I${bluez_prefix}/include" ++ fi + + CPPFLAGS="$CPPFLAGS $BLUEZ_CFLAGS" + AC_CHECK_HEADER(bluetooth/bluetooth.h, dummy=yes, AC_MSG_ERROR(Bluetooth header files not found)) diff --git a/recipes/bluez/files/openmn/bluetooth.default b/recipes/bluez/files/openmn/bluetooth.default new file mode 100644 index 0000000000..06c52d7960 --- /dev/null +++ b/recipes/bluez/files/openmn/bluetooth.default @@ -0,0 +1,37 @@ +# Bluetooth configuraton file + +# Start of hcid (allowed values are "true" and "false") +HCID_ENABLE=true + +# Config file for hcid +HCID_CONFIG="/etc/bluetooth/hcid.conf" + +# Start sdpd (allowed values are "true" and "false") +SDPD_ENABLE=false + +# Start hidd (allowed values are "true" and "false") +HIDD_ENABLE=false + +# Arguments to hidd +HIDD_OPTIONS="" + +# Run hid2hci (allowed values are "true" and "false") +HID2HCI_ENABLE=false + +# Bind rfcomm devices (allowed values are "true" and "false") +RFCOMM_ENABLE=false + +# Config file for rfcomm +RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf" + +# Start dund (allowed values are "true" and "false") +DUND_ENABLE=false + +# Arguments to dund +DUND_OPTIONS="--listen --persist" + +# Start pand (allowed values are "true" and "false") +PAND_ENABLE=false + +# Arguments to pand +PAND_OPTIONS="--listen --role NAP" diff --git a/recipes/bluez/files/openmn/hcid.conf b/recipes/bluez/files/openmn/hcid.conf new file mode 100644 index 0000000000..46a5d5fd54 --- /dev/null +++ b/recipes/bluez/files/openmn/hcid.conf @@ -0,0 +1,70 @@ +# +# HCI daemon configuration file. +# +# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $ +# + +# HCId options +options { + # Automatically initialize new devices + autoinit yes; + + # Security Manager mode + # none - Security manager disabled + # auto - Use local PIN for incoming connections + # user - Always ask user for a PIN + # + security auto; + + # Pairing mode + # none - Pairing disabled + # multi - Allow pairing with already paired devices + # once - Pair once and deny successive attempts + pairing multi; + + # PIN helper + # pin_helper /bin/bluepin; + + # D-Bus PIN helper + # dbus_pin_helper; +} + +# Default settings for HCI devices +device { + # Local device name + # %d - device id + # %h - host name + name "%h"; + + # Local device class + class 0x820100; + + # Default packet type + #pkt_type DH1,DM1,HV1; + + # Inquiry and Page scan + iscan enable; pscan enable; + + # Default link mode + # none - no specific policy + # accept - always accept incoming connections + # master - become master on incoming connections, + # deny role switch on outgoing connections + # + lm accept,master; + + # Default link policy + # none - no specific policy + # rswitch - allow role switch + # hold - allow hold mode + # sniff - allow sniff mode + # park - allow park mode + # + #lp hold,sniff; + # + lp rswitch,hold,sniff,park; + + # Authentication and Encryption + auth enable; + encrypt enable; +} diff --git a/recipes/bluez/files/pkgconfig-add-gthread.patch b/recipes/bluez/files/pkgconfig-add-gthread.patch new file mode 100644 index 0000000000..2dde6b81f5 --- /dev/null +++ b/recipes/bluez/files/pkgconfig-add-gthread.patch @@ -0,0 +1,50 @@ +Index: git/configure.in +=================================================================== +--- git.orig/configure.in 2007-07-17 17:25:52.000000000 +0100 ++++ git/configure.in 2007-07-17 17:25:52.000000000 +0100 +@@ -75,6 +75,10 @@ + AC_SUBST(OPENOBEX_CFLAGS) + AC_SUBST(OPENOBEX_LIBS) + ++PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.10, dummy=yes, dummy=no) ++AC_SUBST(GTHREAD_CFLAGS) ++AC_SUBST(GTHREAD_LIBS) ++ + AC_ARG_BLUEZ + + AC_OUTPUT(Makefile compat/Makefile common/Makefile applet/Makefile properties/Makefile sendto/Makefile wizard/Makefile proximity/Makefile po/Makefile.in) +Index: git/applet/Makefile.am +=================================================================== +--- git.orig/applet/Makefile.am 2007-07-17 17:25:52.000000000 +0100 ++++ git/applet/Makefile.am 2007-07-17 17:25:52.000000000 +0100 +@@ -4,12 +4,12 @@ + bluetooth_applet_SOURCES = main.c + + bluetooth_applet_LDADD = $(top_builddir)/compat/libcompat.a $(top_builddir)/common/libcommon.a \ +- @NOTIFY_LIBS@ @GCONF_LIBS@ @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@ ++ @NOTIFY_LIBS@ @GCONF_LIBS@ @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@ @GTHREAD_LIBS@ + + nodist_bluetooth_applet_SOURCES = $(top_builddir)/common/passkey-agent-glue.h \ + $(top_builddir)/common/auth-agent-glue.h + +-AM_CFLAGS = @DBUS_CFLAGS@ @HAL_CFLAGS@ @GTK_CFLAGS@ @GCONF_CFLAGS@ @NOTIFY_CFLAGS@ -DSYSCONFDIR=\"$(sysconfdir)\" ++AM_CFLAGS = @DBUS_CFLAGS@ @HAL_CFLAGS@ @GTK_CFLAGS@ @GCONF_CFLAGS@ @NOTIFY_CFLAGS@ @GTHREAD_CFLAGS@ -DSYSCONFDIR=\"$(sysconfdir)\" + + INCLUDES = -I$(top_builddir)/common -I$(top_srcdir)/compat + +Index: git/properties/Makefile.am +=================================================================== +--- git.orig/properties/Makefile.am 2007-07-17 17:28:11.000000000 +0100 ++++ git/properties/Makefile.am 2007-07-17 17:28:44.000000000 +0100 +@@ -4,9 +4,9 @@ + bluetooth_properties_SOURCES = main.c + + bluetooth_properties_LDADD = $(top_builddir)/common/libcommon.a \ +- @GCONF_LIBS@ @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@ ++ @GCONF_LIBS@ @GTK_LIBS@ @HAL_LIBS@ @DBUS_LIBS@ @GTHREAD_LIBS@ + +-AM_CFLAGS = @DBUS_CFLAGS@ @HAL_CFLAGS@ @GTK_CFLAGS@ @GCONF_CFLAGS@ ++AM_CFLAGS = @DBUS_CFLAGS@ @HAL_CFLAGS@ @GTK_CFLAGS@ @GCONF_CFLAGS@ @GTHREAD_CFLAGS@ + + INCLUDES = -I$(top_srcdir)/common + diff --git a/recipes/bluez/files/slugos/bluetooth.default b/recipes/bluez/files/slugos/bluetooth.default new file mode 100644 index 0000000000..10f628e314 --- /dev/null +++ b/recipes/bluez/files/slugos/bluetooth.default @@ -0,0 +1,37 @@ +# Bluetooth configuraton file + +# Start of hcid (allowed values are "true" and "false") +HCID_ENABLE=true + +# Config file for hcid +HCID_CONFIG="/etc/bluetooth/hcid.conf" + +# Start sdpd (allowed values are "true" and "false") +SDPD_ENABLE=true + +# Start hidd (allowed values are "true" and "false") +HIDD_ENABLE=false + +# Arguments to hidd +HIDD_OPTIONS="" + +# Run hid2hci (allowed values are "true" and "false") +HID2HCI_ENABLE=false + +# Bind rfcomm devices (allowed values are "true" and "false") +RFCOMM_ENABLE=true + +# Config file for rfcomm +RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf" + +# Start dund (allowed values are "true" and "false") +DUND_ENABLE=true + +# Arguments to dund +DUND_OPTIONS="--listen --persist" + +# Start pand (allowed values are "true" and "false") +PAND_ENABLE=true + +# Arguments to pand +PAND_OPTIONS="--listen --role NAP" diff --git a/recipes/bluez/files/slugos/hcid.conf b/recipes/bluez/files/slugos/hcid.conf new file mode 100644 index 0000000000..46a5d5fd54 --- /dev/null +++ b/recipes/bluez/files/slugos/hcid.conf @@ -0,0 +1,70 @@ +# +# HCI daemon configuration file. +# +# $Id: hcid.conf,v 1.4 2004/04/29 20:14:21 holtmann Exp $ +# + +# HCId options +options { + # Automatically initialize new devices + autoinit yes; + + # Security Manager mode + # none - Security manager disabled + # auto - Use local PIN for incoming connections + # user - Always ask user for a PIN + # + security auto; + + # Pairing mode + # none - Pairing disabled + # multi - Allow pairing with already paired devices + # once - Pair once and deny successive attempts + pairing multi; + + # PIN helper + # pin_helper /bin/bluepin; + + # D-Bus PIN helper + # dbus_pin_helper; +} + +# Default settings for HCI devices +device { + # Local device name + # %d - device id + # %h - host name + name "%h"; + + # Local device class + class 0x820100; + + # Default packet type + #pkt_type DH1,DM1,HV1; + + # Inquiry and Page scan + iscan enable; pscan enable; + + # Default link mode + # none - no specific policy + # accept - always accept incoming connections + # master - become master on incoming connections, + # deny role switch on outgoing connections + # + lm accept,master; + + # Default link policy + # none - no specific policy + # rswitch - allow role switch + # hold - allow hold mode + # sniff - allow sniff mode + # park - allow park mode + # + #lp hold,sniff; + # + lp rswitch,hold,sniff,park; + + # Authentication and Encryption + auth enable; + encrypt enable; +} |