From 6e4b2b672ec8b0cc4c66c4f330e30d300bf4f576 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sat, 19 Aug 2023 03:24:44 +0300 Subject: [PATCH] AC stubs (CancelConnectAsync, CreateDefaultConfig) --- include/services/ac.hpp | 2 ++ src/core/services/ac.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/services/ac.hpp b/include/services/ac.hpp index 42129662..e05f7804 100644 --- a/include/services/ac.hpp +++ b/include/services/ac.hpp @@ -11,6 +11,8 @@ class ACService { MAKE_LOG_FUNCTION(log, acLogger) // Service commands + void cancelConnectAsync(u32 messagePointer); + void createDefaultConfig(u32 messagePointer); void getLastErrorCode(u32 messagePointer); void setClientVersion(u32 messagePointer); diff --git a/src/core/services/ac.cpp b/src/core/services/ac.cpp index 68868dbf..6bbeba0e 100644 --- a/src/core/services/ac.cpp +++ b/src/core/services/ac.cpp @@ -3,6 +3,8 @@ namespace ACCommands { enum : u32 { + CreateDefaultConfig = 0x00010000, + CancelConnectAsync = 0x00070002, GetLastErrorCode = 0x000A0000, SetClientVersion = 0x00400042, }; @@ -13,12 +15,30 @@ void ACService::reset() {} void ACService::handleSyncRequest(u32 messagePointer) { const u32 command = mem.read32(messagePointer); switch (command) { + case ACCommands::CancelConnectAsync: cancelConnectAsync(messagePointer); break; + case ACCommands::CreateDefaultConfig: createDefaultConfig(messagePointer); break; case ACCommands::GetLastErrorCode: getLastErrorCode(messagePointer); break; case ACCommands::SetClientVersion: setClientVersion(messagePointer); break; default: Helpers::panic("AC service requested. Command: %08X\n", command); } } +void ACService::cancelConnectAsync(u32 messagePointer) { + log("AC::CancelCommandAsync (stubbed)\n"); + + // TODO: Verify if this response header is correct on hardware + mem.write32(messagePointer, IPC::responseHeader(0x7, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); +} + +void ACService::createDefaultConfig(u32 messagePointer) { + log("AC::CreateDefaultConfig (stubbed)\n"); + + mem.write32(messagePointer, IPC::responseHeader(0x1, 1, 2)); + mem.write32(messagePointer + 4, Result::Success); + // TODO: Verify response buffer on hardware +} + void ACService::getLastErrorCode(u32 messagePointer) { log("AC::GetLastErrorCode (stubbed)\n");