Line 8: |
Line 8: |
| | 0 || [[#OpenController]] | | | 0 || [[#OpenController]] |
| |- | | |- |
− | | 1 || [16.0.0+] | + | | 1 || [16.0.0+] GetRpm |
| |} | | |} |
| | | |
Line 108: |
Line 108: |
| |- | | |- |
| | 18 || [3.0.0+] [[#GetBatteryChargeCalibratedEvent|GetBatteryChargeCalibratedEvent]] | | | 18 || [3.0.0+] [[#GetBatteryChargeCalibratedEvent|GetBatteryChargeCalibratedEvent]] |
| + | |- |
| + | | 19 || [18.0.0+] |
| + | |- |
| + | | 20 || [18.0.0+] |
| + | |- |
| + | | 21 || [19.0.0+] |
| + | |- |
| + | | 22 || [19.0.0+] |
| + | |- |
| + | | 23 || [19.0.0+] |
| |} | | |} |
| | | |
Line 244: |
Line 254: |
| | | |
| == OpenSession == | | == OpenSession == |
− | Takes a '''DeviceCode''' and an input u32. Returns an [[#IPowctlSession]]. | + | Takes a '''DeviceCode''' and an input [[#AccessMode]]. Returns an [[#IPowctlSession]]. |
| | | |
| == IPowctlSession == | | == IPowctlSession == |
Line 253: |
Line 263: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || | + | | 0 || GetAlertEvent |
| |- | | |- |
− | | 1 || | + | | 1 || SetAlertEnabled |
| |- | | |- |
− | | 2 || | + | | 2 || GetAlertStatus |
| |- | | |- |
− | | 3 || | + | | 3 || ClearAlertStatus |
| |- | | |- |
| | 4 || | | | 4 || |
Line 275: |
Line 285: |
| | 10 || | | | 10 || |
| |- | | |- |
− | | 11 || | + | | 11 || GetChargeType |
| |- | | |- |
− | | 12 || | + | | 12 || SetChargeType |
| |- | | |- |
− | | 13 || | + | | 13 || SetChargeCurrentLimitInMilliAmpere |
| |- | | |- |
− | | 14 || | + | | 14 || GetChargeVoltageLimitInMilliVolt |
| |- | | |- |
− | | 15 || | + | | 15 || SetChargeVoltageLimitInMilliVolt |
| |- | | |- |
− | | 16 || | + | | 16 || SetChargeConfig |
| |- | | |- |
| | 17 || GetHiZ | | | 17 || GetHiZ |
Line 293: |
Line 303: |
| | 19 || GetAverageChargeCurrentInMilliAmpere | | | 19 || GetAverageChargeCurrentInMilliAmpere |
| |- | | |- |
− | | 20 || | + | | 20 || GetChargeCurrentInMilliAmpere |
| |- | | |- |
| | 21 || | | | 21 || |
Line 303: |
Line 313: |
| | 24 || | | | 24 || |
| |- | | |- |
− | | 25 || | + | | 25 || GetParameter |
| |- | | |- |
− | | 26 || | + | | 26 || SetParameter |
| |- | | |- |
| | 27 || | | | 27 || |
Line 335: |
Line 345: |
| | 40 || GetAverageBatteryVoltageInMilliVolt | | | 40 || GetAverageBatteryVoltageInMilliVolt |
| |- | | |- |
− | | 41 || | + | | 41 || SetBatteryVoltageAlertMinInMilliVolt |
| |- | | |- |
− | | 42 || | + | | 42 || SetBatteryVoltageAlertMaxInMilliVolt |
| |- | | |- |
− | | 43 || | + | | 43 || GetWatchdogTimerEnabled |
| |- | | |- |
− | | 44 || | + | | 44 || SetWatchdogTimerEnabled |
| |- | | |- |
− | | 45 || | + | | 45 || SetWatchdogTimerPeriod |
| |- | | |- |
− | | 46 || | + | | 46 || ResetWatchdogTimer |
| |- | | |- |
| | 47 || | | | 47 || |
Line 351: |
Line 361: |
| | 48 || | | | 48 || |
| |- | | |- |
− | | 49 || | + | | 49 || GetBatteryVoltageInMilliVolt |
| |- | | |- |
− | | 50 || | + | | 50 || GetAverageVoltageTimeConstant |
| |- | | |- |
− | | 51 || | + | | 51 || GetChargeCurrentLimitInMilliAmpere |
| |- | | |- |
| | 52 || | | | 52 || |
Line 361: |
Line 371: |
| | 53 || | | | 53 || |
| |- | | |- |
− | | 54 || | + | | 54 || GetVfOcvInMilliVolt |
| |- | | |- |
| | 55 || | | | 55 || |
Line 375: |
Line 385: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || SetOperatingMode | + | | 0 || SetOperationMode |
| |- | | |- |
| | 1 || [1.0.0-10.2.0] GetThermalEvent | | | 1 || [1.0.0-10.2.0] GetThermalEvent |
Line 400: |
Line 410: |
| = ts = | | = ts = |
| This is "nn::ts::server::IMeasurementServer". | | This is "nn::ts::server::IMeasurementServer". |
| + | |
| + | [18.0.0+] This is "nn::ts::server::ITsManager". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 405: |
Line 417: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || [[#GetTemperatureRange|GetTemperatureRange]] | + | | 0 || [1.0.0-16.1.0] [[#GetTemperatureRange|GetTemperatureRange]] |
| |- | | |- |
− | | 1 || [[#GetTemperature|GetTemperature]] | + | | 1 || [1.0.0-16.1.0] [[#GetTemperature|GetTemperature]] |
| |- | | |- |
| | 2 || [1.0.0-13.2.1] [[#SetMeasurementMode|SetMeasurementMode]] | | | 2 || [1.0.0-13.2.1] [[#SetMeasurementMode|SetMeasurementMode]] |
Line 446: |
Line 458: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 0 || | + | | 0 || GetTemperatureRange |
| |- | | |- |
| | 1 || [8.0.0-13.2.1] | | | 1 || [8.0.0-13.2.1] |
| |- | | |- |
− | | 2 || | + | | 2 || SetMeasurementMode |
| |- | | |- |
| | 3 || [8.0.0-13.2.1] | | | 3 || [8.0.0-13.2.1] |
| |- | | |- |
− | | 4 || [10.0.0+] | + | | 4 || [10.0.0+] GetTemperature |
| + | |- |
| + | | 5 || [17.0.0+] SetAlertThreshold |
| + | |- |
| + | | 6 || [17.0.0+] SetThermThreshold |
| + | |- |
| + | | 7 || [17.0.0+] GetTemperatureWithError |
| |} | | |} |
| | | |
Line 522: |
Line 540: |
| |- | | |- |
| | 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]] | | | 7 || [7.0.0+] [[#GetCurrentPerformanceConfiguration]] |
| + | |- |
| + | | 8 || [17.0.0+] GetCurrentPerformanceMode |
| |} | | |} |
| | | |
Line 573: |
Line 593: |
| = fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 = | | = fgm, fgm:0, fgm:1, fgm:2, fgm:3, fgm:4, fgm:5, fgm:6, fgm:7, fgm:9 = |
| These are "nn::fgm::sf::ISession". | | These are "nn::fgm::sf::ISession". |
| + | |
| + | [19.0.0+] These are "nn::fgm::ISession". |
| | | |
| Each service represents a different priority from 0 (Highest/Thermal) to 9 (Lowest). The "fgm" service represents priority 8 (Default). | | Each service represents a different priority from 0 (Highest/Thermal) to 9 (Lowest). The "fgm" service represents priority 8 (Default). |
Line 590: |
Line 612: |
| == IRequest == | | == IRequest == |
| This is "nn::fgm::sf::IRequest". | | This is "nn::fgm::sf::IRequest". |
| + | |
| + | [19.0.0+] This is "nn::fgm::IRequest". |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 618: |
Line 642: |
| = fgm:dbg = | | = fgm:dbg = |
| This is "nn::fgm::sf::IDebugger". | | This is "nn::fgm::sf::IDebugger". |
| + | |
| + | This was removed with [17.0.0]. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 772: |
Line 798: |
| | | |
| = BatteryChargeInfoFields = | | = BatteryChargeInfoFields = |
− | This is a 0x40-byte struct. | + | This is "nn::psm::BatteryChargeInfoFields". This is a 0x40-byte struct. |
| + | |
| + | [17.0.0+] This is a 0x54-byte struct. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 778: |
Line 806: |
| ! Offset || Size || Description | | ! Offset || Size || Description |
| |- | | |- |
− | | 0x00 || 0x4 || u32. Input (Sink) current limit in mA | + | | 0x00 || 0x4 || InputCurrentLimit (input/sink current limit in mA) |
| + | |- |
| + | | 0x04 || 0x4 || BoostModeCurrentLimit (output/source/vbus/OTG current limit in mA) |
| |- | | |- |
− | | 0x04 || 0x4 || u32. Output (Source/Vbus/OTG) current limit in mA | + | | 0x08 || 0x4 || FastChargeCurrentLimit (battery charging current limit in mA) |
| |- | | |- |
− | | 0x08 || 0x4 || u32. Battery charging current limit in mA | + | | 0x0C || 0x4 || ChargeVoltageLimit (battery charging voltage limit in mV) |
| |- | | |- |
− | | 0x0C || 0x4 || u32. Battery charging voltage limit in mV | + | | 0x10 || 0x4 || [[#ChargerType_2|ChargerType]] |
| |- | | |- |
− | | 0x10 || 0x4 || enum, same as power-role? Always 1 except when OTG where it becomes 2 | + | | 0x14 || 0x1 || [[#HiZMode|HiZMode]] |
| |- | | |- |
− | | 0x14 || 0x4 || Bit field (bit8: Enable Battery Charging) | + | | 0x15 || 0x1 || [[#BatteryCharging|BatteryCharging]] |
| |- | | |- |
− | | 0x18 || 0x4 || u32. Charging limits state based on battery temperature | + | | 0x16 || 0x2 || Reserved |
| |- | | |- |
− | | 0x1C || 0x4 || u32. Battery Temperature (milli C) | + | | 0x18 || 0x4 || [[#Vdd50State|Vdd50State]] |
| |- | | |- |
− | | 0x20 || 0x4 || u32. Capacity now per cent-mille (i.e. 100% = 100000 pcm) | + | | 0x1C || 0x4 || TemperatureCelsius (battery temperature in milli C) |
| |- | | |- |
− | | 0x24 || 0x4 || u32. Voltage avg in mV | + | | 0x20 || 0x4 || BatteryChargePercentage (capacity now per cent-mille, i.e. 100% = 100000 pcm) |
| + | |- |
| + | | 0x24 || 0x4 || BatteryChargeMilliVoltage (voltage avg in mV) |
| + | |- |
| + | | 0x28 || 0x4 || BatteryAgePercentage (battery age capacity full/capacity design per cent-mille, i.e. 100% = 100000 pcm) |
| + | |- |
| + | | 0x2C || 0x4 || [[USB_services#UsbPowerRole|UsbPowerRole]] |
| + | |- |
| + | | 0x30 || 0x4 || [[USB_services#UsbChargerType|UsbChargerType]] |
| + | |- |
| + | | 0x34 || 0x4 || ChargerInputVoltageLimit (charger voltage limit in mV) |
| + | |- |
| + | | 0x38 || 0x4 || ChargerInputCurrentLimit (charger current limit in mA) |
| + | |- |
| + | | 0x3C || 0x1 || [[#FastBatteryCharging|FastBatteryCharging]] |
| + | |- |
| + | | 0x3D || 0x1 || [[#ControllerPowerSupply|ControllerPowerSupply]] |
| + | |- |
| + | | 0x3E || 0x1 || [[#OtgRequest|OtgRequest]] |
| + | |- |
| + | | 0x3F || 0x1 || Reserved |
| + | |- |
| + | | 0x40 || 0x14 || [17.0.0+] |
| + | |} |
| + | |
| + | == ChargerType == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value || Name |
| |- | | |- |
− | | 0x28 || 0x4 || u32. Battery age (capacity full / capacity design) per cent-mille (i.e. 100% = 100000 pcm) | + | | 0 || ChargeDisable |
| |- | | |- |
− | | 0x2C || 0x4 || enum. Power role (0: Unknown, 1: Sink, 2: Source) | + | | 1 || ChargeBattery |
| |- | | |- |
− | | 0x30 || 0x4 || enum. [[#Charger]] | + | | 2 || Otg |
| + | |} |
| + | |
| + | == HiZMode == |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 0x34 || 0x4 || u32. Charger voltage limit in mV | + | ! Value || Name |
| |- | | |- |
− | | 0x38 || 0x4 || u32. Charger current limit in mA | + | | 0 || Disable |
| |- | | |- |
− | | 0x3C || 0x4 || Bit field (bit0: potentially no hub, bit8: Joy-con charging, bit12: OTG) | + | | 1 || Enable |
| |} | | |} |
| | | |
− | === Charger === | + | == BatteryCharging == |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
| ! Value || Name | | ! Value || Name |
| |- | | |- |
− | | 0 || Unknown | + | | 0 || Disable |
| |- | | |- |
− | | 1 || PD | + | | 1 || Enable |
| + | |} |
| + | |
| + | == FastBatteryCharging == |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 2 || Type-C 1.5A | + | ! Value || Name |
| |- | | |- |
− | | 3 || Type-C 3.0A | + | | 0 || Disable |
| |- | | |- |
− | | 4 || DCP | + | | 1 || Enable |
| + | |} |
| + | |
| + | == ControllerPowerSupply == |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 5 || CDP | + | ! Value || Name |
| |- | | |- |
− | | 6 || SDP | + | | 0 || Disable |
| |- | | |- |
− | | 7 || Apple 500mA | + | | 1 || Enable |
| + | |} |
| + | |
| + | == OtgRequest == |
| + | {| class="wikitable" border="1" |
| |- | | |- |
− | | 8 || Apple 1000mA | + | ! Value || Name |
| + | |- |
| + | | 0 || Disable |
| |- | | |- |
− | | 9 || Apple 2000mA | + | | 1 || Enable |
| |} | | |} |
| | | |
Line 1,055: |
Line 1,131: |
| |} | | |} |
| | | |
− | = Settings = | + | = AccessMode = |
| + | This is "nn::ddsf::AccessMode". |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Key || Size || Notes | + | ! Name || Block |
− | |-
| |
− | | background_download_stress_testing_storage || strlen || "sdcard", "builtin", "system".
| |
− | |-
| |
− | | battery_draining_enabled || 1 || ?
| |
− | |-
| |
− | | fs_access_log_mode || strlen || "log", "sdcard", "log+sdcard", "off".
| |
− | |-
| |
− | | fs_speed_emulation_mode || strlen || "faster", "slower", "random", "off".
| |
− | |-
| |
− | | host_romfs_redirection_target || strlen || "builtin", "off".
| |
− | |-
| |
− | | idle_time_detect_mode || strlen || "on", "off".
| |
− | |-
| |
− | | initial_tick_value || strlen || "7days", "14days", "30days", "90days", "hex": ?.
| |
− | |-
| |
− | | memory_mode || strlen || "auto", "4GB", "6GB".
| |
− | |-
| |
− | | needs_update_vulnerability_policy || strlen || "default": ?, "force_true": ?, "force_false": ?.
| |
− | |-
| |
− | | operation_mode_policy || strlen || "auto": ?, "handheld", "console".
| |
− | |-
| |
− | | performance_mode_policy || strlen || "auto": use boost mode when docked. "normal": never use boost mode. "boost": always use boost mode (SDEV only).
| |
| |- | | |- |
− | | screenshot_target || strlen || "screenshot": ?, "physical": ?. | + | | 0 || None |
| |- | | |- |
− | | sdev_cpu_overclock_enabled || 1 || SDEV only. Used to allow access to 1224MHz CPU mode.
| + | | 1 || Read |
| |- | | |- |
− | | sdev_throttling_additional_delay_us || 4 || SDEV only. | + | | 2 || Write |
| |- | | |- |
− | | sdev_throttling_additional_delay_enabled || 1 || SDEV only. | + | | 3 || ReadWrite |
| |- | | |- |
− | | sleep_mode || strlen || "default": ?, "pseudo": ?. | + | | 4 || Shared |
| |- | | |- |
− | | throttling_for_smpd_enabled || 1 || Not used as of 3.0. | + | | 5 || WriteShared |
| |- | | |- |
− | | throttling_for_undock_enabled || 1 || Not used as of 3.0. | + | | 6 || ReadWriteShared |
| |} | | |} |
| | | |
| [[Category:Services]] | | [[Category:Services]] |