mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
Store rumble value in local buffer, so the rumble is not affected when setting the LEDs
Fixes #186
This commit is contained in:
parent
f90ba2c16d
commit
627c0ebc77
2 changed files with 28 additions and 22 deletions
25
PS3BT.cpp
25
PS3BT.cpp
|
@ -528,12 +528,13 @@ void PS3BT::setAllOff() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PS3BT::setRumbleOff() {
|
void PS3BT::setRumbleOff() {
|
||||||
HIDBuffer[3] = 0x00;
|
uint8_t rumbleBuf[HID_BUFFERSIZE];
|
||||||
HIDBuffer[4] = 0x00;
|
memcpy(rumbleBuf, HIDBuffer, HID_BUFFERSIZE);
|
||||||
HIDBuffer[5] = 0x00;
|
rumbleBuf[3] = 0x00;
|
||||||
HIDBuffer[6] = 0x00;
|
rumbleBuf[4] = 0x00;
|
||||||
|
rumbleBuf[5] = 0x00;
|
||||||
HID_Command(HIDBuffer, HID_BUFFERSIZE);
|
rumbleBuf[6] = 0x00;
|
||||||
|
HID_Command(rumbleBuf, HID_BUFFERSIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PS3BT::setRumbleOn(RumbleEnum mode) {
|
void PS3BT::setRumbleOn(RumbleEnum mode) {
|
||||||
|
@ -546,11 +547,13 @@ void PS3BT::setRumbleOn(RumbleEnum mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PS3BT::setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower) {
|
void PS3BT::setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower) {
|
||||||
HIDBuffer[3] = rightDuration;
|
uint8_t rumbleBuf[HID_BUFFERSIZE];
|
||||||
HIDBuffer[4] = rightPower;
|
memcpy(rumbleBuf, HIDBuffer, HID_BUFFERSIZE);
|
||||||
HIDBuffer[5] = leftDuration;
|
rumbleBuf[3] = rightDuration;
|
||||||
HIDBuffer[6] = leftPower;
|
rumbleBuf[4] = rightPower;
|
||||||
HID_Command(HIDBuffer, HID_BUFFERSIZE);
|
rumbleBuf[5] = leftDuration;
|
||||||
|
rumbleBuf[6] = leftPower;
|
||||||
|
HID_Command(rumbleBuf, HID_BUFFERSIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PS3BT::setLedRaw(uint8_t value) {
|
void PS3BT::setLedRaw(uint8_t value) {
|
||||||
|
|
25
PS3USB.cpp
25
PS3USB.cpp
|
@ -408,12 +408,13 @@ void PS3USB::setAllOff() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PS3USB::setRumbleOff() {
|
void PS3USB::setRumbleOff() {
|
||||||
writeBuf[1] = 0x00;
|
uint8_t rumbleBuf[EP_MAXPKTSIZE];
|
||||||
writeBuf[2] = 0x00; // Low mode off
|
memcpy(rumbleBuf, writeBuf, EP_MAXPKTSIZE);
|
||||||
writeBuf[3] = 0x00;
|
rumbleBuf[1] = 0x00;
|
||||||
writeBuf[4] = 0x00; // High mode off
|
rumbleBuf[2] = 0x00; // Low mode off
|
||||||
|
rumbleBuf[3] = 0x00;
|
||||||
PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
|
rumbleBuf[4] = 0x00; // High mode off
|
||||||
|
PS3_Command(rumbleBuf, PS3_REPORT_BUFFER_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PS3USB::setRumbleOn(RumbleEnum mode) {
|
void PS3USB::setRumbleOn(RumbleEnum mode) {
|
||||||
|
@ -428,11 +429,13 @@ void PS3USB::setRumbleOn(RumbleEnum mode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PS3USB::setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower) {
|
void PS3USB::setRumbleOn(uint8_t rightDuration, uint8_t rightPower, uint8_t leftDuration, uint8_t leftPower) {
|
||||||
writeBuf[1] = rightDuration;
|
uint8_t rumbleBuf[EP_MAXPKTSIZE];
|
||||||
writeBuf[2] = rightPower;
|
memcpy(rumbleBuf, writeBuf, EP_MAXPKTSIZE);
|
||||||
writeBuf[3] = leftDuration;
|
rumbleBuf[1] = rightDuration;
|
||||||
writeBuf[4] = leftPower;
|
rumbleBuf[2] = rightPower;
|
||||||
PS3_Command(writeBuf, PS3_REPORT_BUFFER_SIZE);
|
rumbleBuf[3] = leftDuration;
|
||||||
|
rumbleBuf[4] = leftPower;
|
||||||
|
PS3_Command(rumbleBuf, PS3_REPORT_BUFFER_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PS3USB::setLedRaw(uint8_t value) {
|
void PS3USB::setLedRaw(uint8_t value) {
|
||||||
|
|
Loading…
Reference in a new issue