NS services: Difference between revisions

No edit summary
Line 1,553: Line 1,553:
=== RequestCheckLatestUpdateIncludesRebootlessUpdate ===
=== RequestCheckLatestUpdateIncludesRebootlessUpdate ===
No input, returns an output Event handle and an [[#IAsyncValue]].
No input, returns an output Event handle and an [[#IAsyncValue]].
== BackgroundNetworkUpdateState ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || No sysupdate task exists.
|-
| 1 || Sysupdate download in progress.
|-
| 2 || Sysupdate ready, pending install.
|}
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
Similar to [[#HasDownloaded]], [[#GetBackgroundNetworkUpdateState]] uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: <code>1 + *((u8*)(taskinfo+0) == 0x3</code>. Otherwise, value=0.
[[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
== SystemUpdateProgress ==
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0 || 0x8 || s64 Current size. This value can be larger than total_size when the async operation is finishing. When total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined.
|-
| 0x8 || 0x8 || s64 Total size, this field is only valid when >0.
|}
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
Commands which have this as output will return 0 with the output cleared, when no task is available.
== EulaDataPath ==
This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct.
This contains a file path.
== SystemDeliveryInfo ==
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0 || 0x4 || Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>.
|-
| 0x4 || 0x4 || Loaded from [[System_Settings|system-setting]] <code>contents_delivery!application_delivery_protocol_version</code>. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
|-
| 0x8 || 0x4 || Whether ExFat is included. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
|-
| 0xC || 0x4 || SystemUpdate meta version.
|-
| 0x10 || 0x8 || SystemUpdate meta titleID.
|-
| 0x18 || 0x1 || Copied into state by [[#RequestSendSystemUpdate]].
|-
| 0x19 || 0x1 || Unknown. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
|-
| 0x1A || 0xC6 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes.
|}
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
== LatestSystemUpdate ==
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 1 || Unknown.
|-
| 2 || Unknown.
|-
| Other values || Unknown.
|}
This is "nn::ns::LatestSystemUpdate". This is an u8.


= IAsyncValue =
= IAsyncValue =
Line 1,763: Line 1,680:
= NoDownloadRightsErrorResolution =
= NoDownloadRightsErrorResolution =
This is "nn::ns::NoDownloadRightsErrorResolution".
This is "nn::ns::NoDownloadRightsErrorResolution".
= BackgroundNetworkUpdateState =
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 0 || No sysupdate task exists.
|-
| 1 || Sysupdate download in progress.
|-
| 2 || Sysupdate ready, pending install.
|}
This is "nn::ns::BackgroundNetworkUpdateState". This is an u8.
Similar to [[#HasDownloaded]], [[#GetBackgroundNetworkUpdateState]] uses [[NIM_services|nim]] ListSystemUpdateTask and [[NIM_services|nim]] GetSystemUpdateTaskInfo. When ListSystemUpdateTask successfully returns a task and GetSystemUpdateTaskInfo is successful, the output value is set to: <code>1 + *((u8*)(taskinfo+0) == 0x3</code>. Otherwise, value=0.
[[#GetBackgroundNetworkUpdateState]] always returns Result 0, however this will assert if GetSystemUpdateTaskInfo fails with ret!=0x3C89.
= SystemUpdateProgress =
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0 || 0x8 || s64 Current size. This value can be larger than total_size when the async operation is finishing. When total_size is <=0, this current_size field may contain a progress value for when the total_size is not yet determined.
|-
| 0x8 || 0x8 || s64 Total size, this field is only valid when >0.
|}
This is "nn::ns::SystemUpdateProgress". This is a 0x10-byte struct.
Commands which have this as output will return 0 with the output cleared, when no task is available.
= EulaDataPath =
This is "nn::ns::detail::EulaDataPath". This is a 0x100-byte struct.
This contains a file path.
= SystemDeliveryInfo =
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0 || 0x4 || Must be <= to and match [[System_Settings|system-setting]] <code>contents_delivery!system_delivery_protocol_version</code>.
|-
| 0x4 || 0x4 || Loaded from [[System_Settings|system-setting]] <code>contents_delivery!application_delivery_protocol_version</code>. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
|-
| 0x8 || 0x4 || Whether ExFat is included. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
|-
| 0xC || 0x4 || SystemUpdate meta version.
|-
| 0x10 || 0x8 || SystemUpdate meta titleID.
|-
| 0x18 || 0x1 || Copied into state by [[#RequestSendSystemUpdate]].
|-
| 0x19 || 0x1 || Unknown. Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
|-
| 0x1A || 0xC6 || Unused by [[#RequestSendSystemUpdate]]/[[#RequestReceiveSystemUpdate]], besides HMAC validation.
|-
| 0xE0 || 0x20 || HMAC-SHA256 over the previous 0xE0-bytes.
|}
This is "nn::ns::SystemDeliveryInfo". This is a 0x100-byte struct.
= ApplicationDeliveryInfo =
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0 || 0x100 || ?
|}
This is "nn::ns::ApplicationDeliveryInfo". This is a 0x100-byte struct.
= LatestSystemUpdate =
{| class="wikitable" border="1"
|-
!  Value
!  Description
|-
| 1 || Unknown.
|-
| 2 || Unknown.
|-
| Other values || Unknown.
|}
This is "nn::ns::LatestSystemUpdate". This is an u8.


[[Category:Services]]
[[Category:Services]]