mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Update the stub code of NDM service!
This commit is contained in:
		
							parent
							
								
									6d29c20208
								
							
						
					
					
						commit
						14602287f7
					
				@ -11,28 +11,217 @@
 | 
				
			|||||||
namespace Service {
 | 
					namespace Service {
 | 
				
			||||||
namespace NDM {
 | 
					namespace NDM {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SuspendDaemons(Service::Interface* self) {
 | 
					enum : u32 {
 | 
				
			||||||
 | 
					    DEFAULT_RETRY_INTERVAL = 10,
 | 
				
			||||||
 | 
					    DEFAULT_SCAN_INTERVAL  = 30
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static DaemonMask daemon_bit_mask = DaemonMask::Default;
 | 
				
			||||||
 | 
					static DaemonMask default_daemon_bit_mask = DaemonMask::Default;
 | 
				
			||||||
 | 
					static std::array<DaemonStatus, 4> daemon_status = { DaemonStatus::Idle, DaemonStatus::Idle, DaemonStatus::Idle, DaemonStatus::Idle };
 | 
				
			||||||
 | 
					static ExclusiveState exclusive_state = ExclusiveState::None;
 | 
				
			||||||
 | 
					static u32 scan_interval = DEFAULT_SCAN_INTERVAL;
 | 
				
			||||||
 | 
					static u32 retry_interval = DEFAULT_RETRY_INTERVAL;
 | 
				
			||||||
 | 
					static bool daemon_lock_enabled = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void EnterExclusiveState(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    exclusive_state = static_cast<ExclusiveState>(cmd_buff[1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x1, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) exclusive_state=0x%08X ", exclusive_state);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void LeaveExclusiveState(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    exclusive_state = ExclusiveState::None;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x2, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) exclusive_state=0x%08X ", exclusive_state);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void QueryExclusiveMode(Service::Interface* self) {
 | 
				
			||||||
    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    LOG_WARNING(Service_NDM, "(STUBBED) bit_mask=0x%08X ", cmd_buff[1]);
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x3, 2, 0);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    cmd_buff[2] = static_cast<u32>(exclusive_state);
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) exclusive_state=0x%08X ", exclusive_state);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void LockState(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    daemon_lock_enabled = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x4, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) daemon_lock_enabled=0x%08X ", daemon_lock_enabled);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void UnlockState(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    daemon_lock_enabled = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x5, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) daemon_lock_enabled=0x%08X ", daemon_lock_enabled);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SuspendDaemons(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    u32 bit_mask = cmd_buff[1] & 0xF;
 | 
				
			||||||
 | 
					    daemon_bit_mask = static_cast<DaemonMask>(static_cast<u32>(default_daemon_bit_mask) & ~bit_mask);
 | 
				
			||||||
 | 
					    for (size_t index = 0; index < daemon_status.size(); ++index) {
 | 
				
			||||||
 | 
					        if (bit_mask & (1 << index)) {
 | 
				
			||||||
 | 
					            daemon_status[index] = DaemonStatus::Suspended;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x6, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) daemon_bit_mask=0x%08X ", daemon_bit_mask);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ResumeDaemons(Service::Interface* self) {
 | 
					void ResumeDaemons(Service::Interface* self) {
 | 
				
			||||||
    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    u32 bit_mask = cmd_buff[1] & 0xF;
 | 
				
			||||||
 | 
					    daemon_bit_mask = static_cast<DaemonMask>(static_cast<u32>(daemon_bit_mask) | bit_mask);
 | 
				
			||||||
 | 
					    for (size_t index = 0; index < daemon_status.size(); ++index) {
 | 
				
			||||||
 | 
					        if (bit_mask & (1 << index)) {
 | 
				
			||||||
 | 
					            daemon_status[index] = DaemonStatus::Idle;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    LOG_WARNING(Service_NDM, "(STUBBED) bit_mask=0x%08X ", cmd_buff[1]);
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x7, 1, 0);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) daemon_bit_mask=0x%08X ", daemon_bit_mask);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SuspendScheduler(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x8, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) called");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ResumeScheduler(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x9, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) called");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void QueryStatus(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    u32 daemon = cmd_buff[1] & 0xF;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0xD, 2, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    cmd_buff[2] = static_cast<u32>(daemon_status.at(daemon));
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) daemon=0x%08X, daemon_status=0x%08X", daemon, cmd_buff[2]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GetDaemonDisableCount(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    u32 daemon = cmd_buff[1] & 0xF;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0xE, 3, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    cmd_buff[2] = 0;
 | 
				
			||||||
 | 
					    cmd_buff[3] = 0;
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) daemon=0x%08X", daemon);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GetSchedulerDisableCount(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0xF, 3, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    cmd_buff[2] = 0;
 | 
				
