Changes

Jump to navigation Jump to search
8,478 bytes added ,  20:13, 10 September 2019
no edit summary
Line 13: Line 13:  
|-
 
|-
 
| 3 || GetApplicationControlPropertyWithApplicationId || Takes an input u64 TitleId, returns a type-0x16 buffer filled with the contents of [[NACP_Format|control.nacp]]
 
| 3 || GetApplicationControlPropertyWithApplicationId || Takes an input u64 TitleId, returns a type-0x16 buffer filled with the contents of [[NACP_Format|control.nacp]]
 +
|-
 +
| 9998 || ||
 +
|-
 +
| 9999 || ||
 
|}
 
|}
   Line 69: Line 73:  
|-
 
|-
 
| 15 || SchedulePeriodicTask
 
| 15 || SchedulePeriodicTask
 +
|-
 +
| 16 || [9.0.0+]
 
|-
 
|-
 
| 101 || [3.0.0+] GetOperationMode
 
| 101 || [3.0.0+] GetOperationMode
Line 75: Line 81:  
|-
 
|-
 
| 103 || [3.0.0+] WillStayHalfAwakeInsteadSleep
 
| 103 || [3.0.0+] WillStayHalfAwakeInsteadSleep
|-
   
|}
 
|}
   Line 94: Line 99:  
|-
 
|-
 
| 5 || [3.0.0+] SetIsUsingSleepUnsupportedDevices
 
| 5 || [3.0.0+] SetIsUsingSleepUnsupportedDevices
|-
   
|}
 
|}
    
= ApplicationLaunchProperty =
 
= ApplicationLaunchProperty =
   
Total size is 0x10-bytes.
 
Total size is 0x10-bytes.
   Line 126: Line 129:  
| 0x02
 
| 0x02
 
| Padding
 
| Padding
 +
|}
 +
 +
= time:a, time:r, time:u =
 +
