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]] | ||