rpms/libbtctl/FC-6 libbtctl-0.6.0-inquiry_with_rssi.patch, NONE, 1.1 libbtctl.spec, 1.44, 1.45

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Wed Jul 18 11:38:55 UTC 2007


Author: ovasik

Update of /cvs/dist/rpms/libbtctl/FC-6
In directory cvs.devel.redhat.com:/tmp/cvs-serv3734

Modified Files:
	libbtctl.spec 
Added Files:
	libbtctl-0.6.0-inquiry_with_rssi.patch 
Log Message:
added inquiry_with_rssi functionality - taken from libbtctl-0.9.0 (should make gnome-obex-send able to detect devices in GUI)

libbtctl-0.6.0-inquiry_with_rssi.patch:
 btctl-discovery-source.c |    1 +
 btctl-discovery-test.c   |   26 ++++++++++++++++++++++++++
 btctlimpl.c              |   35 +++++++++++++++++++++++++++++++++++
 btlist.py                |   30 ++++++++++++++++++++++++++++++
 btobex-client-test.py    |   44 ++++++++++++++++++++++++++++++++++++++++++++
 btobex-client.c          |   41 +++++++++++++++++++++++++++++++++++++++++
 btobex-client.h          |   10 ++++++----
 btobex-test.py           |   44 ++++++++++++++++++++++++++++++++++++++++++++
 btobex.c                 |    2 +-
 btobex.h                 |   14 +++++++-------
 obex-server-source.c     |    4 ++++
 11 files changed, 239 insertions(+), 12 deletions(-)

--- NEW FILE libbtctl-0.6.0-inquiry_with_rssi.patch ---
diff -urNp libbtctl-0.8.2/src/btctl-discovery-source.c devel/src/btctl-discovery-source.c
--- libbtctl-0.8.2/src/btctl-discovery-source.c	2006-05-09 23:09:53.000000000 +0200
+++ devel/src/btctl-discovery-source.c	2007-07-12 14:25:15.000000000 +0200
@@ -180,6 +180,7 @@ btctl_discovery_source_new ()
 	hci_filter_clear(&flt);
 	hci_filter_set_ptype(HCI_EVENT_PKT, &flt);
 	hci_filter_set_event(EVT_INQUIRY_RESULT, &flt);
+	hci_filter_set_event(EVT_INQUIRY_RESULT_WITH_RSSI, &flt);
 	hci_filter_set_event(EVT_INQUIRY_COMPLETE, &flt);
 	hci_filter_set_event(EVT_CONN_REQUEST, &flt);
 	hci_filter_set_event(EVT_CONN_COMPLETE, &flt);
