Services: Difference between revisions
| Steveice10 (talk | contribs)  Update for new srv:pm service. | m Add missing category | ||
| (43 intermediate revisions by 8 users not shown) | |||
| Line 3: | Line 3: | ||
| When a service is registered, [[SVC|svcCreatePort]] is used without a port-name. This means that the port is inaccessible via the port SVCs outside of sm-module. See below for getting a session handle for sending commands to services. | When a service is registered, [[SVC|svcCreatePort]] is used without a port-name. This means that the port is inaccessible via the port SVCs outside of sm-module. See below for getting a session handle for sending commands to services. | ||
| Processes with PID less than or equal to the number of NATIVE_FIRM built-in modules (fs, sm, pm, pxi, ldr) have access to all services. This value is obtained from [[SVC|svcGetSystemInfo]]. | Processes with PID less than or equal to the number of NATIVE_FIRM built-in modules (fs, sm, pm, pxi, ldr) have access to all services. This value is obtained from [[SVC|svcGetSystemInfo]]. Other processes are limited to access services listed in their [[NCCH/Extended_Header#ARM11_Local_System_Capabilities|service access control list]], as passed to [[SRVPM:RegisterProcess]]. | ||
| Attempting to use [[SRV: | Attempting to use [[SRV:GetServiceHandle|GetServiceHandle]] with a service that the process has access to when that service isn't registered will block until it is registered. | ||
| ==Service Manager Port "srv:"== | ==Service Manager Port "srv:"== | ||
| Line 14: | Line 14: | ||
| |- | |- | ||
| | 0x00010002 | | 0x00010002 | ||
| | [[SRV: | | [[SRV:RegisterClient|RegisterClient]] | ||
| |- | |- | ||
| | 0x00020000 | | 0x00020000 | ||
| | [[SRV: | | [[SRV:EnableNotification|EnableNotification]] | ||
| |- | |- | ||
| | 0x00030100 | | 0x00030100 | ||
| Line 26: | Line 26: | ||
| |- | |- | ||
| | 0x00050100 | | 0x00050100 | ||
| | [[SRV: | | [[SRV:GetServiceHandle|GetServiceHandle]] | ||
| |- | |- | ||
| | 0x000600C2 | | 0x000600C2 | ||
| Line 50: | Line 50: | ||
| |- | |- | ||
| | 0x000D0040 | | 0x000D0040 | ||
| |  | | [[SRV:PublishAndGetSubscriber|PublishAndGetSubscriber]] | ||
| |- | |- | ||
| | 0x000E00C0 | | 0x000E00C0 | ||
| | [[SRV: | | [[SRV:IsServiceRegistered|IsServiceRegistered]] | ||
| |} | |} | ||
| ==Service Manager Process-Manager Port "srv:pm"== | It appears these "port" commands can be used for transferring arbitrary handles, however [[SRV:GetPort|GetPort]] still uses the same service-access-control validation as [[SRV:GetServiceHandle|GetServiceHandle]]. Despite this fact, it appears that a "port" and a service with the same name can coexist independently. | ||
| ==Service Manager Process-Manager Port/Service "srv:pm"== | |||
| {| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| |- | |- | ||
| !  Command Header, prior to [[7.0.0-13]] | !  Command Header (port), prior to [[7.0.0-13]] | ||
| !  Command Header | !  Command Header (service), post [[7.0.0-13]] | ||
| !  Description | !  Description | ||
| |- | |- | ||
| |  | | 0x04010042 | ||
| |  | | 0x00010042 | ||
| | [[SRVPM: | | [[SRVPM:PublishToProcess|PublishToProcess]] | ||
| |- | |||
| | 0x04020040 | |||
| | 0x00020040 | |||
| | [[SRVPM:PublishToAll|PublishToAll]] | |||
| |- | |- | ||
| | 0x04030082 | | 0x04030082 | ||
| Line 82: | Line 88: | ||
| |- | |- | ||
| !  ID | !  ID | ||
| !  Published by | |||
| !  Subscribed by | |||
| !  Description | !  Description | ||
| |- | |- | ||
| | 0x100 | | 0x100 | ||
| | This indicates that  | |  | ||
| | Not Needed | |||
| | This indicates that the recipient must terminate. | |||
| |- | |||
| | 0x101 | |||
| | PTM | |||
| | NS | |||
| | Signaled on sleep mode entry. | |||
| |- | |||
| | 0x102 | |||
| | PTM | |||
| | NS | |||
| | Sleep Mode related?  | |||
| |- | |||
| | 0x103 | |||
| | PTM | |||
| | NS, CSND, NWM, AC, NIM | |||
| | Fired on sleep mode entry (Kernel state is modified by PTM after publishing this) | |||
| |- | |- | ||
| | 0x104 | | 0x104 | ||
| | This indicates that the system is entering sleep mode. (PTM | | PTM | ||
| | HID | |||
| | This indicates that the system is entering sleep mode. (Kernel state is modified by PTM before publishing this) | |||
| |- | |- | ||
| | 0x105 | | 0x105 | ||
| | PTM | |||
| | NS, DSP, CSND, GSP, CODEC, CAMERA, HID, QTM, MIC, IR, NWM, FRIENDS, AC, CECD, ACT, NDM, NIM | |||
| | This indicates that the system has exited sleep mode. | | This indicates that the system has exited sleep mode. | ||
| |- | |||
| | 0x106  | |||
| | PTM | |||
| | NS, MIC, AC, NEWS, CECD, BOSS | |||
| | Fired after sleep mode exit. | |||
| |- | |||
| | 0x107 | |||
| | PTM | |||
| | NWM, CECD, BOSS, NDM, NIM, NEWS | |||
| | Unknown. | |||
| |- | |- | ||
| | 0x108 | | 0x108 | ||
| |  | | PTM | ||
| | GSP, QTM | |||
| | System is going to Power Down. | |||
| |- | |||
| | 0x109 | |||
| | CFG | |||
| | GSP | |||
| | CFG block 0x00050001 has been modified, change LCD brightness/PWM settings | |||
| |- | |||
| | 0x10B | |||
| | CFG | |||
| | CAMERA | |||
| | ? | |||
| |- | |||
| | 0x10C | |||
| | PM | |||
| |  | |||
| | A Regular application has started. | |||
| |- | |||
| | 0x110-0x11F | |||
| | PM | |||
| | NS | |||
| | Sent on application exit. See [[PMApp:LaunchTitle#Launch_Flags|PM launch flags]]. | |||
| |- | |||
| | 0x179 | |||
| | PM | |||
| | PTM, NS | |||
| | All processes other than PTM and NS have terminated. | |||
| |- | |||
| | 0x200 | |||
| | | |||
| | NS | |||
| | Signaled just before sleep mode is exited from. | |||
| |- | |- | ||
| | 0x202 | | 0x202 | ||
| | MCU | |||
| | NS | |||
| | POWER button pressed | | POWER button pressed | ||
| |- | |||
| | 0x203 | |||
| | MCU | |||
| | NS | |||
| | POWER button held long | |||
| |- | |- | ||
| | 0x204 | | 0x204 | ||
| |  | | MCU | ||
| | NS | |||
| | HOME button pressed | |||
| |- | |- | ||
| | 0x205 | | 0x205 | ||
| | HOME button  | | MCU | ||
| | NS | |||
| | HOME button released | |||
| |- | |||
| | 0x206 | |||
| | MCU / NWM | |||
| | NWM | |||
| | The physical Wi-Fi slider state changed | |||
| |- | |- | ||
| | 0x207 | | 0x207 | ||
| | | |||
| | MENU | |||
| | SD card inserted | | SD card inserted | ||
| |- | |- | ||
| | 0x208 | | 0x208 | ||
| | | |||
| | MENU | |||
| | Game cartridge inserted | | Game cartridge inserted | ||
| |- | |- | ||
| | 0x209 | | 0x209 | ||
| | | |||
| | NS, MENU | |||
| | SD card removed | | SD card removed | ||
| |- | |- | ||
| | 0x20A | | 0x20A | ||
| | | |||
| | NS, MENU | |||
| | Game cartridge removed | | Game cartridge removed | ||
| |- | |- | ||
| | 0x20B | | 0x20B | ||
| | | |||
| | NS, MENU | |||
| | Game cartridge inserted or removed | | Game cartridge inserted or removed | ||
| |- | |||
| | 0x20C | |||
| | MCU | |||
| | PTM | |||
| | Published on a fatal hardware condition, when the MCU WDT triggers, ptm throws fatal error F960D407 in receipt of this | |||
| |- | |||
| | 0x20D | |||
| | MCU | |||
| | GSP | |||
| | Charger plugged out. | |||
| |- | |||
| | 0x20E | |||
| | MCU | |||
| | GSP | |||
| | Charger plugged in.  | |||
| |- | |||
| | 0x20F | |||
| | MCU | |||
| |  | |||
| | Published by the mcu module when (bitmask & 0x8000) is true (started charging). This bitmask is obtained by reading i2c register 0x10. | |||
| |-  | |||
| | 0x210 | |||
| | MCU | |||
| |  | |||
| | Published by the mcu module when (bitmask & 0x4000) is true (stopped charging). This bitmask is obtained by reading i2c register 0x10. | |||
| |- | |||
| | 0x211 | |||
| | PTM | |||
| | | |||
| | Battery very low (5%) | |||
| |- | |||
| | 0x212 | |||
| | PTM | |||
| | | |||
| | Battery low (10%) | |||
| |- | |||
| | 0x213 | |||
| | NS | |||
| | CODEC, HID, GSP, CAMERA, MIC, NDM, QTM, PTM  | |||
| | Shell opened. | |||
| |- | |||
| | 0x214 | |||
| | NS | |||
| | CODEC, HID, GSP, CAMERA, MIC, NDM, QTM, PTM. | |||
| | Shell closed. | |||
| |- | |||
| | 0x300 | |||
| | AC | |||
| | NDM, MENU | |||
| | Signaled after sleep mode exit and during system boot. | |||
| |- | |||
| | 0x301 | |||
| | AC | |||
| | FRIENDS, NDM | |||
| | Signaled just before sleep mode is exited from. | |||
| |- | |||
| | 0x302 | |||
| | NWM | |||
| | NDM, SOCKET, FRIENDS, AC | |||
| | WiFi is turning off, triggered by using the WiFi switch on O3DS models and the toggle in the N3DS HOME menu (maybe disconnecting from any connected networks?) | |||
| |- | |||
| | 0x303 | |||
| | NWM | |||
| | CECD, NDM | |||
| | WiFi has turned off. (fires shortly after 0x302) | |||
| |- | |||
| | 0x304 | |||
| | NWM | |||
| | CECD, NDM, SOCKET | |||
| | WiFi was turned on. | |||
| |} | |} | ||
| [[Category:Services]] | |||