Home | History | Annotate | Download | only in SmbiosView
      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