mirror of
https://github.com/ndeadly/MissionControl
synced 2025-02-16 21:28:25 +00:00
mc.mitm: add extension IPC call for external app to signal that it has peeked at the hid report buffer when using event redirection
This commit is contained in:
parent
c6866db302
commit
31250f09fb
4 changed files with 22 additions and 10 deletions
|
@ -41,6 +41,7 @@ namespace ams::bluetooth::hid::report {
|
|||
os::SystemEvent g_system_event_user_fwd(os::EventClearMode_AutoClear, true);
|
||||
|
||||
os::Event g_init_event(os::EventClearMode_ManualClear);
|
||||
os::Event g_report_read_event(os::EventClearMode_AutoClear);
|
||||
|
||||
SharedMemory g_real_bt_shmem;
|
||||
SharedMemory g_fake_bt_shmem;
|
||||
|
@ -70,6 +71,10 @@ namespace ams::bluetooth::hid::report {
|
|||
g_init_event.Wait();
|
||||
}
|
||||
|
||||
void SignalReportRead(void) {
|
||||
g_report_read_event.Signal();
|
||||
}
|
||||
|
||||
SharedMemory *GetRealSharedMemory(void) {
|
||||
if (hos::GetVersion() < hos::Version_7_0_0)
|
||||
return nullptr;
|
||||
|
@ -272,17 +277,17 @@ namespace ams::bluetooth::hid::report {
|
|||
}
|
||||
|
||||
void HandleEvent(void) {
|
||||
if (!g_redirect_hid_report_events) {
|
||||
if (hos::GetVersion() >= hos::Version_12_0_0)
|
||||
HandleHidReportEventV12();
|
||||
else if (hos::GetVersion() >= hos::Version_7_0_0)
|
||||
HandleHidReportEventV7();
|
||||
else
|
||||
HandleHidReportEventV1();
|
||||
}
|
||||
else {
|
||||
if (g_redirect_hid_report_events) {
|
||||
g_system_event_user_fwd.Signal();
|
||||
g_report_read_event.Wait();
|
||||
}
|
||||
|
||||
if (hos::GetVersion() >= hos::Version_12_0_0)
|
||||
HandleHidReportEventV12();
|
||||
else if (hos::GetVersion() >= hos::Version_7_0_0)
|
||||
HandleHidReportEventV7();
|
||||
else
|
||||
HandleHidReportEventV1();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ namespace ams::bluetooth::hid::report {
|
|||
|
||||
bool IsInitialized(void);
|
||||
void WaitInitialized(void);
|
||||
void SignalReportRead(void);
|
||||
|
||||
SharedMemory *GetRealSharedMemory(void);
|
||||
SharedMemory *GetFakeSharedMemory(void);
|
||||
|
|
|
@ -266,4 +266,8 @@ namespace ams::mitm::bluetooth {
|
|||
g_redirect_ble_events = redirect;
|
||||
}
|
||||
|
||||
void BtdrvMitmService::SignalHidReportRead(void) {
|
||||
ams::bluetooth::hid::report::SignalReportRead();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -39,7 +39,8 @@
|
|||
AMS_SF_METHOD_INFO(C, H, 65003, void, RedirectHidEvents, (bool redirect), (redirect)) \
|
||||
AMS_SF_METHOD_INFO(C, H, 65004, void, RedirectHidReportEvents, (bool redirect), (redirect)) \
|
||||
AMS_SF_METHOD_INFO(C, H, 65005, void, RedirectBleEvents, (bool redirect), (redirect)) \
|
||||
|
||||
AMS_SF_METHOD_INFO(C, H, 65006, void, SignalHidReportRead, (void), ()) \
|
||||
|
||||
AMS_SF_DEFINE_MITM_INTERFACE(ams::mitm::bluetooth, IBtdrvMitmInterface, AMS_BTDRV_MITM_INTERFACE_INFO)
|
||||
|
||||
namespace ams::mitm::bluetooth {
|
||||
|
@ -79,6 +80,7 @@ namespace ams::mitm::bluetooth {
|
|||
void RedirectHidEvents(bool redirect);
|
||||
void RedirectHidReportEvents(bool redirect);
|
||||
void RedirectBleEvents(bool redirect);
|
||||
void SignalHidReportRead(void);
|
||||
};
|
||||
static_assert(IsIBtdrvMitmInterface<BtdrvMitmService>);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue