Merge pull request #800 from lioncash/set
set_sys: Implement SetColorSetId()
This commit is contained in:
		@@ -300,6 +300,14 @@ public:
 | 
			
		||||
    template <typename First, typename... Other>
 | 
			
		||||
    void Pop(First& first_value, Other&... other_values);
 | 
			
		||||
 | 
			
		||||
    template <typename T>
 | 
			
		||||
    T PopEnum() {
 | 
			
		||||
        static_assert(std::is_enum_v<T>, "T must be an enum type within a PopEnum call.");
 | 
			
		||||
        static_assert(!std::is_convertible_v<T, int>,
 | 
			
		||||
                      "enum type in PopEnum must be a strongly typed enum.");
 | 
			
		||||
        return static_cast<T>(Pop<std::underlying_type_t<T>>());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @brief Reads the next normal parameters as a struct, by copying it
 | 
			
		||||
     * @note: The output class must be correctly packed/padded to fit hardware layout.
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user