summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2005-11-06 21:24:05 +0000
committerMarcel Holtmann <marcel@holtmann.org>2005-11-06 21:24:05 +0000
commite228331a074d749719048ea55b06a05afb9137dd (patch)
treebd53b4afdbd4ca1e02ce73d82df34085eab991bf
parent520068bb1f73ea1a82b416461feecccded1ffc78 (diff)
Some parameters of the inquiry must be uint16
-rwxr-xr-xhcid/dbus-test2
-rw-r--r--hcid/dbus.c22
-rw-r--r--hcid/dbus.h4
3 files changed, 14 insertions, 14 deletions
diff --git a/hcid/dbus-test b/hcid/dbus-test
index c931fa85..ddd3c5f3 100755
--- a/hcid/dbus-test
+++ b/hcid/dbus-test
@@ -222,7 +222,7 @@ class Tester:
length, min, max = self.cmd_args
self.listen = True
try:
- self.ctl.PeriodicInquiry(dbus.Byte(length), dbus.Byte(min), dbus.Byte(max))
+ self.ctl.PeriodicInquiry(dbus.Byte(length), dbus.UInt16(min), dbus.UInt16(max))
except dbus.DBusException, e:
print 'Sending %s failed: %s' % (self.cmd, e)
sys.exit(1)
diff --git a/hcid/dbus.c b/hcid/dbus.c
index 0799e0ca..44414d2a 100644
--- a/hcid/dbus.c
+++ b/hcid/dbus.c
@@ -1303,12 +1303,11 @@ static DBusMessage* handle_periodic_inq_req(DBusMessage *msg, void *data)
{
write_inquiry_mode_cp inq_mode;
periodic_inquiry_cp inq_param;
- DBusMessageIter iter;
DBusMessage *reply = NULL;
struct hci_dbus_data *dbus_data = data;
uint8_t length;
- uint8_t max_period;
- uint8_t min_period;
+ uint16_t max_period;
+ uint16_t min_period;
int dd = -1;
dd = hci_open_dev(dbus_data->dev_id);
@@ -1318,12 +1317,13 @@ static DBusMessage* handle_periodic_inq_req(DBusMessage *msg, void *data)
goto failed;
}
- dbus_message_iter_init(msg, &iter);
- dbus_message_iter_get_basic(&iter, &length);
- dbus_message_iter_next(&iter);
- dbus_message_iter_get_basic(&iter, &min_period);
- dbus_message_iter_next(&iter);
- dbus_message_iter_get_basic(&iter, &max_period);
+ dbus_message_get_args(msg, NULL,
+ DBUS_TYPE_BYTE, &length,
+ DBUS_TYPE_UINT16, &min_period,
+ DBUS_TYPE_UINT16, &max_period,
+ DBUS_TYPE_INVALID);
+
+ syslog(LOG_DEBUG, "%02X %04X %04X", length, min_period, max_period);
if (length >= min_period || min_period >= max_period) {
reply = bluez_new_failure_msg(msg, BLUEZ_EDBUS_WRONG_PARAM);
@@ -1333,8 +1333,8 @@ static DBusMessage* handle_periodic_inq_req(DBusMessage *msg, void *data)
inq_param.num_rsp = 100;
inq_param.length = length;
- inq_param.max_period = max_period;
- inq_param.min_period = min_period;
+ inq_param.max_period = htobs(max_period);
+ inq_param.min_period = htobs(min_period);
/* General/Unlimited Inquiry Access Code (GIAC) */
inq_param.lap[0] = 0x33;
diff --git a/hcid/dbus.h b/hcid/dbus.h
index bf344bf7..aee5b416 100644
--- a/hcid/dbus.h
+++ b/hcid/dbus.h
@@ -166,8 +166,8 @@
#define HCI_PERIODIC_INQ_SIGNATURE DBUS_TYPE_BYTE_AS_STRING \
- DBUS_TYPE_BYTE_AS_STRING \
- DBUS_TYPE_BYTE_AS_STRING \
+ DBUS_TYPE_UINT16_AS_STRING \
+ DBUS_TYPE_UINT16_AS_STRING \
__END_SIG__
#define HCI_CANCEL_PERIODIC_INQ_SIGNATURE __END_SIG__