27#ifndef INCLUDED_SMBIOS
28#define INCLUDED_SMBIOS
37 ENUMERATION(State, u8)\
39 ENUMERATION(BiosFlags, u32)\
40 ENUMERATION(BiosFlags1, u8)\
41 ENUMERATION(BiosFlags2, u8)\
42 ENUMERATION(SystemWakeUpType, u8)\
43 ENUMERATION(BaseboardFlags, u8)\
44 ENUMERATION(BaseboardType, u8)\
45 ENUMERATION(ChassisType, u8)\
46 ENUMERATION(ChassisSecurityStatus, u8)\
47 ENUMERATION(ProcessorType, u8)\
48 ENUMERATION(ProcessorStatus, u8)\
49 ENUMERATION(ProcessorUpgrade, u8)\
50 ENUMERATION(ProcessorFlags, u16)\
51 ENUMERATION(CacheMode, u8)\
52 ENUMERATION(CacheLocation, u8)\
53 ENUMERATION(CacheConfigurationFlags, u16)\
54 ENUMERATION(CacheFlags, u16)\
55 ENUMERATION(CacheType, u8)\
56 ENUMERATION(CacheAssociativity, u8)\
57 ENUMERATION(PortConnectorType, u8)\
58 ENUMERATION(PortType, u8)\
59 ENUMERATION(SystemSlotType, u8)\
60 ENUMERATION(SystemSlotBusWidth, u8)\
61 ENUMERATION(SystemSlotUsage, u8)\
62 ENUMERATION(SystemSlotLength, u8)\
63 ENUMERATION(SystemSlotFlags1, u8)\
64 ENUMERATION(SystemSlotFlags2, u8)\
65 ENUMERATION(OnBoardDeviceType, u8)\
66 ENUMERATION(MemoryArrayLocation, u8)\
67 ENUMERATION(MemoryArrayUse, u8)\
68 ENUMERATION(MemoryDeviceFormFactor, u8)\
69 ENUMERATION(MemoryDeviceType, u8)\
70 ENUMERATION(MemoryDeviceTypeFlags, u16)\
71 ENUMERATION(PortableBatteryChemistry, u8)\
72 ENUMERATION(VoltageProbeLocation, u8)\
73 ENUMERATION(CoolingDeviceType, u8)\
74 ENUMERATION(TemperatureProbeLocation, u8)\
75 ENUMERATION(SystemBootStatus, u8)\
76 ENUMERATION(ManagementDeviceType, u8)\
77 ENUMERATION(ManagementDeviceAddressType, u8)\
78 ENUMERATION(SystemPowerSupplyCharacteristics, u16)\
79 ENUMERATION(SystemPowerSupplyType, u8)\
80 ENUMERATION(SystemPowerSupplyInputSwitching, u8)
89 STRUCTURE(Baseboard, 2)\
90 STRUCTURE(Chassis, 3)\
91 STRUCTURE(Processor, 4)\
94 STRUCTURE(PortConnector, 8)\
95 STRUCTURE(SystemSlot, 9)\
96 STRUCTURE(OnBoardDevices, 10)\
98 STRUCTURE(MemoryArray, 16)\
99 STRUCTURE(MemoryDevice, 17)\
101 STRUCTURE(MemoryArrayMappedAddress, 19)\
102 STRUCTURE(MemoryDeviceMappedAddress, 20)\
104 STRUCTURE(PortableBattery, 22)\
106 STRUCTURE(VoltageProbe, 26)\
107 STRUCTURE(CoolingDevice, 27)\
108 STRUCTURE(TemperatureProbe, 28)\
110 STRUCTURE(SystemBoot, 32)\
111 STRUCTURE(ManagementDevice, 34)\
112 STRUCTURE(ManagementDeviceComponent, 35)\
113 STRUCTURE(ManagementDeviceThreshold, 36)\
114 STRUCTURE(SystemPowerSupply, 39)\
115 STRUCTURE(OnboardDevices2, 41)\
160#define State_ENUMERATORS\
164 ENUM(noncritical, 4)\
166 ENUM(nonrecoverable, 6)
168#define ECC_ENUMERATORS\
174 ENUM(multiple_bit, 6)\
184#define BiosFlags_ENUMERATORS\
190 ENUM(plug_and_play, 0x200)\
192 ENUM(upgradable, 0x800)\
193 ENUM(shadowing, 0x1000)\
194 ENUM(vl_vesa, 0x2000)\
196 ENUM(boot_cd, 0x8000)\
197 ENUM(selectable_boot, 0x10000)\
198 ENUM(socketed_rom, 0x20000)\
199 ENUM(boot_pcmcia, 0x40000)\
201 ENUM(int13a, 0x100000)\
202 ENUM(int13b, 0x200000)\
203 ENUM(int13c, 0x400000)\
204 ENUM(int13d, 0x800000)\
205 ENUM(int13e, 0x1000000)\
206 ENUM(int13f, 0x2000000)\
207 ENUM(int5, 0x4000000)\
208 ENUM(int9, 0x8000000)\
209 ENUM(int14, 0x10000000)\
210 ENUM(int17, 0x20000000)\
211 ENUM(int10, 0x40000000)\
212 ENUM(pc_98, 0x80000000)
214#define BiosFlags1_ENUMERATORS\
216 ENUM(usb_legacy, 0x02)\
218 ENUM(boot_i2o, 0x08)\
219 ENUM(boot_ls_120, 0x10)\
220 ENUM(boot_zip_drive, 0x20)\
221 ENUM(boot_1394, 0x40)\
222 ENUM(smart_battery, 0x80)
224#define BiosFlags2_ENUMERATORS\
225 ENUM(bios_boot, 0x01)\
226 ENUM(function_key_boot, 0x02)\
227 ENUM(targeted_content_distribution, 0x04)\
229 ENUM(virtual_machine, 0x10)
232 FIELD(0, const char*, vendor, "")\
233 FIELD(0, const char*, version, "")\
234 FIELD(F_HEX, u16, startSegment, "")\
235 FIELD(0, const char*, releaseDate, "")\
236 FIELD(F_INTERNAL, u8, encodedSize, "")\
237 FIELD(0, BiosFlags, flags, "")\
238 FIELD(F_HEX, u32, vendorFlags, "")\
239 FIELD(0, BiosFlags1, flags1, "")\
240 FIELD(0, BiosFlags2, flags2, "")\
241 FIELD(F_DERIVED, Size<size_t>, size, "")
247#define SystemWakeUpType_ENUMERATORS\
253 ENUM(power_switch, 6)\
255 ENUM(ac_power_restored, 8)
257#define System_FIELDS\
258 FIELD(0, const char*, manufacturer, "")\
259 FIELD(0, const char*, productName, "")\
260 FIELD(0, const char*, version, "")\
261 FIELD(0, const char*, serialNumber, "")\
262 FIELD(F_HEX, u64, uuid0, "")\
263 FIELD(F_HEX, u64, uuid1, "")\
264 FIELD(0, SystemWakeUpType, wakeUpType, "")\
265 FIELD(0, const char*, skuNumber, "")\
266 FIELD(0, const char*, m_Family, "")
272#define BaseboardFlags_ENUMERATORS\
273 ENUM(motherboard, 0x01)\
274 ENUM(requires_add_in, 0x02)\
275 ENUM(removable, 0x04)\
276 ENUM(replaceable, 0x08)\
277 ENUM(hot_swappable, 0x10)
279#define BaseboardType_ENUMERATORS\
283 ENUM(connectivity_switch, 4)\
284 ENUM(system_management, 5)\
289 ENUM(motherboard, 10)\
290 ENUM(processor_memory, 11)\
291 ENUM(processor_io, 12)\
292 ENUM(interconnect, 13)
294#define Baseboard_FIELDS\
295 FIELD(0, const char*, manufacturer, "")\
296 FIELD(0, const char*, product, "")\
297 FIELD(0, const char*, version, "")\
298 FIELD(0, const char*, serialNumber, "")\
299 FIELD(0, const char*, assetTag, "")\
300 FIELD(0, BaseboardFlags, flags, "")\
301 FIELD(0, const char*, location, "")\
302 FIELD(0, Handle, hChassis, "")\
303 FIELD(0, BaseboardType, type, "")\
310#define ChassisType_ENUMERATORS\
314 ENUM(low_profile_desktop, 4)\
322 ENUM(docking_station, 12)\
323 ENUM(all_in_one, 13)\
324 ENUM(subnotebook, 14)\
325 ENUM(space_saving, 15)\
327 ENUM(main_server, 17)\
330 ENUM(bus_expansion, 20)\
331 ENUM(peripheral, 21)\
333 ENUM(rack_mount, 23)\
334 ENUM(sealed_case, 24)\
335 ENUM(multi_system, 25)\
336 ENUM(compact_pci, 26)\
337 ENUM(advanced_tca, 27)\
339 ENUM(blade_enclosure, 29)
341#define ChassisSecurityStatus_ENUMERATORS\
345 ENUM(external_interface_locked, 4)\
346 ENUM(external_interface_enabled, 5)
348#define Chassis_FIELDS\
349 FIELD(0, const char*, manufacturer, "")\
350 FIELD(0, ChassisType, type, "")\
351 FIELD(0, const char*, version, "")\
352 FIELD(0, const char*, serialNumber, "")\
353 FIELD(0, const char*, assetTag, "")\
354 FIELD(0, State, state, "")\
355 FIELD(0, State, powerState, "")\
356 FIELD(0, State, thermalState, "")\
357 FIELD(0, ChassisSecurityStatus, securityStatus, "")\
358 FIELD(0, u32, oemDefined, "")\
359 FIELD(0, u8, height, "U")\
360 FIELD(0, u8, numPowerCords, "")\
367#define ProcessorType_ENUMERATORS\
375#define ProcessorStatus_ENUMERATORS\
379 ENUM(user_disabled, 2)\
380 ENUM(post_disabled, 3)\
383#define ProcessorUpgrade_ENUMERATORS\
393 ENUM(socket_370, 10)\
396 ENUM(socket_423, 13)\
398 ENUM(socket_478, 15)\
399 ENUM(socket_754, 16)\
400 ENUM(socket_940, 17)\
401 ENUM(socket_939, 18)\
402 ENUM(socket_604, 19)\
403 ENUM(socket_771, 20)\
404 ENUM(socket_775, 21)\
406 ENUM(socket_am2, 23)\
407 ENUM(socket_1207, 24)\
408 ENUM(socket_1366, 25)\
409 ENUM(socket_g34, 26)\
410 ENUM(socket_am3, 27)\
411 ENUM(socket_c32, 28)\
412 ENUM(socket_1156, 29)\
413 ENUM(socket_1567, 30)\
414 ENUM(socket_988a, 31)\
415 ENUM(socket_1288, 32)\
416 ENUM(socket_988b, 33)\
417 ENUM(socket_1023, 34)\
418 ENUM(socket_1224, 35)\
419 ENUM(socket_1155, 36)\
420 ENUM(socket_1356, 37)\
421 ENUM(socket_2011, 38)\
422 ENUM(socket_fs1, 39)\
423 ENUM(socket_fs2, 40)\
424 ENUM(socket_fm1, 41)\
427#define ProcessorFlags_ENUMERATORS\
430 ENUM(multi_core, 0x8)\
432 ENUM(execute_protection, 0x20)\
433 ENUM(enhanced_virtualization, 0x40)\
434 ENUM(power_control, 0x80)
436#define Processor_FIELDS\
437 FIELD(0, const char*, socket, "")\
438 FIELD(0, ProcessorType, type, "")\
439 FIELD(0, u8, m_Family, "")
\
440 FIELD(0, const char*, manufacturer, "")\
441 FIELD(F_HEX, u64, id, "")\
442 FIELD(0, const char*, version, "")\
443 FIELD(0, u8, voltage, " dV")\
444 FIELD(0, u16, externalClockFrequency, " MHz")\
445 FIELD(0, u16, maxFrequency, " MHz")\
446 FIELD(0, u16, bootFrequency, " MHz")\
447 FIELD(0, ProcessorStatus, status, "")\
448 FIELD(0, ProcessorUpgrade, upgrade, "")\
449 FIELD(0, Handle, hL1, "")\
450 FIELD(0, Handle, hL2, "")\
451 FIELD(0, Handle, hL3, "")\
452 FIELD(0, const char*, serialNumber, "")\
453 FIELD(0, const char*, assetTag, "")\
454 FIELD(0, const char*, partNumber, "")\
455 FIELD(0, u8, coresPerPackage, "")\
456 FIELD(0, u8, enabledCores, "")\
457 FIELD(0, u8, logicalPerPackage, "")\
458 FIELD(0, ProcessorFlags, flags, "")\
459 FIELD(0, u16, family2, "")\
460 FIELD(F_DERIVED, bool, populated, "")
466#define CacheMode_ENUMERATORS\
467 ENUM(write_through, 0)\
472#define CacheLocation_ENUMERATORS\
478#define CacheConfigurationFlags_ENUMERATORS\
479 ENUM(socketed, 0x08)\
482#define CacheFlags_ENUMERATORS\
485 ENUM(non_burst, 0x04)\
487 ENUM(pipeline_burst, 0x10)\
488 ENUM(synchronous, 0x20)\
489 ENUM(asynchronous, 0x40)
491#define CacheType_ENUMERATORS\
494 ENUM(instruction, 3)\
498#define CacheAssociativity_ENUMERATORS\
501 ENUM(direct_mapped, 3)\
515 FIELD(0, const char*, designation, "")\
516 FIELD(0, CacheConfigurationFlags, configuration, "")\
517 FIELD(F_INTERNAL, u16, maxSize16, "")\
518 FIELD(F_INTERNAL, u16, installedSize16, "")\
519 FIELD(0, CacheFlags, supportedFlags, "")\
520 FIELD(0, CacheFlags, currentFlags, "")\
521 FIELD(0, u8, speed, " ns")\
522 FIELD(0, ECC, ecc, "")\
523 FIELD(0, CacheType, type, "")\
524 FIELD(0, CacheAssociativity, m_Associativity, "")\
525 FIELD(F_DERIVED, size_t, level, "")
\
526 FIELD(F_DERIVED, CacheLocation, location, "")\
527 FIELD(F_DERIVED, CacheMode, mode, "")\
528 FIELD(F_DERIVED, Size<u64>, maxSize, "")\
529 FIELD(F_DERIVED, Size<u64>, installedSize, "")
535#define PortConnectorType_ENUMERATORS\
539 ENUM(mini_centronics, 2)\
540 ENUM(proprietary, 3)\
542 ENUM(db25_pin_female, 5)\
543 ENUM(db15_pin_male, 6)\
544 ENUM(db15_pin_female, 7)\
545 ENUM(db9_pin_male, 8)\
546 ENUM(db9_pin_female, 9)\
555 ENUM(access_bus_usb, 18)\
556 ENUM(pc_ssa_scsi, 19)\
558 ENUM(din8_female, 21)\
559 ENUM(on_board_ide, 22)\
560 ENUM(on_board_floppy, 23)\
561 ENUM(dual_inline_9, 24)\
562 ENUM(dual_inline_25, 25)\
563 ENUM(dual_inline_50, 26)\
564 ENUM(dual_inline_68, 27)\
565 ENUM(on_board_sound_input_from_cd, 28)\
566 ENUM(mini_centronics_14, 29)\
567 ENUM(mini_centronics_26, 30)\
568 ENUM(headphones, 31)\
570 ENUM(pc_firewire, 33)\
573 ENUM(pc_98_hireso, 161)\
575 ENUM(pc_98_note, 163)\
576 ENUM(pc_98_full, 164)
578#define PortType_ENUMERATORS\
581 ENUM(parallel_xt_at, 1)\
582 ENUM(parallel_ps2, 2)\
583 ENUM(parallel_ecp, 3)\
584 ENUM(parallel_epp, 4)\
585 ENUM(parallel_ecepp, 5)\
586 ENUM(serial_xt_at, 6)\
587 ENUM(serial_16450, 7)\
588 ENUM(serial_16550, 8)\
589 ENUM(serial_16550a, 9)\
600 ENUM(pcmcia_iii, 20)\
602 ENUM(access_bus, 22)\
606 ENUM(pc_98_hireso, 26)\
614 ENUM(_8251_compatible, 160)\
615 ENUM(_8251_fifo_compatible, 161)
617#define PortConnector_FIELDS\
618 FIELD(0, const char*, internalDesignator, "")\
619 FIELD(0, PortConnectorType, internalConnectorType, "")\
620 FIELD(0, const char*, externalDesignator, "")\
621 FIELD(0, PortConnectorType, externalConnectorType, "")\
622 FIELD(0, PortType, portType, "")
628#define SystemSlotType_ENUMERATORS\
637 ENUM(proprietary, 9)\
639 ENUM(memory_card, 11)\
648 ENUM(pc_98_c20, 160)\
649 ENUM(pc_98_c24, 161)\
651 ENUM(pc_98_local_bus, 163)\
652 ENUM(pc_98_card, 164)\
664 ENUM(pcie2_x16, 176)\
672#define SystemSlotBusWidth_ENUMERATORS\
688#define SystemSlotUsage_ENUMERATORS\
694#define SystemSlotLength_ENUMERATORS\
700#define SystemSlotFlags1_ENUMERATORS\
705 ENUM(pc_card_16, 0x10)\
706 ENUM(pc_cardbus, 0x20)\
707 ENUM(pc_zoom_video, 0x40)\
708 ENUM(pc_modem_ring_resume, 0x80)
710#define SystemSlotFlags2_ENUMERATORS\
715#define SystemSlot_FIELDS\
716 FIELD(0, const char*, designation, "")\
717 FIELD(0, SystemSlotType, type, "")\
718 FIELD(0, SystemSlotBusWidth, busWidth, "")\
719 FIELD(0, SystemSlotUsage, usage, "")\
720 FIELD(0, SystemSlotLength, length, "")\
721 FIELD(0, u16, id, "")\
722 FIELD(0, SystemSlotFlags1, flags1, "")\
723 FIELD(0, SystemSlotFlags2, flags2, "")\
724 FIELD(0, u16, segmentGroupNumber, "")\
725 FIELD(0, u8, busNumber, "")\
726 FIELD(F_INTERNAL, u8, functionAndDeviceNumber, "")\
727 FIELD(F_DERIVED, u8, deviceNumber, "")\
728 FIELD(F_DERIVED, u8, functionNumber, "")
734#define OnBoardDeviceType_ENUMERATORS\
738 ENUM(scsi_controller, 4)\
742 ENUM(pata_controller, 8)\
743 ENUM(sata_controller, 9)\
744 ENUM(sas_controller, 10)
746#define OnBoardDevices_FIELDS\
747 FIELD(0, OnBoardDeviceType, type, "")\
748 FIELD(0, const char*, description, "")\
749 FIELD(F_DERIVED, bool, enabled, "")\
756#define MemoryArrayLocation_ENUMERATORS\
759 ENUM(motherboard, 3)\
764 ENUM(pcmcia_addon, 8)\
765 ENUM(proprietary_addon, 9)\
767 ENUM(pc_98_c20, 160)\
768 ENUM(pc_98_c24, 161)\
770 ENUM(pc_98_local_bus, 163)
772#define MemoryArrayUse_ENUMERATORS\
781#define MemoryArray_FIELDS\
782 FIELD(0, MemoryArrayLocation, location, "")\
783 FIELD(0, MemoryArrayUse, use, "")\
784 FIELD(0, ECC, ecc, "")\
785 FIELD(F_INTERNAL, u32, maxCapacity32, "")\
786 FIELD(0, Handle, hError, "")\
787 FIELD(0, u16, numDevices, "")\
788 FIELD(0, Size<u64>, maxCapacity, "")
794#define MemoryDeviceFormFactor_ENUMERATORS\
802 ENUM(proprietary_card, 8)\
805 ENUM(row_of_chips, 11)\
811#define MemoryDeviceType_ENUMERATORS\
831 ENUM(DDR2_FBDIMM, 20)\
835#define MemoryDeviceTypeFlags_ENUMERATORS\
837 ENUM(unknown, 0x0004)\
838 ENUM(fast_paged, 0x0008)\
839 ENUM(static_column, 0x0010)\
840 ENUM(pseudo_static, 0x0020)\
841 ENUM(rambus, 0x0040)\
842 ENUM(synchronous, 0x0080)\
845 ENUM(window_dram, 0x0400)\
846 ENUM(cache_dram, 0x0800)\
847 ENUM(non_volatile, 0x1000)\
848 ENUM(buffered, 0x2000)\
849 ENUM(unbuffered, 0x4000)
851#define MemoryDevice_FIELDS\
852 FIELD(0, Handle, hMemoryArray, "")\
853 FIELD(0, Handle, hError, "")\
854 FIELD(0, u16, totalWidth, " bits")\
855 FIELD(0, u16, dataWidth, " bits")\
856 FIELD(F_INTERNAL, u16, size16, "")\
857 FIELD(0, MemoryDeviceFormFactor, formFactor, "")\
858 FIELD(0, u8, deviceSet, "")\
859 FIELD(0, const char*, locator, "")\
860 FIELD(0, const char*, bank, "")\
861 FIELD(0, MemoryDeviceType, type, "")\
862 FIELD(0, MemoryDeviceTypeFlags, typeFlags, "")\
863 FIELD(0, u16, speed, " MHz")\
864 FIELD(0, const char*, manufacturer, "")\
865 FIELD(0, const char*, serialNumber, "")\
866 FIELD(0, const char*, assetTag, "")\
867 FIELD(0, const char*, partNumber, "")\
868 FIELD(F_INTERNAL, u8, attributes, "")\
869 FIELD(F_INTERNAL, u32, size32, "")\
870 FIELD(0, u16, configuredSpeed, " MHz")\
871 FIELD(F_DERIVED, Size<u64>, size, "")\
872 FIELD(F_DERIVED, u8, rank, "")\
878#define MemoryArrayMappedAddress_FIELDS\
879 FIELD(F_INTERNAL, u32, startAddress32, "")\
880 FIELD(F_INTERNAL, u32, endAddress32, "")\
881 FIELD(0, Handle, hMemoryArray, "")\
882 FIELD(0, u8, partitionWidth, "")\
883 FIELD(F_HEX, u64, startAddress, "")\
884 FIELD(F_HEX, u64, endAddress, "")
890#define MemoryDeviceMappedAddress_FIELDS\
891 FIELD(F_INTERNAL, u32, startAddress32, "")\
892 FIELD(F_INTERNAL, u32, endAddress32, "")\
893 FIELD(0, Handle, hMemoryDevice, "")\
894 FIELD(0, Handle, hMemoryArrayMappedAddress, "")\
895 FIELD(0, u8, partitionRowPosition, "")\
896 FIELD(0, u8, interleavePosition, "")\
897 FIELD(0, u8, interleavedDataDepth, "")\
898 FIELD(F_HEX, u64, startAddress, "")\
899 FIELD(F_HEX, u64, endAddress, "")
905#define PortableBatteryChemistry_ENUMERATORS\
909 ENUM(nickel_cadmium, 4)\
910 ENUM(nickel_metal_hydride, 5)\
911 ENUM(lithium_ion, 6)\
913 ENUM(lithium_polymer, 8)
915#define PortableBattery_FIELDS\
916 FIELD(0, const char*, location, "")\
917 FIELD(0, const char*, manufacturer, "")\
918 FIELD(0, const char*, date, "")\
919 FIELD(0, const char*, serialNumber, "")\
920 FIELD(0, const char*, deviceName, "")\
921 FIELD(0, PortableBatteryChemistry, chemistry, "")\
922 FIELD(0, u16, capacity, " mWh")\
923 FIELD(0, u16, voltage, " mV")\
924 FIELD(0, const char*, sbdsVersion, "")\
925 FIELD(0, u8, maxError, "%")\
926 FIELD(0, u16, sbdsSerialNumber, "")\
927 FIELD(0, u16, sbdsDate, "")\
928 FIELD(0, const char*, sbdsChemistry, "")\
929 FIELD(0, u8, capacityMultiplier, "")\
930 FIELD(0, u32, oemSpecific, "")
936#define VoltageProbeLocation_ENUMERATORS\
941 ENUM(peripheral_bay, 5)\
942 ENUM(system_management_module, 6)\
943 ENUM(motherboard, 7)\
944 ENUM(memory_module, 8)\
945 ENUM(processor_module, 9)\
946 ENUM(power_unit, 10)\
947 ENUM(add_in_card, 11)
949#define VoltageProbe_FIELDS\
950 FIELD(0, const char*, description, "")\
951 FIELD(F_INTERNAL, u8, locationAndStatus, "")\
952 FIELD(0, i16, maxValue, " mV")\
953 FIELD(0, i16, minValue, " mV")\
954 FIELD(0, i16, resolution, " x 0.1 mV")\
955 FIELD(0, i16, tolerance, " mV")\
956 FIELD(0, i16, accuracy, " x 0.01%")\
957 FIELD(0, u32, oemDefined, "")\
958 FIELD(0, i16, nominalValue, " mv")\
959 FIELD(F_DERIVED, VoltageProbeLocation, location, "")\
960 FIELD(F_DERIVED, State, status, "")
966#define CoolingDeviceType_ENUMERATORS\
970 ENUM(centrifugal_blower, 4)\
972 ENUM(cabinet_fan, 6)\
973 ENUM(power_supply_fan, 7)\
975 ENUM(integrated_refrigeration, 9)\
976 ENUM(active_cooling, 16)\
977 ENUM(passive_cooling, 17)
979#define CoolingDevice_FIELDS\
980 FIELD(0, Handle, hTemperatureProbe, "")\
981 FIELD(F_INTERNAL, u8, typeAndStatus, "")\
982 FIELD(0, u8, group, "")\
983 FIELD(0, u32, oemDefined, "")\
984 FIELD(0, u16, nominalSpeed, " rpm")\
985 FIELD(0, const char*, description, "")\
986 FIELD(F_DERIVED, CoolingDeviceType, type, "")\
987 FIELD(F_DERIVED, State, status, "")
993#define TemperatureProbeLocation_ENUMERATORS\
998 ENUM(peripheral_bay, 5)\
999 ENUM(system_management_module, 6)\
1000 ENUM(motherboard, 7)\
1001 ENUM(memory_module, 8)\
1002 ENUM(processor_module, 9)\
1003 ENUM(power_unit, 10)\
1004 ENUM(add_in_card, 11)\
1005 ENUM(front_panel_board, 12)\
1006 ENUM(back_panel_board, 13)\
1007 ENUM(power_system_board, 14)\
1008 ENUM(drive_backplane, 15)
1010#define TemperatureProbe_FIELDS\
1011 FIELD(0, const char*, description, "")\
1012 FIELD(F_INTERNAL, u8, locationAndStatus, "")\
1013 FIELD(0, i16, maxValue, " dDegC")\
1014 FIELD(0, i16, minValue, " dDegC")\
1015 FIELD(0, i16, resolution, " mDegC")\
1016 FIELD(0, i16, tolerance, " dDegC")\
1017 FIELD(0, i16, accuracy, " x 0.01%")\
1018 FIELD(0, u32, oemDefined, "")\
1019 FIELD(0, i16, nominalValue, " dDegC")\
1020 FIELD(F_DERIVED, TemperatureProbeLocation, location, "")\
1021 FIELD(F_DERIVED, State, status, "")
1027#define SystemBootStatus_ENUMERATORS\
1029 ENUM(no_bootable_media, 1)\
1030 ENUM(os_load_failed, 2)\
1031 ENUM(hardware_failure_firmware, 3)\
1032 ENUM(hardware_failure_os, 4)\
1033 ENUM(user_requested_boot, 5)\
1034 ENUM(security_violation, 6)\
1035 ENUM(previously_requested_image, 7)\
1036 ENUM(watchdog_expired, 8)
1038#define SystemBoot_FIELDS\
1039 FIELD(F_INTERNAL, u32, reserved32, "")\
1040 FIELD(F_INTERNAL, u16, reserved16, "")\
1041 FIELD(0, SystemBootStatus, status, "")\
1047#define ManagementDeviceType_ENUMERATORS\
1060 ENUM(HT82H791, 0xD)\
1062#define ManagementDeviceAddressType_ENUMERATORS\
1069#define ManagementDevice_FIELDS\
1070 FIELD(0, const char*, description, "")\
1071 FIELD(0, ManagementDeviceType, type, "")\
1072 FIELD(0, u32, address, "")\
1073 FIELD(0, ManagementDeviceAddressType, addressType, "")
1079#define ManagementDeviceComponent_FIELDS\
1080 FIELD(0, const char*, description, "")\
1081 FIELD(0, Handle, hDevice, "")\
1082 FIELD(0, Handle, hComponent, "")\
1083 FIELD(0, Handle, hThreshold, "")
1089#define ManagementDeviceThreshold_FIELDS\
1090 FIELD(0, i16, nonCriticalLo, "")\
1091 FIELD(0, i16, nonCriticalHi, "")\
1092 FIELD(0, i16, criticalLo, "")\
1093 FIELD(0, i16, criticalHi, "")\
1094 FIELD(0, i16, nonrecoverableLo, "")\
1095 FIELD(0, i16, nonrecoverableHi, "")
1101#define SystemPowerSupplyCharacteristics_ENUMERATORS\
1102 ENUM(hot_replaceable, 1)\
1106#define SystemPowerSupplyType_ENUMERATORS\
1116#define SystemPowerSupplyInputSwitching_ENUMERATORS\
1120 ENUM(auto_switch, 4)\
1121 ENUM(wide_range, 5)\
1124#define SystemPowerSupply_FIELDS\
1125 FIELD(0, u8, group, "")\
1126 FIELD(0, const char*, location, "")\
1127 FIELD(0, const char*, deviceName, "")\
1128 FIELD(0, const char*, manufacturer, "")\
1129 FIELD(0, const char*, serialNumber, "")\
1130 FIELD(0, const char*, assetTag, "")\
1131 FIELD(0, const char*, partNumber, "")\
1132 FIELD(0, const char*, revisionLevel, "")\
1133 FIELD(0, i16, maxPower, " mW")\
1134 FIELD(0, SystemPowerSupplyCharacteristics, characteristics, "")\
1135 FIELD(0, Handle, hVoltageProbe, "")\
1136 FIELD(0, Handle, hCoolingDevice, "")\
1137 FIELD(0, Handle, hCurrentProbe, "")\
1138 FIELD(F_DERIVED, SystemPowerSupplyType, type, "")\
1139 FIELD(F_DERIVED, State, status, "")\
1140 FIELD(F_DERIVED, SystemPowerSupplyInputSwitching, inputSwitching, "")\
1146#define OnboardDevices2_FIELDS\
1147 FIELD(0, const char*, referenceDesignation, "")\
1148 FIELD(0, OnBoardDeviceType, type, "")\
1149 FIELD(0, u8, instance, "")\
1150 FIELD(0, u16, groupNumber, "")\
1151 FIELD(0, u8, busNumber, "")\
1152 FIELD(F_INTERNAL, u8, functionAndDeviceNumber, "")\
1153 FIELD(F_DERIVED, bool, enabled, "")\
1154 FIELD(F_DERIVED, u8, deviceNumber, "")\
1155 FIELD(F_DERIVED, u8, functionNumber, "")\
1168#define ENUM(enumerator, value) enumerator = value,
1170#define ENUMERATION(name, type)\
1175 name(): value((Enum)0) {}\
1176 name(size_t num): value((Enum)num) {}\
1178 enum Enum { name##_ENUMERATORS sentinel } value;\
1180 operator size_t() const { return value; }\
1187#define FIELD(flags, type, name, units) type name;
1188#define STRUCTURE(name, id)\
1204#define STRUCTURE(name, id) name* name##_;
Definition: smbios.cpp:44
const Structures * GetStructures()
Definition: smbios.cpp:691
std::string StringizeStructures(const Structures *structures)
Definition: smbios.cpp:713
FieldFlags
Definition: smbios.h:125
@ F_HEX
Definition: smbios.h:134
@ F_INTERNAL
Definition: smbios.h:131
@ F_DERIVED
Definition: smbios.h:127
#define T(string_literal)
Definition: secure_crt.cpp:77
#define ENUMERATIONS
Definition: smbios.h:36
#define STRUCTURES
Definition: smbios.h:86
u16 value
Definition: smbios.h:156
Handle()
Definition: smbios.h:154
Handle(u16 value)
Definition: smbios.h:155
T value
Definition: smbios.h:147
Size()
Definition: smbios.h:145
Size(T value)
Definition: smbios.h:146
Definition: smbios.h:1203
uint8_t u8
Definition: types.h:37
uint16_t u16
Definition: types.h:38