diff -urNp libbtctl-0.8.2/src/btctl-discovery-test.c devel/src/btctl-discovery-test.c
--- libbtctl-0.8.2/src/btctl-discovery-test.c	2006-05-09 23:10:19.000000000 +0200
+++ devel/src/btctl-discovery-test.c	2007-07-12 14:25:15.000000000 +0200
@@ -40,6 +40,7 @@ static gboolean cb_hci_data (BtctlDiscov
 
 static void name_request (int dd, bdaddr_t bdaddr);
 static void inquiry_result(int dd, unsigned char *buf, int len);
+static void inquiry_result_with_rssi(int dd, unsigned char *buf, int len);
 static void conn_request(int dd, unsigned char *buf, int len);
 static void conn_complete(int dd, unsigned char *buf, int len);
 static void name_complete(int dd, unsigned char *buf, int len);
@@ -68,6 +69,28 @@ inquiry_result(int dd, unsigned char *bu
 }
 
 static void
+inquiry_result_with_rssi(int dd, unsigned char *buf, int len)
+{
+	inquiry_info_with_rssi *info;
+	uint8_t num;
+	char addr[18];
+	int i;
+	uint32_t devclass;
+
+	num = buf[0];
+	printf("inquiry_result_with_rssi:\tnum %d\n", num);
+
+	for (i = 0; i < num; i++) {
+		info = (void *) (buf + (sizeof(*info) * i) + 1);
+		ba2str(&info->bdaddr, addr);
+        devclass = (uint32_t)(info->dev_class[2]) << 16 |
+            (uint32_t)(info->dev_class[1]) << 8 |
+            (uint32_t)(info->dev_class[0]);
+		printf("inquiry_result_with_rssi:\tbdaddr %s class %x\n", addr, devclass);
+	}
+}
+
+static void
 conn_request(int dd, unsigned char *buf, int len)
 {
 	evt_conn_request *evt = (void *) buf;
@@ -160,6 +183,9 @@ cb_hci_data (BtctlDiscoverySource *sourc
 	case EVT_INQUIRY_RESULT:
 		inquiry_result(source->fd.fd, ptr, len);
 		break;
+	case EVT_INQUIRY_RESULT_WITH_RSSI:
+		inquiry_result_with_rssi(source->fd.fd, ptr, len);
+		break;
 	case EVT_INQUIRY_COMPLETE:
 		inquiry_complete(source->fd.fd);
 		break;
diff -urNp libbtctl-0.8.2/src/btctlimpl.c devel/src/btctlimpl.c
--- libbtctl-0.8.2/src/btctlimpl.c	2006-11-08 15:45:05.000000000 +0100
+++ devel/src/btctlimpl.c	2007-07-12 14:25:15.000000000 +0200
@@ -80,6 +80,8 @@ static gboolean cb_hci_data (BtctlDiscov
 static void name_request (BtctlController *bc, bdaddr_t *bdaddr);
 static void inquiry_result (BtctlController *bc, int dd, unsigned char *buf,
         int len);
+static void inquiry_result_with_rssi (BtctlController *bc, int dd,
+	unsigned char *buf, int len);
 static void conn_request (BtctlController *bc, int dd, unsigned char *buf,
         int len);
 static void conn_complete (BtctlController *bc, int dd, unsigned char *buf,
@@ -908,6 +910,36 @@ inquiry_result(BtctlController *bc, int 
 }
 
 static void
+inquiry_result_with_rssi(BtctlController *bc, int dd, unsigned char *buf, int len)
+{
+	inquiry_info_with_rssi *info;
+	uint8_t num;
+	char addr[18];
+	int i;
+	uint32_t devclass;
+	bdaddr_t *nb;
+
+	num = buf[0];
+
+	for (i = 0; i < num; i++) {
+		info = (void *) (buf + (sizeof(*info) * i) + 1);
+		ba2str(&info->bdaddr, addr);
+		devclass = (uint32_t)(info->dev_class[2]) << 16 |
+			(uint32_t)(info->dev_class[1]) << 8 |
+			(uint32_t)(info->dev_class[0]);
+		g_message ("inquiry_result_with_rssi:\tbdaddr %s class %x", addr, devclass);
+		nb = g_new0(bdaddr_t, 1);
+		bacpy(nb, &info->bdaddr);
+		/* inquiry can generate multiple identical results, so make
+		 * sure we only log each once */
+		if (! g_slist_find_custom (bc->found, (gpointer)nb, bdaddr_comparator)) {
+			bc->found = g_slist_append (bc->found, (gpointer)nb);
+			btctl_controller_got_device (bc, addr, devclass);
+		}
+	}
+}
+
+static void
 conn_request(BtctlController *bc, int dd, unsigned char *buf, int len)
 {
 	evt_conn_request *evt = (void *) buf;
@@ -1029,6 +1061,9 @@ cb_hci_data (BtctlDiscoverySource *sourc
 	case EVT_INQUIRY_RESULT:
 		inquiry_result(bc, source->fd.fd, ptr, len);
 		break;
+	case EVT_INQUIRY_RESULT_WITH_RSSI:
+		inquiry_result_with_rssi(bc, source->fd.fd, ptr,len);
+		break;
 	case EVT_INQUIRY_COMPLETE:
 		inquiry_complete(bc, source->fd.fd);
 		break;
diff -urNp libbtctl-0.8.2/src/btlist.py devel/src/btlist.py
--- libbtctl-0.8.2/src/btlist.py	1970-01-01 01:00:00.000000000 +0100
+++ devel/src/btlist.py	2007-07-12 14:25:15.000000000 +0200
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+
+import sys
+import btctl
+
+def status_callback (bt, field):
+	print ("got status %d" % (field))
+
+def add_device_callback (bt, name, clsid):
+	print ("got device %s (%d)" % (name, clsid))
+
+def device_name_callback (bt, device, name):
+	print ("device %s is called %s" % (device, name))
+
+def add_device_service_callback (bt, addr, name, clsid, channel):
+	print ("device %s (%s) has service %d channel %d" % (addr, name, clsid, channel))
+
+bt = btctl.Controller()
+bt.connect("status_change", status_callback);
+bt.connect("add_device", add_device_callback);
+bt.connect("device_name", device_name_callback);
+bt.connect("add_device_service", add_device_service_callback);
+
+if not bt.is_initialised():
+  print ("No device to initialise")
+  sys.exit (1)
+
+bt.list_rfcomm_connections()
+bt.discover_devices();
+
diff -urNp libbtctl-0.8.2/src/btobex.c devel/src/btobex.c
--- libbtctl-0.8.2/src/btobex.c	2006-01-29 16:24:48.000000000 +0100
+++ devel/src/btobex.c	2007-07-12 14:25:15.000000000 +0200
@@ -178,7 +178,7 @@ btctl_obex_init (BtctlObex *bo)
  * Return value: a pointer to the controller object.
  **/
 BtctlObex*
-btctl_obex_new()
+btctl_obex_new(void)
 {
 	return BTCTL_OBEX (g_object_new (btctl_obex_get_type(), NULL));
 }
diff -urNp libbtctl-0.8.2/src/btobex-client.c devel/src/btobex-client.c
--- libbtctl-0.8.2/src/btobex-client.c	2005-06-12 14:48:49.000000000 +0200
+++ devel/src/btobex-client.c	2007-07-12 14:25:15.000000000 +0200
@@ -50,6 +50,7 @@ enum {
 	COMPLETE_SIGNAL,
 	ERROR_SIGNAL,
 	CONNECTED_SIGNAL,
+	DISCONNECTED_SIGNAL,
 	LAST_SIGNAL
 };
 
@@ -103,6 +104,15 @@ btctl_obex_client_class_init (BtctlObexC
 			btctl_marshal_VOID__STRING,
 			G_TYPE_NONE, 1, G_TYPE_STRING);
 
+	btctl_obex_client_signals[DISCONNECTED_SIGNAL] =
+		g_signal_new ("disconnected",
+			G_OBJECT_CLASS_TYPE(klass),
+			G_SIGNAL_RUN_FIRST,
+			G_STRUCT_OFFSET(BtctlObexClientClass, disconnected),
+			NULL /* accu */, NULL,
+			btctl_marshal_VOID__STRING,
+			G_TYPE_NONE, 1, G_TYPE_STRING);
+
 	object_class->finalize = btctl_obex_client_finalize;
 
 	klass->progress = NULL;
@@ -167,6 +177,26 @@ btctl_obex_client_new_and_connect (gchar
 	return bo;
 }
 
+/**
+ * btctl_obex_client_disconnect:
+ * @bo: Bluetooth OBEX client object.
+ *
+ * Disconnect a connected Bluetooth client.  On successful completion
+ * of this, the #disconnected signal will be emitted.
+ *
+ * Return value: boolean, true if the disconnect request was sent.
+ **/
+gboolean
+btctl_obex_client_disconnect (BtctlObexClient *bo)
+{
+	g_return_val_if_fail (bo != NULL, FALSE);
+	g_return_val_if_fail (bo->source && bo->source->initialised, FALSE);
+
+	btctl_obexclient_source_disconnect (bo->source);
+
+	return TRUE;
+}
+
 static void
 btctl_obex_client_finalize(GObject *obj)
 {
@@ -213,6 +243,14 @@ btctl_obex_client_emit_connected (BtctlO
 }
 
 static void
+btctl_obex_client_emit_disconnected (BtctlObexClient *bo, gchar *bdaddr)
+{
+	g_signal_emit (G_OBJECT (bo),
+		btctl_obex_client_signals[DISCONNECTED_SIGNAL],
+		0, bdaddr);
+}
+
+static void
 btctl_obex_client_emit_error (BtctlObexClient *bo, gchar *bdaddr, guint reason)
 {
 	g_signal_emit (G_OBJECT (bo),
@@ -289,6 +327,9 @@ maincb (BtctlObexclientSource *src, Btct
 				case OBEX_CMD_CONNECT:
 					btctl_obex_client_emit_connected (bo, src->peer_name);
 					break;
+				case OBEX_CMD_DISCONNECT:
+					btctl_obex_client_emit_disconnected (bo, src->peer_name);
+					break;
 			}
 			break;
 		case OBEX_EV_PROGRESS:
diff -urNp libbtctl-0.8.2/src/btobex-client.h devel/src/btobex-client.h
--- libbtctl-0.8.2/src/btobex-client.h	2004-06-04 02:44:27.000000000 +0200
+++ devel/src/btobex-client.h	2007-07-12 14:25:15.000000000 +0200
@@ -51,10 +51,11 @@ struct _BtctlObexClient
 struct _BtctlObexClientClass
 {
   GObjectClass	parent_class;
-  void (* progress) (BtctlObexClient *bc, gchar *bdaddr);
-  void (* complete) (BtctlObexClient *bc, gchar *bdaddr);
-  void (* error) (BtctlObexClient *bc, gchar *bdaddr, guint code);
-  void (* connected) (BtctlObexClient *bc, gchar *bdaddr);
+  void (* progress) (BtctlObexClient *bc, const gchar *bdaddr);
+  void (* complete) (BtctlObexClient *bc, const gchar *bdaddr);
+  void (* error) (BtctlObexClient *bc, const gchar *bdaddr, guint code);
+  void (* connected) (BtctlObexClient *bc, const gchar *bdaddr);
+  void (* disconnected) (BtctlObexClient *bc, const gchar *bdaddr);
 };
 
 /* Gtk housekeeping methods */
@@ -65,6 +66,7 @@ BtctlObexClient* btctl_obex_client_new	(
 /* public methods */
 
 BtctlObexClient* btctl_obex_client_new_and_connect (gchar *bdaddr, guint channel);
+gboolean btctl_obex_client_disconnect (BtctlObexClient *bo);
 gboolean btctl_obex_client_is_initialised (BtctlObexClient *bo);
 void btctl_obex_client_set_response (BtctlObexClient *bo, gboolean resp);
 gboolean btctl_obex_client_push_data (BtctlObexClient *bo, gchar *fname, const guchar * data, guint len);
diff -urNp libbtctl-0.8.2/src/btobex-client-test.py devel/src/btobex-client-test.py
--- libbtctl-0.8.2/src/btobex-client-test.py	1970-01-01 01:00:00.000000000 +0100
+++ devel/src/btobex-client-test.py	2007-07-12 14:25:15.000000000 +0200
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+
+import sys
+import btctl
+import gtk
+import gobject
+
+# example obex client in python
+
+def progress_callback (bo, bdaddr):
+    print ("got progress from %s" % (bdaddr))
+
+def error_callback (bo, bdaddr, err):
+    print ("got error %d from %s" % (err, bdaddr))
+
+def complete_callback (bo, bdaddr):
+    print ("transfer complete from %s" % (bdaddr))
+    gobject.idle_add (quit_me, bo)
+
+def connected_callback (bo, bdaddr):
+    print ("connected ok to %s" % (bdaddr))
+    gobject.idle_add (send_hello, bo)
+
+# idle handlers to perform functions
+
+def quit_me (bo):
+    gtk.main_quit ()
+
+def send_hello (bo):
+    bo.push_data ("hello.txt", "Hello, Python World!")
+
+bo = btctl.ObexClient("00:40:05:C1:4E:ED", 4)
+bo.connect("progress", progress_callback);
+bo.connect("error", error_callback);
+bo.connect("complete", complete_callback);
+bo.connect("connected", connected_callback);
+
+if not bo.is_initialised():
+  print ("Client not initialised")
+  sys.exit (1)
+
+
+
+gtk.main ()
diff -urNp libbtctl-0.8.2/src/btobex.h devel/src/btobex.h
--- libbtctl-0.8.2/src/btobex.h	2006-01-29 16:24:48.000000000 +0100
+++ devel/src/btobex.h	2007-07-12 14:25:15.000000000 +0200
@@ -50,13 +50,13 @@ struct _BtctlObex
 struct _BtctlObexClass
 {
   GObjectClass	parent_class;
-  void (* request_put) (BtctlObex *bc, gchar *bdaddr);
-  void (* put) (BtctlObex *bc, gchar *bdaddr, gchar *fname, gpointer data, guint len);
-  void (* progress) (BtctlObex *bc, gchar *bdaddr);
-  void (* complete) (BtctlObex *bc, gchar *bdaddr);
-  void (* error) (BtctlObex *bc, gchar *bdaddr, guint code);
-  void (* connect) (BtctlObex *bc, gchar *bdaddr);
-  void (* disconnect) (BtctlObex *bc, gchar *bdaddr);
+  void (* request_put) (BtctlObex *bc, const gchar *bdaddr);
+  void (* put) (BtctlObex *bc, const gchar *bdaddr, const gchar *fname, gpointer data, guint len);
+  void (* progress) (BtctlObex *bc, const gchar *bdaddr);
+  void (* complete) (BtctlObex *bc, const gchar *bdaddr);
+  void (* error) (BtctlObex *bc, const gchar *bdaddr, guint code);
+  void (* connect) (BtctlObex *bc, const gchar *bdaddr);
+  void (* disconnect) (BtctlObex *bc, const gchar *bdaddr);
 };
 
 /* Gtk housekeeping methods */
diff -urNp libbtctl-0.8.2/src/btobex-test.py devel/src/btobex-test.py
--- libbtctl-0.8.2/src/btobex-test.py	1970-01-01 01:00:00.000000000 +0100
+++ devel/src/btobex-test.py	2007-07-12 14:25:15.000000000 +0200
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+
+import os
+import sys
+import btctl
+import gtk
+
+# example obex server in python
+
+def progress_callback (bo, bdaddr):
+    print ("got progress from %s" % (bdaddr))
+
+def request_put_callback (bo, bdaddr):
+    print ("device %s wants to send a file" % (bdaddr))
+    bo.set_response (True)
+
+def put_callback (bo, bdaddr, fname, body, timestamp):
+    print ("device %s sent a file" % (bdaddr))
+    print "Filename %s, timestamp %d " % (fname, timestamp)
+    f = open("/tmp" + os.sep + fname,'wb')
+    f.write(body)
+    f.close()
+    print "File saved in /tmp" + os.sep + fname
+    bo.set_response (True)
+
+def error_callback (bo, bdaddr, err):
+    print ("got error %d from %s" % (err, bdaddr))
+
+def complete_callback (bo, bdaddr):
+    print ("transfer complete from %s" % (bdaddr))
+
+bo = btctl.Obex()
+bo.connect("progress", progress_callback);
+bo.connect("request-put", request_put_callback);
+bo.connect("put", put_callback);
+bo.connect("error", error_callback);
+bo.connect("complete", complete_callback);
+
+if not bo.is_initialised():
+  print ("Server not initialised")
+  sys.exit (1)
+
+print "Send me files. Hit Ctrl-C to terminate."
+gtk.main ()
diff -urNp libbtctl-0.8.2/src/obex-server-source.c devel/src/obex-server-source.c
--- libbtctl-0.8.2/src/obex-server-source.c	2006-08-23 00:40:57.000000000 +0200
+++ devel/src/obex-server-source.c	2007-07-12 14:25:15.000000000 +0200
@@ -189,6 +189,10 @@ obex_event (obex_t *handle, obex_object_
             invoke_callback (s, event, 0, obj);
             break;
 
+	case OBEX_EV_REQCHECK:
+	    /* g_warning ("OBEX_EV_REQCHECK"); */
+	    break;
+
         default:
             g_warning ("Unhandled OBEX event %d", event);
             break;


Index: libbtctl.spec
===================================================================
RCS file: /cvs/dist/rpms/libbtctl/FC-6/libbtctl.spec,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- libbtctl.spec	26 Jun 2007 12:20:31 -0000	1.44
+++ libbtctl.spec	18 Jul 2007 11:38:52 -0000	1.45
@@ -8,7 +8,7 @@
 Summary: Library for the GNOME Bluetooth Subsystem
 Name: libbtctl
 Version: 0.6.0
-Release: 9.2%{?dist}
+Release: 9.3%{?dist}
 License: GPL
 Group: System Environment/Libraries
 URL: http://usefulinc.com/software/gnome-bluetooth 
@@ -28,6 +28,7 @@
 Patch2: libbtctl-0.4.1-pydir.patch
 Patch3: libbtctl-0.6.0-crash.patch
 Patch4: libbtctl-0.6.0-print.patch
+Patch5: libbtctl-0.6.0-inquiry_with_rssi.patch
 
 %description
 Library for the GNOME Bluetooth Subsystem
@@ -51,6 +52,7 @@
 %patch2 -p1 -b .pydir
 #%patch3 -p1 -b .crash
 %patch4 -p1 -b .print
+%patch5 -p1 -b .inquiryrssi
 aclocal
 automake -a
 intltoolize -c -f
@@ -106,6 +108,11 @@
 %endif
 
 %changelog
+* Wed Jul 18 2007 Ondrej Vasik <ovasik at redhat.com> - 0.6.0.9.3
+- backported inquiry_result_with_rssi from 0.9.0(scan devices 
+- functionality of gnome-obex-send) - will keep old version 
+- because of dependencies (gnome-bluetooth)
+
 * Tue Jun 26 2007 Ondrej Vasik <ovasik at redhat.com> - 0.6.0-9.2
 - added dist flag, fixed wrong sources in cvs(causes troubles
 - with gnome-bluetooth when used rpm compiled from them)




More information about the fedora-cvs-commits mailing list