From: Jose Vasconcellos <jose@vasmac.com>
To: bluez-devel@lists.sourceforge.net
Subject: [Bluez-devel] hcid dbus patches
Date: Fri, 08 Sep 2006 07:29:10 -0400 [thread overview]
Message-ID: <45015406.60208@vasmac.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 500 bytes --]
Hello,
Here are a couple of patches that implement the following
commands in dbus-test:
GetRemoteClass
GetRemoteServiceHandles
GetRemoteServiceRecord
This required modifications to dbus-sdp.c. The problem was
that the call to dbus_message_get_args in this file used a NULL
pointer for the error structure. This patch adds a pointer in
the same way that dbus-adapter.c calls dbus_messsage_get_args.
The end result is that both GetRemoteService* calls now seem
to work.
Regards,
Jose Vasconcellos
[-- Attachment #2: dbus-test.patch --]
[-- Type: text/x-patch, Size: 2760 bytes --]
--- dbus-test 2006-08-09 16:10:50.000000000 -0400
+++ ../../../bluez-utils-3.5/hcid/dbus-test 2006-09-08 07:00:56.000000000 -0400
@@ -55,6 +55,8 @@
"GetEncryptionKeySize",
"DiscoverDevices",
"DiscoverDevicesWithoutNameResolving",
+ "GetRemoteServiceHandles",
+ "GetRemoteServiceRecord",
"CancelDiscovery" ]
dev_signals = [ "ModeChanged",
"NameChanged",
@@ -303,9 +305,9 @@
print self.device.GetRemoteCompany(self.cmd_args[0])
else:
print 'Usage: %s -i <dev> GetRemoteCompany address' % self.name
- elif self.cmd == 'GetRemoteAlias':
+ elif self.cmd == 'GetRemoteClass':
if len(self.cmd_args) == 1:
- print self.device.GetRemoteAlias(self.cmd_args[0])
+ print self.device.GetRemoteClass(self.cmd_args[0])
else:
print 'Usage: %s -i <dev> GetRemoteAlias address' % self.name
elif self.cmd == 'GetRemoteMajorClass':
@@ -323,6 +325,11 @@
print self.device.GetRemoteServiceClasses(self.cmd_args[0])
else:
print 'Usage: %s -i <dev> GetRemoteServiceClasses address' % self.name
+ elif self.cmd == 'GetRemoteAlias':
+ if len(self.cmd_args) == 1:
+ print self.device.GetRemoteAlias(self.cmd_args[0])
+ else:
+ print 'Usage: %s -i <dev> GetRemoteAlias address' % self.name
elif self.cmd == 'SetRemoteAlias':
if len(self.cmd_args) == 2:
self.device.SetRemoteAlias(self.cmd_args[0], self.cmd_args[1])
@@ -386,6 +393,16 @@
print self.device.DiscoverDevices()
elif self.cmd == 'DiscoverDevicesWithoutNameResolving':
print self.device.DiscoverDevicesWithoutNameResolving()
+ elif self.cmd == 'GetRemoteServiceHandles':
+ if len(self.cmd_args) == 1:
+ print self.device.GetRemoteServiceHandles(self.cmd_args[0])
+ else:
+ print 'Usage: %s -i <dev> GetRemoteServiceHandles address service' % self.name
+ elif self.cmd == 'GetRemoteServiceRecord':
+ if len(self.cmd_args) == 2:
+ print self.device.GetRemoteServiceRecord(self.cmd_args[0],dbus.UInt32(self.cmd_args[1]))
+ else:
+ print 'Usage: %s -i <dev> GetRemoteServiceRecord address service handle' % self.name
else:
# FIXME: remove at future version
print 'Script Error: Method %s not found. Maybe a mispelled word.' % (self.cmd_args)
[-- Attachment #3: dbus-sdp.patch --]
[-- Type: text/x-patch, Size: 6174 bytes --]
--- dbus-sdp.c 2006-09-07 08:17:18.000000000 -0400
+++ ../../../bluez-utils-3.5/hcid/dbus-sdp.c 2006-09-08 07:11:28.000000000 -0400
@@ -444,8 +444,10 @@
int sk, err = 0;
socklen_t len;
const char *dst;
+ DBusError dbuserr;
- dbus_message_get_args(ctxt->rq, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(ctxt->rq, &dbuserr,
DBUS_TYPE_STRING, &dst,
DBUS_TYPE_INVALID);
@@ -481,6 +483,7 @@
DBusMessageIter iter, array_iter;
const char *dst;
int i, scanned;
+ DBusError dbuserr;
if (!ctxt)
return;
@@ -497,7 +500,8 @@
return;
}
- dbus_message_get_args(ctxt->rq, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(ctxt->rq, &dbuserr,
DBUS_TYPE_STRING, &dst,
DBUS_TYPE_INVALID);
@@ -540,6 +544,7 @@
uint8_t *pdata;
uint8_t dataType = 0;
int scanned, seqlen = 0;
+ DBusError dbuserr;
if (!ctxt)
return;
@@ -556,7 +561,8 @@
return;
}
- dbus_message_get_args(ctxt->rq, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(ctxt->rq, &dbuserr,
DBUS_TYPE_STRING, &dst,
DBUS_TYPE_INVALID);
@@ -612,6 +618,7 @@
const char *dst;
uint8_t *pdata;
int scanned = 0;
+ DBusError dbuserr;
#ifdef SERVICE_SEARCH_ATTR_REQ
uint8_t dataType = 0;
int seqlen = 0;
@@ -638,7 +645,8 @@
return;
}
- dbus_message_get_args(ctxt->rq, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(ctxt->rq, &dbuserr,
DBUS_TYPE_STRING, &dst,
DBUS_TYPE_INVALID);
@@ -833,6 +841,7 @@
uint32_t range = 0x0000ffff;
const char *dst;
uint32_t handle;
+ DBusError dbuserr;
int err = 0;
if (sdp_set_notify(ctxt->session, remote_svc_rec_completed_cb, ctxt) < 0) {
@@ -841,7 +850,8 @@
goto fail;
}
- dbus_message_get_args(ctxt->rq, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(ctxt->rq, &dbuserr,
DBUS_TYPE_STRING, &dst,
DBUS_TYPE_UINT32, &handle,
DBUS_TYPE_INVALID);
@@ -866,13 +876,20 @@
struct hci_dbus_data *dbus_data = data;
const char *dst;
uint32_t handle;
+ DBusError dbuserr;
int err = 0;
- if (!dbus_message_get_args(msg, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(msg, &dbuserr,
DBUS_TYPE_STRING, &dst,
DBUS_TYPE_UINT32, &handle,
- DBUS_TYPE_INVALID))
+ DBUS_TYPE_INVALID);
+
+ if (dbus_error_is_set(&dbuserr)) {
+ error("Can't extract message arguments:%s", dbuserr.message);
+ dbus_error_free(&dbuserr);
return error_invalid_arguments(conn, msg);
+ }
if (find_pending_connect(dst))
return error_service_search_in_progress(conn, msg);
@@ -923,12 +940,19 @@
{
struct hci_dbus_data *dbus_data = data;
const char *dst;
+ DBusError dbuserr;
int err = 0;
- if (!dbus_message_get_args(msg, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(msg, &dbuserr,
DBUS_TYPE_STRING, &dst,
- DBUS_TYPE_INVALID))
+ DBUS_TYPE_INVALID);
+
+ if (dbus_error_is_set(&dbuserr)) {
+ error("Can't extract message arguments:%s", dbuserr.message);
+ dbus_error_free(&dbuserr);
return error_invalid_arguments(conn, msg);
+ }
if (find_pending_connect(dst))
return error_service_search_in_progress(conn, msg);
@@ -984,12 +1008,19 @@
{
struct hci_dbus_data *dbus_data = data;
const char *dst;
+ DBusError dbuserr;
int err = 0;
- if (!dbus_message_get_args(msg, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(msg, &dbuserr,
DBUS_TYPE_STRING, &dst,
- DBUS_TYPE_INVALID))
+ DBUS_TYPE_INVALID);
+
+ if (dbus_error_is_set(&dbuserr)) {
+ error("Can't extract message arguments:%s", dbuserr.message);
+ dbus_error_free(&dbuserr);
return error_invalid_arguments(conn, msg);
+ }
/* in progress is not working properly */
if (find_pending_connect(dst))
@@ -1062,15 +1093,22 @@
char identifier[MAX_IDENTIFIER_LEN];
const char *ptr = identifier;
const char *dst, *svc;
+ DBusError dbuserr;
int err = 0, nrec = 0;
uint32_t class;
uuid_t uuid;
- if (!dbus_message_get_args(msg, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(msg, &dbuserr,
DBUS_TYPE_STRING, &dst,
DBUS_TYPE_STRING, &svc,
- DBUS_TYPE_INVALID))
+ DBUS_TYPE_INVALID);
+
+ if (dbus_error_is_set(&dbuserr)) {
+ error("Can't extract message arguments:%s", dbuserr.message);
+ dbus_error_free(&dbuserr);
return error_invalid_arguments(conn, msg);
+ }
class = sdp_str2svclass(svc);
if (!class) {
@@ -1218,11 +1256,18 @@
char *ptr = uuid_str;
const char *identifier;
uint32_t handle;
+ DBusError dbuserr;
- if (!dbus_message_get_args(msg, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(msg, &dbuserr,
DBUS_TYPE_STRING, &identifier,
- DBUS_TYPE_INVALID))
+ DBUS_TYPE_INVALID);
+
+ if (dbus_error_is_set(&dbuserr)) {
+ error("Can't extract message arguments:%s", dbuserr.message);
+ dbus_error_free(&dbuserr);
return error_invalid_arguments(conn, msg);
+ }
if (str2identifier(identifier, address, &handle) != 0)
return error_invalid_arguments(conn, msg);
@@ -1266,11 +1311,18 @@
const char *identifier;
uuid_t *puuid;
uint32_t handle;
+ DBusError dbuserr;
- if (!dbus_message_get_args(msg, NULL,
+ dbus_error_init(&dbuserr);
+ dbus_message_get_args(msg, &dbuserr,
DBUS_TYPE_STRING, &identifier,
- DBUS_TYPE_INVALID))
+ DBUS_TYPE_INVALID);
+
+ if (dbus_error_is_set(&dbuserr)) {
+ error("Can't extract message arguments:%s", dbuserr.message);
+ dbus_error_free(&dbuserr);
return error_invalid_arguments(conn, msg);
+ }
if (str2identifier(identifier, address, &handle) != 0)
return error_invalid_arguments(conn, msg);
@@ -1312,11 +1364,13 @@
char identifier[MAX_IDENTIFIER_LEN];
const char *ptr = identifier;
bdaddr_t sba;
+ DBusError dbuserr;
int err = 0;
uint8_t channel;
owner = dbus_message_get_sender(msg);
+ dbus_error_init(&dbuserr);
if (!dbus_message_get_args(msg, NULL,
DBUS_TYPE_STRING, &name,
DBUS_TYPE_BYTE, &channel,
@@ -1367,11 +1421,13 @@
DBusMessage *reply;
const char *owner, *identifier;
bdaddr_t sba;
+ DBusError dbuserr;
int err = 0;
uint32_t handle;
owner = dbus_message_get_sender(msg);
+ DBusError dbuserr;
if (!dbus_message_get_args(msg, NULL,
DBUS_TYPE_STRING, &identifier,
DBUS_TYPE_INVALID))
[-- Attachment #4: Type: text/plain, Size: 373 bytes --]
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
[-- Attachment #5: Type: text/plain, Size: 164 bytes --]
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel
next reply other threads:[~2006-09-08 11:29 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-08 11:29 Jose Vasconcellos [this message]
2006-09-15 11:55 ` [Bluez-devel] hcid dbus patches Marcel Holtmann
2006-09-15 13:42 ` Jose Vasconcellos
2006-09-15 13:46 ` Marcel Holtmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45015406.60208@vasmac.com \
--to=jose@vasmac.com \
--cc=bluez-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox