This system module handles the system notifications.
The maximum number of notifications that can be stored/handled is 100, hence the intended range for notificationIDs is 0-99.
News service "news:u"
This service only has one command.
News service "news:s"
News module NAND savedata
- "news.db": This is the main save-file, the filesize is fixed to 0x2BD0-bytes.
- "newsXXX.txt" This is the message data for this notification, where XXX is the decimal notification-index in the below headers-array. The filesize should be <= <size listed here>, since that's the max size read by the notifications applet.
- "newsXXX.mpo" This is the MPO data for this notification if any, where XXX is the decimal notification-index in the below headers-array. The filesize should be <= <size listed here>, since that's the max size read by the notifications applet.
news.db
Offset
|
Size
|
Description
|
0x0
|
0x10
|
Header, see below.
|
0x10
|
0x2BC0 (100 * 0x70)
|
Array of headers for each notification.
|
Offset
|
Size
|
Description
|
0x0
|
0x1
|
Must be 0x1 "is valid".
|
0x1
|
0x1
|
Flags
|
0x2
|
0xE
|
Normally zero?
|
Flags
Bit
|
Description
|
0
|
Set by news module when handling BOSS notifications and the AddNotification commands. This indicates that there's "unread" notifications, the notifications applet clears this once all notifications have been "read".
|
1
|
Set by news module when handling CECD notifications.
|
News module startup
The actual main function called by main() does the following:
- srv_init()
- Registers services "news:u" and "news:s".
- Initializes the service session handle for "ptm:sysm".
- Loads 4 handles from somewhere, which gets used with svcReplyAndReceive later.
- Does notificationID state init, uses SRV:GetNotificationSemaphore, then subscribes to srv notifications 0x104 and 0x106.
- <Some func calls>
- Here PTMSYSM:SetInfoLEDPattern is used.
- Some state init is done, then the usual svcReplyAndReceive loop begins.
Errors
Error code
|
Description
|
0xC8A12805
|
The news.db or notification header data for the specified notificationID is not set(the specified notification doesn't exist).
|
Title Versions
Title version
|
System version
|
Changes
|
v7168
|
9.7.0-X
|
All of the changes are the following:
- See here regarding the updated CTRSDK function code.
- This function is eventually called by newss_cmdf, newss_cmd10, and <certain function>. When calling a certain function fails in here, this code now calls <another certain function> before returning.
- Mutex enter/leave function calls were added to a certain function.
- More state init was added to the start of an initialization function called during news module startup(crt0?).
- 0x14 new bytes were added to .rodata.
|