1 /** @file 2 Build a table, each item is (key, info) pair. 3 and give a interface of query a string out of a table. 4 5 Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR> 6 This program and the accompanying materials 7 are licensed and made available under the terms and conditions of the BSD License 8 which accompanies this distribution. The full text of the license may be found at 9 http://opensource.org/licenses/bsd-license.php 10 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 14 **/ 15 16 #ifndef _SMBIOS_QUERY_TABLE_H_ 17 #define _SMBIOS_QUERY_TABLE_H_ 18 19 #define QUERY_TABLE_UNFOUND 0xFF 20 21 typedef struct TABLE_ITEM { 22 UINT16 Key; 23 CHAR16 *Info; 24 } TABLE_ITEM; 25 26 // 27 // Print info by option 28 // 29 #define PRINT_INFO_OPTION(Value, Option) \ 30 do { \ 31 if (Option == SHOW_NONE) { \ 32 return ; \ 33 } \ 34 if (Option < SHOW_DETAIL) { \ 35 Print (L"0x%x\n", Value); \ 36 return ; \ 37 } \ 38 } while (0); 39 40 /** 41 Given a table and a Key, return the responding info. 42 43 Notes: 44 Table[Index].Key is change from UINT8 to UINT16, 45 in order to deal with "0xaa - 0xbb". 46 47 For example: 48 DisplaySELVariableDataFormatTypes(UINT8 Type, UINT8 Option) 49 has a item: 50 "0x07-0x7F, Unused" 51 Now define Key = 0x7F07, that is to say: High = 0x7F, Low = 0x07. 52 Then all the Key Value between Low and High gets the same string 53 L"Unused". 54 55 @param[in] Table The begin address of table. 56 @param[in] Number The number of table items. 57 @param[in] Key The query Key. 58 @param[in, out] Info Input as empty buffer; output as data buffer. 59 @param[in] InfoLen The max number of characters for Info. 60 61 @return the found Key and Info is valid. 62 @retval QUERY_TABLE_UNFOUND and Info should be NULL. 63 **/ 64 UINT8 65 QueryTable ( 66 IN TABLE_ITEM *Table, 67 IN UINTN Number, 68 IN UINT8 Key, 69 IN OUT CHAR16 *Info, 70 IN UINTN InfoLen 71 ); 72 73 /** 74 Display the structure type information. 75 76 @param[in] Key The key of the structure. 77 @param[in] Option The optional information. 78 **/ 79 VOID 80 DisplayStructureTypeInfo ( 81 IN UINT8 Key, 82 IN UINT8 Option 83 ); 84 85 /** 86 Display System Information (Type 1) Type. 87 88 @param[in] Type The key of the structure. 89 @param[in] Option The optional information. 90 **/ 91 VOID 92 DisplaySystemWakeupType ( 93 IN UINT8 Type, 94 IN UINT8 Option 95 ); 96 97 /** 98 Display Base Board (Type 2) Feature Flags. 99 100 @param[in] FeatureFlags The key of the structure. 101 @param[in] Option The optional information. 102 **/ 103 VOID 104 DisplayBaseBoardFeatureFlags ( 105 IN UINT8 FeatureFlags, 106 IN UINT8 Option 107 ); 108 109 /** 110 Display Base Board (Type 2) Board Type. 111 112 @param[in] Type The key of the structure. 113 @param[in] Option The optional information. 114 **/ 115 VOID 116 DisplayBaseBoardBoardType( 117 IN UINT8 Type, 118 IN UINT8 Option 119 ); 120 121 /** 122 Display System Enclosure (Type 3) Enclosure Type. 123 124 @param[in] Type The key of the structure. 125 @param[in] Option The optional information. 126 **/ 127 VOID 128 DisplaySystemEnclosureType ( 129 IN UINT8 Type, 130 IN UINT8 Option 131 ); 132 133 /** 134 Display System Enclosure (Type 3) Enclosure Status. 135 136 @param[in] Status The key of the structure. 137 @param[in] Option The optional information. 138 **/ 139 VOID 140 DisplaySystemEnclosureStatus ( 141 IN UINT8 Status, 142 IN UINT8 Option 143 ); 144 145 /** 146 Display System Enclosure (Type 3) Security Status. 147 148 @param[in] Status The key of the structure. 149 @param[in] Option The optional information. 150 **/ 151 VOID 152 DisplaySESecurityStatus ( 153 IN UINT8 Status, 154 IN UINT8 Option 155 ) 156 ; 157 158 /** 159 Display Processor Information (Type 4) Type. 160 161 @param[in] Type The key of the structure. 162 @param[in] Option The optional information. 163 **/ 164 VOID 165 DisplayProcessorType ( 166 IN UINT8 Type, 167 IN UINT8 Option 168 ); 169 170 /** 171 Display Processor Information (Type 4) Upgrade. 172 173 @param[in] Upgrade The key of the structure. 174 @param[in] Option The optional information. 175 **/ 176 VOID 177 DisplayProcessorUpgrade ( 178 IN UINT8 Upgrade, 179 IN UINT8 Option 180 ); 181 182 /** 183 Display Processor Information (Type 4) Characteristics. 184 185 @param[in] Type The key of the structure. 186 @param[in] Option The optional information. 187 **/ 188 VOID 189 DisplayProcessorCharacteristics ( 190 IN UINT16 Type, 191 IN UINT8 Option 192 ); 193 194 /** 195 Display Memory Controller Information (Type 5) method. 196 197 @param[in] Method The key of the structure. 198 @param[in] Option The optional information. 199 **/ 200 VOID 201 DisplayMcErrorDetectMethod ( 202 IN UINT8 Method, 203 IN UINT8 Option 204 ); 205 206 /** 207 Display Memory Controller Information (Type 5) Capability. 208 209 @param[in] Capability The key of the structure. 210 @param[in] Option The optional information. 211 **/ 212 VOID 213 DisplayMcErrorCorrectCapability ( 214 IN UINT8 Capability, 215 IN UINT8 Option 216 ); 217 218 /** 219 Display Memory Controller Information (Type 5) Support. 220 221 @param[in] Support The key of the structure. 222 @param[in] Option The optional information. 223 **/ 224 VOID 225 DisplayMcInterleaveSupport ( 226 IN UINT8 Support, 227 IN UINT8 Option 228 ); 229 230 /** 231 Display Memory Controller Information (Type 5) speeds. 232 233 @param[in] Speed The key of the structure. 234 @param[in] Option The optional information. 235 **/ 236 VOID 237 DisplayMcMemorySpeeds ( 238 IN UINT16 Speed, 239 IN UINT8 Option 240 ); 241 242 /** 243 Display Memory Controller Information (Type 5) voltage. 244 245 @param[in] Voltage The key of the structure. 246 @param[in] Option The optional information. 247 **/ 248 VOID 249 DisplayMemoryModuleVoltage ( 250 IN UINT8 Voltage, 251 IN UINT8 Option 252 ); 253 254 /** 255 Display Memory Module Information (Type 6) type. 256 257 @param[in] Type The key of the structure. 258 @param[in] Option The optional information. 259 **/ 260 VOID 261 DisplayMmMemoryType ( 262 IN UINT16 Type, 263 IN UINT8 Option 264 ); 265 266 /** 267 Display Memory Module Information (Type 6) status. 268 269 @param[in] Status The key of the structure. 270 @param[in] Option The optional information. 271 **/ 272 VOID 273 DisplayMmErrorStatus ( 274 IN UINT8 Status, 275 IN UINT8 Option 276 ); 277 278 /** 279 Display Cache Information (Type 7) SRAM Type. 280 281 @param[in] Type The key of the structure. 282 @param[in] Option The optional information. 283 **/ 284 VOID 285 DisplayCacheSRAMType ( 286 IN UINT16 Type, 287 IN UINT8 Option 288 ); 289 290 /** 291 Display Cache Information (Type 7) correcting Type. 292 293 @param[in] Type The key of the structure. 294 @param[in] Option The optional information. 295 **/ 296 VOID 297 DisplayCacheErrCorrectingType ( 298 IN UINT8 Type, 299 IN UINT8 Option 300 ); 301 302 /** 303 Display Cache Information (Type 7) Type. 304 305 @param[in] Type The key of the structure. 306 @param[in] Option The optional information. 307 **/ 308 VOID 309 DisplayCacheSystemCacheType ( 310 IN UINT8 Type, 311 IN UINT8 Option 312 ); 313 314 /** 315 Display Cache Information (Type 7) Associativity. 316 317 @param[in] Associativity The key of the structure. 318 @param[in] Option The optional information. 319 **/ 320 VOID 321 DisplayCacheAssociativity ( 322 IN UINT8 Associativity, 323 IN UINT8 Option 324 ); 325 326 /** 327 Display Port Connector Information (Type 8) type. 328 329 @param[in] Type The key of the structure. 330 @param[in] Option The optional information. 331 **/ 332 VOID 333 DisplayPortConnectorType ( 334 IN UINT8 Type, 335 IN UINT8 Option 336 ); 337 338 /** 339 Display Port Connector Information (Type 8) port type. 340 341 @param[in] Type The key of the structure. 342 @param[in] Option The optional information. 343 **/ 344 VOID 345 DisplayPortType ( 346 IN UINT8 Type, 347 IN UINT8 Option 348 ); 349 350 /** 351 Display System Slots (Type 9) slot type. 352 353 @param[in] Type The key of the structure. 354 @param[in] Option The optional information. 355 **/ 356 VOID 357 DisplaySystemSlotType ( 358 IN UINT8 Type, 359 IN UINT8 Option 360 ); 361 362 /** 363 Display System Slots (Type 9) data bus width. 364 365 @param[in] Width The key of the structure. 366 @param[in] Option The optional information. 367 **/ 368 VOID 369 DisplaySystemSlotDataBusWidth ( 370 IN UINT8 Width, 371 IN UINT8 Option 372 ); 373 374 /** 375 Display System Slots (Type 9) usage information. 376 377 @param[in] Usage The key of the structure. 378 @param[in] Option The optional information. 379 **/ 380 VOID 381 DisplaySystemSlotCurrentUsage ( 382 IN UINT8 Usage, 383 IN UINT8 Option 384 ); 385 386 /** 387 Display System Slots (Type 9) slot length. 388 389 @param[in] Length The key of the structure. 390 @param[in] Option The optional information. 391 **/ 392 VOID 393 DisplaySystemSlotLength ( 394 IN UINT8 Length, 395 IN UINT8 Option 396 ); 397 398 /** 399 Display System Slots (Type 9) characteristics. 400 401 @param[in] Chara1 The key of the structure. 402 @param[in] Option The optional information. 403 **/ 404 VOID 405 DisplaySlotCharacteristics1 ( 406 IN UINT8 Chara1, 407 IN UINT8 Option 408 ); 409 410 /** 411 Display System Slots (Type 9) characteristics. 412 413 @param[in] Chara2 The key of the structure. 414 @param[in] Option The optional information. 415 **/ 416 VOID 417 DisplaySlotCharacteristics2 ( 418 IN UINT8 Chara2, 419 IN UINT8 Option 420 ); 421 422 /** 423 Display On Board Devices Information (Type 10) types. 424 425 @param[in] Type The key of the structure. 426 @param[in] Option The optional information. 427 **/ 428 VOID 429 DisplayOnboardDeviceTypes ( 430 IN UINT8 Type, 431 IN UINT8 Option 432 ); 433 434 /** 435 Display System Event Log (Type 15) types. 436 437 @param[in] Type The key of the structure. 438 @param[in] Option The optional information. 439 **/ 440 VOID 441 DisplaySELTypes ( 442 IN UINT8 Type, 443 IN UINT8 Option 444 ); 445 446 /** 447 Display System Event Log (Type 15) format type. 448 449 @param[in] Type The key of the structure. 450 @param[in] Option The optional information. 451 **/ 452 VOID 453 DisplaySELVarDataFormatType ( 454 IN UINT8 Type, 455 IN UINT8 Option 456 ); 457 458 /** 459 Display System Event Log (Type 15) dw1. 460 461 @param[in] Key The key of the structure. 462 @param[in] Option The optional information. 463 **/ 464 VOID 465 DisplayPostResultsBitmapDw1 ( 466 IN UINT32 Key, 467 IN UINT8 Option 468 ); 469 470 /** 471 Display System Event Log (Type 15) dw2. 472 473 @param[in] Key The key of the structure. 474 @param[in] Option The optional information. 475 **/ 476 VOID 477 DisplayPostResultsBitmapDw2 ( 478 IN UINT32 Key, 479 IN UINT8 Option 480 ); 481 482 /** 483 Display System Event Log (Type 15) type. 484 485 @param[in] SMType The key of the structure. 486 @param[in] Option The optional information. 487 **/ 488 VOID 489 DisplaySELSysManagementTypes ( 490 IN UINT32 SMType, 491 IN UINT8 Option 492 ); 493 494 /** 495 Display Physical Memory Array (Type 16) Location. 496 497 @param[in] Location The key of the structure. 498 @param[in] Option The optional information. 499 **/ 500 VOID 501 DisplayPMALocation ( 502 IN UINT8 Location, 503 IN UINT8 Option 504 ); 505 506 /** 507 Display Physical Memory Array (Type 16) Use. 508 509 @param[in] Use The key of the structure. 510 @param[in] Option The optional information. 511 **/ 512 VOID 513 DisplayPMAUse ( 514 IN UINT8 Use, 515 IN UINT8 Option 516 ); 517 518 /** 519 Display Physical Memory Array (Type 16) Types. 520 521 @param[in] Type The key of the structure. 522 @param[in] Option The optional information. 523 **/ 524 VOID 525 DisplayPMAErrorCorrectionTypes ( 526 IN UINT8 Type, 527 IN UINT8 Option 528 ); 529 530 /** 531 Display Memory Device (Type 17) form factor. 532 533 @param[in] FormFactor The key of the structure. 534 @param[in] Option The optional information. 535 **/ 536 VOID 537 DisplayMemoryDeviceFormFactor ( 538 IN UINT8 FormFactor, 539 IN UINT8 Option 540 ); 541 542 /** 543 Display Memory Device (Type 17) type. 544 545 @param[in] Type The key of the structure. 546 @param[in] Option The optional information. 547 **/ 548 VOID 549 DisplayMemoryDeviceType ( 550 IN UINT8 Type, 551 IN UINT8 Option 552 ); 553 554 /** 555 Display Memory Device (Type 17) details. 556 557 @param[in] Para The key of the structure. 558 @param[in] Option The optional information. 559 **/ 560 VOID 561 DisplayMemoryDeviceTypeDetail ( 562 IN UINT16 Para, 563 IN UINT8 Option 564 ); 565 566 /** 567 Display 32-bit Memory Error Information (Type 18) type. 568 569 @param[in] ErrorType The key of the structure. 570 @param[in] Option The optional information. 571 **/ 572 VOID 573 DisplayMemoryErrorType ( 574 IN UINT8 ErrorType, 575 IN UINT8 Option 576 ); 577 578 /** 579 Display 32-bit Memory Error Information (Type 18) error granularity. 580 581 @param[in] Granularity The key of the structure. 582 @param[in] Option The optional information. 583 **/ 584 VOID 585 DisplayMemoryErrorGranularity ( 586 IN UINT8 Granularity, 587 IN UINT8 Option 588 ); 589 590 /** 591 Display 32-bit Memory Error Information (Type 18) error information. 592 593 @param[in] Operation The key of the structure. 594 @param[in] Option The optional information. 595 **/ 596 VOID 597 DisplayMemoryErrorOperation ( 598 IN UINT8 Operation, 599 IN UINT8 Option 600 ); 601 602 /** 603 Display Built-in Pointing Device (Type 21) type information. 604 605 @param[in] Type The key of the structure. 606 @param[in] Option The optional information. 607 **/ 608 VOID 609 DisplayPointingDeviceType ( 610 IN UINT8 Type, 611 IN UINT8 Option 612 ); 613 614 /** 615 Display Built-in Pointing Device (Type 21) information. 616 617 @param[in] Interface The key of the structure. 618 @param[in] Option The optional information. 619 **/ 620 VOID 621 DisplayPointingDeviceInterface ( 622 IN UINT8 Interface, 623 IN UINT8 Option 624 ); 625 626 /** 627 Display Portable Battery (Type 22) information. 628 629 @param[in] Key The key of the structure. 630 @param[in] Option The optional information. 631 **/ 632 VOID 633 DisplayPBDeviceChemistry ( 634 IN UINT8 Key, 635 IN UINT8 Option 636 ); 637 638 /** 639 Display Voltage Probe (Type 26) location information. 640 641 @param[in] Key The key of the structure. 642 @param[in] Option The optional information. 643 **/ 644 VOID 645 DisplayVPLocation ( 646 IN UINT8 Key, 647 IN UINT8 Option 648 ); 649 650 /** 651 Display Voltage Probe (Type 26) status ype information. 652 653 @param[in] Key The key of the structure. 654 @param[in] Option The optional information. 655 **/ 656 VOID 657 DisplayVPStatus ( 658 IN UINT8 Key, 659 IN UINT8 Option 660 ); 661 662 /** 663 Display Cooling (Type 27) status information. 664 665 @param[in] Key The key of the structure. 666 @param[in] Option The optional information. 667 **/ 668 VOID 669 DisplayCoolingDeviceStatus ( 670 IN UINT8 Key, 671 IN UINT8 Option 672 ); 673 674 /** 675 Display Cooling (Type 27) type information. 676 677 @param[in] Key The key of the structure. 678 @param[in] Option The optional information. 679 **/ 680 VOID 681 DisplayCoolingDeviceType ( 682 IN UINT8 Key, 683 IN UINT8 Option 684 ); 685 686 /** 687 Display Temperature Probe (Type 28) status information. 688 689 @param[in] Key The key of the structure. 690 @param[in] Option The optional information. 691 **/ 692 VOID 693 DisplayTemperatureProbeStatus ( 694 IN UINT8 Key, 695 IN UINT8 Option 696 ); 697 698 /** 699 Display Temperature Probe (Type 28) location information. 700 701 @param[in] Key The key of the structure. 702 @param[in] Option The optional information. 703 **/ 704 VOID 705 DisplayTemperatureProbeLoc ( 706 IN UINT8 Key, 707 IN UINT8 Option 708 ); 709 710 /** 711 Display Electrical Current Probe (Type 29) status information. 712 713 @param[in] Key The key of the structure. 714 @param[in] Option The optional information. 715 **/ 716 VOID 717 DisplayECPStatus ( 718 IN UINT8 Key, 719 IN UINT8 Option 720 ); 721 722 /** 723 Display Electrical Current Probe (Type 29) location information. 724 725 @param[in] Key The key of the structure. 726 @param[in] Option The optional information. 727 **/ 728 VOID 729 DisplayECPLoc ( 730 IN UINT8 Key, 731 IN UINT8 Option 732 ); 733 734 /** 735 Display Management Device (Type 34) Type. 736 737 @param[in] Key The key of the structure. 738 @param[in] Option The optional information. 739 **/ 740 VOID 741 DisplayMDType ( 742 IN UINT8 Key, 743 IN UINT8 Option 744 ); 745 746 /** 747 Display Management Device (Type 34) Address Type. 748 749 @param[in] Key The key of the structure. 750 @param[in] Option The optional information. 751 **/ 752 VOID 753 DisplayMDAddressType ( 754 IN UINT8 Key, 755 IN UINT8 Option 756 ); 757 758 /** 759 Display Memory Channel (Type 37) information. 760 761 @param[in] Key The key of the structure. 762 @param[in] Option The optional information. 763 **/ 764 VOID 765 DisplayMemoryChannelType ( 766 IN UINT8 Key, 767 IN UINT8 Option 768 ); 769 770 /** 771 Display IPMI Device Information (Type 38) information. 772 773 @param[in] Key The key of the structure. 774 @param[in] Option The optional information. 775 **/ 776 VOID 777 DisplayIPMIDIBMCInterfaceType ( 778 IN UINT8 Key, 779 IN UINT8 Option 780 ); 781 782 #endif 783