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...
This commit is contained in:
2014-02-08 01:51:01 +01:00
parent 293a36e220
commit d034b7bb2a
2 changed files with 13 additions and 5 deletions

View File

@@ -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. */