From 63c605c04af6f236cf13daf71cd6107b122820b5 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Mon, 23 Jul 2018 23:47:01 -0400
Subject: [PATCH] set_sys: Implement SetColorSetId()

---
 src/core/hle/service/set/set_sys.cpp | 19 +++++++++++++++----
 src/core/hle/service/set/set_sys.h   | 11 ++++++++++-
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/src/core/hle/service/set/set_sys.cpp b/src/core/hle/service/set/set_sys.cpp
index fa85277fe9..41efca31c7 100644
--- a/src/core/hle/service/set/set_sys.cpp
+++ b/src/core/hle/service/set/set_sys.cpp
@@ -10,13 +10,22 @@
 namespace Service::Set {
 
 void SET_SYS::GetColorSetId(Kernel::HLERequestContext& ctx) {
-
     IPC::ResponseBuilder rb{ctx, 3};
 
     rb.Push(RESULT_SUCCESS);
-    rb.Push<u32>(0);
+    rb.PushEnum(color_set);
 
-    LOG_WARNING(Service_SET, "(STUBBED) called");
+    LOG_DEBUG(Service_SET, "called");
+}
+
+void SET_SYS::SetColorSetId(Kernel::HLERequestContext& ctx) {
+    IPC::RequestParser rp{ctx};
+    color_set = rp.PopEnum<ColorSet>();
+
+    IPC::ResponseBuilder rb{ctx, 2};
+    rb.Push(RESULT_SUCCESS);
+
+    LOG_DEBUG(Service_SET, "called");
 }
 
 SET_SYS::SET_SYS() : ServiceFramework("set:sys") {
@@ -44,7 +53,7 @@ SET_SYS::SET_SYS() : ServiceFramework("set:sys") {
         {21, nullptr, "GetEulaVersions"},
         {22, nullptr, "SetEulaVersions"},
         {23, &SET_SYS::GetColorSetId, "GetColorSetId"},
-        {24, nullptr, "SetColorSetId"},
+        {24, &SET_SYS::SetColorSetId, "SetColorSetId"},
         {25, nullptr, "GetConsoleInformationUploadFlag"},
         {26, nullptr, "SetConsoleInformationUploadFlag"},
         {27, nullptr, "GetAutomaticApplicationDownloadFlag"},
@@ -172,4 +181,6 @@ SET_SYS::SET_SYS() : ServiceFramework("set:sys") {
     RegisterHandlers(functions);
 }
 
+SET_SYS::~SET_SYS() = default;
+
 } // namespace Service::Set
diff --git a/src/core/hle/service/set/set_sys.h b/src/core/hle/service/set/set_sys.h
index b77a97cded..f602f3c77e 100644
--- a/src/core/hle/service/set/set_sys.h
+++ b/src/core/hle/service/set/set_sys.h
@@ -11,10 +11,19 @@ namespace Service::Set {
 class SET_SYS final : public ServiceFramework<SET_SYS> {
 public:
     explicit SET_SYS();
-    ~SET_SYS() = default;
+    ~SET_SYS() override;
 
 private:
+    /// Indicates the current theme set by the system settings
+    enum class ColorSet : u32 {
+        BasicWhite = 0,
+        BasicBlack = 1,
+    };
+
     void GetColorSetId(Kernel::HLERequestContext& ctx);
+    void SetColorSetId(Kernel::HLERequestContext& ctx);
+
+    ColorSet color_set = ColorSet::BasicWhite;
 };
 
 } // namespace Service::Set
-- 
GitLab