2016-02-14 11:53:32 +00:00
|
|
|
// Copyright 2016 Citra Emulator Project
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "common/common_types.h"
|
|
|
|
|
|
|
|
namespace Service {
|
|
|
|
|
|
|
|
class Interface;
|
|
|
|
|
|
|
|
namespace NDM {
|
|
|
|
|
2016-09-19 01:01:46 +00:00
|
|
|
enum class Daemon : u32 {
|
|
|
|
Cec = 0,
|
|
|
|
Boss = 1,
|
|
|
|
Nim = 2,
|
|
|
|
Friend = 3,
|
|
|
|
};
|
2016-04-20 18:25:58 +00:00
|
|
|
|
|
|
|
enum class DaemonMask : u32 {
|
2016-09-18 00:38:01 +00:00
|
|
|
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)),
|
2016-04-20 18:25:58 +00:00
|
|
|
Default = Cec | Friend,
|
2016-09-19 01:01:46 +00:00
|
|
|
All = Cec | Boss | Nim | Friend,
|
2016-04-20 18:25:58 +00:00
|
|
|
};
|
|
|
|
|
2016-09-18 00:38:01 +00:00
|
|
|
enum class DaemonStatus : u32 { Busy = 0, Idle = 1, Suspending = 2, Suspended = 3 };
|
2016-04-20 18:25:58 +00:00
|
|
|
|
|
|
|
enum class ExclusiveState : u32 {
|
2016-09-18 00:38:01 +00:00
|
|
|
None = 0,
|
|
|
|
Infrastructure = 1,
|
2016-04-20 18:25:58 +00:00
|
|
|
LocalCommunications = 2,
|
2016-09-18 00:38:01 +00:00
|
|
|
Streetpass = 3,
|
|
|
|
StreetpassData = 4,
|
2016-04-20 18:25:58 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* NDM::EnterExclusiveState service function
|
|
|
|
* Inputs:
|
|
|
|
* 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);
|
|
|
|
|
2016-02-14 11:53:32 +00:00
|
|
|
/**
|
2016-04-20 18:25:58 +00:00
|
|
|
* NDM::SuspendDaemons service function
|
2016-02-14 11:53:32 +00:00
|
|
|
* Inputs:
|
2016-04-20 18:25:58 +00:00
|
|
|
* 0 : Header code [0x00060040]
|
2016-02-14 11:53:32 +00:00
|
|
|
* 1 : Daemon bit mask
|
|
|
|
* Outputs:
|
|
|
|
* 1 : Result, 0 on success, otherwise error code
|
|
|
|
*/
|
|
|
|
void SuspendDaemons(Service::Interface* self);
|
|
|
|
|
|
|
|
/**
|
2016-04-20 18:25:58 +00:00
|
|
|
* NDM::ResumeDaemons service function
|
2016-02-14 11:53:32 +00:00
|
|
|
* Inputs:
|
2016-04-20 18:25:58 +00:00
|
|
|
* 0 : Header code [0x00070040]
|
2016-02-14 11:53:32 +00:00
|
|
|
* 1 : Daemon bit mask
|
|
|
|
* Outputs:
|
|
|
|
* 1 : Result, 0 on success, otherwise error code
|
|
|
|
*/
|
|
|
|
void ResumeDaemons(Service::Interface* self);
|
|
|
|
|
|
|
|
/**
|
2016-04-20 18:25:58 +00:00
|
|
|
* NDM::SuspendScheduler service function
|
2016-02-14 11:53:32 +00:00
|
|
|
* Inputs:
|
2016-04-20 18:25:58 +00:00
|
|
|
* 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]
|
2016-02-14 11:53:32 +00:00
|
|
|
* 1 : Daemon bit mask
|
|
|
|
* Outputs:
|
|
|
|
* 1 : Result, 0 on success, otherwise error code
|
|
|
|
*/
|
|
|
|
void OverrideDefaultDaemons(Service::Interface* self);
|
|
|
|
|
2016-04-20 18:25:58 +00:00
|
|
|
/**
|
|
|
|
* 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:
|
2016-09-18 00:38:01 +00:00
|
|
|
* Gets the current default daemon bit mask. The default value is (DAEMONMASK_CEC |
|
|
|
|
* DAEMONMASK_FRIENDS)
|
2016-04-20 18:25:58 +00:00
|
|
|
*/
|
|
|
|
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);
|
|
|
|
|
2016-02-14 11:53:32 +00:00
|
|
|
/// Initialize NDM service
|
|
|
|
void Init();
|
|
|
|
|
|
|
|
/// Shutdown NDM service
|
|
|
|
void Shutdown();
|
|
|
|
|
2016-09-18 00:38:01 +00:00
|
|
|
} // namespace NDM
|
|
|
|
} // namespace Service
|