mirror of
https://github.com/ndeadly/MissionControl
synced 2025-02-16 21:28:25 +00:00
bluetooth-mitm: add crude dualshock4 rumble
This commit is contained in:
parent
1f2d0dc6ba
commit
d9550e2292
2 changed files with 21 additions and 3 deletions
|
@ -46,6 +46,12 @@ namespace ams::controller {
|
|||
return ams::ResultSuccess();
|
||||
}
|
||||
|
||||
Result Dualshock4Controller::SetVibration(const SwitchRumbleData *left, const SwitchRumbleData *right) {
|
||||
m_rumble_state.amp_motor_left = left->low_band_amp;
|
||||
m_rumble_state.amp_motor_right = right->high_band_amp;
|
||||
return this->PushRumbleLedState();
|
||||
}
|
||||
|
||||
Result Dualshock4Controller::SetPlayerLed(uint8_t led_mask) {
|
||||
uint8_t player_number;
|
||||
R_TRY(LedsMaskToPlayerNumber(led_mask, &player_number));
|
||||
|
@ -147,7 +153,10 @@ namespace ams::controller {
|
|||
}
|
||||
|
||||
Result Dualshock4Controller::PushRumbleLedState(void) {
|
||||
Dualshock4OutputReport0x11 report = {0xa2, 0x11, 0xc0, 0x20, 0xf3, 0x04, 0x00, 0x00, 0x00, m_led_colour.r, m_led_colour.g, m_led_colour.b};
|
||||
Dualshock4OutputReport0x11 report = {0xa2, 0x11, 0xc0, 0x20, 0xf3, 0x04, 0x00,
|
||||
m_rumble_state.amp_motor_right, m_rumble_state.amp_motor_left,
|
||||
m_led_colour.r, m_led_colour.g, m_led_colour.b
|
||||
};
|
||||
report.crc = crc32Calculate(report.data, sizeof(report.data));
|
||||
|
||||
s_output_report.size = sizeof(report) - 1;
|
||||
|
|
|
@ -62,6 +62,11 @@ namespace ams::controller {
|
|||
uint8_t counter : 6;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct Dualshock4RumbleData {
|
||||
uint8_t amp_motor_left;
|
||||
uint8_t amp_motor_right;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct Dualshock4OutputReport0x11 {
|
||||
struct {
|
||||
uint8_t data[75];
|
||||
|
@ -125,12 +130,15 @@ namespace ams::controller {
|
|||
};
|
||||
|
||||
Dualshock4Controller(const bluetooth::Address *address)
|
||||
: EmulatedSwitchController(address), m_led_colour({0, 0, 0}) { };
|
||||
: EmulatedSwitchController(address)
|
||||
, m_led_colour({0, 0, 0})
|
||||
, m_rumble_state({0, 0}) { };
|
||||
|
||||
Result Initialize(void);
|
||||
Result SetVibration(const SwitchRumbleData *left, const SwitchRumbleData *right);
|
||||
Result SetPlayerLed(uint8_t led_mask);
|
||||
Result SetLightbarColour(RGBColour colour);
|
||||
|
||||
|
||||
void UpdateControllerState(const bluetooth::HidReport *report);
|
||||
|
||||
private:
|
||||
|
@ -142,6 +150,7 @@ namespace ams::controller {
|
|||
Result PushRumbleLedState(void);
|
||||
|
||||
RGBColour m_led_colour;
|
||||
Dualshock4RumbleData m_rumble_state;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue