#include "chassis.h"

const char* ffChassisTypeToString(uint32_t type)
{
    // https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.7.0.pdf
    // 7.4.1 System Enclosure or Chassis Types
    switch (type & 0b01111111)
    {
        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 0x1D: return "Mobile Workstation";
        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;
    }
}
