org.openembedded.dev: 275c3447069783b8746a04debba1aa7971f0d248

oe at monotone.openmoko.org oe at monotone.openmoko.org
Fri May 2 20:53:21 CEST 2008


revision:            275c3447069783b8746a04debba1aa7971f0d248
date:                2008-05-02T07:58:08
author:              pH5 at openembedded.org
branch:              org.openembedded.dev
changelog:
bluez-utils: add 3.30
* new D-Bus API
* services converted to plugins
* audio hcid/gstreamer plugins moved to bluez-audio package

manifest:
format_version "1"

new_manifest [7ad950f18b20463d2362878113f7dd73a9d2f517]

old_revision [34525d07fbde19849f06b8dabede85920d2f2abe]

add_dir "packages/bluez/bluez-utils-3.30"

add_file "packages/bluez/bluez-utils-3.30/hciattach-ti-bts.patch"
 content [2325160feaae636c3e834dcf0b73984945c0899f]

add_file "packages/bluez/bluez-utils_3.30.bb"
 content [bd21943c7ca29d617bfd9492d34e92de11134575]
-------------- next part --------------
#
#
# add_dir "packages/bluez/bluez-utils-3.30"
# 
# add_file "packages/bluez/bluez-utils-3.30/hciattach-ti-bts.patch"
#  content [2325160feaae636c3e834dcf0b73984945c0899f]
# 
# add_file "packages/bluez/bluez-utils_3.30.bb"
#  content [bd21943c7ca29d617bfd9492d34e92de11134575]
#
============================================================
--- packages/bluez/bluez-utils-3.30/hciattach-ti-bts.patch	2325160feaae636c3e834dcf0b73984945c0899f
+++ packages/bluez/bluez-utils-3.30/hciattach-ti-bts.patch	2325160feaae636c3e834dcf0b73984945c0899f
@@ -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
============================================================
--- packages/bluez/bluez-utils_3.30.bb	bd21943c7ca29d617bfd9492d34e92de11134575
+++ packages/bluez/bluez-utils_3.30.bb	bd21943c7ca29d617bfd9492d34e92de11134575
@@ -0,0 +1,55 @@
+require bluez-utils3.inc
+
+# see bluez-utils3.inc for the explanation of these option
+EXTRA_OECONF = " \
+                 --enable-bccmd \
+		 --enable-hid2hci \
+                 --disable-alsa \ 
+		 --disable-cups \
+		 --enable-glib \
+		 --disable-sdpd \
+	         --enable-network \
+	         --enable-serial \
+	         --enable-input \
+	         --enable-audio \
+	         --enable-echo \
+                 --enable-configfile \
+	         --enable-initscripts \
+		 --enable-test \
+		" 
+
+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 \
+                   "
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.openmoko.org/pipermail/commitlog/attachments/20080502/098a1cd6/attachment.htm 


More information about the commitlog mailing list