buttplugio / buttplug-py

Python implementation of core message system and client for the Buttplug Sex Toy Protocol Standard
https://buttplug-py.docs.buttplug.io
Other
67 stars 10 forks source link

send_vibrate_cmd(float) only works with single-motor devices #11

Open Baguettedood opened 4 years ago

Baguettedood commented 4 years ago

Devices with multiple motors will not vibrate as expected when using send_vibrate_cmd(float). Instead, only the first motor of that device will vibrate.

Steps to reproduce:

  1. Connect a device with multiple motors (e.g. Lovense Edge)
  2. Perform send_vibrate_cmd(1.0) on that device.
  3. The first motor will vibrate while the second does not.

Expected behavior:

All motors will vibrate with the same intensity.

It appears to be because Line 255 of buttplug/client/client.py only sets the speed of the motor at index 0 and does not consider devices with multiple motors.

Workaround: Multiplying a list by the number of motors: e.g.

vibratorCount = dev.allowed_messages["VibrateCmd"].feature_count
intensity = [1.0] * vibratorCount
await dev.send_vibrate_cmd(intensity)