mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 09:58:03 +02:00
Chassis (Windows): add basic support
This commit is contained in:
+2
-1
@@ -250,6 +250,7 @@ set(LIBFASTFETCH_SRC
|
||||
src/common/printing.c
|
||||
src/common/properties.c
|
||||
src/common/settings.c
|
||||
src/detection/chassis/chassis.c
|
||||
src/detection/cpu/cpu.c
|
||||
src/detection/cpuusage/cpuusage.c
|
||||
src/detection/datetime/datetime.c
|
||||
@@ -530,7 +531,7 @@ elseif(WIN32)
|
||||
src/detection/bluetooth/bluetooth_windows.c
|
||||
src/detection/board/board_windows.c
|
||||
src/detection/brightness/brightness_windows.cpp
|
||||
src/detection/chassis/chassis_nosupport.c
|
||||
src/detection/chassis/chassis_windows.c
|
||||
src/detection/cpu/cpu_windows.c
|
||||
src/detection/cpuusage/cpuusage_windows.c
|
||||
src/detection/cursor/cursor_windows.c
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
#include "chassis.h"
|
||||
|
||||
const char* ffChassisTypeToString(uint32_t chassisType)
|
||||
{
|
||||
// https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.2.0.pdf
|
||||
// 7.4.1 System Enclosure or Chassis Types
|
||||
switch (chassisType)
|
||||
{
|
||||
case 0x01: return "Other";
|
||||
case 0x02: return "Unknown";
|
||||
case 0x03: return "Desktop";
|
||||
case 0x04: return "Low Profile Desktop";
|
||||
case 0x05: return "Pizza Box";
|
||||
case 0x06: return "Mini Tower";
|
||||
case 0x07: return "Tower";
|
||||
case 0x08: return "Portable";
|
||||
case 0x09: return "Laptop";
|
||||
case 0x0A: return "Notebook";
|
||||
case 0x0B: return "Hand Held";
|
||||
case 0x0C: return "Docking Station";
|
||||
case 0x0D: return "All in One";
|
||||
case 0x0E: return "Sub Notebook";
|
||||
case 0x0F: return "Space-saving";
|
||||
case 0x10: return "Lunch Box";
|
||||
case 0x11: return "Main Server Chassis";
|
||||
case 0x12: return "Expansion Chassis";
|
||||
case 0x13: return "SubChassis";
|
||||
case 0x14: return "Bus Expansion Chassis";
|
||||
case 0x15: return "Peripheral Chassis";
|
||||
case 0x16: return "RAID Chassis";
|
||||
case 0x17: return "Rack Mount Chassis";
|
||||
case 0x18: return "Sealed-case PC";
|
||||
case 0x19: return "Multi-system chassis";
|
||||
case 0x1A: return "Compact PCI";
|
||||
case 0x1B: return "Advanced TCA";
|
||||
case 0x1C: return "Blade";
|
||||
case 0x1E: return "Tablet";
|
||||
case 0x1F: return "Convertible";
|
||||
case 0x20: return "Detachable";
|
||||
case 0x21: return "IoT Gateway";
|
||||
case 0x22: return "Embedded PC";
|
||||
case 0x23: return "Mini PC";
|
||||
case 0x24: return "Stick PC";
|
||||
default: return NULL;
|
||||
}
|
||||
}
|
||||
@@ -13,5 +13,6 @@ typedef struct FFChassisResult
|
||||
} FFChassisResult;
|
||||
|
||||
const char* ffDetectChassis(FFChassisResult* result);
|
||||
const char* ffChassisTypeToString(uint32_t chassisType);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#include "chassis.h"
|
||||
#include "util/windows/registry.h"
|
||||
|
||||
const char* ffDetectChassis(FFChassisResult* result)
|
||||
{
|
||||
FF_HKEY_AUTO_DESTROY hKey = NULL;
|
||||
if(!ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", &hKey, NULL)) // SMBIOS
|
||||
return "ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L\"HARDWARE\\DESCRIPTION\\System\\BIOS\", &hKey, NULL) failed";
|
||||
|
||||
uint32_t chassisType = 0;
|
||||
if(!ffRegReadUint(hKey, L"EnclosureType", &chassisType, NULL))
|
||||
return "\"HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\BIOS\\EnclosureType\" doesn't exist";
|
||||
|
||||
const char* chassisTypeStr = ffChassisTypeToString(chassisType);
|
||||
if(!chassisTypeStr)
|
||||
return "Unknown chassis type";
|
||||
|
||||
ffStrbufAppendS(&result->chassisType, chassisTypeStr);
|
||||
return NULL;
|
||||
}
|
||||
Reference in New Issue
Block a user