QTM Services: Difference between revisions
| No edit summary | |||
| (13 intermediate revisions by 5 users not shown) | |||
| Line 1: | Line 1: | ||
| [[Category:Services]] | [[Category:Services]] | ||
| QTM is the [[New_3DS]] system module in charge of handling head tracking. A maximum of two sessions  | QTM is the [[New_3DS]] system module in charge of handling head tracking. A maximum of three (only two until [[9.3.0-21]]) sessions for *all* QTM services combined. | ||
| Head tracking is not usable when any other process is using any of the cameras, QTM returns error 0xC8A18008 for this. | |||
| QTM only tracks the position of the user's two eyes, but does not track the area they are focusing at. Hence, "eye-tracking" is sometimes used to refer to this feature on 3DS, even though it means something else outside the 3DS hacking scene. | |||
| Refer to this libctru commit for more details: https://github.com/devkitPro/libctru/commit/8e55cdf05d1f2c07f350ec678d0f0d6a7a2df214 | |||
| =QTM services= | =QTM services= | ||
| {| class="wikitable"  | |||
| = QTM user service "qtm:u" = | |||
| !  | {| class="wikitable" | ||
| !  | ! Command ID !! Description | ||
| |- | |- | ||
| | 0x00010080 | | 0x00010080 || GetRawTrackingDataEx | ||
| |  | |||
| |- | |- | ||
| | 0x00020080 | | 0x00020080 || GetTrackingDataEx | ||
| |  | |||
| |- | |- | ||
| | 0x00030000 | | 0x00030000 || EnableManualIrLedControl | ||
| |   | |||
| |- | |- | ||
| | 0x00040000 | | 0x00040000 || DisableManualIrLedControl | ||
| |   | |||
| |- | |- | ||
| | 0x00050040 | | 0x00050040 || SetIrLedStatus | ||
| |  | |||
| |- | |- | ||
| | 0x00060000 | | 0x00060000 || IsCurrentAppBlacklisted | ||
| |  | |||
| |} | |} | ||
| = QTM system service "qtm:s" = | |||
| "qtm:s" has access to all "qtm:u" commands and more: | |||
| {| class="wikitable" | |||
| {| class="wikitable"  | ! Command ID !! Description | ||
| !  | |||
| !  | |||
| |- | |- | ||
| | 0x04010040 | | 0x04010040 || SetCentralBarrierPosition | ||
| |  | |||
| |- | |- | ||
| | 0x04020000 | | 0x04020000 || GetCameraLux | ||
| |  | |||
| |- | |- | ||
| | 0x04030000 | | 0x04030000 || EnableAutoBarrierControl | ||
| |   | |||
| |- | |- | ||
| | 0x04040000 | | 0x04040000 || DisableAutoBarrierControl | ||
| |   | |||
| |- | |- | ||
| | 0x04050040 | | 0x04050040 || SetBarrierPosition | ||
| |  | |||
| |- | |- | ||
| | 0x04060000 | | 0x04060000 || GetCurrentBarrierPosition | ||
| |  | |||
| |- | |- | ||
| | 0x04070040 | | 0x04070040 || SetIrLedStatusOverride | ||
| |  | |||
| |- | |- | ||
| | 0x040801C0 | | 0x040801C0 || SetCalibrationData | ||
| |   | |||
| |- | |- | ||
| | 0x04090000 | | 0x04090000 || GetQtmStatus | ||
| |  | |||
| |- | |- | ||
| | 0x040A0040 | | 0x040A0040 || SetQtmStatus | ||
| |  | |||
| |} | |} | ||
| = QTM service "qtm:sp" = | |||
| qtm:sp has access to all "qtm:u", "qtm:s" commands and more: | |||
| {| class="wikitable" | |||
| {| class="wikitable"  | ! Command ID !! Description | ||
| !  | |||
| !  | |||
| |- | |- | ||
| | 0x08010040 | | 0x08010040 || NotifyTopLcdModeChange | ||
| |  | |||
| |- | |- | ||
| | 0x08020000 | | 0x08020000 || NotifyTopLcdPowerOn | ||
| |   | |||
| |- | |- | ||
| |  | | 0x08030000 || IsExpanderInUse | ||
| |  | |||
| |- | |- | ||
| | 0x08040000 | | 0x08040000 || NotifyTopLcdPowerOff | ||
| |   | |||
| |} | |} | ||
| GSP always keeps an handle to this service open. NS sometimes uses this service (to blacklist some internal test applications, see [[NS_CFA]]), but when it does it opens then immediately closes the session thereafter. | |||
| = QTM service "qtm:c" = | = QTM "hardware check" service "qtm:c" = | ||
| {| class="wikitable | {| class="wikitable" | ||
| ! Command ID !! Description | |||
| !  | |||
| !  | |||
| |- | |- | ||
| | 0x00010000 | | 0x00010000 || StartHardwareCheck | ||
| |   | |||
| |- | |- | ||
| | 0x00020000 | | 0x00020000 || StopHardwareCheck | ||
| |   | |||
| |- | |- | ||
| | 0x00030040 | | 0x00030040 || SetBarrierPattern | ||
| |   | |||
| |- | |- | ||
| | 0x00040000 | | 0x00040000 || WaitAndCheckExpanderWorking | ||
| |  | |||
| |- | |- | ||
| | 0x00050040 | | 0x00050040 || SetIrLedStatusOverride | ||
| |  | |||
| |} | |} | ||
| The commands for this service are separate from the  | The commands for this service are separate from all the other services documented above. | ||