			||||||
 | 
					    cmd_buff[3] = 0;
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) called");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SetScanInterval(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    scan_interval = cmd_buff[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x10, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) scan_interval=0x%08X ", scan_interval);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GetScanInterval(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x11, 2, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    cmd_buff[2] = scan_interval;
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) scan_interval=0x%08X ", scan_interval);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SetRetryInterval(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    retry_interval = cmd_buff[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x12, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) retry_interval=0x%08X ", retry_interval);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GetRetryInterval(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x13, 2, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    cmd_buff[2] = retry_interval;
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) retry_interval=0x%08X ", retry_interval);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void OverrideDefaultDaemons(Service::Interface* self) {
 | 
					void OverrideDefaultDaemons(Service::Interface* self) {
 | 
				
			||||||
    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    u32 bit_mask = cmd_buff[1] & 0xF;
 | 
				
			||||||
 | 
					    default_daemon_bit_mask = static_cast<DaemonMask>(bit_mask);
 | 
				
			||||||
 | 
					    daemon_bit_mask = default_daemon_bit_mask;
 | 
				
			||||||
 | 
					    for (size_t index = 0; index < daemon_status.size(); ++index) {
 | 
				
			||||||
 | 
					        if (bit_mask & (1 << index)) {
 | 
				
			||||||
 | 
					            daemon_status[index] = DaemonStatus::Idle;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    LOG_WARNING(Service_NDM, "(STUBBED) bit_mask=0x%08X ", cmd_buff[1]);
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x14, 1, 0);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) default_daemon_bit_mask=0x%08X ", default_daemon_bit_mask);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ResetDefaultDaemons(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					    default_daemon_bit_mask = DaemonMask::Default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x15, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) default_daemon_bit_mask=0x%08X ", default_daemon_bit_mask);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GetDefaultDaemons(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x16, 2, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    cmd_buff[2] = static_cast<u32>(default_daemon_bit_mask);
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) default_daemon_bit_mask=0x%08X ", default_daemon_bit_mask);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ClearHalfAwakeMacFilter(Service::Interface* self) {
 | 
				
			||||||
 | 
					    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cmd_buff[0] = IPC::MakeHeader(0x17, 1, 0);
 | 
				
			||||||
 | 
					    cmd_buff[1] = RESULT_SUCCESS.raw; // No error
 | 
				
