HID services: Difference between revisions
No edit summary |
|||
Line 1,696: | Line 1,696: | ||
| 1150 || [8.0.0+] SetTouchScreenMagnification | | 1150 || [8.0.0+] SetTouchScreenMagnification | ||
|- | |- | ||
| 1151 || [9.0.0+] GetTouchScreenFirmwareVersion | | 1151 || [9.0.0+] [[#GetTouchScreenFirmwareVersion]] | ||
|- | |- | ||
| 1152 || [9.0.0+] SetTouchScreenDefaultConfiguration | | 1152 || [9.0.0+] SetTouchScreenDefaultConfiguration | ||
Line 1,917: | Line 1,917: | ||
== GetHidbusSystemServiceObject == | == GetHidbusSystemServiceObject == | ||
No input, returns an [[#IHidbusSystemServer]]. | No input, returns an [[#IHidbusSystemServer]]. | ||
== GetTouchScreenFirmwareVersion == | |||
No input. Returns a [[#FirmwareVersion]]. | |||
This requests the current firmware version from the touch screen IC. | |||
It first ensures the touch screen IC's chip id is one of the following: | |||
0x7036 - STMicroelectronics FingerTipS FT9CJ | |||
0x4036 - STMicroelectronics FingerTipS FT9CF | |||
Then constructs the final firmware version as follows: | |||
uint32_t FtsVersion = GetFtsReleasedVer(); // Matches the xxxx value found in the FTS_xxxx.fts256 firmware files. | |||
uint8_t FtsVersionByte0 = (FtsVersion & 0xFF); | |||
uint8_t FtsVersionByte1 = (FtsVersion & 0xFF00); | |||
uint8_t FtsVersionByte2 = (FtsVersion & 0xFF0000); | |||
uint8_t FtsVersionByte3 = (FtsVersion & 0xFF000000); | |||
uint8_t FirmwareVersionByte0 = FtsVersionByte3; | |||
uint8_t FirmwareVersionByte1 = FtsVersionByte2; | |||
uint8_t FirmwareVersionByte2 = FtsVersionByte1; | |||
uint8_t FirmwareVersionByte3 = FtsVersionByte0; | |||
if (FtsVersionByte3 <= 0x31) { | |||
FirmwareVersionByte3 = 0; | |||
FirmwareVersionByte1 = 0; | |||
FirmwareVersionByte0 = 0x31; | |||
if (FtsVersionByte2 == 0x5) { | |||
FirmwareVersionByte2 = 2; | |||
} else if (FtsVersionByte2 == 0x12) { | |||
FirmwareVersionByte2 = 0; | |||
} else if (FtsVersionByte2 == 0x1A) { | |||
FirmwareVersionByte2 = 1; | |||
} else { | |||
// Throw error. | |||
} | |||
} | |||
uint8_t FirmwareVersion[0x10] = {0}; | |||
*(uint32_t *)FirmwareVersion = (FirmwareVersionByte3 << 24) | (FirmwareVersionByte2 << 16) | (FirmwareVersionByte1 << 8) | FirmwareVersionByte0; | |||
*((uint32_t *)FirmwareVersion + 1) = 0x5354; // "ST" | |||
return FirmwareVersion; | |||
== IsFirmwareAvailableForNotification == | == IsFirmwareAvailableForNotification == | ||
Line 7,053: | Line 7,097: | ||
| 3 || Default | | 3 || Default | ||
|} | |} | ||
= FirmwareVersion = | |||
This is "nn::hid::system::FirmwareVersion". This is a 0x10 byte value. | |||
= AppletDetailedUiType = | = AppletDetailedUiType = |