mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	hle: Eliminate need to specify command headers for IPC. (#6678)
This commit is contained in:
		
							parent
							
								
									0bedb28bdc
								
							
						
					
					
						commit
						e043caac27
					
				
					 96 changed files with 2691 additions and 2707 deletions
				
			
		| 
						 | 
				
			
			@ -12,7 +12,7 @@ SERIALIZE_EXPORT_IMPL(Service::NDM::NDM_U)
 | 
			
		|||
namespace Service::NDM {
 | 
			
		||||
 | 
			
		||||
void NDM_U::EnterExclusiveState(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x01, 1, 2);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    exclusive_state = rp.PopEnum<ExclusiveState>();
 | 
			
		||||
    rp.PopPID();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ void NDM_U::EnterExclusiveState(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::LeaveExclusiveState(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x02, 0, 2);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    rp.PopPID();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ void NDM_U::LeaveExclusiveState(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::QueryExclusiveMode(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x03, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    rb.PushEnum(exclusive_state);
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +39,7 @@ void NDM_U::QueryExclusiveMode(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::LockState(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x04, 0, 2);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    rp.PopPID();
 | 
			
		||||
    daemon_lock_enabled = true;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ void NDM_U::LockState(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::UnlockState(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x05, 0, 2);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    rp.PopPID();
 | 
			
		||||
    daemon_lock_enabled = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +59,7 @@ void NDM_U::UnlockState(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::SuspendDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x06, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u32 bit_mask = rp.Pop<u32>() & 0xF;
 | 
			
		||||
    daemon_bit_mask =
 | 
			
		||||
        static_cast<DaemonMask>(static_cast<u32>(default_daemon_bit_mask) & ~bit_mask);
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ void NDM_U::SuspendDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::ResumeDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x07, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u32 bit_mask = rp.Pop<u32>() & 0xF;
 | 
			
		||||
    daemon_bit_mask = static_cast<DaemonMask>(static_cast<u32>(daemon_bit_mask) & ~bit_mask);
 | 
			
		||||
    for (std::size_t index = 0; index < daemon_status.size(); ++index) {
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +90,7 @@ void NDM_U::ResumeDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::SuspendScheduler(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x08, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    bool perform_in_background = rp.Pop<bool>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -99,14 +99,14 @@ void NDM_U::SuspendScheduler(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::ResumeScheduler(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x09, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    LOG_WARNING(Service_NDM, "(STUBBED)");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::QueryStatus(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x0D, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u8 daemon = rp.Pop<u8>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -116,7 +116,7 @@ void NDM_U::QueryStatus(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::GetDaemonDisableCount(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x0E, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u8 daemon = rp.Pop<u8>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ void NDM_U::GetDaemonDisableCount(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::GetSchedulerDisableCount(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x0F, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +137,7 @@ void NDM_U::GetSchedulerDisableCount(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::SetScanInterval(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x10, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    scan_interval = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -146,7 +146,7 @@ void NDM_U::SetScanInterval(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::GetScanInterval(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x11, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    rb.Push(scan_interval);
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +154,7 @@ void NDM_U::GetScanInterval(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::SetRetryInterval(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x12, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    retry_interval = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +163,7 @@ void NDM_U::SetRetryInterval(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::GetRetryInterval(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x13, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    rb.Push(retry_interval);
 | 
			
		||||
| 
						 | 
				
			
			@ -171,7 +171,7 @@ void NDM_U::GetRetryInterval(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::OverrideDefaultDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x14, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u32 bit_mask = rp.Pop<u32>() & 0xF;
 | 
			
		||||
    default_daemon_bit_mask = static_cast<DaemonMask>(bit_mask);
 | 
			
		||||
    daemon_bit_mask = default_daemon_bit_mask;
 | 
			
		||||
| 
						 | 
				
			
			@ -187,7 +187,7 @@ void NDM_U::OverrideDefaultDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::ResetDefaultDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x15, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    default_daemon_bit_mask = DaemonMask::Default;
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +196,7 @@ void NDM_U::ResetDefaultDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::GetDefaultDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x16, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    rb.PushEnum(default_daemon_bit_mask);
 | 
			
		||||
| 
						 | 
				
			
			@ -204,7 +204,7 @@ void NDM_U::GetDefaultDaemons(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void NDM_U::ClearHalfAwakeMacFilter(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x17, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    LOG_WARNING(Service_NDM, "(STUBBED)");
 | 
			
		||||
| 
						 | 
				
			
			@ -213,29 +213,29 @@ void NDM_U::ClearHalfAwakeMacFilter(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
NDM_U::NDM_U() : ServiceFramework("ndm:u", 6) {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 1, 2), &NDM_U::EnterExclusiveState, "EnterExclusiveState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 0, 2), &NDM_U::LeaveExclusiveState, "LeaveExclusiveState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0003, 0, 0), &NDM_U::QueryExclusiveMode, "QueryExclusiveMode"},
 | 
			
		||||
        {IPC::MakeHeader(0x0004, 0, 2), &NDM_U::LockState, "LockState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 0, 2), &NDM_U::UnlockState, "UnlockState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 1, 0), &NDM_U::SuspendDaemons, "SuspendDaemons"},
 | 
			
		||||
        {IPC::MakeHeader(0x0007, 1, 0), &NDM_U::ResumeDaemons, "ResumeDaemons"},
 | 
			
		||||
        {IPC::MakeHeader(0x0008, 1, 0), &NDM_U::SuspendScheduler, "SuspendScheduler"},
 | 
			
		||||
        {IPC::MakeHeader(0x0009, 0, 0), &NDM_U::ResumeScheduler, "ResumeScheduler"},
 | 
			
		||||
        {IPC::MakeHeader(0x000A, 0, 0), nullptr, "GetCurrentState"},
 | 
			
		||||
        {IPC::MakeHeader(0x000B, 0, 0), nullptr, "GetTargetState"},
 | 
			
		||||
        {IPC::MakeHeader(0x000C, 0, 0), nullptr, "<Stubbed>"},
 | 
			
		||||
        {IPC::MakeHeader(0x000D, 1, 0), &NDM_U::QueryStatus, "QueryStatus"},
 | 
			
		||||
        {IPC::MakeHeader(0x000E, 1, 0), &NDM_U::GetDaemonDisableCount, "GetDaemonDisableCount"},
 | 
			
		||||
        {IPC::MakeHeader(0x000F, 0, 0), &NDM_U::GetSchedulerDisableCount, "GetSchedulerDisableCount"},
 | 
			
		||||
        {IPC::MakeHeader(0x0010, 1, 0), &NDM_U::SetScanInterval, "SetScanInterval"},
 | 
			
		||||
        {IPC::MakeHeader(0x0011, 0, 0), &NDM_U::GetScanInterval, "GetScanInterval"},
 | 
			
		||||
        {IPC::MakeHeader(0x0012, 1, 0), &NDM_U::SetRetryInterval, "SetRetryInterval"},
 | 
			
		||||
        {IPC::MakeHeader(0x0013, 0, 0), &NDM_U::GetRetryInterval, "GetRetryInterval"},
 | 
			
		||||
        {IPC::MakeHeader(0x0014, 1, 0), &NDM_U::OverrideDefaultDaemons, "OverrideDefaultDaemons"},
 | 
			
		||||
        {IPC::MakeHeader(0x0015, 0, 0), &NDM_U::ResetDefaultDaemons, "ResetDefaultDaemons"},
 | 
			
		||||
        {IPC::MakeHeader(0x0016, 0, 0), &NDM_U::GetDefaultDaemons, "GetDefaultDaemons"},
 | 
			
		||||
        {IPC::MakeHeader(0x0017, 0, 0), &NDM_U::ClearHalfAwakeMacFilter, "ClearHalfAwakeMacFilter"},
 | 
			
		||||
        {0x0001, &NDM_U::EnterExclusiveState, "EnterExclusiveState"},
 | 
			
		||||
        {0x0002, &NDM_U::LeaveExclusiveState, "LeaveExclusiveState"},
 | 
			
		||||
        {0x0003, &NDM_U::QueryExclusiveMode, "QueryExclusiveMode"},
 | 
			
		||||
        {0x0004, &NDM_U::LockState, "LockState"},
 | 
			
		||||
        {0x0005, &NDM_U::UnlockState, "UnlockState"},
 | 
			
		||||
        {0x0006, &NDM_U::SuspendDaemons, "SuspendDaemons"},
 | 
			
		||||
        {0x0007, &NDM_U::ResumeDaemons, "ResumeDaemons"},
 | 
			
		||||
        {0x0008, &NDM_U::SuspendScheduler, "SuspendScheduler"},
 | 
			
		||||
        {0x0009, &NDM_U::ResumeScheduler, "ResumeScheduler"},
 | 
			
		||||
        {0x000A, nullptr, "GetCurrentState"},
 | 
			
		||||
        {0x000B, nullptr, "GetTargetState"},
 | 
			
		||||
        {0x000C, nullptr, "<Stubbed>"},
 | 
			
		||||
        {0x000D, &NDM_U::QueryStatus, "QueryStatus"},
 | 
			
		||||
        {0x000E, &NDM_U::GetDaemonDisableCount, "GetDaemonDisableCount"},
 | 
			
		||||
        {0x000F, &NDM_U::GetSchedulerDisableCount, "GetSchedulerDisableCount"},
 | 
			
		||||
        {0x0010, &NDM_U::SetScanInterval, "SetScanInterval"},
 | 
			
		||||
        {0x0011, &NDM_U::GetScanInterval, "GetScanInterval"},
 | 
			
		||||
        {0x0012, &NDM_U::SetRetryInterval, "SetRetryInterval"},
 | 
			
		||||
        {0x0013, &NDM_U::GetRetryInterval, "GetRetryInterval"},
 | 
			
		||||
        {0x0014, &NDM_U::OverrideDefaultDaemons, "OverrideDefaultDaemons"},
 | 
			
		||||
        {0x0015, &NDM_U::ResetDefaultDaemons, "ResetDefaultDaemons"},
 | 
			
		||||
        {0x0016, &NDM_U::GetDefaultDaemons, "GetDefaultDaemons"},
 | 
			
		||||
        {0x0017, &NDM_U::ClearHalfAwakeMacFilter, "ClearHalfAwakeMacFilter"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue