From d034b7bb2a396207b2656b55a89e905a97557801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Sat, 8 Feb 2014 01:51:01 +0100 Subject: [PATCH] Enhance reliability After a reboot to Windows, which had applied a different configuration, I wasn't successful in reapplying the old settings from within Linux in a reliable way so that they would be loaded by the device on the next reconnect. Writing the configuration twice in a row seemed to help. This also seems to work. There might be some timing or what not behind the issue, I don't know. The GUI tool is a bit prone to quitting on LIBUSB_ERROR_PIPE on my system at the moment. Not very user-friendly. But I'm tired of inspecting it already, unplugging and re-plugging in the mouse all the time like an idiot... --- README | 2 +- sensei-raw-ctl.c | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/README b/README index 3cd16b6..23de2f8 100644 --- a/README +++ b/README @@ -28,7 +28,7 @@ $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr # make install Note that there's no "make uninstall" and the GUI needs to be installed in the -right location to work correctly. +right location in order to work correctly. If you don't want the GUI frontend, append -DBUILD_GUI=NO to the cmake command. The GUI also isn't going to be built if you don't have the GTK+ 3 development diff --git a/sensei-raw-ctl.c b/sensei-raw-ctl.c index 3c2dbb6..47b0c4f 100644 --- a/sensei-raw-ctl.c +++ b/sensei-raw-ctl.c @@ -189,8 +189,12 @@ static int sensei_set_intensity (libusb_device_handle *device, enum sensei_intensity intensity) { - unsigned char cmd[32] = { 0x05, 0x01, intensity }; - return sensei_send_command (device, cmd, sizeof cmd); + unsigned char cmd_1[32] = { 0x05, 0x01, intensity }; + unsigned char cmd_2[32] = { 0x05, 0x02, intensity }; + unsigned result = sensei_send_command (device, cmd_1, sizeof cmd_1); + if (result < 0) + return result; + return sensei_send_command (device, cmd_2, sizeof cmd_2); } /** Set pulsation speed. */ @@ -198,8 +202,12 @@ static int sensei_set_pulsation (libusb_device_handle *device, enum sensei_pulsation pulsation) { - unsigned char cmd[32] = { 0x07, 0x01, pulsation }; - return sensei_send_command (device, cmd, sizeof cmd); + unsigned char cmd_1[32] = { 0x07, 0x01, pulsation }; + unsigned char cmd_2[32] = { 0x07, 0x02, pulsation }; + unsigned result = sensei_send_command (device, cmd_1, sizeof cmd_1); + if (result < 0) + return result; + return sensei_send_command (device, cmd_2, sizeof cmd_2); } /** Set sensitivity in CPI. */