<!-- Generator: GNU source-highlight 2.4
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>#
#
# 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]
#
============================================================
<font color="#FF6600">--- packages/bluez/bluez-utils-3.30/hciattach-ti-bts.patch        2325160feaae636c3e834dcf0b73984945c0899f</font>
<font color="#009900">+++ packages/bluez/bluez-utils-3.30/hciattach-ti-bts.patch        2325160feaae636c3e834dcf0b73984945c0899f</font>
<font color="#0000FF">@@ -0,0 +1,477 @@</font>
<font color="#009900">+--- bluez-utils-3.1/tools/hciattach.c.orig        2006-07-23 14:02:14.000000000 +0200</font>
<font color="#009900">++++ bluez-utils-3.1/tools/hciattach.c        2006-07-23 14:06:29.000000000 +0200</font>
<font color="#009900">+@@ -60,6 +60,8 @@</font>
<font color="#009900">+ #define HCI_UART_3WIRE        2</font>
<font color="#009900">+ #define HCI_UART_H4DS        3</font>
<font color="#009900">+ </font>
<font color="#009900">++#include "ti_bts.h"</font>
<font color="#009900">++</font>
<font color="#009900">+ struct uart_t {</font>
<font color="#009900">+         char *type;</font>
<font color="#009900">+         int  m_id;</font>
<font color="#009900">+@@ -70,6 +72,7 @@</font>
<font color="#009900">+         int  flags;</font>
<font color="#009900">+         char *bdaddr;</font>
<font color="#009900">+         int  (*init) (int fd, struct uart_t *u, struct termios *ti);</font>
<font color="#009900">++        char *bts;        /* bluetooth script */</font>
<font color="#009900">+ };</font>
<font color="#009900">+ </font>
<font color="#009900">+ #define FLOW_CTL        0x0001</font>
<font color="#009900">+@@ -279,6 +282,114 @@</font>
<font color="#009900">+         return 0;</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">++static int brf6150(int fd, struct uart_t *u, struct termios *ti)</font>
<font color="#009900">++{</font>
<font color="#009900">++        bts_t *bfp;</font>
<font color="#009900">++        int i;</font>
<font color="#009900">++        unsigned long vers;</font>
<font color="#009900">++        unsigned char actionbuf[256];</font>
<font color="#009900">++        unsigned char resp[128];                /* Response */</font>
<font color="#009900">++        unsigned long count;</font>
<font color="#009900">++        unsigned short atype;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (u-&gt;bts == NULL)        /* no script, ignore */</font>
<font color="#009900">++                return 0;</font>
<font color="#009900">++</font>
<font color="#009900">++        bfp = bts_load_script( u-&gt;bts, &amp;vers );</font>
<font color="#009900">++        if (bfp == NULL)</font>
<font color="#009900">++                return -1;</font>
<font color="#009900">++</font>
<font color="#009900">++        fprintf( stderr, "Loading BTS script version %lu\n", vers );</font>
<font color="#009900">++</font>
<font color="#009900">++        while ((count = bts_next_action( bfp, actionbuf,</font>
<font color="#009900">++                        sizeof actionbuf - 1, &amp;atype )) != 0) {</font>
<font color="#009900">++                if (atype == ACTION_REMARKS) {</font>
<font color="#009900">++                        if (actionbuf[0] != 0)</font>
<font color="#009900">++                                fprintf( stderr, "%s\n", actionbuf );</font>
<font color="#009900">++                }</font>
<font color="#009900">++                else if (atype == ACTION_SEND_COMMAND) {</font>
<font color="#009900">++#if 0</font>
<font color="#009900">++                        fprintf( stderr, "ACTION_SEND_COMMAND: ", (int)atype );</font>
<font color="#009900">++                        for (i=0; i&lt;count; i++) {</font>
<font color="#009900">++                                fprintf( stderr, "0x%02x ", actionbuf[i] );</font>
<font color="#009900">++                        }</font>
<font color="#009900">++                        fprintf( stderr, "\n" );</font>
<font color="#009900">++#endif</font>
<font color="#009900">++                        int n;</font>
<font color="#009900">++                        n = write(fd, actionbuf, count);</font>
<font color="#009900">++                        if (n &lt; 0 || n &lt; count) {</font>
<font color="#009900">++                                perror("Failed to write TI action command");</font>
<font color="#009900">++                                return -1;</font>
<font color="#009900">++                        }</font>
<font color="#009900">++                }</font>
<font color="#009900">++                else if (atype == ACTION_WAIT_EVENT) {</font>
<font color="#009900">++                        action_wait_t *wait = (action_wait_t *)actionbuf;</font>
<font color="#009900">++#if 0</font>
<font color="#009900">++                        fprintf( stderr, "ACTION_WAIT_EVENT: %u msec, %u size, data = ", wait-&gt;msec, wait-&gt;size );</font>
<font color="#009900">++                        for (i=0; i&lt;wait-&gt;size; i++) {</font>
<font color="#009900">++                                fprintf( stderr, "0x%02x ", wait-&gt;data[i] );</font>
<font color="#009900">++                        }</font>
<font color="#009900">++                        fprintf( stderr, "\n" );</font>
<font color="#009900">++#endif</font>
<font color="#009900">++                        usleep(wait-&gt;msec);        /* seems they give usec, not msec */</font>
<font color="#009900">++                        /* Read reply. */</font>
<font color="#009900">++                        if ((count = read_hci_event(fd, resp, sizeof resp)) &lt; 0) {</font>
<font color="#009900">++                                perror("Failed to read TI command response");</font>
<font color="#009900">++                                return -1;</font>
<font color="#009900">++                        }</font>
<font color="#009900">++                        if (count &lt; wait-&gt;size) {</font>
<font color="#009900">++                                fprintf( stderr, "TI command response is short.");</font>
<font color="#009900">++                        }</font>
<font color="#009900">++                        for (i=0; i&lt;wait-&gt;size; i++) {</font>
<font color="#009900">++                                if (i == 3) continue;        /* ignore */</font>
<font color="#009900">++                                if (resp[i] != wait-&gt;data[i]) {</font>
<font color="#009900">++                                        fprintf( stderr, "TI command response does not match expected result.\n" );</font>
<font color="#009900">++                                }</font>
<font color="#009900">++                        }</font>
<font color="#009900">++                }</font>
<font color="#009900">++                else if (atype == ACTION_SERIAL_PORT_PARAMETERS) {</font>
<font color="#009900">++                        action_serial_t *sercmd = (action_serial_t *)actionbuf;</font>
<font color="#009900">++</font>
<font color="#009900">++                        /* Set actual baudrate */</font>
<font color="#009900">++                        fprintf( stderr,</font>
<font color="#009900">++                                "BTS changing baud rate to %u, flow control to %u\n",</font>
<font color="#009900">++                                sercmd-&gt;baud, sercmd-&gt;flow_control );</font>
<font color="#009900">++</font>
<font color="#009900">++                        tcflush(fd, TCIOFLUSH);</font>
<font color="#009900">++</font>
<font color="#009900">++                        if (sercmd-&gt;flow_control)</font>
<font color="#009900">++                                ti-&gt;c_cflag |= CRTSCTS;</font>
<font color="#009900">++                        else</font>
<font color="#009900">++                                ti-&gt;c_cflag &amp;= ~CRTSCTS;</font>
<font color="#009900">++                        if (tcsetattr(fd, TCSANOW, ti) &lt; 0) {</font>
<font color="#009900">++                                perror("Can't set port settings");</font>
<font color="#009900">++                                return -1;</font>
<font color="#009900">++                        }</font>
<font color="#009900">++</font>
<font color="#009900">++                        u-&gt;speed = sercmd-&gt;baud;</font>
<font color="#009900">++</font>
<font color="#009900">++                        tcflush(fd, TCIOFLUSH);</font>
<font color="#009900">++                        if (set_speed(fd, ti, sercmd-&gt;baud) &lt; 0) {</font>
<font color="#009900">++                                perror("Can't set baud rate");</font>
<font color="#009900">++                                return -1;</font>
<font color="#009900">++                        }</font>
<font color="#009900">++                }</font>
<font color="#009900">++                else if (atype == ACTION_DELAY) {</font>
<font color="#009900">++                        action_delay_t *delay = (action_delay_t *)actionbuf;</font>
<font color="#009900">++                        usleep(delay-&gt;msec);        /* seems they give usec, not msec */</font>
<font color="#009900">++                }</font>
<font color="#009900">++                else {</font>
<font color="#009900">++                        fprintf( stderr, "BTS action type = %d: ", (int)atype );</font>
<font color="#009900">++                        for (i=0; i&lt;count; i++) {</font>
<font color="#009900">++                                fprintf( stderr, "0x%02x ", actionbuf[i] );</font>
<font color="#009900">++                        }</font>
<font color="#009900">++                        fprintf( stderr, "\n" );</font>
<font color="#009900">++                }</font>
<font color="#009900">++        }</font>
<font color="#009900">++        bts_unload_script( bfp );</font>
<font color="#009900">++        return 0;</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">+ static int texas(int fd, struct uart_t *u, struct termios *ti)</font>
<font color="#009900">+ {</font>
<font color="#009900">+         struct timespec tm = {0, 50000};</font>
<font color="#009900">+@@ -328,6 +439,17 @@</font>
<font color="#009900">+         /* Print LMP subversion */</font>
<font color="#009900">+         fprintf(stderr, "Texas module LMP sub-version : 0x%02x%02x\n", resp[14] &amp; 0xFF, resp[13] &amp; 0xFF);</font>
<font color="#009900">+ </font>
<font color="#009900">++        if ((resp[14] &gt;&gt; 2) == 3) {</font>
<font color="#009900">++                /* BRF6150 */</font>
<font color="#009900">++                int err;</font>
<font color="#009900">++</font>
<font color="#009900">++                nanosleep(&amp;tm, NULL);</font>
<font color="#009900">++                if ((err = brf6150(fd, u, ti)) != 0) {</font>
<font color="#009900">++                        fprintf(stderr, "Texas module script failed (err=%d)\n", err);</font>
<font color="#009900">++                        return -1;</font>
<font color="#009900">++                }</font>
<font color="#009900">++        }</font>
<font color="#009900">++        </font>
<font color="#009900">+         nanosleep(&amp;tm, NULL);</font>
<font color="#009900">+         return 0;</font>
<font color="#009900">+ }</font>
<font color="#009900">+@@ -1204,7 +1326,7 @@</font>
<font color="#009900">+ {</font>
<font color="#009900">+         printf("hciattach - HCI UART driver initialization utility\n");</font>
<font color="#009900">+         printf("Usage:\n");</font>
<font color="#009900">+-        printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] &lt;tty&gt; &lt;type | id&gt; [speed] [flow|noflow] [bdaddr]\n");</font>
<font color="#009900">++        printf("\thciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] [-S bts-script] &lt;tty&gt; &lt;type | id&gt; [speed] [flow|noflow] [bdaddr]\n");</font>
<font color="#009900">+         printf("\thciattach -l\n");</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+@@ -1219,11 +1341,12 @@</font>
<font color="#009900">+         struct sigaction sa;</font>
<font color="#009900">+         struct pollfd p;</font>
<font color="#009900">+         char dev[PATH_MAX];</font>
<font color="#009900">++        char *bts = NULL;</font>
<font color="#009900">+ </font>
<font color="#009900">+         detach = 1;</font>
<font color="#009900">+         printpid = 0;</font>
<font color="#009900">+ </font>
<font color="#009900">+-        while ((opt=getopt(argc, argv, "bnpt:s:l")) != EOF) {</font>
<font color="#009900">++        while ((opt=getopt(argc, argv, "bnpt:s:S:l")) != EOF) {</font>
<font color="#009900">+                 switch(opt) {</font>
<font color="#009900">+                 case 'b':</font>
<font color="#009900">+                         send_break = 1;</font>
<font color="#009900">+@@ -1245,6 +1368,10 @@</font>
<font color="#009900">+                         init_speed = atoi(optarg);</font>
<font color="#009900">+                         break;</font>
<font color="#009900">+ </font>
<font color="#009900">++                case 'S':</font>
<font color="#009900">++                        bts = optarg;</font>
<font color="#009900">++                        break;</font>
<font color="#009900">++</font>
<font color="#009900">+                 case 'l':</font>
<font color="#009900">+                         for (i = 0; uart[i].type; i++) {</font>
<font color="#009900">+                                 printf("%-10s0x%04x,0x%04x\n", uart[i].type,</font>
<font color="#009900">+@@ -1320,6 +1447,8 @@</font>
<font color="#009900">+         if (init_speed)</font>
<font color="#009900">+                 u-&gt;init_speed = init_speed;</font>
<font color="#009900">+ </font>
<font color="#009900">++        u-&gt;bts = bts;</font>
<font color="#009900">++</font>
<font color="#009900">+         memset(&amp;sa, 0, sizeof(sa));</font>
<font color="#009900">+         sa.sa_flags   = SA_NOCLDSTOP;</font>
<font color="#009900">+         sa.sa_handler = sig_alarm;</font>
<font color="#009900">+--- bluez-utils-3.1/tools/ti_bts.h.orig        2006-07-23 14:07:26.000000000 +0200</font>
<font color="#009900">++++ bluez-utils-3.1/tools/ti_bts.h        2006-07-23 14:07:46.000000000 +0200</font>
<font color="#009900">+@@ -0,0 +1,116 @@</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Copyright (c) 2005 Texas Instruments, Inc.</font>
<font color="#009900">++ *    Ported by SDG Systems, LLC</font>
<font color="#009900">++ *</font>
<font color="#009900">++ *  This program is free software; you can redistribute it and/or modify</font>
<font color="#009900">++ *  it under the terms of the GNU General Public License version 2 as</font>
<font color="#009900">++ *  published by the Free Software Foundation;</font>
<font color="#009900">++ *</font>
<font color="#009900">++ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</font>
<font color="#009900">++ *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</font>
<font color="#009900">++ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.</font>
<font color="#009900">++ *  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY</font>
<font color="#009900">++ *  CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES </font>
<font color="#009900">++ *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN </font>
<font color="#009900">++ *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF </font>
<font color="#009900">++ *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ *  ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, </font>
<font color="#009900">++ *  COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS </font>
<font color="#009900">++ *  SOFTWARE IS DISCLAIMED.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ */</font>
<font color="#009900">++</font>
<font color="#009900">++#ifndef BT_SCRIPT_H</font>
<font color="#009900">++#define BT_SCRIPT_H</font>
<font color="#009900">++</font>
<font color="#009900">++#ifdef __cplusplus</font>
<font color="#009900">++extern "C" {</font>
<font color="#009900">++#endif</font>
<font color="#009900">++</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Define the interface of Bluetooth Script</font>
<font color="#009900">++ */</font>
<font color="#009900">++</font>
<font color="#009900">++typedef void bts_t;</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++#define ACTION_SEND_COMMAND             1   /* Send out raw data (as is) */</font>
<font color="#009900">++#define ACTION_WAIT_EVENT               2   /* Wait for data */</font>
<font color="#009900">++#define ACTION_SERIAL_PORT_PARAMETERS   3   </font>
<font color="#009900">++#define ACTION_DELAY                    4   </font>
<font color="#009900">++#define ACTION_RUN_SCRIPT               5   </font>
<font color="#009900">++#define ACTION_REMARKS                  6</font>
<font color="#009900">++</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Structure for ACTION_SEND_COMMAND</font>
<font color="#009900">++ */</font>
<font color="#009900">++typedef struct tagCActionCommand</font>
<font color="#009900">++{</font>
<font color="#009900">++    unsigned char data[1]; /* Data to send */</font>
<font color="#009900">++} action_command_t;</font>
<font color="#009900">++</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Structure for ACTION_WAIT_EVENT</font>
<font color="#009900">++ */</font>
<font color="#009900">++typedef struct tagCActionWaitEvent</font>
<font color="#009900">++{</font>
<font color="#009900">++    unsigned long msec; /* in milliseconds */</font>
<font color="#009900">++    unsigned long size;</font>
<font color="#009900">++    unsigned char data[1]; /* Data to wait for */</font>
<font color="#009900">++} action_wait_t;</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Structure for ACTION_SERIAL_PORT_PARAMETERS</font>
<font color="#009900">++ */</font>
<font color="#009900">++typedef struct tagCActionSerialPortParameters</font>
<font color="#009900">++{</font>
<font color="#009900">++    unsigned long baud;</font>
<font color="#009900">++    unsigned long flow_control;</font>
<font color="#009900">++} action_serial_t;</font>
<font color="#009900">++</font>
<font color="#009900">++/* Flow Control Type */</font>
<font color="#009900">++#define FCT_NONE        0</font>
<font color="#009900">++#define FCT_HARDWARE    1</font>
<font color="#009900">++</font>
<font color="#009900">++#define DONT_CHANGE     0xFFFFFFFF  /* For both baud rate and flow control */</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Structure for ACTION_DELAY</font>
<font color="#009900">++ */</font>
<font color="#009900">++typedef struct tagCActionDelay</font>
<font color="#009900">++{</font>
<font color="#009900">++    unsigned long msec; /* in milliseconds */</font>
<font color="#009900">++} action_delay_t;</font>
<font color="#009900">++</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Structure for ACTION_RUN_SCRIPT</font>
<font color="#009900">++ */</font>
<font color="#009900">++typedef struct tagCActionRunScript</font>
<font color="#009900">++{</font>
<font color="#009900">++    char filename[1];</font>
<font color="#009900">++} action_run_t;</font>
<font color="#009900">++</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Structure for ACTION_REMARKS</font>
<font color="#009900">++ */</font>
<font color="#009900">++typedef struct tagCActionRemarks</font>
<font color="#009900">++{</font>
<font color="#009900">++    char m_szRemarks[1];</font>
<font color="#009900">++} action_remarks_t;</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++const char *cis_create_filename(const unsigned char* cmdparms);</font>
<font color="#009900">++bts_t * bts_load_script(const char* fname, unsigned long* version);</font>
<font color="#009900">++unsigned long bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,</font>
<font color="#009900">++        unsigned long nMaxSize, unsigned short* ptype);</font>
<font color="#009900">++void bts_unload_script(bts_t* bts_fp);</font>
<font color="#009900">++</font>
<font color="#009900">++#ifdef __cplusplus</font>
<font color="#009900">++};</font>
<font color="#009900">++#endif</font>
<font color="#009900">++</font>
<font color="#009900">++#endif /* BT_SCRIPT_H */</font>
<font color="#009900">++</font>
<font color="#009900">+--- bluez-utils-3.1/tools/ti_bts.c.orig        2006-07-23 14:07:28.000000000 +0200</font>
<font color="#009900">++++ bluez-utils-3.1/tools/ti_bts.c        2006-07-23 14:07:46.000000000 +0200</font>
<font color="#009900">+@@ -0,0 +1,149 @@</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Copyright (c) 2005 Texas Instruments, Inc.</font>
<font color="#009900">++ *    Ported by SDG Systems, LLC</font>
<font color="#009900">++ *</font>
<font color="#009900">++ *  This program is free software; you can redistribute it and/or modify</font>
<font color="#009900">++ *  it under the terms of the GNU General Public License version 2 as</font>
<font color="#009900">++ *  published by the Free Software Foundation;</font>
<font color="#009900">++ *</font>
<font color="#009900">++ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</font>
<font color="#009900">++ *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</font>
<font color="#009900">++ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.</font>
<font color="#009900">++ *  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY</font>
<font color="#009900">++ *  CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES </font>
<font color="#009900">++ *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN </font>
<font color="#009900">++ *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF </font>
<font color="#009900">++ *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ *  ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, </font>
<font color="#009900">++ *  COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS </font>
<font color="#009900">++ *  SOFTWARE IS DISCLAIMED.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ */</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++#include &lt;stdio.h&gt;</font>
<font color="#009900">++#include &lt;stdlib.h&gt;</font>
<font color="#009900">++#include "ti_bts.h"</font>
<font color="#009900">++</font>
<font color="#009900">++#ifndef MAKEWORD</font>
<font color="#009900">++#define MAKEWORD(a, b)      ((unsigned short)(((unsigned char)(a)) | ((unsigned short)((unsigned char)(b))) &lt;&lt; 8))</font>
<font color="#009900">++#endif</font>
<font color="#009900">++</font>
<font color="#009900">++#define TI_MANUFACTURER_ID  13</font>
<font color="#009900">++</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * Common Init Script specific</font>
<font color="#009900">++ */</font>
<font color="#009900">++const char *</font>
<font color="#009900">++cis_create_filename(const unsigned char* cmdparms)</font>
<font color="#009900">++{</font>
<font color="#009900">++    static char bts_file[50];</font>
<font color="#009900">++</font>
<font color="#009900">++    /* Check for TI's id */</font>
<font color="#009900">++    unsigned short manfid = MAKEWORD(cmdparms[8], cmdparms[9]);</font>
<font color="#009900">++</font>
<font color="#009900">++    if (TI_MANUFACTURER_ID == manfid) {</font>
<font color="#009900">++        unsigned short version = MAKEWORD(cmdparms[10], cmdparms[11]);</font>
<font color="#009900">++        </font>
<font color="#009900">++        unsigned short chip =  (version &amp; 0x7C00) &gt;&gt; 10;</font>
<font color="#009900">++        unsigned short min_ver = (version &amp; 0x007F);</font>
<font color="#009900">++        unsigned short maj_ver = (version &amp; 0x0380) &gt;&gt; 7;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (0 != (version &amp; 0x8000)) {</font>
<font color="#009900">++            maj_ver |= 0x0008;</font>
<font color="#009900">++        }</font>
<font color="#009900">++        </font>
<font color="#009900">++        sprintf( bts_file, "TIInit_%d.%d.%d.bts", </font>
<font color="#009900">++            (int)chip, (int)maj_ver, (int)min_ver);</font>
<font color="#009900">++</font>
<font color="#009900">++        return &amp;bts_file[0];</font>
<font color="#009900">++    }</font>
<font color="#009900">++    return NULL;</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++typedef struct tagCHeader </font>
<font color="#009900">++{</font>
<font color="#009900">++    unsigned long magic;</font>
<font color="#009900">++    unsigned long version;</font>
<font color="#009900">++    unsigned char future[24];</font>
<font color="#009900">++} cheader_t;</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/* The value 0x42535442 stands for (in ASCII) BTSB */</font>
<font color="#009900">++/* which is Bluetooth Script Binary */</font>
<font color="#009900">++#define FILE_HEADER_MAGIC   0x42535442</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++bts_t *</font>
<font color="#009900">++bts_load_script(const char* fname, unsigned long* version)</font>
<font color="#009900">++{</font>
<font color="#009900">++    bts_t* bts = NULL;</font>
<font color="#009900">++    FILE* fp = fopen(fname, "rb");</font>
<font color="#009900">++</font>
<font color="#009900">++    if (NULL != fp) {</font>
<font color="#009900">++        /* Read header */</font>
<font color="#009900">++        cheader_t header;</font>
<font color="#009900">++</font>
<font color="#009900">++        /* Read header */</font>
<font color="#009900">++        if (1 == fread(&amp;header, sizeof(header), 1, fp)) {</font>
<font color="#009900">++            /* Check magic number for correctness */</font>
<font color="#009900">++            if (header.magic == FILE_HEADER_MAGIC) {</font>
<font color="#009900">++                /* If user wants the version number */</font>
<font color="#009900">++                if (NULL != version) {</font>
<font color="#009900">++                    *version = header.version;</font>
<font color="#009900">++                }</font>
<font color="#009900">++                bts = (bts_t*)fp;</font>
<font color="#009900">++            }</font>
<font color="#009900">++        }</font>
<font color="#009900">++        /* If failed reading the file, close it */</font>
<font color="#009900">++        if (NULL == bts) {</font>
<font color="#009900">++            fclose(fp);</font>
<font color="#009900">++        }</font>
<font color="#009900">++    }</font>
<font color="#009900">++    return bts;</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++unsigned long</font>
<font color="#009900">++bts_next_action(const bts_t* bts_fp, unsigned char* action_buf,</font>
<font color="#009900">++    unsigned long nMaxSize, unsigned short* ptype)</font>
<font color="#009900">++{</font>
<font color="#009900">++    unsigned long bytes = 0;</font>
<font color="#009900">++    FILE* fp = (FILE*)bts_fp;</font>
<font color="#009900">++    unsigned char action_hdr[4];</font>
<font color="#009900">++</font>
<font color="#009900">++    if (bts_fp == NULL)</font>
<font color="#009900">++        return 0;</font>
<font color="#009900">++</font>
<font color="#009900">++    /* Each Action has the following: */</font>
<font color="#009900">++    /* UINT16 type of this action */</font>
<font color="#009900">++    /* UINT16 size of rest */</font>
<font color="#009900">++    /* BYTE[] action buffer (for HCI, includes the type byte e.g. 1 for hci command) */</font>
<font color="#009900">++</font>
<font color="#009900">++    if (1 == fread(&amp;action_hdr[0], sizeof(action_hdr), 1, fp)) {</font>
<font color="#009900">++        unsigned short type = *(unsigned short*)&amp;action_hdr[0];</font>
<font color="#009900">++        unsigned short size = *(unsigned short*)&amp;action_hdr[2];</font>
<font color="#009900">++</font>
<font color="#009900">++        if (size &lt;= nMaxSize) {</font>
<font color="#009900">++            int nread = fread(action_buf, sizeof(action_buf[0]), size, fp);</font>
<font color="#009900">++</font>
<font color="#009900">++            if (nread == size) {</font>
<font color="#009900">++                *ptype = type;</font>
<font color="#009900">++                bytes = (unsigned long)size;</font>
<font color="#009900">++            }</font>
<font color="#009900">++        }</font>
<font color="#009900">++    }</font>
<font color="#009900">++</font>
<font color="#009900">++    return bytes;</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++bts_unload_script(bts_t* bts_fp)</font>
<font color="#009900">++{</font>
<font color="#009900">++    FILE* fp = (FILE*)bts_fp;</font>
<font color="#009900">++</font>
<font color="#009900">++    if (NULL != fp) {</font>
<font color="#009900">++        fclose(fp);</font>
<font color="#009900">++    }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">+--- bluez-utils-3.1/tools/Makefile.am.orig        2006-07-23 14:06:59.000000000 +0200</font>
<font color="#009900">++++ bluez-utils-3.1/tools/Makefile.am        2006-07-23 14:07:18.000000000 +0200</font>
<font color="#009900">+@@ -45,7 +45,7 @@</font>
<font color="#009900">+ </font>
<font color="#009900">+ noinst_PROGRAMS = hcisecfilter ppporc</font>
<font color="#009900">+ </font>
<font color="#009900">+-hciattach_SOURCES = hciattach.c hciattach_st.c</font>
<font color="#009900">++hciattach_SOURCES = hciattach.c hciattach_st.c ti_bts.h ti_bts.c</font>
<font color="#009900">+ hciattach_LDADD = @BLUEZ_LIBS@</font>
<font color="#009900">+ </font>
<font color="#009900">+ hciconfig_SOURCES = hciconfig.c csr.h csr.c</font>
============================================================
<font color="#FF6600">--- packages/bluez/bluez-utils_3.30.bb        bd21943c7ca29d617bfd9492d34e92de11134575</font>
<font color="#009900">+++ packages/bluez/bluez-utils_3.30.bb        bd21943c7ca29d617bfd9492d34e92de11134575</font>
<font color="#0000FF">@@ -0,0 +1,55 @@</font>
<font color="#009900">+require bluez-utils3.inc</font>
<font color="#009900">+</font>
<font color="#009900">+# see bluez-utils3.inc for the explanation of these option</font>
<font color="#009900">+EXTRA_OECONF = " \</font>
<font color="#009900">+                 --enable-bccmd \</font>
<font color="#009900">+                 --enable-hid2hci \</font>
<font color="#009900">+                 --disable-alsa \ </font>
<font color="#009900">+                 --disable-cups \</font>
<font color="#009900">+                 --enable-glib \</font>
<font color="#009900">+                 --disable-sdpd \</font>
<font color="#009900">+                 --enable-network \</font>
<font color="#009900">+                 --enable-serial \</font>
<font color="#009900">+                 --enable-input \</font>
<font color="#009900">+                 --enable-audio \</font>
<font color="#009900">+                 --enable-echo \</font>
<font color="#009900">+                 --enable-configfile \</font>
<font color="#009900">+                 --enable-initscripts \</font>
<font color="#009900">+                 --enable-test \</font>
<font color="#009900">+                " </font>
<font color="#009900">+</font>
<font color="#009900">+CONFFILES_${PN} = " \</font>
<font color="#009900">+                   ${sysconfdir}/bluetooth/hcid.conf \</font>
<font color="#009900">+                   ${sysconfdir}/default/bluetooth \</font>
<font color="#009900">+                  "</font>
<font color="#009900">+</font>
<font color="#009900">+CONFFILES_${PN}-compat = " \</font>
<font color="#009900">+                          ${sysconfdir}/bluetooth/rfcomm.conf \</font>
<font color="#009900">+                         "</font>
<font color="#009900">+</font>
<font color="#009900">+PACKAGES =+ "bluez-audio"</font>
<font color="#009900">+</font>
<font color="#009900">+FILES_${PN} = " \</font>
<font color="#009900">+               ${base_sbindir}/hcid \</font>
<font color="#009900">+               ${libdir}/bluetooth/plugins/*.so \</font>
<font color="#009900">+               ${sysconfdir}/init.d/bluetooth \</font>
<font color="#009900">+               ${sysconfdir}/bluetooth/hcid.conf \</font>
<font color="#009900">+               ${sysconfdir}/default \</font>
<font color="#009900">+               ${sysconfdir}/dbus-1 \</font>
<font color="#009900">+               ${base_sbindir}/hciattach \</font>
<font color="#009900">+              "</font>
<font color="#009900">+</font>
<font color="#009900">+FILES_bluez-audio = " \</font>
<font color="#009900">+                     ${libdir}/bluetooth/plugins/libaudio.so \</font>
<font color="#009900">+                     ${libdir}/gstreamer-0.10/*.so \</font>
<font color="#009900">+                    "</font>
<font color="#009900">+</font>
<font color="#009900">+FILES_${PN}-dbg += " \</font>
<font color="#009900">+                    ${libdir}/bluetooth/plugins/.debug \</font>
<font color="#009900">+                    ${libdir}/gstreamer-0.10/.debug \</font>
<font color="#009900">+                   "</font>
<font color="#009900">+</font>
<font color="#009900">+FILES_${PN}-dev += " \</font>
<font color="#009900">+                    ${libdir}/bluetooth/plugins/*.la \</font>
<font color="#009900">+                    ${libdir}/gstreamer-0.10/*.la \</font>
<font color="#009900">+                   "</font>
</tt></pre>