From 02632afb754480b88758f7826ba8deb50bfdb830 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sat, 19 Aug 2023 02:02:11 +0300 Subject: [PATCH] [BOSS] Stub SendProperty --- include/services/boss.hpp | 1 + src/core/services/boss.cpp | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/services/boss.hpp b/include/services/boss.hpp index 2d7f6025..368d5d20 100644 --- a/include/services/boss.hpp +++ b/include/services/boss.hpp @@ -24,6 +24,7 @@ class BOSSService { void receiveProperty(u32 messagePointer); void registerNewArrivalEvent(u32 messagePointer); void registerStorageEntry(u32 messagePointer); + void sendProperty(u32 messagePointer); void unregisterStorage(u32 messagePointer); void unregisterTask(u32 messagePointer); diff --git a/src/core/services/boss.cpp b/src/core/services/boss.cpp index cb2e902c..132e2277 100644 --- a/src/core/services/boss.cpp +++ b/src/core/services/boss.cpp @@ -11,6 +11,7 @@ namespace BOSSCommands { UnregisterTask = 0x000C0082, GetTaskIdList = 0x000E0000, GetNsDataIdList = 0x00100102, + SendProperty = 0x00140082, ReceiveProperty = 0x00160082, CancelTask = 0x001E0042, GetTaskState = 0x00200082, @@ -41,6 +42,7 @@ void BOSSService::handleSyncRequest(u32 messagePointer) { case BOSSCommands::ReceiveProperty: receiveProperty(messagePointer); break; case BOSSCommands::RegisterNewArrivalEvent: registerNewArrivalEvent(messagePointer); break; case BOSSCommands::RegisterStorageEntry: registerStorageEntry(messagePointer); break; + case BOSSCommands::SendProperty: sendProperty(messagePointer); break; case BOSSCommands::UnregisterStorage: unregisterStorage(messagePointer); break; case BOSSCommands::UnregisterTask: unregisterTask(messagePointer); break; default: Helpers::panic("BOSS service requested. Command: %08X\n", command); @@ -113,12 +115,25 @@ void BOSSService::getStorageEntryInfo(u32 messagePointer) { mem.write16(messagePointer + 12, 0); // s16, unknown meaning } +void BOSSService::sendProperty(u32 messagePointer) { + const u32 id = mem.read32(messagePointer + 4); + const u32 size = mem.read32(messagePointer + 8); + const u32 ptr = mem.read32(messagePointer + 16); + + log("BOSS::SendProperty (id = %d, size = %08X, ptr = %08X) (stubbed)\n", id, size, ptr); + mem.write32(messagePointer, IPC::responseHeader(0x14, 1, 2)); + mem.write32(messagePointer + 4, Result::Success); + mem.write32(messagePointer + 8, 0); // Read size + // TODO: Should this do anything else? +} + + void BOSSService::receiveProperty(u32 messagePointer) { const u32 id = mem.read32(messagePointer + 4); const u32 size = mem.read32(messagePointer + 8); const u32 ptr = mem.read32(messagePointer + 16); - log("BOSS::ReceiveProperty(stubbed) (id = %d, size = %08X, ptr = %08X)\n", id, size, ptr); + log("BOSS::ReceiveProperty (id = %d, size = %08X, ptr = %08X) (stubbed)\n", id, size, ptr); mem.write32(messagePointer, IPC::responseHeader(0x16, 2, 2)); mem.write32(messagePointer + 4, Result::Success); mem.write32(messagePointer + 8, 0); // Read size