diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c
index b8fe287..45fa170 100644
--- a/plugins/sixaxis.c
+++ b/plugins/sixaxis.c
return FALSE;
}
-static void setup_device(int fd, int index, struct btd_adapter *adapter)
+static bool setup_device(int fd, int index, struct btd_adapter *adapter)
{
char device_addr[18], master_addr[18], adapter_addr[18];
bdaddr_t device_bdaddr, master_bdaddr;
struct btd_device *device;
if (get_device_bdaddr(fd, &device_bdaddr) < 0)
- return;
+ return false;
if (get_master_bdaddr(fd, &master_bdaddr) < 0)
- return;
+ return false;
/* This can happen if controller was plugged while already connected
- * eg. to charge up battery */
+ * eg. to charge up battery.
+ * Don't set LEDs in that case, hence return false */
device = btd_adapter_find_device(adapter, &device_bdaddr);
if (device && btd_device_is_connected(device))
- return;
+ return false;
adapter_bdaddr = btd_adapter_get_address(adapter);
if (bacmp(adapter_bdaddr, &master_bdaddr)) {
if (set_master_bdaddr(fd, adapter_bdaddr) < 0)
- return;
+ return false;
}
ba2str(&device_bdaddr, device_addr);
if (g_slist_find_custom(btd_device_get_uuids(device), HID_UUID,
(GCompareFunc)strcasecmp)) {
DBG("device %s already known, skipping", device_addr);
- return;
+ return true;
}
info("sixaxis: setting up new device");
devices[index].pid, devices[index].version);
btd_device_set_temporary(device, FALSE);
btd_device_set_trusted(device, TRUE);
+
+ return true;
}
static int get_js_number(struct udev_device *udevice)
switch (bus) {
case BUS_USB:
- setup_device(fd, index, adapter);
- break;
+ if (!setup_device(fd, index, adapter))
+ break;
+
+ /* fall through */
case BUS_BLUETOOTH:
/* wait for events before setting leds */
g_io_add_watch(io, G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,