Changes

1,371 bytes added ,  02:38, 25 March 2019
no edit summary
Line 1: Line 1:  
This is the applet presented when a title displays an error message.
 
This is the applet presented when a title displays an error message.
See [[AM_services#Library_Applets]]. The error applet expects two [[AM_services#IStorage|IStorage]] inputs and no output.
+
See [[AM_services#Library_Applets]].
    
All errors displayed by this applet get logged and can be viewed under 'Settings' > 'Support' > 'Error History'.
 
All errors displayed by this applet get logged and can be viewed under 'Settings' > 'Support' > 'Error History'.
   −
== ErrorConfig ==
+
On pre-5.0.0 the specified LanguageCode has to be valid, otherwise a fatal-error is thrown. With [5.0.0+] it will use en-US when the LanguageCode is invalid.
   −
This has size 0x1018 and contains the error code, a short description of the error and a more detailed description of the error, displayed when the user clicks on "Details". Typically, all unused values can be set to zero. The first byte should be set to 1 if a custom error message is to be displayed. Otherwise, a default error message will be shown.
+
== ErrorContext ==
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x200 || ?
 +
|}
   −
The error code is stored at offsets 0x8, containing the first part of the code, and 0xC, containing the second part of the code. Those values are expected to be u32's.
+
== ErrorCommonHeader ==
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x1 || u8 type
 +
|-
 +
| 0x1 || 0x1 || u8 unk_x1
 +
|-
 +
| 0x2 || 0x3 || ?
 +
|-
 +
| 0x5 || 0x1 || [4.0.0+] u8 contextFlag. When set indicates that an additional storage is pushed for [[#ErrorContext]].
 +
|-
 +
| 0x6 || 0x1 || u8 resultFlag. ErrorCommonArg: When clear, ErrorCode is used, otherwise the applet generates the error-code from res.
 +
|-
 +
| 0x7 || 0x1 || ?
 +
|}
   −
The short description of the error is stored as a char* at offset 0x18, the long description of the error is stored as a char* at offset 0x818.
+
== ErrorCommonArg ==
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || ErrorCommonHeader
 +
|-
 +
| 0x8 || 0x8 || [[#ErrorCode]]
 +
|-
 +
| 0x10 || 0x4 || Result res
 +
|}
 +
 
 +
== SystemErrorArg ==
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || ErrorCommonHeader. type=1.
 +
|-
 +
| 0x8 || 0x8 || [[#ErrorCode]]
 +
|-
 +
| 0x10 || 0x8 || [[Settings_services|LanguageCode]]
 +
|-
 +
| 0x18 || 0x800 || UTF-8 string dialogMessage
 +
|-
 +
| 0x818 || 0x800 || UTF-8 string fullscreenMessage, displayed when the user clicks on "Details". When not set this disables displaying Details.
 +
|}
 +
 
 +
This struct is 0x1018-bytes.
 +
 
 +
== ApplicationErrorArg ==
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset || Size || Description
 +
|-
 +
| 0x0 || 0x8 || ErrorCommonHeader. type=2 and unk_x1=1.
 +
|-
 +
| 0x8 || 0x4 || u32 errorNumber. Raw decimal error number which is displayed in the dialog.
 +
|-
 +
| 0xC || 0x8 || [[Settings_services|LanguageCode]]
 +
|-
 +
| 0x14 || 0x800 || UTF-8 string dialogMessage
 +
|-
 +
| 0x814 || 0x800 || UTF-8 string fullscreenMessage, displayed when the user clicks on "Details". When not set this disables displaying Details.
 +
|}
 +
 
 +
This struct is 0x1014-bytes.
 +
 
 +
== ErrorCode ==
 +
This is an u64 containing the [[Error_codes|error-code]]: the low u32 is the module portion which is normally set to <code>module + 2000</code>, and the high u32 is the error description.
    
== Usage ==  
 
== Usage ==  
User-processes should push a common arguments struct as well as the typical ErrorConfig struct. Since the error applet doesn't have any output, user-processes can then directly join the applet and wait for it to finish.
+
User-processes should push a common arguments struct (version=0) as well as the Arg struct. Once the applet finishes running successfully, it may return an output storage in some cases. An u8 status value is located at +1, where non-zero indicates error.
    
[[Category:Library Applets]]
 
[[Category:Library Applets]]