mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-04-08 07:05:40 +12:00
[HID] Implement DisableAccelerometer/DisableGyroscopeLow
This commit is contained in:
parent
f262cf2836
commit
14356902ab
2 changed files with 22 additions and 0 deletions
|
@ -63,6 +63,8 @@ class HIDService {
|
|||
MAKE_LOG_FUNCTION(log, hidLogger)
|
||||
|
||||
// Service commands
|
||||
void disableAccelerometer(u32 messagePointer);
|
||||
void disableGyroscopeLow(u32 messagePointer);
|
||||
void enableAccelerometer(u32 messagePointer);
|
||||
void enableGyroscopeLow(u32 messagePointer);
|
||||
void getGyroscopeLowCalibrateParam(u32 messagePointer);
|
||||
|
|
|
@ -7,7 +7,9 @@ namespace HIDCommands {
|
|||
enum : u32 {
|
||||
GetIPCHandles = 0x000A0000,
|
||||
EnableAccelerometer = 0x00110000,
|
||||
DisableAccelerometer = 0x00120000,
|
||||
EnableGyroscopeLow = 0x00130000,
|
||||
DisableGyroscopeLow = 0x00140000,
|
||||
GetGyroscopeLowRawToDpsCoefficient = 0x00150000,
|
||||
GetGyroscopeLowCalibrateParam = 0x00160000
|
||||
};
|
||||
|
@ -36,6 +38,8 @@ void HIDService::reset() {
|
|||
void HIDService::handleSyncRequest(u32 messagePointer) {
|
||||
const u32 command = mem.read32(messagePointer);
|
||||
switch (command) {
|
||||
case HIDCommands::DisableAccelerometer: disableAccelerometer(messagePointer); break;
|
||||
case HIDCommands::DisableGyroscopeLow: disableGyroscopeLow(messagePointer); break;
|
||||
case HIDCommands::EnableAccelerometer: enableAccelerometer(messagePointer); break;
|
||||
case HIDCommands::EnableGyroscopeLow: enableGyroscopeLow(messagePointer); break;
|
||||
case HIDCommands::GetGyroscopeLowCalibrateParam: getGyroscopeLowCalibrateParam(messagePointer); break;
|
||||
|
@ -53,6 +57,14 @@ void HIDService::enableAccelerometer(u32 messagePointer) {
|
|||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
void HIDService::disableAccelerometer(u32 messagePointer) {
|
||||
log("HID::DisableAccelerometer\n");
|
||||
accelerometerEnabled = false;
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x12, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
void HIDService::enableGyroscopeLow(u32 messagePointer) {
|
||||
log("HID::EnableGyroscopeLow\n");
|
||||
gyroEnabled = true;
|
||||
|
@ -61,6 +73,14 @@ void HIDService::enableGyroscopeLow(u32 messagePointer) {
|
|||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
void HIDService::disableGyroscopeLow(u32 messagePointer) {
|
||||
log("HID::DisableGyroscopeLow\n");
|
||||
gyroEnabled = false;
|
||||
|
||||
mem.write32(messagePointer, IPC::responseHeader(0x14, 1, 0));
|
||||
mem.write32(messagePointer + 4, Result::Success);
|
||||
}
|
||||
|
||||
void HIDService::getGyroscopeLowCalibrateParam(u32 messagePointer) {
|
||||
log("HID::GetGyroscopeLowCalibrateParam\n");
|
||||
constexpr s16 unit = 6700; // Approximately from Citra which took it from hardware
|
||||
|
|
Loading…
Add table
Reference in a new issue