NIM services: Difference between revisions

add command names for local communication send/receive
Line 76: Line 76:
| 35 || [2.0.0+] [[#GetApplyDeltaTaskInfo]]
| 35 || [2.0.0+] [[#GetApplyDeltaTaskInfo]]
|-
|-
| 36 || [2.0.0+] ListApplyDeltaTask
| 36 || [2.0.0+] ListApplyDeltaTaskContentMeta
|-
|-
| 37 || [2.0.0+] CommitApplyDeltaTask
| 37 || [2.0.0+] CommitApplyDeltaTask
Line 84: Line 84:
| 39 || [2.0.0+] PrepareShutdown
| 39 || [2.0.0+] PrepareShutdown
|-
|-
| 40 || [2.0.0+] ListApplyDeltaTask2
| 40 || [2.0.0+] ListApplyDeltaTask
|-
|-
| 41 || [2.0.0+] ClearNotEnoughSpaceStateOfApplyDeltaTask
| 41 || [2.0.0+] ClearNotEnoughSpaceStateOfApplyDeltaTask
|-
|-
| 42 || [3.0.0+]
| 42 || [3.0.0+] CreateApplyDeltaTaskFromDownloadTask
|-
|-
| 43 || [3.0.0+]
| 43 || [3.0.0+] GetBackgroundApplyDeltaStressTaskInfo
|-
|-
| 44 || [3.0.0+]
| 44 || [3.0.0+] GetApplyDeltaTaskRequiredStorage
|-
|-
| 45 || [3.0.0+]
| 45 || [3.0.0+] CalculateNetworkInstallTaskContentsSize
|-
|-
| 46 || [3.0.0+]
| 46 || [3.0.0+] PrepareShutdownForSystemUpdate
|-
|-
| 47 || [4.0.0-9.2.0]
| 47 || [4.0.0-9.2.0] FindMaxRequiredApplicationVersionOfTask
|-
|-
| 48 || [4.0.0+]
| 48 || [4.0.0+] CommitNetworkInstallTaskPartially
|-
|-
| 49 || [4.0.0+]
| 49 || [4.0.0+] ListNetworkInstallTaskCommittedContentMeta
|-
|-
| 50 || [4.0.0+]
| 50 || [4.0.0+] ListNetworkInstallTaskNotCommittedContentMeta
|-
|-
| 51 || [4.0.0+]
| 51 || [4.0.0+] FindMaxRequiredSystemVersionOfTask
|-
|-
| 52 || [4.0.0+]
| 52 || [4.0.0+] GetNetworkInstallTaskErrorContext
|-
|-
| 53 || [4.0.0+]
| 53 || [4.0.0+] [[#CreateLocalCommunicationReceiveApplicationTask]]
|-
|-
| 54 || [4.0.0+]
| 54 || [4.0.0+] DestroyLocalCommunicationReceiveApplicationTask
|-
|-
| 55 || [4.0.0+]
| 55 || [4.0.0+] ListLocalCommunicationReceiveApplicationTask
|-
|-
| 56 || [4.0.0+]
| 56 || [4.0.0+] [[#RequestLocalCommunicationReceiveApplicationTaskRun]]
|-
|-
| 57 || [4.0.0+]
| 57 || [4.0.0+] [[#GetLocalCommunicationReceiveApplicationTaskInfo]]
|-
|-
| 58 || [4.0.0+]
| 58 || [4.0.0+] CommitLocalCommunicationReceiveApplicationTask
|-
|-
| 59 || [4.0.0+]
| 59 || [4.0.0+] ListLocalCommunicationReceiveApplicationTaskContentMeta
|-
|-
| 60 || [4.0.0+]
| 60 || [4.0.0+] [[#CreateLocalCommunicationSendApplicationTask]]
|-
|-
| 61 || [4.0.0+]
| 61 || [4.0.0+] [[#RequestLocalCommunicationSendApplicationTaskRun]]
|-
|-
| 62 || [4.0.0+]
| 62 || [4.0.0+] GetLocalCommunicationReceiveApplicationTaskErrorContext
|-
|-
| 63 || [4.0.0+]
| 63 || [4.0.0+] [[#GetLocalCommunicationSendApplicationTaskInfo]]
|-
|-
| 64 || [4.0.0+]
| 64 || [4.0.0+] DestroyLocalCommunicationSendApplicationTask
|-
|-
| 65 || [4.0.0+]
| 65 || [4.0.0+] GetLocalCommunicationSendApplicationTaskErrorContext
|-
|-
| 66 || [4.0.0+]
| 66 || [4.0.0+] CalculateLocalCommunicationReceiveApplicationTaskRequiredSize
|-
|-
| 67 || [4.0.0+]
| 67 || [4.0.0+] [[#ListApplicationLocalCommunicationReceiveApplicationTask]]
|-
|-
| 68 || [4.0.0+]
| 68 || [4.0.0+] [[#ListApplicationLocalCommunicationSendApplicationTask]]
|-
|-
| 69 || [4.0.0+]
| 69 || [4.0.0+] [[#CreateLocalCommunicationReceiveSystemUpdateTask]]
|-
|-
| 70 || [4.0.0+]
| 70 || [4.0.0+] DestroyLocalCommunicationReceiveSystemUpdateTask
|-
|-
| 71 || [4.0.0+]
| 71 || [4.0.0+] [[#ListLocalCommunicationReceiveSystemUpdateTask]]
|-
|-
| 72 || [4.0.0+]
| 72 || [4.0.0+] [[#RequestLocalCommunicationReceiveSystemUpdateTaskRun]]
|-
|-
| 73 || [4.0.0+]
| 73 || [4.0.0+] [[#GetLocalCommunicationReceiveSystemUpdateTaskInfo]]
|-
|-
| 74 || [4.0.0+]
| 74 || [4.0.0+] CommitLocalCommunicationReceiveSystemUpdateTask
|-
|-
| 75 || [4.0.0+]
| 75 || [4.0.0+] GetLocalCommunicationReceiveSystemUpdateTaskErrorContext
|-
|-
| 76 || [4.0.0+]
| 76 || [4.0.0+] [[#CreateLocalCommunicationSendSystemUpdateTask]]
|-
|-
| 77 || [4.0.0+]
| 77 || [4.0.0+] [[#RequestLocalCommunicationSendSystemUpdateTaskRun]]
|-
|-
| 78 || [4.0.0+]
| 78 || [4.0.0+] [[#GetLocalCommunicationSendSystemUpdateTaskInfo]]
|-
|-
| 79 || [4.0.0+]
| 79 || [4.0.0+] DestroyLocalCommunicationSendSystemUpdateTask
|-
|-
| 80 || [4.0.0+]
| 80 || [4.0.0+] GetLocalCommunicationSendSystemUpdateTaskErrorContext
|-
|-
| 81 || [4.0.0+]
| 81 || [4.0.0+] [[#ListLocalCommunicationSendSystemUpdateTask]]
|-
|-
| 82 || [4.0.0+]
| 82 || [4.0.0+] GetReceivedSystemDataPath
|-
|-
| 83 || [4.0.0+]
| 83 || [4.0.0+] CalculateApplyDeltaTaskOccupiedSize
|-
|-
| 84 || [5.0.0+]
| 84 || [5.0.0+]
|-
|-
| 85 || [5.0.0+]
| 85 || [5.0.0+] ListNetworkInstallTaskContentMetaFromInstallMeta
|-
|-
| 86 || [5.0.0+]
| 86 || [5.0.0+] ListNetworkInstallTaskOccupiedSize
|-
|-
| 87 || [6.0.0+]
| 87 || [6.0.0+]
Line 249: Line 249:
[5.0.0+] RequestGameCardRegistrationStatus/RequestRegisterGameCard removed 8-bytes of input, and now takes an additional type-0x5 input buffer.
[5.0.0+] RequestGameCardRegistrationStatus/RequestRegisterGameCard removed 8-bytes of input, and now takes an additional type-0x5 input buffer.


[8.0.0+] Cmd76 now takes an additional 0x8-bytes of input.
[8.0.0+] [[#CreateLocalCommunicationSendSystemUpdateTask]] now takes an additional 0x8-bytes of input.


== CreateSystemUpdateTask ==
== CreateSystemUpdateTask ==
Line 284: Line 284:
Takes an input [[#ApplyDeltaTask]], returns an output [[#ApplyDeltaTaskInfo]].
Takes an input [[#ApplyDeltaTask]], returns an output [[#ApplyDeltaTaskInfo]].


== Cmd53 ==
== CreateLocalCommunicationReceiveApplicationTask ==
Takes an input [[NCM_services#StorageId|StorageId]], an u16 port, an u32 Ipv4Address, an u32 '''unk''', an u64 <code>nn::ncm::ApplicationId</code>, a type-0x5 input buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], returns an output [[#ReceiveApplicationTask]].
Takes an input [[NCM_services#StorageId|StorageId]], an u16 port, an u32 Ipv4Address, an u32 '''unk''', an u64 <code>nn::ncm::ApplicationId</code>, a type-0x5 input buffer containing an array of [[NCM_services#ContentMetaKey|ContentMetaKey]], returns an output [[#ReceiveApplicationTask]].


This is the ReceiveApplication version of [[#Cmd69]].
This is the ReceiveApplication version of [[#CreateLocalCommunicationReceiveSystemUpdateTask]].


The wrapper used by official sw passes hard-coded value 0x2 for '''unk'''.
The wrapper used by official sw passes hard-coded value 0x2 for '''unk'''.


== Cmd56 ==
== RequestLocalCommunicationReceiveApplicationTaskRun ==
Takes an input [[#ReceiveApplicationTask]], returns an output Event and an [[#IAsyncResult]].
Takes an input [[#ReceiveApplicationTask]], returns an output Event and an [[#IAsyncResult]].


This is the ReceiveApplication version of [[#Cmd72]].
This is the ReceiveApplication version of [[#RequestLocalCommunicationReceiveSystemUpdateTaskRun]].


== Cmd57 ==
== GetLocalCommunicationReceiveApplicationTaskInfo ==
Takes an input [[#ReceiveApplicationTask]], returns an output [[#ReceiveApplicationTaskInfo]].
Takes an input [[#ReceiveApplicationTask]], returns an output [[#ReceiveApplicationTaskInfo]].


This is the ReceiveApplication version of [[#GetSystemUpdateTaskInfo]].
This is the ReceiveApplication version of [[#GetSystemUpdateTaskInfo]].


== Cmd60 ==
== CreateLocalCommunicationSendApplicationTask ==
Takes an input u16 port, an u32 Ipv4Address, an u64 <code>nn::ncm::ApplicationId</code>, a type-0x5 input buffer containing an array of {unknown}, returns an output [[#SendApplicationTask]].
Takes an input u16 port, an u32 Ipv4Address, an u64 <code>nn::ncm::ApplicationId</code>, a type-0x5 input buffer containing an array of {unknown}, returns an output [[#SendApplicationTask]].


This is the SendApplication version of [[#Cmd69]].
This is the SendApplication version of [[#CreateLocalCommunicationReceiveSystemUpdateTask]].


== Cmd61 ==
== RequestLocalCommunicationSendApplicationTaskRun ==
Takes an input [[#SendApplicationTask]], returns an output Event and an [[#IAsyncResult]].
Takes an input [[#SendApplicationTask]], returns an output Event and an [[#IAsyncResult]].


This is the SendApplicationTask version of [[#Cmd72]].
This is the SendApplicationTask version of [[#RequestLocalCommunicationReceiveSystemUpdateTaskRun]].


== Cmd63 ==
== GetLocalCommunicationSendApplicationTaskInfo ==
Takes an input [[#SendApplicationTask]], returns an output [[#SendApplicationTaskInfo]].
Takes an input [[#SendApplicationTask]], returns an output [[#SendApplicationTaskInfo]].


This is the SendApplication version of [[#GetSystemUpdateTaskInfo]].
This is the SendApplication version of [[#GetSystemUpdateTaskInfo]].


== Cmd67 ==
== ListApplicationLocalCommunicationReceiveApplicationTask ==
Takes a type-0x6 output buffer containing an array of [[#ReceiveApplicationTask]] and an input u64 <code>nn::ncm::ApplicationId</code>. Returns a s32 for total output entries.
Takes a type-0x6 output buffer containing an array of [[#ReceiveApplicationTask]] and an input u64 <code>nn::ncm::ApplicationId</code>. Returns a s32 for total output entries.


This is the ReceiveApplication version of [[#Cmd71]].
This is the ReceiveApplication version of [[#ListLocalCommunicationReceiveSystemUpdateTask]].


== Cmd68 ==
== ListApplicationLocalCommunicationSendApplicationTask ==
Takes a type-0x6 output buffer containing an array of [[#SendApplicationTask]] and an input u64 <code>nn::ncm::ApplicationId</code>. Returns a s32 for total output entries.
Takes a type-0x6 output buffer containing an array of [[#SendApplicationTask]] and an input u64 <code>nn::ncm::ApplicationId</code>. Returns a s32 for total output entries.


This is the SendApplication version of [[#Cmd71]].
This is the SendApplication version of [[#ListLocalCommunicationReceiveSystemUpdateTask]].


== Cmd69 ==
== CreateLocalCommunicationReceiveSystemUpdateTask ==
Takes an input u16 port, an u32 Ipv4Address, an u32 firmware_variation, an u32 '''unk''', a [[NCM_services#ContentMetaKey|ContentMetaKey]], returns an output [[#ReceiveSystemUpdateTask]].
Takes an input u16 port, an u32 Ipv4Address, an u32 firmware_variation, an u32 '''unk''', a [[NCM_services#ContentMetaKey|ContentMetaKey]], returns an output [[#ReceiveSystemUpdateTask]].


Line 354: Line 354:
* All error handling following successful sockfd creation via socket() will also close the socket, when certain errors occur.
* All error handling following successful sockfd creation via socket() will also close the socket, when certain errors occur.


== Cmd71 ==
== ListLocalCommunicationReceiveSystemUpdateTask ==
Takes a type-0x6 output buffer, for an array of [[#ReceiveSystemUpdateTask]]. Returns a s32 for total output entries.
Takes a type-0x6 output buffer, for an array of [[#ReceiveSystemUpdateTask]]. Returns a s32 for total output entries.


This is the ReceiveSystemUpdate version of [[#ListSystemUpdateTask]].
This is the ReceiveSystemUpdate version of [[#ListSystemUpdateTask]].


== Cmd72 ==
== RequestLocalCommunicationReceiveSystemUpdateTaskRun ==
Takes an input [[#ReceiveSystemUpdateTask]], returns an output Event and an [[#IAsyncResult]].
Takes an input [[#ReceiveSystemUpdateTask]], returns an output Event and an [[#IAsyncResult]].


Line 366: Line 366:
This creates the [[#IAsyncResult]] object + the async [[#Contents_Delivery|thread]] which handles the [[#IAsyncResult]] operation, which uses the state previously setup by [[#Cmd69]]. This throws an error if the object was already created.
This creates the [[#IAsyncResult]] object + the async [[#Contents_Delivery|thread]] which handles the [[#IAsyncResult]] operation, which uses the state previously setup by [[#Cmd69]]. This throws an error if the object was already created.


== Cmd73 ==
== GetLocalCommunicationReceiveSystemUpdateTaskInfo ==
Takes an input [[#ReceiveSystemUpdateTask]], returns an output [[#ReceiveSystemUpdateTaskInfo]].
Takes an input [[#ReceiveSystemUpdateTask]], returns an output [[#ReceiveSystemUpdateTaskInfo]].


This is the ReceiveSystemUpdate version of [[#GetSystemUpdateTaskInfo]].
This is the ReceiveSystemUpdate version of [[#GetSystemUpdateTaskInfo]].


== Cmd76 ==
== CreateLocalCommunicationSendSystemUpdateTask ==
Takes an input u16 port, an u32 Ipv4Address, an u32 firmware_variation, and a [[NCM_services#ContentMetaKey|ContentMetaKey]], returns an output [[#SendSystemUpdateTask]].
Takes an input u16 port, an u32 Ipv4Address, an u32 firmware_variation, and a [[NCM_services#ContentMetaKey|ContentMetaKey]], returns an output [[#SendSystemUpdateTask]].


Line 378: Line 378:
The ContentMetaKey is for the SystemUpdate Meta ([[NCM_services#ContentMetaType|ContentMetaType]] must match SystemUpdate).
The ContentMetaKey is for the SystemUpdate Meta ([[NCM_services#ContentMetaType|ContentMetaType]] must match SystemUpdate).


This is the Send version of [[#Cmd69]].
This is the Send version of [[#CreateLocalCommunicationReceiveSystemUpdateTask]].


This does state setup, does the above ContentMetaType validation, copies ContentMetaKey/firmware_variation into state, and does socket setup.
This does state setup, does the above ContentMetaType validation, copies ContentMetaKey/firmware_variation into state, and does socket setup.
Line 395: Line 395:
* The error handling for bind()/listen() will also close the socket, when certain errors occur.
* The error handling for bind()/listen() will also close the socket, when certain errors occur.


== Cmd77 ==
== RequestLocalCommunicationSendSystemUpdateTaskRun ==
Takes an input [[#SendSystemUpdateTask]], returns an output Event and an [[#IAsyncResult]].
Takes an input [[#SendSystemUpdateTask]], returns an output Event and an [[#IAsyncResult]].


This is the Send version of [[#Cmd72]].
This is the Send version of [[#RequestLocalCommunicationReceiveSystemUpdateTaskRun]].


This creates the [[#IAsyncResult]] object + the async [[#Contents_Delivery|thread]] which handles the [[#IAsyncResult]] operation, which uses the state previously setup by [[#Cmd76]]. This throws an error if the object was already created.
This creates the [[#IAsyncResult]] object + the async [[#Contents_Delivery|thread]] which handles the [[#IAsyncResult]] operation, which uses the state previously setup by [[#CreateLocalCommunicationSendSystemUpdateTask]]. This throws an error if the object was already created.


== Cmd78 ==
== GetLocalCommunicationSendSystemUpdateTaskInfo ==
Takes an input [[#SendSystemUpdateTask]], returns an output [[#SendSystemUpdateTaskInfo]].
Takes an input [[#SendSystemUpdateTask]], returns an output [[#SendSystemUpdateTaskInfo]].


This is the Send version of [[#Cmd73]].
This is the Send version of [[#GetLocalCommunicationReceiveSystemUpdateTaskInfo]].


== Cmd81 ==
== ListLocalCommunicationSendSystemUpdateTask ==
Takes a type-0x6 output buffer, for an array of [[#SendSystemUpdateTask]]. Returns a s32 for total output entries.
Takes a type-0x6 output buffer, for an array of [[#SendSystemUpdateTask]]. Returns a s32 for total output entries.


This is the Send version of [[#Cmd71]].
This is the Send version of [[#ListLocalCommunicationReceiveSystemUpdateTask]].


== SystemUpdateTaskId ==
== SystemUpdateTaskId ==