settings: ignore hidden features
This commit is contained in:
		
							parent
							
								
									44a647499c
								
							
						
					
					
						commit
						2cb5fa4b97
					
				|  | @ -1,59 +1,62 @@ | |||
| Solaar version 1.1.3 | ||||
| Solaar version 1.1.14 | ||||
| 
 | ||||
|   1: PRO X Wireless | ||||
|   2: PRO X Wireless | ||||
|      Device path  : None | ||||
|      WPID         : 4093 | ||||
|      Codename     : PRO X | ||||
|      Kind         : mouse | ||||
|      Protocol     : HID++ 4.2 | ||||
|      Polling rate : 8 ms (125Hz) | ||||
|      Serial number: 42F42E12 | ||||
|      Report Rate : 1ms | ||||
|      Serial number: 8B24D1D1 | ||||
|      Model ID:      4093C0940000 | ||||
|      Unit ID:       42F42E12 | ||||
|         Bootloader: BL1 25.00.B0013 | ||||
|              Other: | ||||
|           Firmware: MPM 25.01.B0018 | ||||
|      Unit ID:       8B24D1D1 | ||||
|                  1: BL1 25.01.B0018 | ||||
|                  3: | ||||
|                  0: MPM 25.01.B0018 | ||||
|      Supports 28 HID++ 2.0 features: | ||||
|          0: ROOT                   {0000} | ||||
|          1: FEATURE SET            {0001} | ||||
|          2: DEVICE FW VERSION      {0003} | ||||
|             Firmware: Bootloader BL1 25.00.B0013 AB00BE657A82 | ||||
|             Firmware: Other | ||||
|             Firmware: Firmware MPM 25.01.B0018 4093FE92436C | ||||
|             Unit ID: 42F42E12  Model ID: 4093C0940000  Transport IDs: {'wpid': '4093', 'usbid': 'C094'} | ||||
|          3: DEVICE NAME            {0005} | ||||
|          0: ROOT                   {0000} V0 | ||||
|          1: FEATURE SET            {0001} V0 | ||||
|          2: DEVICE FW VERSION      {0003} V3 | ||||
|             Firmware: 1 BL1 25.01.B0018 AB00FE92436C | ||||
|             Firmware: 3 | ||||
|             Firmware: 0 MPM 25.01.B0018 4093FE92436C | ||||
|             Unit ID: 8B24D1D1  Model ID: 4093C0940000  Transport IDs: {'wpid': '4093', 'usbid': 'C094'} | ||||
|          3: DEVICE NAME            {0005} V0 | ||||
|             Name: PRO X Wireless | ||||
|             Kind: mouse | ||||
|          4: WIRELESS DEVICE STATUS {1D4B} | ||||
|          5: RESET                  {0020} | ||||
|          6: UNIFIED BATTERY        {1004} | ||||
|          7: COLOR LED EFFECTS      {8070}   internal, hidden | ||||
|          8: ONBOARD PROFILES       {8100} | ||||
|             Device Mode: Host | ||||
|             Onboard Profiles (saved): Disable | ||||
|             Onboard Profiles        : Disable | ||||
|          9: MOUSE BUTTON SPY       {8110} | ||||
|         10: REPORT RATE            {8060} | ||||
|             Polling Rate (ms): 1 | ||||
|             Polling Rate (ms) (saved): 1 | ||||
|             Polling Rate (ms)        : 1 | ||||
|         11: ADJUSTABLE DPI         {2201} | ||||
|             Sensitivity (DPI) (saved): 1000 | ||||
|             Sensitivity (DPI)        : 1000 | ||||
|         12: unknown:1500           {1500} | ||||
|         13: DEVICE RESET           {1802}   internal, hidden | ||||
|         14: unknown:1803           {1803}   internal, hidden | ||||
|         15: CONFIG DEVICE PROPS    {1806}   internal, hidden | ||||
|         16: unknown:1811           {1811}   internal, hidden | ||||
|         17: OOBSTATE               {1805}   internal, hidden | ||||
|         18: unknown:1830           {1830}   internal, hidden | ||||
|         19: unknown:1890           {1890}   internal, hidden | ||||
|         20: unknown:1891           {1891}   internal, hidden | ||||
|         21: unknown:18A1           {18A1}   internal, hidden | ||||
|         22: unknown:1801           {1801}   internal, hidden | ||||
|         23: unknown:18B1           {18B1}   internal, hidden | ||||
|         24: unknown:1E00           {1E00}   hidden | ||||
|         25: unknown:1EB0           {1EB0}   internal, hidden | ||||
|         26: unknown:1863           {1863}   internal, hidden | ||||
|         27: unknown:1E22           {1E22}   internal, hidden | ||||
|      Battery: 76%, discharging. | ||||
|          4: WIRELESS DEVICE STATUS {1D4B} V0 | ||||
|          5: CONFIG CHANGE          {0020} V0 | ||||
|             Configuration: 11000000000000000000000000000000 | ||||
|          6: UNIFIED BATTERY        {1004} V1 | ||||
|             Battery: 71%, 0. | ||||
|          7: COLOR LED EFFECTS      {8070} V4    internal, hidden | ||||
|             LED Control        : HID++ error {'number': 2, 'request': 1908, 'error': 5, 'params': b''} | ||||
|          8: ONBOARD PROFILES       {8100} V0 | ||||
|             Device Mode: On-Board | ||||
|             Onboard Profiles (saved): Profile 1 | ||||
|             Onboard Profiles        : Profile 1 | ||||
|          9: MOUSE BUTTON SPY       {8110} V0 | ||||
|         10: REPORT RATE            {8060} V0 | ||||
|             Report Rate: 1ms | ||||
|             Report Rate (saved): 1ms | ||||
|             Report Rate        : 1ms | ||||
|         11: ADJUSTABLE DPI         {2201} V2 | ||||
|             Sensitivity (DPI) (saved): 800 | ||||
|             Sensitivity (DPI)        : 800 | ||||
|         12: FORCE PAIRING          {1500} V0 | ||||
|         13: DEVICE RESET           {1802} V0    internal, hidden | ||||
|         14: unknown:1803           {1803} V0    internal, hidden | ||||
|         15: CONFIG DEVICE PROPS    {1806} V4    internal, hidden | ||||
|         16: unknown:1811           {1811} V0    internal, hidden | ||||
|         17: OOBSTATE               {1805} V0    internal, hidden | ||||
|         18: unknown:1830           {1830} V0    internal, hidden | ||||
|         19: unknown:1890           {1890} V5    internal, hidden | ||||
|         20: unknown:1891           {1891} V5    internal, hidden | ||||
|         21: unknown:18A1           {18A1} V0    internal, hidden | ||||
|         22: unknown:1801           {1801} V0    internal, hidden | ||||
|         23: unknown:18B1           {18B1} V0    internal, hidden | ||||
|         24: unknown:1E00           {1E00} V0    hidden | ||||
|         25: unknown:1EB0           {1EB0} V0    internal, hidden | ||||
|         26: unknown:1863           {1863} V0    internal, hidden | ||||
|         27: unknown:1E22           {1E22} V0    internal, hidden | ||||
|      Battery: 71%, 0. | ||||
|  |  | |||
|  | @ -47,6 +47,7 @@ from .hidpp20_constants import DEVICE_KIND | |||
| from .hidpp20_constants import ChargeLevel | ||||
| from .hidpp20_constants import ChargeType | ||||
| from .hidpp20_constants import ErrorCode | ||||
| from .hidpp20_constants import FeatureFlag | ||||
| from .hidpp20_constants import GestureId | ||||
| from .hidpp20_constants import ParamId | ||||
| from .hidpp20_constants import SupportedFeature | ||||
|  | @ -137,6 +138,7 @@ class FeaturesArray(dict): | |||
|         self.device = device | ||||
|         self.inverse = {} | ||||
|         self.version = {} | ||||
|         self.flags = {} | ||||
|         self.count = 0 | ||||
| 
 | ||||
