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)
|
MAKE_LOG_FUNCTION(log, hidLogger)
|
||||||
|
|
||||||
// Service commands
|
// Service commands
|
||||||
|
void disableAccelerometer(u32 messagePointer);
|
||||||
|
void disableGyroscopeLow(u32 messagePointer);
|
||||||
void enableAccelerometer(u32 messagePointer);
|
void enableAccelerometer(u32 messagePointer);
|
||||||
void enableGyroscopeLow(u32 messagePointer);
|
void enableGyroscopeLow(u32 messagePointer);
|
||||||
void getGyroscopeLowCalibrateParam(u32 messagePointer);
|
void getGyroscopeLowCalibrateParam(u32 messagePointer);
|
||||||
|
|
|
@ -7,7 +7,9 @@ namespace HIDCommands {
|
||||||
enum : u32 {
|
enum : u32 {
|
||||||
GetIPCHandles = 0x000A0000,
|
GetIPCHandles = 0x000A0000,
|
||||||
EnableAccelerometer = 0x00110000,
|
EnableAccelerometer = 0x00110000,
|
||||||
|
DisableAccelerometer = 0x00120000,
|
||||||
EnableGyroscopeLow = 0x00130000,
|
EnableGyroscopeLow = 0x00130000,
|
||||||
|
DisableGyroscopeLow = 0x00140000,
|
||||||
GetGyroscopeLowRawToDpsCoefficient = 0x00150000,
|
GetGyroscopeLowRawToDpsCoefficient = 0x00150000,
|
||||||
GetGyroscopeLowCalibrateParam = 0x00160000
|
GetGyroscopeLowCalibrateParam = 0x00160000
|
||||||
};
|
};
|
||||||
|
@ -36,6 +38,8 @@ void HIDService::reset() {
|
||||||
void HIDService::handleSyncRequest(u32 messagePointer) {
|
void HIDService::handleSyncRequest(u32 messagePointer) {
|
||||||
const u32 command = mem.read32(messagePointer);
|
const u32 command = mem.read32(messagePointer);
|
||||||
switch (command) {
|
switch (command) {
|
||||||
|
case HIDCommands::DisableAccelerometer: disableAccelerometer(messagePointer); break;
|
||||||
|
case HIDCommands::DisableGyroscopeLow: disableGyroscopeLow(messagePointer); break;
|
||||||
case HIDCommands::EnableAccelerometer: enableAccelerometer(messagePointer); break;
|
case HIDCommands::EnableAccelerometer: enableAccelerometer(messagePointer); break;
|
||||||
case HIDCommands::EnableGyroscopeLow: enableGyroscopeLow(messagePointer); break;
|
case HIDCommands::EnableGyroscopeLow: enableGyroscopeLow(messagePointer); break;
|
||||||
case HIDCommands::GetGyroscopeLowCalibrateParam: getGyroscopeLowCalibrateParam(messagePointer); break;
|
case HIDCommands::GetGyroscopeLowCalibrateParam: getGyroscopeLowCalibrateParam(messagePointer); break;
|
||||||
|
@ -53,6 +57,14 @@ void HIDService::enableAccelerometer(u32 messagePointer) {
|
||||||
mem.write32(messagePointer + 4, Result::Success);
|
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) {
|
void HIDService::enableGyroscopeLow(u32 messagePointer) {
|
||||||
log("HID::EnableGyroscopeLow\n");
|
log("HID::EnableGyroscopeLow\n");
|
||||||
gyroEnabled = true;
|
gyroEnabled = true;
|
||||||
|
@ -61,6 +73,14 @@ void HIDService::enableGyroscopeLow(u32 messagePointer) {
|
||||||
mem.write32(messagePointer + 4, Result::Success);
|
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) {
|
void HIDService::getGyroscopeLowCalibrateParam(u32 messagePointer) {
|
||||||
log("HID::GetGyroscopeLowCalibrateParam\n");
|
log("HID::GetGyroscopeLowCalibrateParam\n");
|
||||||
constexpr s16 unit = 6700; // Approximately from Citra which took it from hardware
|
constexpr s16 unit = 6700; // Approximately from Citra which took it from hardware
|
||||||
|
|
Loading…
Add table
Reference in a new issue