From 103cb6acc2db20f04f97ab20040fdc34fa6cadda Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Thu, 14 Sep 2023 22:43:38 +0300 Subject: [PATCH] Add BOSS:SetOptoutFlag --- include/services/boss.hpp | 1 + src/core/services/boss.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/services/boss.hpp b/include/services/boss.hpp index b2ea1363..57452e2d 100644 --- a/include/services/boss.hpp +++ b/include/services/boss.hpp @@ -28,6 +28,7 @@ class BOSSService { void registerStorageEntry(u32 messagePointer); void registerTask(u32 messagePointer); void sendProperty(u32 messagePointer); + void setOptoutFlag(u32 messagePointer); void startTask(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 621830db..30190cd3 100644 --- a/src/core/services/boss.cpp +++ b/src/core/services/boss.cpp @@ -7,6 +7,7 @@ namespace BOSSCommands { UnregisterStorage = 0x00030000, GetTaskStorageInfo = 0x00040000, RegisterNewArrivalEvent = 0x00080002, + SetOptoutFlag = 0x00090040, GetOptoutFlag = 0x000A0000, RegisterTask = 0x000B00C2, UnregisterTask = 0x000C0082, @@ -53,6 +54,7 @@ void BOSSService::handleSyncRequest(u32 messagePointer) { case BOSSCommands::RegisterStorageEntry: registerStorageEntry(messagePointer); break; case BOSSCommands::RegisterTask: registerTask(messagePointer); break; case BOSSCommands::SendProperty: sendProperty(messagePointer); break; + case BOSSCommands::SetOptoutFlag: setOptoutFlag(messagePointer); break; case BOSSCommands::StartTask: startTask(messagePointer); break; case BOSSCommands::UnregisterStorage: unregisterStorage(messagePointer); break; case BOSSCommands::UnregisterTask: unregisterTask(messagePointer); break; @@ -66,6 +68,15 @@ void BOSSService::initializeSession(u32 messagePointer) { mem.write32(messagePointer + 4, Result::Success); } +void BOSSService::setOptoutFlag(u32 messagePointer) { + const s8 flag = static_cast(mem.read8(messagePointer + 4)); + log("BOSS::SetOptoutFlag (flag = %d)\n", flag); + optoutFlag = flag; + + mem.write32(messagePointer, IPC::responseHeader(0x9, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); +} + void BOSSService::getOptoutFlag(u32 messagePointer) { log("BOSS::GetOptoutFlag\n"); mem.write32(messagePointer, IPC::responseHeader(0xA, 2, 0));