|     def _check(self) -> bool: | ||||
|  | @ -183,6 +185,7 @@ class FeaturesArray(dict): | |||
|                     feature = f"unknown:{data:04X}" | ||||
|                 self[feature] = index | ||||
|                 self.version[feature] = response[3] | ||||
|                 self.flags[feature] = response[2] | ||||
|                 return feature | ||||
| 
 | ||||
|     def enumerate(self):  # return all features and their index, ordered by index | ||||
|  | @ -195,6 +198,15 @@ class FeaturesArray(dict): | |||
|         if self[feature]: | ||||
|             return self.version.get(feature, 0) | ||||
| 
 | ||||
|     def get_flags(self, feature: NamedInt) -> Optional[int]: | ||||
|         if self[feature]: | ||||
|             return self.flags.get(feature, 0) | ||||
| 
 | ||||
|     def get_hidden(self, feature: NamedInt) -> Optional[bool]: | ||||
|         if self[feature]: | ||||
|             return self.flags.get(feature, 0) & FeatureFlag.INTERNAL | ||||
|         return True | ||||
| 
 | ||||
|     def __contains__(self, feature: NamedInt) -> bool: | ||||
|         try: | ||||
|             index = self.__getitem__(feature) | ||||
|  | @ -215,6 +227,7 @@ class FeaturesArray(dict): | |||
|                 index = response[0] | ||||
|                 self[feature] = index if index else False | ||||
|                 self.version[feature] = response[2] | ||||
|                 self.flags[feature] = response[1] | ||||
|                 return index if index else False | ||||
| 
 | ||||
|     def __setitem__(self, feature, index): | ||||
|  |  | |||
|  | @ -1898,6 +1898,8 @@ def check_feature(device, settings_class: SettingsProtocol) -> None | bool | Set | |||
|         return | ||||
|     if settings_class.min_version > device.features.get_feature_version(settings_class.feature): | ||||
|         return | ||||
|     if device.features.get_hidden(settings_class.feature): | ||||
|         return | ||||
|     try: | ||||
|         detected = settings_class.build(device) | ||||
|         if logger.isEnabledFor(logging.DEBUG): | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue