Changes

Line 33: Line 33:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || Initialize
+
| 0 || [[#Initialize|Initialize]]
 
|-
 
|-
| 1 || DispatchRequest
+
| 1 || [[#DispatchRequest|DispatchRequest]]
 
|-
 
|-
| 2 || GetResult
+
| 2 || [[#GetResult|GetResult]]
 
|-
 
|-
| 3 || GetState
+
| 3 || [[#GetState|GetState]]
 
|-
 
|-
| 4 || Cancel
+
| 4 || [[#Cancel|Cancel]]
 
|-
 
|-
| 5 || [1.0.0-6.2.0] PrintModuleInformation
+
| 5 || [1.0.0-6.2.0] [[#PrintModuleInformation|PrintModuleInformation]]
 
|-
 
|-
| 6 || GetModuleInformation
+
| 6 || [[#GetModuleInformation|GetModuleInformation]]
 
|-
 
|-
| 10 || [9.0.0+]
+
| 7 || [17.0.0+] SetRandomDelay
 
|-
 
|-
| 11 || [9.0.0+]
+
| 10 || [9.0.0+] [[#GetStateLockUpdateEvent|GetStateLockUpdateEvent]]
 +
|-
 +
| 11 || [9.0.0+] [[#IsStateLocked|IsStateLocked]]
 
|}
 
|}
 +
 +
== Initialize ==
 +
No input. Returns an output readable Event handle.
 +
 +
== DispatchRequest ==
 +
Takes an input [[#PmState]], an input [[#PmTransitionOrder]] and an input u32 '''Flags'''. No output.
 +
 +
== GetResult ==
 +
No input/output.
 +
 +
== GetState ==
 +
No input. Returns an output [[#PmState]].
 +
 +
== Cancel ==
 +
No input/output.
 +
 +
== PrintModuleInformation ==
 +
No input/output.
 +
 +
== GetModuleInformation ==
 +
Takes two type-0x6 output buffers '''DependencyInformationBefore''' and '''DependencyInformationAfter'''. Returns an output [[#PmModuleTransitionInformation]] and two output u32s '''DependencyInformationBeforeCount''' and '''DependencyInformationAfterCount'''.
 +
 +
== GetStateLockUpdateEvent ==
 +
No input. Returns an output readable Event handle.
 +
 +
== IsStateLocked ==
 +
Takes an input [[#PmState]]. Returns an output bool.
    
= psc:m =
 
= psc:m =
Line 57: Line 86:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 
|-
 
|-
| 0 || GetPmModule || Returns an [[#IPmModule]].
+
| 0 || [[#GetPmModule|GetPmModule]]
 
|}
 
|}
 +
 +
== GetPmModule ==
 +
No input. Returns an [[#IPmModule]].
    
== IPmModule ==
 
== IPmModule ==
Line 69: Line 101:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || Initialize
+
| 0 || [[#Initialize_2|Initialize]]
 
|-
 
|-
| 1 || GetRequest
+
| 1 || [[#GetRequest|GetRequest]]
 
|-
 
|-
| 2 || Acknowledge
+
| 2 || [[#Acknowledge|Acknowledge]]
 
|-
 
|-
| 3 || Finalize
+
| 3 || [[#Finalize|Finalize]]
 
|-
 
|-
| 4 || [5.1.0+] AcknowledgeEx
+
| 4 || [5.1.0+] [[#AcknowledgeEx|AcknowledgeEx]]
 
|}
 
|}
 +
 +
=== Initialize ===
 +
Takes an input [[#PmModuleId]] and a type-0x5 input buffer '''Dependencies'''. Returns an output Event handle.
 +
 +
=== GetRequest ===
 +
No input. Returns an output [[#PmState]] and an output u32 '''Flags'''.
 +
 +
=== Acknowledge ===
 +
No input/output.
 +
 +
On newer versions this cmd just Aborts - this was replaced by [[#AcknowledgeEx|AcknowledgeEx]].
 +
 +
=== Finalize ===
 +
No input/output.
 +
 +
=== AcknowledgeEx ===
 +
Takes an input [[#PmState]]. No output.
    
= psc:l =
 
= psc:l =
 +
This is "nn::psc::sf::IPmStateLock".
 +
 
This was added with [9.0.0+].
 
This was added with [9.0.0+].
   Line 87: Line 138:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||
+
| 0 || [[#Initialize_3|Initialize]]
 
|-
 
|-
| 1 ||
+
| 1 || [[#Lock|Lock]]
 
|-
 
|-
| 2 ||
+
| 2 || [[#Unlock|Unlock]]
 
|-
 
|-
| 3 ||
+
| 3 || [[#IsLocked|IsLocked]]
 
|-
 
|-
| 4 ||
+
| 4 || [[#GetRelatedState|GetRelatedState]]
 
|}
 
|}
 +
 +
== Initialize ==
 +
Takes an input [[#PmState]]. No output.
 +
 +
== Lock ==
 +
No input/output.
 +
 +
== Unlock ==
 +
No input/output.
 +
 +
== IsLocked ==
 +
No input. Returns an output bool.
 +
 +
== GetRelatedState ==
 +
No input. Returns an output [[#PmState]].
    
= srepo:u, srepo:a =
 
= srepo:u, srepo:a =
Line 102: Line 168:     
These were added with [5.0.0+].
 
These were added with [5.0.0+].
 +
 +
Some commands are only accessible by srepo:a. srepo:a is only accessible by [[BCAT_services|bcat]] on retail.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 107: Line 175:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 10100 ||
+
| 10100 || [[#SaveReport]]
 +
|-
 +
| 10101 || [6.0.0+] [[#SaveReportWithUser]]
 +
|-
 +
| 10200 || [6.0.0+] [[#SaveReportForAntiPiracy]]
 +
|-
 +
| 10201 || [6.0.0+] [[#SaveReportWithUserForAntiPiracy]]
 
|-
 
|-
| 10101 || [6.0.0+]
+
| 10300 || [15.0.0+] [[#SendReportWithUser]]
 
|-
 
|-
| 10200 || [6.0.0+]
+
| 11000 || [6.0.0+] [[#NotifyUserList]]
 
|-
 
|-
| 10201 || [6.0.0+]
+
| 11001 || [6.0.0+] [[#NotifyUserDeleted]]
 
|-
 
|-
| 11000 || [6.0.0+]
+
| 11002 || [6.0.0+] [[#NotifyUserRegistered]]
 
|-
 
|-
| 11001 || [6.0.0+]
+
| 11003 || [6.0.0-10.2.0] [[#NotifyUserClosed]]
 
|-
 
|-
| 11002 || [6.0.0+]
+
| 11004 || [6.0.0-10.2.0] [[#NotifyUserOpened]]
 
|-
 
|-
| 11003 || [6.0.0+]
+
| 11005 || [11.0.0+] [[#NotifyUserClosedWithApplicationId]]
 
|-
 
|-
| 11004 || [6.0.0+]
+
| 11006 || [11.0.0+] [[#NotifyUserOpenedWithApplicationId]]
 
|-
 
|-
| 11100 || [6.0.0+]
+
| 11100 || [6.0.0+] [[#NotifyCompletedNetworkRequestChanged]]
 
|-
 
|-
| 11200 || [6.0.0+]
+
| 11200 || [6.0.0+] [[#NotifyFriendPresenceChanged]]
 
|-
 
|-
| 11300 || [6.0.0+]
+
| 11300 || [6.0.0+] [[#NotifyNotificationConnectivityChanged]]
 
|-
 
|-
| 11400 || [6.0.0+]
+
| 11400 || [6.0.0+] [[#NotifyDeviceOperationModeChanged]]
 
|-
 
|-
| 11500 || [6.0.0+]
+
| 11500 || [6.0.0+] [[#NotifySystemPowerStateChanged]]
 
|-
 
|-
| 11600 || [6.0.0+]
+
| 11600 || [6.0.0+] [[#NotifyAppletLaunched]]
 
|-
 
|-
| 11601 || [6.0.0+]
+
| 11601 || [6.0.0+] [[#NotifyAppletExited]]
 
|-
 
|-
| 11602 || [6.0.0+]
+
| 11602 || [6.0.0+] [[#NotifyForegroundAppletChanged]]
 
|-
 
|-
| 11700 || [6.0.0+]
+
| 11700 || [6.0.0+] [[#NotifyControllerCountChanged]]
 
|-
 
|-
| 11800 || [6.0.0+]
+
| 11800 || [6.0.0+] [[#NotifyAudioInStarted]]
 
|-
 
|-
| 11801 || [6.0.0+]
+
| 11801 || [6.0.0+] [[#NotifyAudioInStopped]]
 
|-
 
|-
| 11810 || [8.0.0+]
+
| 11810 || [8.0.0+] [[#NotifyLaunchApplicationStorage]]
 
|-
 
|-
| 11811 || [8.0.0+]
+
| 11811 || [8.0.0+] [[#NotifyApplicationRightsInfo]]
 
|-
 
|-
| 12000 || [8.0.0+]
+
| 12000 || [8.0.0+] [[#RegisterWatchdog]]
 
|-
 
|-
| 12001 || [8.0.0+]
+
| 12001 || [8.0.0+] [[#UnregisterWatchdog]]
 
|-
 
|-
| 13000 || [8.0.0+] [[#OpenSyslogLogger]]
+
| 13000 || [8.0.0+] [[#GetSyslogLogger]]
 
|-
 
|-
| 13001 || [8.0.0+]
+
| 13001 || [8.0.0+] [[#SaveSyslogReport]]
 
|-
 
|-
| 20100 ||
+
| 13002 || [19.0.0+]
 
|-
 
|-
| 20200 ||
+
| 20100 || [[#PopReport]]
 
|-
 
|-
| 20300 || [6.0.0+]
+
| 20200 || [[#GetPushEventReadableHandle]]
 
|-
 
|-
| 20400 || [6.0.0+]
+
| 20300 || [6.0.0+] [[#Shutdown]]
 
|-
 
|-
| 20401 || [6.0.0+]
+
| 20400 || [6.0.0+] [[#PopLostByBufferShortageInfo]]
 
|-
 
|-
| 20402 || [7.0.0+]
+
| 20401 || [6.0.0+] [[#GetBufferUsageInfo]]
 
|-
 
|-
| 20500 || [8.0.0+]
+
| 20402 || [7.0.0+] [[#SetDurationReportChatteringDetectionThreshold]]
 +
|-
 +
| 20500 || [8.0.0+] [[#GetWatchdogStatistics]]
 +
|-
 +
| 20600 || [15.0.0+] [[#NotifyForegroundTransmissionResult]]
 
|}
 
|}
   −
[10.0.0+] Cmd20100 now takes an additional 0x10-bytes of input.
+
== SaveReport ==
 +
Takes a type-0x9 input buffer containing the [[#EventId]], an input u64 '''ApplicationId''' and a type-0x5 input buffer containing the [[#SystemReport]]. No output.
 +
 
 +
<code>nn::srepo::detail::VerifyEventId</code> is then used with the [[#EventId]], throwing error on failure.
 +
 
 +
The [[#SystemReport]] is used with <code>nn::srepo::detail::VerifyReport</code> and with last param = 0x8000, throwing error on failure.
 +
 
 +
Lastly, the actual processing func is called, returning the Result from here. Besides various cmd input being passed to this etc, this also passes the output from <code>nn::util::GenerateUuid()</code> to this.
 +
 
 +
== SaveReportWithUser ==
 +
Takes a type-0x9 input buffer containing the [[#EventId]], an input u64 '''ApplicationId''', a type-0x5 input buffer containing the [[#SystemReport]] and an input [[Account_services#Uid|Uid]]. No output.
 +
 
 +
Same as [[#SaveReport]] except instead of calling the processing func with Uid=all-zero, the input Uid is passed instead (which must be non-zero).
 +
 
 +
== SaveReportForAntiPiracy ==
 +
Takes a type-0x9 input buffer containing the [[#EventId]], an input u64 '''ApplicationId''' and a type-0x5 input buffer containing the [[#SystemReport]]. No output.
 +
 
 +
Same as [[#SaveReport]] except the [[#SystemReport]] Flags field is 1 instead of 0.
 +
 
 +
== SaveReportWithUserForAntiPiracy ==
 +
Takes a type-0x9 input buffer containing the [[#EventId]], an input u64 '''ApplicationId''', a type-0x5 input buffer containing the [[#SystemReport]] and an input [[Account_services#Uid|Uid]]. No output.
 +
 
 +
Same as [[#SaveReportWithUser]] except the [[#SystemReport]] Flags field is 1 instead of 0.
 +
 
 +
== SendReportWithUser ==
 +
Takes an input [[Account_services#Uid|Uid]], an input u64 '''ApplicationId''', an input bool (padded to u64), two input u32s, a type-0x9 input buffer and a TransferMemory handle. Returns an output [[#IAsyncContext]].
 +
 
 +
The mapped TransferMemory buffer is used with <code>nn::srepo::detail::VerifyReport</code>, returning an error on failure.
 +
 
 +
== NotifyUserList ==
 +
Takes a type-0x9 input buffer containing an array of [[Account_services#Uid|Uid]]. No output.
 +
 
 +
The Sf handler code (func which calls the serv obj vfunc) will throw an error if the buffer size is >0x8F (that is, >8 entries).
 +
 
 +
This gets data from a state list, then clears the is_initialized flag for each entry. Lastly when the input array count is non-zero, this loops through the input array writing each entry into the aforementioned state list. If this would run out of space, it would skip writing that entry and still continue - however this shouldn't be possible with the above Sf check. Then this returns 0.
 +
 
 +
== NotifyUserDeleted ==
 +
Takes an input [[Account_services#Uid|Uid]]. No output.
 +
 
 +
This calls the same state-reset func as [[#NotifyUserList]], except this passes the input Uid instead. Then this returns 0.
 +
 
 +
== NotifyUserRegistered ==
 +
Takes an input [[Account_services#Uid|Uid]]. No output.
 +
 
 +
This calls the same state-writing func as [[#NotifyUserList]], except this passes the input Uid instead. Then this returns 0.
 +
 
 +
== NotifyUserClosed ==
 +
Takes an input [[Account_services#Uid|Uid]]. No output.
 +
 
 +
== NotifyUserOpened ==
 +
Takes an input [[Account_services#Uid|Uid]]. No output.
 +
 
 +
== NotifyUserClosedWithApplicationId ==
 +
Takes an input [[Account_services#Uid|Uid]] and an input u64 '''ApplicationId'''. No output.
 +
 
 +
== NotifyUserOpenedWithApplicationId ==
 +
Takes an input [[Account_services#Uid|Uid]] and an input u64 '''ApplicationId'''. No output.
 +
 
 +
== NotifyCompletedNetworkRequestChanged ==
 +
Takes an input s8 and an input bool. No output.
 +
 
 +
== NotifyFriendPresenceChanged ==
 +
Takes an input [[Account_services#Uid|Uid]] and an input s8 (padded to u64). No output.
 +
 
 +
== NotifyNotificationConnectivityChanged ==
 +
Takes an input s8. No output.
 +
 
 +
== NotifyDeviceOperationModeChanged ==
 +
Takes an input s8. No output.
 +
 
 +
== NotifySystemPowerStateChanged ==
 +
Takes an input s8. No output.
 +
 
 +
== NotifyAppletLaunched ==
 +
Takes an input [[#SfAppletIdentityInfo]]. No output.
 +
 
 +
== NotifyAppletExited ==
 +
Takes an input [[#SfAppletIdentityInfo]]. No output.
 +
 
 +
== NotifyForegroundAppletChanged ==
 +
Takes an input [[#SfAppletIdentityInfo]]. No output.
 +
 
 +
== NotifyControllerCountChanged ==
 +
Takes three input s8s. No output.
 +
 
 +
== NotifyAudioInStarted ==
 +
Takes a type-0x5 input buffer and an input u64. No output.
 +
 
 +
== NotifyAudioInStopped ==
 +
Takes a type-0x5 input buffer and an input u64. No output.
 +
 
 +
== NotifyLaunchApplicationStorage ==
 +
Takes an input u64 '''ApplicationId''' and an input u8 (padded to u64). No output.
 +
 
 +
== NotifyApplicationRightsInfo ==
 +
Takes an input u64 '''ApplicationId''' and an input u32 (padded to u64). No output.
 +
 
 +
== RegisterWatchdog ==
 +
Takes a type-0x9 input buffer, an input [[#TimeSpanType]] and an input u64. Returns an output [[#WatchdogHandle]].
 +
 
 +
== UnregisterWatchdog ==
 +
Takes an input [[#WatchdogHandle]]. No output.
 +
 
 +
== GetSyslogLogger ==
 +
Takes a type-0x5 input buffer. No output.
 +
 
 +
[9.0.0+] No input. Returns three output u32s, an [[#ISyslogLogger]] and a SharedMemory handle.
 +
 
 +
The SharedMemory is mapped with the returned size and with permissions=RW.
 +
 
 +
== SaveSyslogReport ==
 +
Takes an input u128 "nn::util::Uuid". No output.
 +
 
 +
== PopReport ==
 +
Takes a type-0xA output buffer and a type-0x6 output buffer. Returns an output [[Account_services#Uid|Uid]].
 +
 
 +
[6.0.0+] This now returns an additional output u64 '''ApplicationId''' and an output u128 "nn::util::Uuid".
 +
 
 +
[10.0.0+] This now returns an additional output u64 and two output u32s.
 +
 
 +
This is only usable with srepo:a.
 +
 
 +
== GetPushEventReadableHandle ==
 +
No input. Returns an output Event handle.
 +
 
 +
This is only usable with srepo:a.
 +
 
 +
== Shutdown ==
 +
No input/output.
 +
 
 +
== PopLostByBufferShortageInfo ==
 +
Takes an input u32. Returns two output u64s.
 +
 
 +
The input u32 must be <=1. This gets data from a state array with the specified index.
 +
 
 +
== GetBufferUsageInfo ==
 +
No input. Returns two output u64s.
 +
 
 +
The first u64 is a constant value, while the second u64 is from state.
 +
 
 +
== SetDurationReportChatteringDetectionThreshold ==
 +
Takes an input [[#TimeSpanType]] and an input u64. No output.
 +
 
 +
The input s64 must be >=1. The two input fields are written into global state, and various state is also cleared.
 +
 
 +
== GetWatchdogStatistics ==
 +
No input. Returns an output [[#WatchdogStatistics]].
   −
== OpenSyslogLogger ==
+
This gets two u64s from global state.
Takes a type-0x5 input buffer, no output.
     −
[9.0.0+] No input, returns a total of 0xC-bytes of output, an [[#ISyslogLogger]], and a handle.
+
== NotifyForegroundTransmissionResult ==
 +
Takes an input u128 "nn::util::Uuid" and an input [[#ResultHolder]]. No output.
 +
 
 +
This goes through the global list of [[#IAsyncContext]] looking for an entry with data matching the input struct, then writes the input [[#ResultHolder]] into that [[#IAsyncContext]]. This Result would then be returned by [[#GetResult]] - the Event from [[#GetSystemEvent]] is also signaled.
 +
 
 +
This always returns 0.
    
== ISyslogLogger ==
 
== ISyslogLogger ==
Line 190: Line 418:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||  
+
| 0 || [[#ReallocateBuffer|ReallocateBuffer]]
 
|}
 
|}
   −
Cmd0: no input, returns a total of 8-bytes of output.
+
=== ReallocateBuffer ===
 +
No input. Returns two output u32s.
 +
 
 +
This does the same entry-allocation in sharedmem as [[#GetSyslogLogger]].
 +
 
 +
== IAsyncContext ==
 +
This is "nn::srepo::detail::ipc::IAsyncContext".
 +
 
 +
This was added with [15.0.0+].
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#GetSystemEvent]]
 +
|-
 +
| 1 || [[#Cancel]]
 +
|-
 +
| 2 || [[#GetResult]]
 +
|}
 +
 
 +
=== GetSystemEvent ===
 +
No input, returns an output Event.
 +
 
 +
=== Cancel ===
 +
No input/output.
 +
 
 +
This just returns 0.
 +
 
 +
=== GetResult ===
 +
No input/output.
 +
 
 +
This checks if the Event from GetSystemEvent was signaled throwing an error if not, otherwise this returns the Result stored in the context object.
    
= ovln:rcv =
 
= ovln:rcv =
Line 275: Line 535:  
|-
 
|-
 
| 15 || [[#SetupEphemeralNetworkSystemClockCore]]
 
| 15 || [[#SetupEphemeralNetworkSystemClockCore]]
 +
|-
 +
| 20 || [19.0.0+] GetStandardSteadyClockCurrentTimePoint
 
|-
 
|-
 
| 50 || GetStandardLocalClockOperationEvent
 
| 50 || GetStandardLocalClockOperationEvent
Line 514: Line 776:     
=== TimeSpanType ===
 
=== TimeSpanType ===
This is an u64.
+
This is an s64.
    
== ISystemClock ==
 
== ISystemClock ==
Line 704: Line 966:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||
+
| 0 || [[#GetInputSourceState]]
 
|-
 
|-
| 1 ||
+
| 1 || [[#GetTriggerTargetEvent]]
 
|}
 
|}
   −
== Cmd0 ==
+
== GetInputSourceState ==
Takes an input u32 '''InsID'''. Returns an u64.
+
Takes an input u32 '''SourceId'''. Returns an output u64 '''EventTime'''.
   −
== Cmd1 ==
+
== GetTriggerTargetEvent ==
Takes an input u32 '''InsID''' and an input u64 (unused, official software passes struct pointer). Returns an output Event handle with autoclear disabled.
+
Takes an input u32 '''SourceId''' and an input u64 (unused, official software passes struct pointer). Returns an output Event handle with autoclear disabled.
    
= ins:s =
 
= ins:s =
Line 724: Line 986:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||
+
| 0 || [[#GetNotifyEvent]]
 
|}
 
|}
   −
== Cmd0 ==
+
== GetNotifyEvent ==
Takes an input u32 '''InsID''' and an input u64 (unused, official software passes struct pointer). Returns an output Event handle with autoclear disabled.
+
Takes an input u32 '''SourceId''' and an input u64 (unused, official software passes struct pointer). Returns an output Event handle with autoclear disabled.
    
= hshl:sys =
 
= hshl:sys =
 +
This is "nn::hshl::IManager".
 +
 
This was added with [11.0.0+].
 
This was added with [11.0.0+].
   Line 737: Line 1,001:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||
+
| 0 || GetBatteryPercentage
 +
|-
 +
| 1 || GetChargerType
 +
|-
 +
| 2 || [[#OpenChargeSession]]
 +
|-
 +
| 3 || GetRawBatteryPercentage
 +
|-
 +
| 4 || GetBatteryVoltageLevel
 +
|-
 +
| 5 || [[#OpenThermalSession]]
 +
|-
 +
| 6 || GetAbnormalTemperatureSet
 +
|-
 +
| 7 || [[#OpenClockSession]]
 +
|-
 +
| 8 || GetClockRate
 +
|-
 +
| 9 || [17.0.0+] [[#OpenBridgeSession]]
 +
|-
 +
| 10 || [17.0.0+] GetBridgePowerSupply
 +
|-
 +
| 11 || [18.0.0+] [[#OpenVsysVoltageSession]]
 +
|-
 +
| 12 || [18.0.0+] GetIsBatteryEnoughForFullAwake
 +
|-
 +
| 13 || [19.0.0+] GetIsCharging
 +
|}
 +
 
 +
== OpenChargeSession ==
 +
No input. Returns an [[#IChargeSession]].
 +
 
 +
== OpenThermalSession ==
 +
No input. Returns an [[#IThermalSession]].
 +
 
 +
== OpenClockSession ==
 +
Takes an input u32. Returns an [[#IClockSession]].
 +
 
 +
== OpenBridgeSession ==
 +
No input. Returns an [[#IBridgeSession]].
 +
 
 +
== OpenVsysVoltageSession ==
 +
No input. Returns an [[#IVsysVoltageSession]].
 +
 
 +
== IChargeSession ==
 +
This is "nn::hshl::IChargeSession".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || GetStateChangeEvent
 +
|-
 +
| 1 || SetStateChangeSet
 +
|}
 +
 
 +
== IThermalSession ==
 +
This is "nn::hshl::IThermalSession".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 
|-
 
|-
| 1 ||
+
| 0 || GetAbnormalTemperatureEvent
 
|-
 
|-
| 2 ||
+
| 1 || SetAbnormalTemperatureEventMask
 +
|}
 +
 
 +
== IClockSession ==
 +
This is "nn::hshl::IClockSession".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 3 ||
+
! Cmd || Name
 
|-
 
|-
| 4 ||
+
| 0 || GetStateChangeEvent
 +
|}
 +
 
 +
== IBridgeSession ==
 +
This is "nn::hshl::IBridgeSession".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 5 ||
+
! Cmd || Name
 
|-
 
|-
| 6 ||
+
| 0 || GetStateChangeEvent
 +
|}
 +
 
 +
== IVsysVoltageSession ==
 +
This is "nn::hshl::IVsysVoltageSession".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 7 ||
+
! Cmd || Name
 
|-
 
|-
| 8 ||
+
| 0 || GetStateChangeEvent
 
|}
 
|}
    
= hshl:set =
 
= hshl:set =
 +
This is "nn::hshl::ISetterManager".
 +
 
This was added with [11.0.0+].
 
This was added with [11.0.0+].
   Line 763: Line 1,108:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||
+
| 0 || [[#OpenChargeSession_2|OpenChargeSession]]
 +
|-
 +
| 1 || [[#OpenThermalSession_2|OpenThermalSession]]
 +
|-
 +
| 2 || SetClockRate
 +
|-
 +
| 3 || [17.0.0+] SetBridgePowerSupply
 +
|-
 +
| 4 || [18.0.0+]
 +
|-
 +
| 5 || [18.0.0+]
 +
|}
 +
 
 +
== OpenChargeSession ==
 +
Takes an input u32. Returns an [[#IChargeSetterSession]].
 +
 
 +
== OpenThermalSession ==
 +
Takes an input u32. Returns an [[#IThermalSetterSession]].
 +
 
 +
== IChargeSetterSession ==
 +
This is "nn::hshl::IChargeSetterSession".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || SetBatteryPercentage
 +
|-
 +
| 1 || SetRawBatteryPercentage
 +
|-
 +
| 2 || SetChargerType
 +
|-
 +
| 3 || SetBatteryVoltageLevel
 
|-
 
|-
| 1 ||
+
| 4 || [18.0.0+]
 
|-
 
|-
| 2 ||
+
| 5 || [19.0.0+]
 +
|}
 +
 
 +
== IThermalSetterSession ==
 +
This is "nn::hshl::IThermalSetterSession".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || SetAbnormalTemperatureSet
 
|}
 
|}
   Line 787: Line 1,174:  
| 0x04 || [[USB_services|Usb]]
 
| 0x04 || [[USB_services|Usb]]
 
|-
 
|-
| 0x05 || [[Sockets_services|Eth]]
+
| 0x05 || [[Ethernet_services|Eth]]
 
|-
 
|-
 
| 0x06 || [[PTM_services|Fgm]]
 
| 0x06 || [[PTM_services|Fgm]]
Line 813: Line 1,200:  
| 0x11 || [[PTM_services|Tc]]
 
| 0x11 || [[PTM_services|Tc]]
 
|-
 
|-
| 0x12 || [[Applet_Manager_services|Omm]]
+
| 0x12 || [[OMM_services|Omm]]
 
|-
 
|-
 
| 0x13 || [[PCIe_services|Pcie]]
 
| 0x13 || [[PCIe_services|Pcie]]
Line 881: Line 1,268:  
| 0x33 || [[NIM_services|Ntc]]
 
| 0x33 || [[NIM_services|Ntc]]
 
|-
 
|-
| 0x34 || [[Applet_Manager_services|Idle]]
+
| 0x34 || [[OMM_services|Idle]]
 
|-
 
|-
 
| 0x35 || [[Applet_Manager_services|Tcap]]
 
| 0x35 || [[Applet_Manager_services|Tcap]]
Line 893: Line 1,280:  
| 0x39 || [[PCV_services|Rtc]]
 
| 0x39 || [[PCV_services|Rtc]]
 
|-
 
|-
| 0x3A ||
+
| 0x3A || [[PCV_services|Regulator]]
 
|-
 
|-
| 0x3B ||
+
| 0x3B || [[PCV_services|Clkrst]]
 
|-
 
|-
 
| 0x3C || [[Bus_services|Led]]
 
| 0x3C || [[Bus_services|Led]]
 
|-
 
|-
| 0x3D || [[NS_Services|Ns]]
+
| 0x3D || [[NS_Services|NuiShell]]
 
|-
 
|-
| 0x3E ||  
+
| 0x3E || [[PTM_services|Powctl]]
 
|-
 
|-
| 0x3F || [[Applet_Manager_services|NotificationPresenter]]
+
| 0x3F || [[OMM_services|NotificationPresenter]]
 
|-
 
|-
| 0x40 ||  
+
| 0x40 || [[Glue_services|Notification]]
 
|-
 
|-
| 0x41 || [[Sockets_services|DhcpClient]]
+
| 0x41 || [[Sockets_services|Dhcpc]]
 +
|-
 +
| 0x42 || [[BCAT_services|Mnpp]]
 +
|-
 +
| 0x43 || [[OLSC_services|Sprofile]]
 
|-
 
|-
 
| 0x65 || [[NV_services|NvHost]]
 
| 0x65 || [[NV_services|NvHost]]
 
|-
 
|-
| 0x69 || [[NV_services|NvDbgSvc]]
+
| 0x69 || NvDbgSvc
 
|-
 
|-
 
| 0x6A || Tspm
 
| 0x6A || Tspm
 
|-
 
|-
| 0x7F || [[Applet_Manager_services|Spsm]]
+
| 0x7F || [[OMM_services|Spsm]]
 
|}
 
|}
   Line 925: Line 1,316:  
! Value || Name || Description
 
! Value || Name || Description
 
|-
 
|-
| 0 || Awake || Everything is awake.
+
| 0 || FullAwake || Everything is awake.
 +
|-
 +
| 1 || MinimumAwake || Preparing to transition to awake.
 +
|-
 +
| 2 || SleepReady || Preparing to transition to sleep.
 +
|-
 +
| 3 || EssentialServicesSleepReady || Critical services are ready to sleep.
 +
|-
 +
| 4 || EssentialServicesAwake || Critical services are ready to wake up.
 +
|-
 +
| 5 || ShutdownReady || Preparing to transition to shutdown.
 +
|-
 +
| 6 || Invalid || Default state.
 +
|}
 +
 
 +
= PmTransitionOrder =
 +
This is "nn::psc::PmTransitionOrder".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Value
 +
! Description
 +
|-
 +
| 0 || ToLowerPowerState
 +
|-
 +
| 1 || ToHigherPowerState
 +
|}
 +
 
 +
= PmModuleTransitionInformation =
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x00
 +
| 0x08
 +
| TimeBefore
 
|-
 
|-
| 1 || ReadyAwaken || Preparing to transition to awake.
+
| 0x08
 +
| 0x10
 +
| TimeAfter
 
|-
 
|-
| 2 || ReadySleep || Preparing to transition to sleep.
+
| 0x10
 +
| 0x04
 +
| Result
 
|-
 
|-
| 3 || ReadySleepCritical || Critical services are ready to sleep.
+
| 0x14
 +
| 0x04
 +
| [[#PmState|StateBefore]]
 
|-
 
|-
| 4 || ReadyAwakenCritical || Critical services are ready to wake up.
+
| 0x18
 +
| 0x04
 +
| [[#PmState|StateAfter]]
 
|-
 
|-
| 5 || ReadyShutdown || Preparing to transition to shutdown.
+
| 0x1C
 +
| 0x04
 +
| Reserved
 
|}
 
|}
 +
 +
= SystemReport =
 +
This is "nn::srepo::SystemReport".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x00
 +
| 0x20
 +
| [[#EventId|EventId]]
 +
|-
 +
| 0x20
 +
| 0x08
 +
| ApplicationId
 +
|-
 +
| 0x28
 +
| 0x04
 +
| Flags
 +
|-
 +
| 0x2C
 +
| 0x01
 +
|
 +
|-
 +
| 0x2D
 +
| 0x03
 +
| Reserved
 +
|-
 +
| 0x30
 +
| 0x08
 +
| ReportBufferAddress
 +
|-
 +
| 0x38
 +
| 0x08
 +
| ReportBufferTotalSize
 +
|-
 +
| 0x40
 +
| 0x08
 +
| ReportBufferCurrentSize
 +
|}
 +
 +
= EventId =
 +
This is "nn::srepo::EventId". This is a 0x20-byte string.
 +
 +
= WatchdogHandle =
 +
This is "nn::srepo::WatchdogHandle". This is an u64.
 +
 +
= WatchdogStatistics =
 +
This is "nn::srepo::WatchdogStatistics".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x00
 +
| 0x08
 +
|
 +
|-
 +
| 0x08
 +
| 0x08
 +
|
 +
|}
 +
 +
= ResultHolder =
 +
This is "nn::srepo::detail::ipc::ResultHolder". This is an u32.
 +
 +
= SfAppletIdentityInfo =
 +
This is "nn::srepo::detail::ipc::SfAppletIdentityInfo". This is a 0x10-byte struct.
    
[[Category:Services]]
 
[[Category:Services]]