diff options
author | Alex Deymo <deymo@chromium.org> | 2013-05-08 17:37:56 -0700 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-05-10 10:16:48 +0300 |
commit | fa73398ae61e055f7e4bc53614fe2760ed102b7f (patch) | |
tree | 1eabb269cda5db2a13333d469c97771964f8b4c6 /plugins/wiimote.c | |
parent | 8a7c267e36a83245999dc374b627a889acd694f0 (diff) | |
download | bluez-fa73398ae61e055f7e4bc53614fe2760ed102b7f.tar.gz |
plugins: Extend the pin code callback with the call number
The plugin's pin code callback doesn't know about the pairing process.
It just provides a pin code based on the information provided to this
function. Although limited state could be added through other new
callbacks, this fix achieves this by providing more information to the
callback itself. The new argument "attempt" states the pin callback
attempt of the particular plugin for the current pairing of the device.
This allows a plugin to try different pincodes for the same device in
the same pairing process.
To signal that the plugin doesn't provide any pin code for the provided
device the current implementation returns 0 (an empty pin code).
Analogously, with this fix, a plugin should return 0 when it doesn't
have any other pin code to provide for the given device.
Diffstat (limited to 'plugins/wiimote.c')
-rw-r--r-- | plugins/wiimote.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/plugins/wiimote.c b/plugins/wiimote.c index 90d6d7bb4..12312b608 100644 --- a/plugins/wiimote.c +++ b/plugins/wiimote.c @@ -70,12 +70,17 @@ static const char *wii_names[] = { }; static ssize_t wii_pincb(struct btd_adapter *adapter, struct btd_device *device, - char *pinbuf, gboolean *display) + char *pinbuf, gboolean *display, unsigned int attempt) { uint16_t vendor, product; char addr[18], name[25]; unsigned int i; + /* Only try the pin code once per device. If it's not correct then it's + * an unknown device. */ + if (attempt > 1) + return 0; + ba2str(device_get_address(device), addr); vendor = btd_device_get_vendor(device); |