#include <cstring>
#include "smbios/ISmbios.h"
#include "smbios/IToken.h"
#include "smbios/ISmi.h"
#include "smbios/SystemInfo.h"
#include "smbios/IMemory.h"
#include "smbios/SmbiosDefs.h"
#include "ExceptionImpl.h"
#include "TokenLowLevel.h"
#include "DellMagic.h"
#include "smbios/version.h"
#include "smbios/message.h"
Go to the source code of this file.
Classes | |
struct | DellGetServiceTagFunctions |
struct | DellSetServiceTagFunctions |
struct | DellAssetTagFunctions |
struct | DellSetAssetTagFunctions |
struct | DellSystemNameFunctions |
struct | DellBiosVersionFunctions |
Defines | |
#define | LIBSMBIOS_SOURCE |
#define | DCOUT(line) do {} while(0) |
#define | DCERR(line) do {} while(0) |
Functions | |
static void | stripString (char *str) |
static unsigned char | dell_decode_digit (char tagval) |
static void | dell_decode_service_tag (char *tag, int len) |
static unsigned char | dell_encode_digit (char ch) |
static void | dell_encode_service_tag (char *tag, size_t len) |
const char * | SMBIOSGetLibraryVersionString () |
Return a string representing the version of the libsmbios library. | |
void | SMBIOSFreeMemory (const char *ptr) |
Free memory allocated by libsmbios. | |
static char * | getTagFromSMI (u16 select) |
static void | setTagUsingSMI (const char *newTag, u16 select) |
static char * | getStringFromTable (unsigned int structure, unsigned int stringNumber) |
static char * | getServiceTagFromSysInfo () |
static char * | getServiceTagFromSysEncl () |
char * | getServiceTagFromCMOSToken () |
char * | getServiceTagFromSMI () |
const char * | SMBIOSGetServiceTag () |
Returns the 5 or 7 character Dell Service Tag. | |
void | setServiceTagUsingCMOSToken (const char *newTag, size_t len) |
void | setServiceTagUsingSMI (const char *newTag, size_t size) |
int | SMBIOSSetServiceTag (const char *password, const char *serviceTag, size_t len) |
Set the 5 or 7 character Dell Service Tag. | |
static char * | getAssetTagFromSysEncl () |
char * | getAssetTagFromToken () |
char * | getAssetTagFromSMI () |
const char * | SMBIOSGetAssetTag () |
Returns the 10 character Dell Asset Tag. | |
void | setAssetTagUsingCMOSToken (const char *newTag, size_t len) |
void | setAssetTagUsingSMI (const char *newTag, size_t size) |
int | SMBIOSSetAssetTag (const char *password, const char *assetTag, size_t len) |
Set the Dell Asset Tag. | |
static char * | getSystemNameFromSysInfo () |
const char * | SMBIOSGetSystemName () |
Return a buffer containing the System Name. | |
static char * | getBiosVersionFromOneByteStructForDiamond () |
static char * | getBiosVersionFromSmbios () |
const char * | SMBIOSGetBiosVersion () |
Return a buffer containing the BIOS version string. | |
const char * | SMBIOSGetVendorName () |
int | SMBIOSHasNvramStateBytes () |
int | SMBIOSGetNvramStateBytes (int user) |
void | SMBIOSSetNvramStateBytes (int value, int user) |
static bool | getUpOffsetAndFlag (up_info *up) |
static int | upBootHelper (bool set=false, bool value=false) |
int | SMBIOSHasBootToUp () |
int | SMBIOSGetBootToUp () |
void | SMBIOSSetBootToUp (int state) |
int | SMBIOSGetSmiPasswordCoding () |
Variables | |
smbios::Exception < smbios::IException > | SysInfoException |
static std::string | biosPassword = "" |
#define DCERR | ( | line | ) | do {} while(0) |
Definition at line 48 of file System.cpp.
#define DCOUT | ( | line | ) | do {} while(0) |
Definition at line 47 of file System.cpp.
#define LIBSMBIOS_SOURCE |
Definition at line 21 of file System.cpp.
static unsigned char dell_decode_digit | ( | char | tagval | ) | [static] |
static void dell_decode_service_tag | ( | char * | tag, | |
int | len | |||
) | [static] |
Definition at line 107 of file System.cpp.
References dell_decode_digit(), and SVC_TAG_LEN_MAX.
Referenced by getServiceTagFromCMOSToken().
static unsigned char dell_encode_digit | ( | char | ch | ) | [static] |
static void dell_encode_service_tag | ( | char * | tag, | |
size_t | len | |||
) | [static] |
Definition at line 153 of file System.cpp.
References dell_encode_digit(), SVC_TAG_CMOS_LEN_MAX, and SVC_TAG_LEN_MAX.
Referenced by setServiceTagUsingCMOSToken().
char* getAssetTagFromSMI | ( | ) |
Definition at line 552 of file System.cpp.
References getTagFromSMI().
static char* getAssetTagFromSysEncl | ( | ) | [static] |
Definition at line 498 of file System.cpp.
References getStringFromTable(), smbios::System_Enclosure_or_Chassis, and System_Enclosure_or_Chassis_Asset_Offset.
char* getAssetTagFromToken | ( | ) |
Definition at line 505 of file System.cpp.
References ASSET_TAG_CMOS_LEN_MAX, ASSET_TAG_LEN_MAX, Cmos_Asset_Token, CmosRWFactory::getFactory(), TokenTableFactory::getFactory(), CmosRWFactory::getSingleton(), TokenTableFactory::getSingleton(), and ICmosRW::readByte().
Referenced by testPlatform::testAssetTag().
static char* getBiosVersionFromOneByteStructForDiamond | ( | ) | [static] |
Definition at line 737 of file System.cpp.
References DELL_SYSTEM_STRING, DELL_SYSTEM_STRING_LEN, DELL_SYSTEM_STRING_LOC_DIAMOND_1, DELL_SYSTEM_STRING_LOC_DIAMOND_2, IMemory::fillBuffer(), IMemory::getByte(), MemoryFactory::getFactory(), ID_BYTE_LOC_DIAMOND_1, ID_BYTE_LOC_DIAMOND_2, and SYSTEM_ID_DIAMOND.
static char* getBiosVersionFromSmbios | ( | ) | [static] |
Definition at line 770 of file System.cpp.
References smbios::BIOS_Information, BIOS_Information_Version_Offset, and getStringFromTable().
char* getServiceTagFromCMOSToken | ( | ) |
Definition at line 283 of file System.cpp.
References Cmos_Service_Token, DCOUT, dell_decode_service_tag(), CmosRWFactory::getFactory(), TokenTableFactory::getFactory(), CmosRWFactory::getSingleton(), TokenTableFactory::getSingleton(), ICmosRW::readByte(), SVC_TAG_CMOS_LEN_MAX, and SVC_TAG_LEN_MAX.
Referenced by testPlatform::testServiceTagWriting().
char* getServiceTagFromSMI | ( | ) |
Definition at line 338 of file System.cpp.
References DCOUT, and getTagFromSMI().
static char* getServiceTagFromSysEncl | ( | ) | [static] |
Definition at line 276 of file System.cpp.
References DCOUT, getStringFromTable(), smbios::System_Enclosure_or_Chassis, and System_Enclosure_or_Chassis_Service_Offset.
static char* getServiceTagFromSysInfo | ( | ) | [static] |
Definition at line 270 of file System.cpp.
References DCOUT, getStringFromTable(), smbios::System_Information, and System_Information_Serial_Number_Offset.
static char* getStringFromTable | ( | unsigned int | structure, | |
unsigned int | stringNumber | |||
) | [static] |
Definition at line 240 of file System.cpp.
References SmbiosFactory::getFactory(), SmbiosFactory::getSingleton(), smbios::getString_FromItem(), and stripString().
Referenced by getAssetTagFromSysEncl(), getBiosVersionFromSmbios(), getServiceTagFromSysEncl(), getServiceTagFromSysInfo(), getSystemNameFromSysInfo(), and SMBIOSGetVendorName().
static char* getSystemNameFromSysInfo | ( | ) | [static] |
Definition at line 693 of file System.cpp.
References getStringFromTable(), smbios::System_Information, and System_Information_Product_Name_Offset.
static char* getTagFromSMI | ( | u16 | select | ) | [static] |
Definition at line 215 of file System.cpp.
References smi::doSimpleCallingInterfaceSmi().
Referenced by getAssetTagFromSMI(), and getServiceTagFromSMI().
static bool getUpOffsetAndFlag | ( | up_info * | up | ) | [static] |
Definition at line 964 of file System.cpp.
References up_info::anchor, IMemory::fillBuffer(), and MemoryFactory::getFactory().
Referenced by upBootHelper().
void setAssetTagUsingCMOSToken | ( | const char * | newTag, | |
size_t | len | |||
) |
Definition at line 599 of file System.cpp.
References ASSET_TAG_CMOS_LEN_MAX, Cmos_Asset_Token, CmosRWFactory::getFactory(), TokenTableFactory::getFactory(), CmosRWFactory::getSingleton(), TokenTableFactory::getSingleton(), ICmosRW::readByte(), and ICmosRW::writeByte().
void setAssetTagUsingSMI | ( | const char * | newTag, | |
size_t | size | |||
) |
Definition at line 644 of file System.cpp.
References setTagUsingSMI().
void setServiceTagUsingCMOSToken | ( | const char * | newTag, | |
size_t | len | |||
) |
Definition at line 393 of file System.cpp.
References Cmos_Service_Token, dell_encode_service_tag(), CmosRWFactory::getFactory(), TokenTableFactory::getFactory(), CmosRWFactory::getSingleton(), TokenTableFactory::getSingleton(), ICmosRW::readByte(), SVC_TAG_CMOS_LEN_MAX, SVC_TAG_LEN_MAX, and ICmosRW::writeByte().
void setServiceTagUsingSMI | ( | const char * | newTag, | |
size_t | size | |||
) |
Definition at line 451 of file System.cpp.
References setTagUsingSMI().
static void setTagUsingSMI | ( | const char * | newTag, | |
u16 | select | |||
) | [static] |
Definition at line 232 of file System.cpp.
References biosPassword, smi::doSimpleCallingInterfaceSmi(), and smi::getAuthenticationKey().
Referenced by setAssetTagUsingSMI(), and setServiceTagUsingSMI().
void SMBIOSFreeMemory | ( | const char * | ) |
Free memory allocated by libsmbios.
This function must be called to free memory for any function that allocates memory on behalf of its caller.
Definition at line 209 of file System.cpp.
Referenced by safeConvertToString(), and testPlatform::testSystemInfo().
const char* SMBIOSGetAssetTag | ( | ) |
Returns the 10 character Dell Asset Tag.
Allocates a buffer on behalf of the caller. Caller must use the freeMemory() function call to free this memory when finished.
Definition at line 570 of file System.cpp.
References _, Exception::setMessageString(), and stripString().
Referenced by testPlatform::testAssetTag(), and testPlatform::testSystemInfo().
const char* SMBIOSGetBiosVersion | ( | ) |
Return a buffer containing the BIOS version string.
Allocates a buffer on behalf of the caller. Caller must use the freeMemory() function call to free this memory when finished.
Definition at line 785 of file System.cpp.
References _, Exception::setMessageString(), and stripString().
Referenced by testPlatform::testBiosVersion(), and testPlatform::testSystemInfo().
int SMBIOSGetBootToUp | ( | ) |
Definition at line 1079 of file System.cpp.
References upBootHelper().
Referenced by testPlatform::testUpBoot().
const char* SMBIOSGetLibraryVersionString | ( | ) |
Return a string representing the version of the libsmbios library.
Returns the current version of the SMBIOS library as a string
Definition at line 203 of file System.cpp.
References LIBSMBIOS_RELEASE_VERSION.
Referenced by testStandalone::testLibraryVersion().
int SMBIOSGetNvramStateBytes | ( | int | user | ) |
Definition at line 872 of file System.cpp.
References _, TokenTableFactory::getFactory(), TokenTableFactory::getSingleton(), NvramByte1_Token, NvramByte2_Token, and Exception::setMessageString().
Referenced by testPlatform::testStateBytes().
const char* SMBIOSGetServiceTag | ( | ) |
Returns the 5 or 7 character Dell Service Tag.
Allocates a buffer on behalf of the caller. Caller must use the freeMemory() function call to free this memory when finished.
Definition at line 358 of file System.cpp.
References _, DCOUT, Exception::setMessageString(), and stripString().
Referenced by testPlatform::testServiceTag(), testPlatform::testServiceTagWriting(), and testPlatform::testSystemInfo().
int SMBIOSGetSmiPasswordCoding | ( | ) |
returns password coding used in SMI calls 0 == unknown 1 == scan code 2 == ascii
Definition at line 1093 of file System.cpp.
References smi::getPasswordFormat().
const char* SMBIOSGetSystemName | ( | ) |
Return a buffer containing the System Name.
Allocates a buffer on behalf of the caller. Caller must use the freeMemory() function call to free this memory when finished.
Definition at line 708 of file System.cpp.
References _, Exception::setMessageString(), and stripString().
Referenced by testPlatform::testSystemInfo(), and testPlatform::testSystemName().
const char* SMBIOSGetVendorName | ( | ) |
Allocates a buffer on behalf of the caller. Caller must use the freeMemory() function call to free this memory when finished.
Definition at line 814 of file System.cpp.
References _, getStringFromTable(), Exception::setMessageString(), stripString(), smbios::System_Information, and System_Information_Manufacturer_Offset.
Referenced by testPlatform::testSystemInfo().
int SMBIOSHasBootToUp | ( | ) |
Definition at line 1074 of file System.cpp.
References upBootHelper().
Referenced by testPlatform::testUpBoot().
int SMBIOSHasNvramStateBytes | ( | ) |
Definition at line 836 of file System.cpp.
References _, TokenTableFactory::getFactory(), TokenTableFactory::getSingleton(), NvramByte1_Token, NvramByte2_Token, and Exception::setMessageString().
Referenced by testPlatform::testStateBytes().
int SMBIOSSetAssetTag | ( | const char * | password, | |
const char * | newTag, | |||
size_t | len | |||
) |
Set the Dell Asset Tag.
The Dell Asset Tag is displayed in BIOS and is also contained in SMBIOS. This tag can generally be up to 10 chars long. There are SMI and CMOS methods to set this tag. At present, only CMOS access method is implemented in libsmbios. This works across all Dell hardware that the author is aware of.
User of the system can use this field to store any user-defined data. Dell BIOS/support/etc does not utilize this value.
Definition at line 662 of file System.cpp.
References _, biosPassword, and Exception::setMessageString().
Referenced by testPlatform::testAssetTag().
void SMBIOSSetBootToUp | ( | int | state | ) |
Definition at line 1086 of file System.cpp.
References upBootHelper().
Referenced by testPlatform::testUpBoot().
void SMBIOSSetNvramStateBytes | ( | int | value, | |
int | user | |||
) |
Definition at line 925 of file System.cpp.
References _, TokenTableFactory::getFactory(), TokenTableFactory::getSingleton(), NvramByte1_Token, NvramByte2_Token, and Exception::setMessageString().
Referenced by testPlatform::testStateBytes().
int SMBIOSSetServiceTag | ( | const char * | password, | |
const char * | newTag, | |||
size_t | len | |||
) |
Set the 5 or 7 character Dell Service Tag.
The Dell Asset Tag is displayed in BIOS and is also contained in SMBIOS. This tag can generally be up to 7 chars long. There are SMI and CMOS methods to set this tag. At present, only CMOS access method is implemented in libsmbios. This works across all Dell hardware that the author is aware of.
WARNING! The Dell Service Tag is very closely tied into the Dell support system. This tag should not be changed except under direction from Dell support.
Definition at line 468 of file System.cpp.
References _, biosPassword, and Exception::setMessageString().
Referenced by testPlatform::testServiceTagWriting().
static void stripString | ( | char * | str | ) | [static] |
Definition at line 59 of file System.cpp.
Referenced by getStringFromTable(), SMBIOSGetAssetTag(), SMBIOSGetBiosVersion(), SMBIOSGetServiceTag(), SMBIOSGetSystemName(), and SMBIOSGetVendorName().
static int upBootHelper | ( | bool | set = false , |
|
bool | value = false | |||
) | [static] |
Definition at line 1005 of file System.cpp.
References _, indexed_io_access_structure::dataPort, up_info::flag, CmosRWFactory::getFactory(), TokenTableFactory::getFactory(), CmosRWFactory::getSingleton(), TokenTableFactory::getSingleton(), getUpOffsetAndFlag(), indexed_io_access_structure::indexPort, NvramByte2_Token, up_info::offset, ICmosRW::readByte(), Exception::setMessageString(), and ICmosRW::writeByte().
Referenced by SMBIOSGetBootToUp(), SMBIOSHasBootToUp(), and SMBIOSSetBootToUp().
std::string biosPassword = "" [static] |
Definition at line 57 of file System.cpp.
Referenced by setTagUsingSMI(), SMBIOSSetAssetTag(), and SMBIOSSetServiceTag().
Definition at line 23 of file SysInfoError.cpp.