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 =