News Services: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
| Line 82: | Line 82: | ||
|} | |} | ||
=News module savedata= | =News module NAND [[System_SaveData|savedata]]= | ||
* "news.db": This is the main save-file, the filesize is fixed to 0x2BD0-bytes. | * "news.db": This is the main save-file, the filesize is fixed to 0x2BD0-bytes. | ||
* "newsXXX.txt" This is the [[NEWSS:AddNotification|message]] data for this notification, where XXX is the decimal notification-index in the below headers-array. The filesize should be <= <size listed [[NEWSS:GetNotificationMessage|here]]>, since that's the max size read by the notifications applet. | * "newsXXX.txt" This is the [[NEWSS:AddNotification|message]] data for this notification, where XXX is the decimal notification-index in the below headers-array. The filesize should be <= <size listed [[NEWSS:GetNotificationMessage|here]]>, since that's the max size read by the notifications applet. | ||
| Line 122: | Line 122: | ||
| Normally zero? | | Normally zero? | ||
|} | |} | ||
=News module startup= | |||
The actual main function called by main() does the following: | |||
* srv_init() | |||
* Registers services <nowiki>"news:u" and "news:s"</nowiki>. | |||
* 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= | =Errors= | ||
Revision as of 20:47, 19 October 2015
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"
| Command Header | Description |
|---|---|
| 0x000100C8 | AddNotification |
This service only has one command.
News service "news:s"
| Command Header | Description |
|---|---|
| 0x000100C6 | AddNotification |
| 0x0002.... | Stubbed, only returns 0. |
| 0x0003.... | Stubbed, only returns 0. |
| 0x00040000 | ? |
| 0x00050000 | GetTotalNotifications |
| 0x00060042 | SetNewsDBHeader |
| 0x00070082 | SetNotificationHeader |
| 0x00080082 | SetNotificationMessage |
| 0x00090082 | SetNotificationImage |
| 0x000A0042 | GetNewsDBHeader |
| 0x000B0082 | GetNotificationHeader |
| 0x000C0082 | GetNotificationMessage |
| 0x000D0082 | GetNotificationImage |
| 0x000E0040 | SetInfoLEDPattern |
| 0x000F0000 | SpotPass notifications related? |
| 0x00100040 | (u8 flag) ? |
| 0x00110000 | This writes the input u8 to a state field. |
| 0x00120082 | GetNotificationHeaderOther |
| 0x00130000 | WriteNewsDBSavedata |
| 0x00140000 | This writes an unknown u32 value to cmdreply[2]. |
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. |
Header
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x1 | Must be 0x1. |
| 0x1 | 0x1 | Flags: bit0 is set by news-module when handling the AddNotification commands. This indicates that there's "unread" notifications, the notifications applet clears this once all notifications have been "read". |
| 0x2 | 0xE | Normally zero? |
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 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:
|