blob: d0fbd29e2bc0006aa39bbd578a3ebc394d764a34 [file] [log] [blame]
From 1630cbe326460a89d5c342847b658a499484ced0 Mon Sep 17 00:00:00 2001
From: Scott James Remnant <scott@netsplit.com>
Date: Thu, 29 Mar 2012 14:04:14 -0700
Subject: [PATCH 05/13] Add display parameter to plugin pincode callback
Pass a display parameter to the plugin pincode callback, a plugin
may set this to TRUE to indicate the PIN it generates should be
displayed on the screen for entry into the remote device.
---
plugins/wiimote.c | 2 +-
src/adapter.c | 4 ++--
src/adapter.h | 4 ++--
src/event.c | 3 ++-
4 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/plugins/wiimote.c b/plugins/wiimote.c
index 1ae638b..43b6de3 100644
--- a/plugins/wiimote.c
+++ b/plugins/wiimote.c
@@ -56,7 +56,7 @@
*/
static ssize_t wii_pincb(struct btd_adapter *adapter, struct btd_device *device,
- char *pinbuf)
+ char *pinbuf, gboolean *display)
{
uint16_t vendor, product;
bdaddr_t sba, dba;
diff --git a/src/adapter.c b/src/adapter.c
index acb845e..ccf7991 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -3330,7 +3330,7 @@ void btd_adapter_unregister_pin_cb(struct btd_adapter *adapter,
}
ssize_t btd_adapter_get_pin(struct btd_adapter *adapter, struct btd_device *dev,
- char *pin_buf)
+ char *pin_buf, gboolean *display)
{
GSList *l;
btd_adapter_pin_cb_t cb;
@@ -3339,7 +3339,7 @@ ssize_t btd_adapter_get_pin(struct btd_adapter *adapter, struct btd_device *dev,
for (l = adapter->pin_callbacks; l != NULL; l = g_slist_next(l)) {
cb = l->data;
- ret = cb(adapter, dev, pin_buf);
+ ret = cb(adapter, dev, pin_buf, display);
if (ret > 0)
return ret;
}
diff --git a/src/adapter.h b/src/adapter.h
index ceebb97..aa66070 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -172,13 +172,13 @@ int btd_adapter_switch_offline(struct btd_adapter *adapter);
void btd_adapter_enable_auto_connect(struct btd_adapter *adapter);
typedef ssize_t (*btd_adapter_pin_cb_t) (struct btd_adapter *adapter,
- struct btd_device *dev, char *out);
+ struct btd_device *dev, char *out, gboolean *display);
void btd_adapter_register_pin_cb(struct btd_adapter *adapter,
btd_adapter_pin_cb_t cb);
void btd_adapter_unregister_pin_cb(struct btd_adapter *adapter,
btd_adapter_pin_cb_t cb);
ssize_t btd_adapter_get_pin(struct btd_adapter *adapter, struct btd_device *dev,
- char *pin_buf);
+ char *pin_buf, gboolean *display);
typedef void (*bt_hci_result_t) (uint8_t status, gpointer user_data);
diff --git a/src/event.c b/src/event.c
index 7d66b6d..d87b6a4 100644
--- a/src/event.c
+++ b/src/event.c
@@ -119,12 +119,13 @@ int btd_event_request_pin(bdaddr_t *sba, bdaddr_t *dba, gboolean secure)
struct btd_device *device;
char pin[17];
ssize_t pinlen;
+ gboolean display = FALSE;
if (!get_adapter_and_device(sba, dba, &adapter, &device, TRUE))
return -ENODEV;
memset(pin, 0, sizeof(pin));
- pinlen = btd_adapter_get_pin(adapter, device, pin);
+ pinlen = btd_adapter_get_pin(adapter, device, pin, &display);
if (pinlen > 0 && (!secure || pinlen == 16)) {
btd_adapter_pincode_reply(adapter, dba, pin, pinlen);
return 0;
--
1.7.7.3