#pragma once #include "fake_process.hpp" namespace HLE { namespace OS { struct Handle; class FakeMCU { spdlog::logger& logger; HandleTable::Entry gpu_event; HandleTable::Entry hid_event; int invocation = 0; public: FakeMCU(FakeThread& thread); virtual ~FakeMCU() = default; void GPUThread(FakeThread& thread); void HIDThread(FakeThread& thread); void GPUCommandHandler(FakeThread& thread, Handle sender, const IPC::CommandHeader& header); void HIDCommandHandler(FakeThread& thread, Handle sender, const IPC::CommandHeader& header); OS::ResultAnd GPUGetLcdPowerState(FakeThread& thread); OS::ResultAnd<> GPUSetLcdPowerState(FakeThread& thread, uint32_t param1, uint32_t param2); OS::ResultAnd GPUGetGpuLcdInterfaceState(FakeThread& thread); OS::ResultAnd<> GPUSetGpuLcdInterfaceState(FakeThread& thread, uint32_t state); OS::ResultAnd GPUGetMcuFwVerHigh(FakeThread& thread); OS::ResultAnd GPUGetMcuFwVerLow(FakeThread& thread); OS::ResultAnd<> GPUSet3dLedState(FakeThread& thread, uint32_t state); OS::ResultAnd GPUGetMcuGpuEvent(FakeThread& thread); OS::ResultAnd GPUGetMcuGpuEventReason(FakeThread& thread); OS::ResultAnd<> HIDUnknown0x1(FakeThread& thread, uint32_t param); OS::ResultAnd HIDGetMcuHidEventHandle(FakeThread& thread); OS::ResultAnd HIDGet3dSliderState(FakeThread& thread); OS::ResultAnd<> HIDSetAccelerometerState(FakeThread& thread, uint32_t state); }; } // namespace OS } // namespace HLE