Line 1,356: |
Line 1,356: |
| | | |
| == RequestSendSystemUpdate == | | == RequestSendSystemUpdate == |
− | Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16 port, an u32 ip address, returns an output Event handle and an [[#IAsyncResult]]. | + | Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16 port, an u32 Ipv4Address, returns an output Event handle and an [[#IAsyncResult]]. |
| | | |
| [[qlaunch]] uses value 55556 for the port. IP is normally a local-WLAN address. | | [[qlaunch]] uses value 55556 for the port. IP is normally a local-WLAN address. |
Line 1,524: |
Line 1,524: |
| | | |
| === RequestReceiveSystemUpdate === | | === RequestReceiveSystemUpdate === |
− | Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16 port, an u32 ip address, returns an output Event handle and an [[#IAsyncResult]]. | + | Takes a type-0x15 input buffer containing a [[#SystemDeliveryInfo]], an u16 port, an u32 Ipv4Address, returns an output Event handle and an [[#IAsyncResult]]. |
| | | |
| [[qlaunch]] uses the same value for the port as [[#RequestSendSystemUpdate]]. | | [[qlaunch]] uses the same value for the port as [[#RequestSendSystemUpdate]]. |
| + | |
| + | This validates the [[#SystemDeliveryInfo]] and generates a [[NCM_services#ContentMetaKey|ContentMetaKey]], and creates the [[#IAsyncResult]] + the async thread which handles the [[#IAsyncResult]] operation. Then the thread does: |
| + | |
| + | * Calls a func which does: |
| + | ** Throws an error if [[NIM_services#ListSystemUpdateTask|ListSystemUpdateTask]] returns any task. |
| + | ** Checks whether a sysupdate is actually required using the previously generated [[NCM_services#ContentMetaKey|ContentMetaKey]], throwing an error if not. |
| + | ** Uses [[NIM_services|nim]] cmd69, returning the Result on failure. |
| + | ** Uses [[NIM_services|nim]] cmd72, returning the Result on failure. Waits for the IAsyncResult operation from this to finish, then uses the Get cmd to get the output Result. |
| + | ** Handles cleanup and returns. |
| + | * On success, this loads various data which is then used for saving a SystemPlayReport when a state flag is set. |
| + | ** The EventId is "receive_system_update" with ApplicationId <NS ProgramId>. |
| | | |
| === GetReceiveProgress === | | === GetReceiveProgress === |