These are "nn::timesrv::detail::service::IStaticService".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetStandardUserSystemClock || Returns an [[#ISystemClock]].
 +
|-
 +
| 1 || GetStandardNetworkSystemClock || Returns an [[#ISystemClock]].
 +
|-
 +
| 2 || GetStandardSteadyClock || Returns an [[#ISteadyClock]].
 +
|-
 +
| 3 || GetTimeZoneService || Returns an [[#ITimeZoneService]].
 +
|-
 +
| 4 || GetStandardLocalSystemClock || Returns an [[#ISystemClock]].
 +
|-
 +
| 5 || [4.0.0+] GetEphemeralNetworkSystemClock || Returns an [[#ISystemClock]].
 +
|-
 +
| 20 || [6.0.0+] GetSharedMemoryNativeHandle ||
 +
|-
 +
| 30 || [6.0.0-8.1.0] GetStandardNetworkClockOperationEventReadableHandle ||
 +
|-
 +
| 31 || [6.0.0-8.1.0] GetEphemeralNetworkClockOperationEventReadableHandle ||
 +
|-
 +
| 50 || [4.0.0+] SetStandardSteadyClockInternalOffset ||
 +
|-
 +
| 51 || [9.0.0+] GetStandardSteadyClockRtcValue ||
 +
|-
 +
| 100 || IsStandardUserSystemClockAutomaticCorrectionEnabled ||
 +
|-
 +
| 101 || SetStandardUserSystemClockAutomaticCorrectionEnabled ||
 +
|-
 +
| 102 || [5.0.0+] GetStandardUserSystemClockInitialYear ||
 +
|-
 +
| 200 || [3.0.0+] IsStandardNetworkSystemClockAccuracySufficient ||
 +
|-
 +
| 201 || [6.0.0+] GetStandardUserSystemClockAutomaticCorrectionUpdatedTime ||
 +
|-
 +
| 300 || [4.0.0+] CalculateMonotonicSystemClockBaseTimePoint ||
 +
|-
 +
| 400 || [4.0.0+] GetClockSnapshot ||
 +
|-
 +
| 401 || [4.0.0+] GetClockSnapshotFromSystemClockContext ||
 +
|-
 +
| 500 || [4.0.0+] CalculateStandardUserSystemClockDifferenceByUser ||
 +
|-
 +
| 501 || [4.0.0+] CalculateSpanBetween ||
 +
|}
 +
 +
== ISteadyClock ==
 +
This is "nn::timesrv::detail::service::ISteadyClock".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetCurrentTimePoint || No input, returns an output [[#SteadyClockTimePoint]].
 +
|-
 +
| 2 || GetTestOffset || No input, returns an output [[#TimeSpanType]].
 +
|-
 +
| 3 || SetTestOffset || Takes an input [[#TimeSpanType]], no output.
 +
|-
 +
| 100 || [2.0.0+] GetRtcValue || No input, returns an output s64.
 +
|-
 +
| 101 || [2.0.0+] IsRtcResetDetected || No input, returns an output u8 bool.
 +
|-
 +
| 102 || [2.0.0+] GetSetupResultValue || No input, returns an output u32.
 +
|-
 +
| 200 || [3.0.0+] GetInternalOffset || No input, returns an output [[#TimeSpanType]].
 +
|-
 +
| 201 || [3.0.0-3.0.2] SetInternalOffset || Takes an input [[#TimeSpanType]], no output.
 +
|}
 +
 +
=== SteadyClockTimePoint ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8|| A u64 representing a point in time.
 +
|-
 +
| 0x8 || 0x10 || An ID representing the clock source.
 +
|}
 +
 +
This is a 0x18-byte struct.
 +
 +
=== TimeSpanType ===
 +
This is an u64.
 +
 +
== ISystemClock ==
 +
This is "nn::timesrv::detail::service::ISystemClock".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetCurrentTime || Returns an output [[#PosixTime]].
 +
|-
 +
| 1 || SetCurrentTime || Takes an input [[#PosixTime]].
 +
|-
 +
| 2 || GetSystemClockContext || Returns an output [[#SystemClockContext]].
 +
|-
 +
| 3 || SetSystemClockContext || Takes an input [[#SystemClockContext]].
 +
|-
 +
| 4 || [9.0.0+] GetOperationEventReadableHandle ||
 +
|}
 +
 +
=== PosixTime ===
 +
This is an s64 for UTC POSIX time.
 +
 +
=== SystemClockContext ===
 +
This is an 0x20-byte struct.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8|| a [[#PosixTime]] representing the system clock epoch.
 +
|-
 +
| 0x8 || 0x18 || a [[#SteadyClockTimePoint]]
 +
|}
 +
 +
== ITimeZoneService ==
 +
This is "nn::timesrv::detail::service::ITimeZoneService".
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || GetDeviceLocationName || No input, returns an output [[#LocationName]].
 +
|-
 +
| 1 || SetDeviceLocationName || Takes an input [[#LocationName]], no output.
 +
|-
 +
| 2 || GetTotalLocationNameCount || No input, returns an output s32.
 +
|-
 +
| 3 || LoadLocationNameList ||
 +
|-
 +
| 4 || LoadTimeZoneRule || Takes an input [[#LocationName]] and a type-0x16 output buffer for [[#TimeZoneRule]], no output.
 +
|-
 +
| 5 || [2.0.0+] GetTimeZoneRuleVersion ||  No input, returns an output [[#TimeZoneRuleVersion]].
 +
|-
 +
| 6 || [5.0.0+] GetDeviceLocationNameAndUpdatedTime ||
 +
|-
 +
| 7 || [9.0.0+] SetDeviceLocationNameWithTimeZoneRule ||
 +
|-
 +
| 8 || [9.0.0+] ParseTimeZoneBinary ||
 +
|-
 +
| 20 || [9.0.0+] GetDeviceLocationNameOperationEventReadableHandle ||
 +
|-
 +
| 100 || ToCalendarTime || Takes an input [[#PosixTime]] and a type-0x15 input buffer for [[#TimeZoneRule]], returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]].
 +
|-
 +
| 101 || ToCalendarTimeWithMyRule || Takes an input [[#PosixTime]], returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]].
 +
|-
 +
| 201 || ToPosixTime || Takes an input [[#CalendarTime]], a type-0x15 input buffer for [[#TimeZoneRule]], an type-0xA output buffer for [[#PosixTime]] array, and returns an output s32.
 +
|-
 +
| 202 || ToPosixTimeWithMyRule || Takes an input [[#CalendarTime]], an type-0xA output buffer for [[#PosixTime]] array, and returns an output s32.
 +
|}
 +
 +
=== LoadLocationNameList ===
 +
Takes an input s32 LocationName_index and a type-0x6 output buffer for [[#LocationName]], returns an output s32 for total output entries.
 +
 +
=== LocationName ===
 +
This contains a TimeZone location string with a max size of 0x24 bytes.
 +
 +
=== TimeZoneRule ===
 +
This is an 0x4000-byte struct. Official sw uses fixed-size 0x4000 for the buffer size with the above commands.
 +
 +
This is loaded from the [[Title_list|TimeZoneBinary]] title with the specified LocationName under the zoneinfo/ directory, the content is then converted into this TimeZoneRule structure.
 +
 +
The files contained under zoneinfo/ directory are Tzif2 files without Tzif1 header and data at the begining of them (see [https://tools.ietf.org/html/rfc8536 RFC8536] for more information).
 +
 +
The conversion of a Tzif2 file to a TimeZoneRule structure is based on [https://github.com/eggert/tz/blob/master/localtime.c tz database code] with some custom modifications (Leap seconds aren't handled, no usage of "posixrules" and Tzif1 support stripped out).
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || timecnt
 +
|-
 +
| 0x4 || 0x4 || typecnt
 +
|-
 +
| 0x8 || 0x4 || charcnt
 +
|-
 +
| 0xC || 0x1 || goback
 +
|-
 +
| 0xD || 0x1 || goahead
 +
|-
 +
| 0xE || 0x2 || Padding
 +
|-
 +
| 0x10 || 0x8 * 1000 || ats
 +
|-
 +
| 0x1f50 || 0x1 * 1000 || types
 +
|-
 +
| 0x2338 || 0x10 * 128 || ttis (time type information), struct ttinfo[1000]
 +
|-
 +
| 0x2b38 || 0x1 * 512 || chars
 +
|-
 +
| 0x2d38 || 0x4 || defaulttype
 +
|-
 +
| 0x2d3c || 0x12c4 || Reserved / Unused
 +
|}
 +
 +
=== ttinfo ===
 +
This is an 0x10-byte struct.
 +
Represent a Time Type Information used in [[#TimeZoneRule]].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || tt_gmtoff
 +
|-
 +
| 0x4 || 0x1 || tt_isdst
 +
|-
 +
| 0x5 || 0x3 || Padding
 +
|-
 +
| 0x8 || 0x4 || tt_abbrind
 +
|-
 +
| 0xC || 0x1 || tt_ttisstd
 +
|-
 +
| 0xD || 0x1 || tt_ttisgmt
 +
|-
 +
| 0xE || 0x2 || Padding
 +
|}
 +
 +
=== TimeZoneRuleVersion ===
 +
This is an u128.
 +
 +
=== CalendarTime ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x2 || Year
 +
|-
 +
| 0x2 || 0x1 || Month
 +
|-
 +
| 0x3 || 0x1 || Day
 +
|-
 +
| 0x4 || 0x1 || Hour
 +
|-
 +
| 0x5 || 0x1 || Minute
 +
|-
 +
| 0x6 || 0x1 || Second
 +
|-
 +
| 0x7 || 0x1 || Padding / unknown?
 +
|}
 +
 +
This is an 0x8-byte struct.
 +
 +
=== CalendarAdditionalInfo ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x4 || 0-based day-of-week.
 +
|-
 +
| 0x4 || 0x4 || 0-based day-of-year.
 +
|-
 +
| 0x8 || 0x8 || Timezone name string.
 +
|-
 +
| 0x10 || 0x4 || 0 = no DST, 1 = DST.
 +
|-
 +
| 0x14 || 0x4 || s32 seconds relative to UTC for this timezone.
 +
|}
 +
 +
This is an 0x18-byte struct. This stores timezone info.
 +
 +
= notif:a =
 +
This is "nn::notification::server::INotificationServicesForApplication".
 +
 +
This was added with [9.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 500 || RegisterAlarmSetting
 +
|-
 +
| 510 || UpdateAlarmSetting
 +
|-
 +
| 520 || ListAlarmSettings
 +
|-
 +
| 530 || LoadApplicationParameter
 +
|-
 +
| 540 || DeleteAlarmSetting
 +
|-
 +
| 1000 || Initialize
 +
|}
 +
 +
= notif:s =
 +
This is "nn::notification::server::INotificationServicesForSystem".
 +
 +
This was added with [9.0.0+].
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 500 || RegisterAlarmSetting
 +
|-
 +
| 510 || UpdateAlarmSetting
 +
|-
 +
| 520 || ListAlarmSettings
 +
|-
 +
| 530 || LoadApplicationParameter
 +
|-
 +
| 540 || DeleteAlarmSetting
 +
|-
 +
| 1000 || Initialize
 +
|-
 +
| 1010 ||
 +
|-
 +
| 1020 ||
 +
|-
 +
| 1030 ||
 +
|-
 +
| 1040 ||
 +
|-
 +
| 1500 ||
 +
|-
 +
| 1510 ||
 +
|-
 +
| 2000 ||
 +
|-
 +
| 2001 ||
 +
|-
 +
| 2010 ||
 +
|-
 +
| 2020 ||
 +
|-
 +
| 8000 ||
 +
|-
 +
| 8010 ||
 +
|-
 +
| 9000 ||
 
|}
 
|}
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu