summaryrefslogtreecommitdiff
path: root/recipes/bluez/bcm2035-tool/addr-as-arg.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/bluez/bcm2035-tool/addr-as-arg.patch')
-rw-r--r--recipes/bluez/bcm2035-tool/addr-as-arg.patch104
1 files changed, 104 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;
+ }
+-
+-