PCV services: Difference between revisions
No edit summary |
|||
Line 6: | Line 6: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || ShutdownSystem | | 0 || [[#ShutdownSystem]] | ||
|- | |- | ||
| 1 || RebootSystem | | 1 || [[#RebootSystem]] | ||
|- | |- | ||
| 2 || GetWakeupReason | | 2 || [[#GetWakeupReason]] | ||
|- | |- | ||
| 3 || GetShutdownReason | | 3 || [[#GetShutdownReason]] | ||
|- | |- | ||
| 4 || GetAcOk | | 4 || [[#GetAcOk]] | ||
|- | |- | ||
| 5 || GetBoardPowerControlEvent | | 5 || [[#GetBoardPowerControlEvent]] | ||
|- | |- | ||
| 6 || [2.0.0+] GetSleepButtonState | | 6 || [2.0.0+] [[#GetSleepButtonState]] | ||
|- | |- | ||
| 7 || [2.0.0+] GetPowerEvent | | 7 || [2.0.0+] [[#GetPowerEvent]] | ||
|- | |- | ||
| 8 || [2.0.0-9.2.0] CreateWakeupTimer | | 8 || [2.0.0-9.2.0] [[#CreateWakeupTimer]] | ||
|- | |- | ||
| 9 || [2.0.0-9.2.0] CancelWakeupTimer | | 9 || [2.0.0-9.2.0] [[#CancelWakeupTimer]] | ||
|- | |- | ||
| 10 || [2.0.0-9.2.0] [[#EnableWakeupTimerOnDevice]] | | 10 || [2.0.0-9.2.0] [[#EnableWakeupTimerOnDevice]] | ||
|- | |- | ||
| 11 || [3.0.0-9.2.0] CreateWakeupTimerEx | | 11 || [3.0.0-9.2.0] [[#CreateWakeupTimerEx]] | ||
|- | |- | ||
| 12 || [3.0.0-9.2.0] GetLastEnabledWakeupTimerType | | 12 || [3.0.0-9.2.0] [[#GetLastEnabledWakeupTimerType]] | ||
|- | |- | ||
| 13 || [3.0.0-9.2.0] CleanAllWakeupTimers | | 13 || [3.0.0-9.2.0] [[#CleanAllWakeupTimers]] | ||
|- | |- | ||
| 14 || [6.0.0+] GetPowerButton | | 14 || [6.0.0+] [[#GetPowerButton]] | ||
|- | |- | ||
| 15 || [10.0.0+] | | 15 || [10.0.0+] [[#SetEnableWakeupTimer]] | ||
|} | |} | ||
== ShutdownSystem == | |||
No input/output. | |||
== RebootSystem == | |||
No input/output. | |||
== GetWakeupReason == | |||
No input. Returns an output u32. | |||
== GetShutdownReason == | |||
No input. Returns an output u32. | |||
== GetAcOk == | |||
No input. Returns an output bool. | |||
== GetBoardPowerControlEvent == | |||
Takes an input [[#BoardPowerControlEventTarget|BoardPowerControlEventTarget]]. Returns an output Event handle. | |||
== GetSleepButtonState == | |||
No input. Returns an output [[#SleepButtonState|SleepButtonState]]. | |||
== GetPowerEvent == | |||
Takes an input [[#EventTarget|EventTarget]]. Returns an output Event handle. | |||
== CreateWakeupTimer == | |||
Takes an input u64. Returns an output u32. | |||
== CancelWakeupTimer == | |||
Takes an input u32. No output. | |||
== EnableWakeupTimerOnDevice == | == EnableWakeupTimerOnDevice == | ||
No input | No input. Returns an output bool '''IsEnabled''' and an output u64 '''Interval'''. | ||
[3.0.0+] Now returns an u32 and an u64. | |||
== CreateWakeupTimerEx == | |||
Takes two input u64s. Returns an output u32. | |||
== GetLastEnabledWakeupTimerType == | |||
No input. Returns an output u32. | |||
== CleanAllWakeupTimers == | |||
Takes an input u32. No output. | |||
== GetPowerButton == | |||
No input. Returns an output bool '''IsPushed'''. | |||
== SetEnableWakeupTimer == | |||
Unofficial name. | |||
No input/output. Enables an internal wakeup timer when calling [[#ShutdownSystem|ShutdownSystem]] or [[#RebootSystem|RebootSystem]]. | |||
= bpc:r = | = bpc:r = | ||
Line 49: | Line 98: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || GetRtcTime | | 0 || [[#GetRtcTime]] | ||
|- | |- | ||
| 1 || SetRtcTime | | 1 || [[#SetRtcTime]] | ||
|- | |- | ||
| 2 || GetRtcResetDetected | | 2 || [[#GetRtcResetDetected]] | ||
|- | |- | ||
| 3 || [2.0.0+] ClearRtcResetDetected | | 3 || [2.0.0+] [[#ClearRtcResetDetected]] | ||
|- | |- | ||
| 4 || [3.0.0+] SetUpRtcResetOnShutdown | | 4 || [3.0.0+] [[#SetUpRtcResetOnShutdown]] | ||
|} | |} | ||
== GetRtcTime == | |||
No input. Returns an output u64. | |||
== SetRtcTime == | |||
Takes an input u64. No output. | |||
== GetRtcResetDetected == | |||
No input. Returns an output bool. | |||
== ClearRtcResetDetected == | |||
No input/output. | |||
== SetUpRtcResetOnShutdown == | |||
No input/output. | |||
= bpc:c = | = bpc:c = | ||
Line 69: | Line 133: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || ShutdownSystem | | 0 || [[#ShutdownSystem]] | ||
|- | |- | ||
| 1 || RebootSystem | | 1 || [[#RebootSystem]] | ||
|- | |- | ||
| 2 || GetWakeupReason | | 2 || [[#GetWakeupReason]] | ||
|- | |- | ||
| 3 || GetShutdownReason | | 3 || [[#GetShutdownReason]] | ||
|- | |- | ||
| 4 || GetAcOk | | 4 || [[#GetAcOk]] | ||
|- | |- | ||
| 5 || GetBoardPowerControlEvent | | 5 || [[#GetBoardPowerControlEvent]] | ||
|} | |} | ||
Line 91: | Line 155: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || GetSleepButtonState | | 0 || [[#GetSleepButtonState]] | ||
|- | |- | ||
| 1 || GetPowerEvent | | 1 || [[#GetPowerEvent]] | ||
|} | |} | ||
Line 105: | Line 169: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || CreateWakeupTimer | | 0 || [[#CreateWakeupTimer]] | ||
|- | |- | ||
| 1 || CancelWakeupTimer | | 1 || [[#CancelWakeupTimer]] | ||
|- | |- | ||
| 2 || [[#EnableWakeupTimerOnDevice]] | | 2 || [[#EnableWakeupTimerOnDevice]] | ||
Line 119: | Line 183: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| [1.0.0-7.0.1] 0 || SetPowerEnabled | | [1.0.0-7.0.1] 0 || [[#SetPowerEnabled]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 1 || SetClockEnabled | | [1.0.0-7.0.1] 1 || [[#SetClockEnabled]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 2 || SetClockRate | | [1.0.0-7.0.1] 2 || [[#SetClockRate]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 3 || GetClockRate | | [1.0.0-7.0.1] 3 || [[#GetClockRate]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 4 || GetState | | [1.0.0-7.0.1] 4 || [[#GetState]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 5 || GetPossibleClockRates | | [1.0.0-7.0.1] 5 || [[#GetPossibleClockRates]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 6 || SetMinVClockRate | | [1.0.0-7.0.1] 6 || [[#SetMinVClockRate]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 7 || SetReset | | [1.0.0-7.0.1] 7 || [[#SetReset]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 8 || SetVoltageEnabled | | [1.0.0-7.0.1] 8 || [[#SetVoltageEnabled]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 9 || GetVoltageEnabled | | [1.0.0-7.0.1] 9 || [[#GetVoltageEnabled]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 10 || GetVoltageRange | | [1.0.0-7.0.1] 10 || [[#GetVoltageRange]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 11 || SetVoltageValue | | [1.0.0-7.0.1] 11 || [[#SetVoltageValue]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 12 || GetVoltageValue | | [1.0.0-7.0.1] 12 || [[#GetVoltageValue]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 13 || GetTemperatureThresholds | | [1.0.0-7.0.1] 13 || [[#GetTemperatureThresholds]] | ||
|- | |- | ||
| [1.0.0-7.0.1] 14 || SetTemperature | | [1.0.0-7.0.1] 14 || [[#SetTemperature]] | ||
|- | |- | ||
| [1.0.0-5.1.0] 15 || Initialize | | [1.0.0-5.1.0] 15 || [[#Initialize]] | ||
|- | |- | ||
| [1.0.0-5.1.0] 16 || IsInitialized | | [1.0.0-5.1.0] 16 || [[#IsInitialized]] | ||
|- | |- | ||
| [1.0.0-5.1.0] 17 || Finalize | | [1.0.0-5.1.0] 17 || [[#Finalize]] | ||
|- | |- | ||
| [3.0.0-7.0.1] 18 || PowerOn | | [3.0.0-7.0.1] 18 || [[#PowerOn]] | ||
|- | |- | ||
| [3.0.0-7.0.1] 19 || PowerOff | | [3.0.0-7.0.1] 19 || [[#PowerOff]] | ||
|- | |- | ||
| [3.0.0-7.0.1] 20 || ChangeVoltage | | [3.0.0-7.0.1] 20 || [[#ChangeVoltage]] | ||
|- | |- | ||
| [3.0.0-7.0.1] 21 || GetPowerClockInfoEvent | | [3.0.0-7.0.1] 21 || [[#GetPowerClockInfoEvent]] | ||
|- | |- | ||
| [3.0.0-7.0.1] 22 || GetOscillatorClock | | [3.0.0-7.0.1] 22 || [[#GetOscillatorClock]] | ||
|- | |- | ||
| [3.0.0-7.0.1] 23 || GetDvfsTable | | [3.0.0-7.0.1] 23 || [[#GetDvfsTable]] | ||
|- | |- | ||
| [3.0.0-7.0.1] 24 || GetModuleStateTable | | [3.0.0-7.0.1] 24 || [[#GetModuleStateTable]] | ||
|- | |- | ||
| [3.0.0-7.0.1] 25 || GetPowerDomainStateTable | | [3.0.0-7.0.1] 25 || [[#GetPowerDomainStateTable]] | ||
|- | |- | ||
| 26 || [3.0.0+] GetFuseInfo | | 26 || [3.0.0+] [[#GetFuseInfo]] | ||
|- | |- | ||
| 27 || [5.0.0+] GetDramId | | 27 || [5.0.0+] [[#GetDramId]] | ||
|- | |- | ||
| [6.0.0-7.0.1] 28 || [[#IsPoweredOn]] | | [6.0.0-7.0.1] 28 || [[#IsPoweredOn]] | ||
Line 180: | Line 244: | ||
|} | |} | ||
[7.0.0+] The type-0xA output buffers were replaced with type-0x22 output buffers | == SetPowerEnabled == | ||
Takes an input [[#Module|ModuleId]] and an input bool '''Enabled'''. No output. | |||
== SetClockEnabled == | |||
Takes an input [[#Module|ModuleId]] and an input bool '''Enabled'''. No output. | |||
== SetClockRate == | |||
Takes an input [[#Module|ModuleId]] and an input u32 '''ClockRateHz'''. No output. | |||
== GetClockRate == | |||
Takes an input [[#Module|ModuleId]]. Returns an output u32 '''ClockRateHz'''. | |||
== GetState == | |||
Takes an input [[#Module|ModuleId]]. Returns an output [[#ModuleState|ModuleState]]. | |||
== GetPossibleClockRates == | |||
Takes a type-0xA output buffer of [[#ClockRatesListType|ClockRatesListType]], an input [[#Module|ModuleId]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount''' and an output u32 '''OutRates'''. | |||
== SetMinVClockRate == | |||
Takes an input [[#Module|ModuleId]] and an input u32 '''ClockRateHz'''. No output. | |||
== SetReset == | |||
Takes an input [[#Module|ModuleId]] and an input bool '''Asserted'''. No output. | |||
== SetVoltageEnabled == | |||
Takes an input [[#PowerDomain|PowerDomain]] and an input bool '''Enabled'''. No output. | |||
== GetVoltageEnabled == | |||
Takes an input [[#PowerDomain|PowerDomain]]. Returns an output bool '''Enabled'''. | |||
== GetVoltageRange == | |||
Takes an input [[#PowerDomain|PowerDomain]]. Returns three output s32s '''MinVolt''', '''MaxVolt''' and '''StepVolt'''. | |||
== SetVoltageValue == | |||
Takes an input [[#PowerDomain|PowerDomain]] and an input s32 '''MicroVolt'''. No output. | |||
== GetVoltageValue == | |||
Takes an input [[#PowerDomain|PowerDomain]]. Returns an output s32 '''MicroVolt'''. | |||
== GetTemperatureThresholds == | |||
Takes a type-0xA output buffer of [[#TemperatureThreshold|TemperatureThreshold]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | |||
== SetTemperature == | |||
Takes an input s32 '''TemperatureMilliC'''. No output. | |||
== Initialize == | |||
No input/output. | |||
== IsInitialized == | |||
No input. Returns an output bool. | |||
== Finalize == | |||
No input/output. | |||
== PowerOn == | |||
Takes an input [[#PowerControlTarget|PowerControlTarget]] and an input s32 '''MicroVolt'''. No output. | |||
== PowerOff == | |||
Takes an input [[#PowerControlTarget|PowerControlTarget]]. No output. | |||
== ChangeVoltage == | |||
Takes an input [[#PowerControlTarget|PowerControlTarget]] and an input s32 '''MicroVolt'''. No output. | |||
== GetPowerClockInfoEvent == | |||
No input. Returns an output Event handle. | |||
== GetOscillatorClock == | |||
No input. Returns an output u32. | |||
== GetDvfsTable == | |||
Takes two type-0xA output buffers and two input s32s. Returns an output s32 '''OutCount'''. | |||
[7.0.0+] The type-0xA output buffers were replaced with type-0x22 output buffers. | |||
== GetModuleStateTable == | |||
Takes a type-0xA output buffer of [[#ModuleState|ModuleState]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | |||
[7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer. | |||
== GetPowerDomainStateTable == | |||
Takes a type-0xA output buffer of [[#PowerDomainState|PowerDomainState]] and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | |||
[7.0.0+] The type-0xA output buffer was replaced with a type-0x22 output buffer. | |||
== GetFuseInfo == | |||
Takes a type-0xA output buffer and an input s32 '''MaxCount'''. Returns an output s32 '''OutCount'''. | |||
== GetDramId == | |||
No input. Returns an u32. | |||
== IsPoweredOn == | == IsPoweredOn == | ||
Takes | Takes an input [[#PowerDomain|PowerDomain]]. Returns an output bool. | ||
== GetVoltage == | == GetVoltage == | ||
Takes | Takes an input [[#PowerDomain|PowerDomain]]. Returns an output s32. | ||
= pcv:arb = | = pcv:arb = | ||
Line 197: | Line 349: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || ReleaseControl | | 0 || [[#ReleaseControl]] | ||
|} | |} | ||
== ReleaseControl == | |||
Takes an input [[#Module|ModuleId]]. No output. | |||
= pcv:imm = | = pcv:imm = | ||
Line 209: | Line 364: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || SetClockRate | | 0 || [[#SetClockRate]] | ||
|} | |} | ||
Line 227: | Line 382: | ||
| 2 || SetTemperature | | 2 || SetTemperature | ||
|- | |- | ||
| 3 || | | 3 || | ||
|- | |- | ||
| 4 || | | 4 || | ||
|- | |- | ||
| 5 || GetClockModuleNumLimit | | 5 || [[#GetClockModuleNumLimit]] | ||
|} | |} | ||
== OpenSession == | == OpenSession == | ||
Takes | Takes an input [[#Module|DeviceCode]] and an input u32. Returns an [[#IClkrstSession]]. | ||
== GetClockModuleNumLimit == | == GetClockModuleNumLimit == | ||
Line 281: | Line 436: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[#ReleaseControl]] | | 0 || [[#ReleaseControl_2|ReleaseControl]] | ||
|} | |} | ||
== | == ReleaseControl_2 == | ||
Takes | Takes an input [[#Module|DeviceCode]]. No output. | ||
= rgltr = | = rgltr = | ||
Line 298: | Line 453: | ||
| 0 || [[#OpenSession]] | | 0 || [[#OpenSession]] | ||
|- | |- | ||
| 1 || | | 1 || | ||
|- | |- | ||
| 2 || | | 2 || | ||
|- | |- | ||
| 3 || GetPowerModuleNumLimit | | 3 || [[#GetPowerModuleNumLimit]] | ||
|} | |} | ||
== OpenSession == | == OpenSession == | ||
Takes | Takes an input [[#PowerDomain|DeviceCode]] and returns an [[#IRegulatorSession]]. | ||
== GetPowerModuleNumLimit == | == GetPowerModuleNumLimit == | ||
Line 318: | Line 473: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || SetVoltageEnabled | ||
|- | |- | ||
| 1 || | | 1 || | ||
|- | |- | ||
| 2 || | | 2 || GetVoltageEnabled | ||
|- | |- | ||
| 3 || GetVoltageRange | | 3 || GetVoltageRange | ||
Line 328: | Line 483: | ||
| 4 || GetVoltageValue | | 4 || GetVoltageValue | ||
|- | |- | ||
| 5 || | | 5 || SetVoltageValue | ||
|- | |- | ||
| 6 || ChangeVoltage | | 6 || ChangeVoltage | ||
|} | |} | ||
= rtc = | = rtc = | ||
Line 349: | Line 495: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || [[#GetRtcTime]] | | 0 || [[#GetRtcTime_2|GetRtcTime]] | ||
|- | |- | ||
| 1 || [[#SetRtcTime]] | | 1 || [[#SetRtcTime_2|SetRtcTime]] | ||
|- | |- | ||
| 2 || [[#SetUpRtcResetOnShutdown]] | | 2 || [[#SetUpRtcResetOnShutdown_2|SetUpRtcResetOnShutdown]] | ||
|- | |- | ||
| 3 || [[#GetRtcResetDetected]] | | 3 || [[#GetRtcResetDetected_2|GetRtcResetDetected]] | ||
|- | |- | ||
| 4 || [[#ClearRtcResetDetected]] | | 4 || [[#ClearRtcResetDetected_2|ClearRtcResetDetected]] | ||
|- | |- | ||
| 10 || [10.0.0+] | | 10 || [10.0.0+] | ||
Line 364: | Line 510: | ||
|} | |} | ||
== | == GetRtcTime_2 == | ||
Same as | Same as [[#GetRtcTime|GetRtcTime]], but takes an input [[Bus_services#I2cDevice|DeviceCode]] ([[#bpc:r|bpc:r]] uses hardcoded value 0x3B000001). | ||
== | == SetRtcTime_2 == | ||
Same as | Same as [[#SetRtcTime|SetRtcTime]], but takes an input [[Bus_services#I2cDevice|DeviceCode]] ([[#bpc:r|bpc:r]] uses hardcoded value 0x3B000001). | ||
== | == SetUpRtcResetOnShutdown_2 == | ||
Takes an | Takes an input bool '''DoReset''' and an input [[Bus_services#I2cDevice|DeviceCode]]. Similar to [[#SetUpRtcResetOnShutdown|SetUpRtcResetOnShutdown]], but this version assigns the provided boolean value on a per-client basis (instead of a global variable) and checks it when the current [[PSC_services#Power_Management_States|power state]] is '''ReadyShutdown'''. | ||
== | == GetRtcResetDetected_2 == | ||
Same as | Same as [[#GetRtcResetDetected|GetRtcResetDetected]], but takes an input [[Bus_services#I2cDevice|DeviceCode]] ([[#bpc:r|bpc:r]] uses hardcoded value 0x3B000001). | ||
== | == ClearRtcResetDetected_2 == | ||
Same as | Same as [[#ClearRtcResetDetected|ClearRtcResetDetected]], but takes an input [[Bus_services#I2cDevice|DeviceCode]] ([[#bpc:r|bpc:r]] uses hardcoded value 0x3B000001). | ||
= time:u, time:a, time:s = | = time:u, time:a, time:s = | ||
Line 386: | Line 532: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#GetStandardUserSystemClock]] | ||
|- | |- | ||
| 1 || | | 1 || [[#GetStandardNetworkSystemClock]] | ||
|- | |- | ||
| 2 || | | 2 || [[#GetStandardSteadyClock]] | ||
|- | |- | ||
| 3 || | | 3 || [[#GetTimeZoneService]] | ||
|- | |- | ||
| 4 || | | 4 || [[#GetStandardLocalSystemClock]] | ||
|- | |- | ||
| 5 || [4.0.0+] | | 5 || [4.0.0+] [[#GetEphemeralNetworkSystemClock]] | ||
|- | |- | ||
| 20 || [6.0.0+] GetSharedMemoryNativeHandle | | 20 || [6.0.0+] GetSharedMemoryNativeHandle | ||
|- | |- | ||
| 30 || [6.0.0+] GetStandardNetworkClockOperationEventReadableHandle | | 30 || [6.0.0+] GetStandardNetworkClockOperationEventReadableHandle | ||
|- | |- | ||
| 31 || [6.0.0+] GetEphemeralNetworkClockOperationEventReadableHandle | | 31 || [6.0.0+] GetEphemeralNetworkClockOperationEventReadableHandle | ||
|- | |- | ||
| 50 || [4.0.0+] SetStandardSteadyClockInternalOffset | | 50 || [4.0.0+] SetStandardSteadyClockInternalOffset | ||
|- | |- | ||
| 100 || IsStandardUserSystemClockAutomaticCorrectionEnabled | | 100 || IsStandardUserSystemClockAutomaticCorrectionEnabled | ||
|- | |- | ||
| 101 || SetStandardUserSystemClockAutomaticCorrectionEnabled | | 101 || SetStandardUserSystemClockAutomaticCorrectionEnabled | ||
|- | |- | ||
| 102 || [5.0.0+] GetStandardUserSystemClockInitialYear | | 102 || [5.0.0+] GetStandardUserSystemClockInitialYear | ||
|- | |- | ||
| 200 || [3.0.0+] IsStandardNetworkSystemClockAccuracySufficient | | 200 || [3.0.0+] IsStandardNetworkSystemClockAccuracySufficient | ||
|- | |- | ||
| 201 || [6.0.0+] GetStandardUserSystemClockAutomaticCorrectionUpdatedTime | | 201 || [6.0.0+] GetStandardUserSystemClockAutomaticCorrectionUpdatedTime | ||
|- | |- | ||
| 300 || [4.0.0+] CalculateMonotonicSystemClockBaseTimePoint | | 300 || [4.0.0+] CalculateMonotonicSystemClockBaseTimePoint | ||
|- | |- | ||
| 400 || [4.0.0+] GetClockSnapshot | | 400 || [4.0.0+] GetClockSnapshot | ||
|- | |- | ||
| 401 || [4.0.0+] GetClockSnapshotFromSystemClockContext | | 401 || [4.0.0+] GetClockSnapshotFromSystemClockContext | ||
|- | |- | ||
| 500 || [4.0.0+] CalculateStandardUserSystemClockDifferenceByUser | | 500 || [4.0.0+] CalculateStandardUserSystemClockDifferenceByUser | ||
|- | |- | ||
| 501 || [4.0.0+] CalculateSpanBetween | | 501 || [4.0.0+] CalculateSpanBetween | ||
|} | |} | ||
== GetStandardUserSystemClock == | |||
No input. Returns an [[#ISystemClock]]. | |||
== GetStandardNetworkSystemClock == | |||
No input. Returns an [[#ISystemClock]]. | |||
== GetStandardSteadyClock == | |||
No input. Returns an [[#ISteadyClock]]. | |||
== GetTimeZoneService == | |||
No input. Returns an [[#ITimeZoneService]]. | |||
== GetStandardLocalSystemClock == | |||
No input. Returns an [[#ISystemClock]]. | |||
== GetEphemeralNetworkSystemClock == | |||
No input. Returns an [[#ISystemClock]]. | |||
== ISteadyClock == | == ISteadyClock == | ||
Line 434: | Line 598: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#GetCurrentTimePoint]] | ||
|- | |- | ||
| 2 || | | 2 || [[#GetTestOffset]] | ||
|- | |- | ||
| 3 || | | 3 || [[#SetTestOffset]] | ||
|- | |- | ||
| 100 || [2.0.0+] GetRtcValue | | 100 || [2.0.0+] [[#GetRtcValue]] | ||
|- | |- | ||
| 101 || [2.0.0+] IsRtcResetDetected | | 101 || [2.0.0+] [[#IsRtcResetDetected]] | ||
|- | |- | ||
| 102 || [2.0.0+] GetSetupResultValue | | 102 || [2.0.0+] [[#GetSetupResultValue]] | ||
|- | |- | ||
| 200 || [3.0.0+] | | 200 || [3.0.0+] [[#GetInternalOffset]] | ||
|- | |- | ||
| 201 || [3.0.0-3.0.2] | | 201 || [3.0.0-3.0.2] [[#SetInternalOffset]] | ||
|} | |} | ||
=== SteadyClockTimePoint === | === GetCurrentTimePoint === | ||
No input. Returns an output [[#SteadyClockTimePoint]]. | |||
=== GetTestOffset === | |||
No input. Returns an output [[#TimeSpanType]]. | |||
=== SetTestOffset === | |||
Takes an input [[#TimeSpanType]]. No output. | |||
=== GetRtcValue === | |||
No input. Returns an output s64. | |||
=== IsRtcResetDetected === | |||
No input. Returns an output u8 bool. | |||
=== GetSetupResultValue === | |||
No input. Returns an output u32. | |||
=== GetInternalOffset === | |||
No input. Returns an output [[#TimeSpanType]]. | |||
=== | === SetInternalOffset === | ||
Takes an input [[#TimeSpanType]]. No output. | |||
== ISystemClock == | == ISystemClock == | ||
Line 473: | Line 646: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#GetCurrentTime]] | ||
|- | |- | ||
| 1 || | | 1 || [[#SetCurrentTime]] | ||
|- | |- | ||
| 2 || | | 2 || [[#GetSystemClockContext]] | ||
|- | |- | ||
| 3 || | | 3 || [[#SetSystemClockContext]] | ||
|- | |- | ||
| 4 || [9.0.0+] GetOperationEventReadableHandle | | 4 || [9.0.0+] GetOperationEventReadableHandle | ||
|} | |} | ||
=== PosixTime === | === GetCurrentTime === | ||
No input. Returns an output [[#PosixTime]]. | |||
=== SetCurrentTime === | |||
Takes an input [[#PosixTime]]. No output. | |||
=== | === GetSystemClockContext === | ||
No input. Returns an output [[#SystemClockContext]]. | |||
=== SetSystemClockContext === | |||
Takes an input [[#SystemClockContext]]. No output. | |||
== ITimeZoneService == | == ITimeZoneService == | ||
Line 506: | Line 676: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || | | 0 || [[#GetDeviceLocationName]] | ||
|- | |- | ||
| 1 || | | 1 || [[#SetDeviceLocationName]] | ||
|- | |- | ||
| 2 || GetTotalLocationNameCount | | 2 || [[#GetTotalLocationNameCount]] | ||
|- | |- | ||
| 3 || LoadLocationNameList | | 3 || [[#LoadLocationNameList]] | ||
|- | |- | ||
| 4 || | | 4 || [[#LoadTimeZoneRule]] | ||
|- | |- | ||
| 5 || [2.0.0+] | | 5 || [2.0.0+] [[#GetTimeZoneRuleVersion]] | ||
|- | |- | ||
| 6 || [5.0.0+] GetDeviceLocationNameAndUpdatedTime | | 6 || [5.0.0+] GetDeviceLocationNameAndUpdatedTime | ||
|- | |- | ||
| 100 || | | 100 || [[#ToCalendarTime]] | ||
|- | |- | ||
| 101 || | | 101 || [[#ToCalendarTimeWithMyRule]] | ||
|- | |- | ||
| 201 || | | 201 || [[#ToPosixTime]] | ||
|- | |- | ||
| 202 || | | 202 || [[#ToPosixTimeWithMyRule]] | ||
|} | |} | ||
=== | === GetDeviceLocationName === | ||
No input. Returns an output [[#LocationName]]. | |||
=== | === SetDeviceLocationName === | ||
Takes an input [[#LocationName]]. No output. | |||
=== GetTotalLocationNameCount === | |||
No input. 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. | |||
=== LoadTimeZoneRule === | |||
Takes an input [[#LocationName]] and a type-0x16 output buffer for [[#TimeZoneRule]]. No output. | |||
=== GetTimeZoneRuleVersion === | |||
No input. Returns an output [[#TimeZoneRuleVersion]]. | |||
=== | === ToCalendarTime === | ||
Takes an input [[#PosixTime]] and a type-0x15 input buffer for [[#TimeZoneRule]]. Returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]]. | |||
=== ToCalendarTimeWithMyRule === | |||
Takes an input [[#PosixTime]]. Returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]]. | |||
=== | === ToPosixTime === | ||
Takes an input [[#CalendarTime]], a type-0x15 input buffer for [[#TimeZoneRule]], an type-0xA output buffer for [[#PosixTime]] array.R eturns an output s32. | |||
=== | === ToPosixTimeWithMyRule === | ||
Takes an input [[#CalendarTime]], an type-0xA output buffer for [[#PosixTime]] array. Returns an output s32. | |||
This is | = BoardPowerControlEventTarget = | ||
This is "nn::bpc::BoardPowerControlEventTarget". | |||
= | = SleepButtonState = | ||
This is "nn::bpc::SleepButtonState". | |||
This is | = EventTarget = | ||
This is "nn::bpc::EventTarget". | |||
= Module = | = Module = | ||
Line 871: | Line 970: | ||
|- | |- | ||
| [8.0.0+] - || || 0x3500041A || MCU | | [8.0.0+] - || || 0x3500041A || MCU | ||
|} | |||
= ClockRatesListType = | |||
This is "nn::pcv::ClockRatesListType". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Description | |||
|- | |||
| 0 || Invalid | |||
|- | |||
| 1 || Discrete | |||
|- | |||
| 2 || Range | |||
|} | |||
= ModuleState = | |||
This is "nn::pcv::ModuleState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || ClockFrequency | |||
|- | |||
| 0x4 || 0x1 || ClockEnabled | |||
|- | |||
| 0x5 || 0x1 || PowerEnabled | |||
|- | |||
| 0x6 || 0x1 || ResetAsserted | |||
|- | |||
| 0x7 || 0x1 || Reserved | |||
|- | |||
| 0x8 || 0x4 || MinVClockRate | |||
|} | |||
= TemperatureThreshold = | |||
This is "nn::pcv::TemperatureThreshold". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x4 || MinMilliC | |||
|- | |||
| 0x4 || 0x4 || MaxMilliC | |||
|} | |||
= PowerControlTarget = | |||
This is "nn::pcv::PowerControlTarget". | |||
= PowerDomainState = | |||
This is "nn::pcv::PowerDomainState". | |||
= SteadyClockTimePoint = | |||
This is a 0x18-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x8 || A u64 representing a point in time. | |||
|- | |||
| 0x8 || 0x10 || An ID representing the clock source. | |||
|} | |||
= TimeSpanType = | |||
This is an u64. | |||
= 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]] | |||
|} | |||
= 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. Represents 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 = | |||
This is an 0x8-byte struct. | |||
{| 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? | |||
|} | |||
= CalendarAdditionalInfo = | |||
This is an 0x18-byte struct. This stores timezone info. | |||
{| 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. | |||
|} | |} | ||
[[Category:Services]] | [[Category:Services]] |