			||||||
 | 
					    LOG_WARNING(Service_NDM, "(STUBBED) called");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Init() {
 | 
					void Init() {
 | 
				
			||||||
 | 
				
			|||||||
@ -12,10 +12,91 @@ class Interface;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace NDM {
 | 
					namespace NDM {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class Daemon : u32 {
 | 
				
			||||||
 | 
					    Cec    = 0,
 | 
				
			||||||
 | 
					    Boss   = 1,
 | 
				
			||||||
 | 
					    Nim    = 2,
 | 
				
			||||||
 | 
					    Friend = 3
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class DaemonMask : u32 {
 | 
				
			||||||
 | 
					    None    =  0,
 | 
				
			||||||
 | 
					    Cec     = (1 << static_cast<u32>(Daemon::Cec)),
 | 
				
			||||||
 | 
					    Boss    = (1 << static_cast<u32>(Daemon::Boss)),
 | 
				
			||||||
 | 
					    Nim     = (1 << static_cast<u32>(Daemon::Nim)),
 | 
				
			||||||
 | 
					    Friend  = (1 << static_cast<u32>(Daemon::Friend)),
 | 
				
			||||||
 | 
					    Default = Cec | Friend,
 | 
				
			||||||
 | 
					    All     = Cec | Boss | Nim | Friend
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class DaemonStatus : u32 {
 | 
				
			||||||
 | 
					    Busy       = 0,
 | 
				
			||||||
 | 
					    Idle       = 1,
 | 
				
			||||||
 | 
					    Suspending = 2,
 | 
				
			||||||
 | 
					    Suspended  = 3
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class ExclusiveState : u32 {
 | 
				
			||||||
 | 
					    None                = 0,
 | 
				
			||||||
 | 
					    Infrastructure      = 1,
 | 
				
			||||||
 | 
					    LocalCommunications = 2,
 | 
				
			||||||
 | 
					    Streetpass          = 3,
 | 
				
			||||||
 | 
					    StreetpassData      = 4,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 *  SuspendDaemons
 | 
					 *  NDM::EnterExclusiveState service function
 | 
				
			||||||
 *  Inputs:
 | 
					 *  Inputs:
 | 
				
			||||||
 *      0 : Command header (0x00020082)
 | 
					 *      0 : Header code [0x00010042]
 | 
				
			||||||
 | 
					 *      1 : Exclusive State
 | 
				
			||||||
 | 
					 *      2 : 0x20
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void EnterExclusiveState(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::LeaveExclusiveState service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00020002]
 | 
				
			||||||
 | 
					 *      1 : 0x20
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void LeaveExclusiveState(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::QueryExclusiveMode service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00030000]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 *      2 : Current Exclusive State
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void QueryExclusiveMode(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::LockState service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00040002]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void LockState(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::UnlockState service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00050002]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void UnlockState(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::SuspendDaemons service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00060040]
 | 
				
			||||||
 *      1 : Daemon bit mask
 | 
					 *      1 : Daemon bit mask
 | 
				
			||||||
 *  Outputs:
 | 
					 *  Outputs:
 | 
				
			||||||
 *      1 : Result, 0 on success, otherwise error code
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
@ -23,9 +104,9 @@ namespace NDM {
 | 
				
			|||||||
void SuspendDaemons(Service::Interface* self);
 | 
					void SuspendDaemons(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 *  ResumeDaemons
 | 
					 *  NDM::ResumeDaemons service function
 | 
				
			||||||
 *  Inputs:
 | 
					 *  Inputs:
 | 
				
			||||||
 *      0 : Command header (0x00020082)
 | 
					 *      0 : Header code [0x00070040]
 | 
				
			||||||
 *      1 : Daemon bit mask
 | 
					 *      1 : Daemon bit mask
 | 
				
			||||||
 *  Outputs:
 | 
					 *  Outputs:
 | 
				
			||||||
 *      1 : Result, 0 on success, otherwise error code
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
@ -33,15 +114,138 @@ void SuspendDaemons(Service::Interface* self);
 | 
				
			|||||||
void ResumeDaemons(Service::Interface* self);
 | 
					void ResumeDaemons(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 *  OverrideDefaultDaemons
 | 
					 *  NDM::SuspendScheduler service function
 | 
				
			||||||
 *  Inputs:
 | 
					 *  Inputs:
 | 
				
			||||||
 *      0 : Command header (0x00020082)
 | 
					 *      0 : Header code [0x00080040]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void SuspendScheduler(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::ResumeScheduler service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00090000]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void ResumeScheduler(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::QueryStatus service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x000D0040]
 | 
				
			||||||
 | 
					 *      1 : Daemon
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 *      2 : Daemon status
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void QueryStatus(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::GetDaemonDisableCount service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x000E0040]
 | 
				
			||||||
 | 
					 *      1 : Daemon
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 *      2 : Current process disable count
 | 
				
			||||||
 | 
					 *      3 : Total disable count
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void GetDaemonDisableCount(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::GetSchedulerDisableCount service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x000F0000]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 *      2 : Current process disable count
 | 
				
			||||||
 | 
					 *      3 : Total disable count
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void GetSchedulerDisableCount(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::SetScanInterval service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00100040]
 | 
				
			||||||
 | 
					 *      1 : Interval (default = 30)
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void SetScanInterval(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::GetScanInterval service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00110000]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 *      2 : Interval (default = 30)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void GetScanInterval(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::SetRetryInterval service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00120040]
 | 
				
			||||||
 | 
					 *      1 : Interval (default = 10)
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void SetRetryInterval(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::GetRetryInterval service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00130000]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 *      2 : Interval (default = 10)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void GetRetryInterval(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::OverrideDefaultDaemons service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00140040]
 | 
				
			||||||
 *      1 : Daemon bit mask
 | 
					 *      1 : Daemon bit mask
 | 
				
			||||||
 *  Outputs:
 | 
					 *  Outputs:
 | 
				
			||||||
 *      1 : Result, 0 on success, otherwise error code
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void OverrideDefaultDaemons(Service::Interface* self);
 | 
					void OverrideDefaultDaemons(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::ResetDefaultDaemons service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00150000]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void ResetDefaultDaemons(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::GetDefaultDaemons service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00160000]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 *      2 : Daemon bit mask
 | 
				
			||||||
 | 
					 *  Note:
 | 
				
			||||||
 | 
					 *      Gets the current default daemon bit mask. The default value is (DAEMONMASK_CEC | DAEMONMASK_FRIENDS)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void GetDefaultDaemons(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *  NDM::ClearHalfAwakeMacFilter service function
 | 
				
			||||||
 | 
					 *  Inputs:
 | 
				
			||||||
 | 
					 *      0 : Header code [0x00170000]
 | 
				
			||||||
 | 
					 *  Outputs:
 | 
				
			||||||
 | 
					 *      1 : Result, 0 on success, otherwise error code
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void ClearHalfAwakeMacFilter(Service::Interface* self);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Initialize NDM service
 | 
					/// Initialize NDM service
 | 
				
			||||||
void Init();
 | 
					void Init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -9,29 +9,29 @@ namespace Service {
 | 
				
			|||||||
namespace NDM {
 | 
					namespace NDM {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Interface::FunctionInfo FunctionTable[] = {
 | 
					const Interface::FunctionInfo FunctionTable[] = {
 | 
				
			||||||
    {0x00010042, nullptr,                 "EnterExclusiveState"},
 | 
					    {0x00010042, EnterExclusiveState,     "EnterExclusiveState"},
 | 
				
			||||||
    {0x00020002, nullptr,                 "LeaveExclusiveState"},
 | 
					    {0x00020002, LeaveExclusiveState,     "LeaveExclusiveState"},
 | 
				
			||||||
    {0x00030000, nullptr,                 "QueryExclusiveMode"},
 | 
					    {0x00030000, QueryExclusiveMode,      "QueryExclusiveMode"},
 | 
				
			||||||
    {0x00040002, nullptr,                 "LockState"},
 | 
					    {0x00040002, LockState,               "LockState"},
 | 
				
			||||||
    {0x00050002, nullptr,                 "UnlockState"},
 | 
					    {0x00050002, UnlockState,             "UnlockState"},
 | 
				
			||||||
    {0x00060040, SuspendDaemons,          "SuspendDaemons"},
 | 
					    {0x00060040, SuspendDaemons,          "SuspendDaemons"},
 | 
				
			||||||
    {0x00070040, ResumeDaemons,           "ResumeDaemons"},
 | 
					    {0x00070040, ResumeDaemons,           "ResumeDaemons"},
 | 
				
			||||||
    {0x00080040, nullptr,                 "DisableWifiUsage"},
 | 
					    {0x00080040, SuspendScheduler,        "SuspendScheduler"},
 | 
				
			||||||
    {0x00090000, nullptr,                 "EnableWifiUsage"},
 | 
					    {0x00090000, ResumeScheduler,         "ResumeScheduler"},
 | 
				
			||||||
    {0x000A0000, nullptr,                 "GetCurrentState"},
 | 
					    {0x000A0000, nullptr,                 "GetCurrentState"},
 | 
				
			||||||
    {0x000B0000, nullptr,                 "GetTargetState"},
 | 
					    {0x000B0000, nullptr,                 "GetTargetState"},
 | 
				
			||||||
    {0x000C0000, nullptr,                 "<Stubbed>"},
 | 
					    {0x000C0000, nullptr,                 "<Stubbed>"},
 | 
				
			||||||
    {0x000D0040, nullptr,                 "QueryStatus"},
 | 
					    {0x000D0040, QueryStatus,             "QueryStatus"},
 | 
				
			||||||
    {0x000E0040, nullptr,                 "GetDaemonDisableCount"},
 | 
					    {0x000E0040, GetDaemonDisableCount,   "GetDaemonDisableCount"},
 | 
				
			||||||
    {0x000F0000, nullptr,                 "GetSchedulerDisableCount"},
 | 
					    {0x000F0000, GetSchedulerDisableCount,"GetSchedulerDisableCount"},
 | 
				
			||||||
    {0x00100040, nullptr,                 "SetScanInterval"},
 | 
					    {0x00100040, SetScanInterval,         "SetScanInterval"},
 | 
				
			||||||
    {0x00110000, nullptr,                 "GetScanInterval"},
 | 
					    {0x00110000, GetScanInterval,         "GetScanInterval"},
 | 
				
			||||||
    {0x00120040, nullptr,                 "SetRetryInterval"},
 | 
					    {0x00120040, SetRetryInterval,        "SetRetryInterval"},
 | 
				
			||||||
    {0x00130000, nullptr,                 "GetRetryInterval"},
 | 
					    {0x00130000, GetRetryInterval,        "GetRetryInterval"},
 | 
				
			||||||
    {0x00140040, OverrideDefaultDaemons,  "OverrideDefaultDaemons"},
 | 
					    {0x00140040, OverrideDefaultDaemons,  "OverrideDefaultDaemons"},
 | 
				
			||||||
    {0x00150000, nullptr,                 "ResetDefaultDaemons"},
 | 
					    {0x00150000, ResetDefaultDaemons,     "ResetDefaultDaemons"},
 | 
				
			||||||
    {0x00160000, nullptr,                 "GetDefaultDaemons"},
 | 
					    {0x00160000, GetDefaultDaemons,       "GetDefaultDaemons"},
 | 
				
			||||||
    {0x00170000, nullptr,                 "ClearHalfAwakeMacFilter"},
 | 
					    {0x00170000, ClearHalfAwakeMacFilter, "ClearHalfAwakeMacFilter"},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NDM_U_Interface::NDM_U_Interface() {
 | 
					NDM_U_Interface::NDM_U_Interface() {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user