Changes

Jump to navigation Jump to search
2,724 bytes added ,  21:04, 14 August 2022
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 and FTS_xxxx.ftb 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;  // "TS"
 +
 +
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 =
Line 9,343: Line 9,390:  
* [9.0.0+] '''sioh.bin''' - Switch Lite Joy-Con firmware.  
 
* [9.0.0+] '''sioh.bin''' - Switch Lite Joy-Con firmware.  
 
* [9.0.0+] '''sioh_iap.bin''' - Switch Lite Joy-Con (IAP profile) firmware.
 
* [9.0.0+] '''sioh_iap.bin''' - Switch Lite Joy-Con (IAP profile) firmware.
* [10.0.0+] '''FTS_00120100.fts256'''
+
* [10.0.0+] '''FTS_00120100.fts256''' - Touch Screen controller firmware in FTS256 format.
* [10.0.0+] '''FTS_32000001.fts256'''
+
* [10.0.0+] '''FTS_32000001.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "Nissha".
* [10.0.0+] '''FTS_32000102.fts256'''
+
* [10.0.0+] '''FTS_32000102.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "GIS".
* [10.0.0+] '''FTS_32000302.fts256'''
+
* [10.0.0+] '''FTS_32000302.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "Nissha_Hoag".
* [10.0.0+] '''FTS_32000402.fts256'''
+
* [10.0.0+] '''FTS_32000402.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "GIS_Hoag".
* [10.0.0+] '''TouchScreenConfiguration.csv'''
+
* [10.0.0+] '''TouchScreenConfiguration.csv''' - List in the format "[gpio],[gpio],[gpio],[config],[config]" where "gpio" can be "0" or "1" and "config" is an integer number.
* [10.0.0+] '''TouchScreenFirmwareInfo.csv'''
+
* [10.0.0+] '''TouchScreenFirmwareInfo.csv''' - List in the format "[driver],[gpio],[gpio],[gpio],[version],[file]" where "driver" can be "FTM" or "FST2", "gpio" can be "0" or "1", "version" is the hexadecimal representation of the firmware file's version and "file" is the name of the firmware file.
* [13.0.0+] '''FTS_33000510.fts256'''
+
* [13.0.0+] '''FTS_33000510.fts256''' - Touch Screen controller firmware in FTS256 format for panel vendor "Samsung".
* [13.0.0] '''FTS_98000004.ftb'''
+
* [13.0.0] '''FTS_98000004.ftb''' - Touch Screen controller firmware in FTB format.
* [13.1.0-13.2.1] '''FTS_50000001.ftb'''
+
* [13.1.0-13.2.1] '''FTS_50000001.ftb''' - Touch Screen controller firmware in FTB format for panel vendor "Nissha".
* [14.0.0+] '''FTS_50000002.ftb'''
+
* [14.0.0+] '''FTS_50000002.ftb''' - Touch Screen controller firmware in FTB format for panel vendor "Nissha".
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu