#\r
from StringIO import StringIO\r
from Common.Misc import *\r
-from Common.String import StringToArray\r
+from Common.StringUtils import StringToArray\r
from struct import pack\r
from ValidCheckingInfoObject import VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER\r
from ValidCheckingInfoObject import VAR_CHECK_PCD_VARIABLE_TAB\r
-from ValidCheckingInfoObject import VAR_VALID_OBJECT_FACTORY\r
+from ValidCheckingInfoObject import GetValidationObject\r
from Common.VariableAttributes import VariableAttributes\r
import copy\r
from struct import unpack\r
#endif\r
""")\r
\r
-## PackGuid\r
-#\r
-# Pack the GUID value in C structure format into data array\r
-#\r
-# @param GuidStructureValue: The GUID value in C structure format\r
-#\r
-# @retval Buffer: a data array contains the Guid\r
-#\r
-def PackGuid(GuidStructureValue):\r
- GuidString = GuidStructureStringToGuidString(GuidStructureValue)\r
- Guid = GuidString.split('-')\r
- Buffer = pack('=LHHBBBBBBBB', \r
- int(Guid[0], 16), \r
- int(Guid[1], 16), \r
- int(Guid[2], 16), \r
- int(Guid[3][-4:-2], 16), \r
- int(Guid[3][-2:], 16),\r
- int(Guid[4][-12:-10], 16),\r
- int(Guid[4][-10:-8], 16),\r
- int(Guid[4][-8:-6], 16),\r
- int(Guid[4][-6:-4], 16),\r
- int(Guid[4][-4:-2], 16),\r
- int(Guid[4][-2:], 16)\r
- )\r
- return Buffer\r
-\r
-def toHex(s):\r
- lst = []\r
- for ch in s:\r
- hv = hex(ord(ch)).replace('0x', ' ')\r
- if len(hv) == 1:\r
- hv = '0'+hv\r
- lst.append(hv)\r
- if lst:\r
- return reduce(lambda x,y:x+y, lst)\r
- else:\r
- return 'empty'\r
## DbItemList\r
#\r
# The class holds the Pcd database items. ItemSize if not zero should match the item datum type in the C structure. \r
#\r
class DbItemList:\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = []\r
self.ItemSize = ItemSize\r
- self.DataList = DataList\r
- self.RawDataList = RawDataList\r
+ self.DataList = DataList if DataList else []\r
+ self.RawDataList = RawDataList if RawDataList else []\r
self.ListSize = 0\r
\r
def GetInterOffset(self, Index):\r
for ItemIndex in xrange(Index):\r
Offset += len(self.RawDataList[ItemIndex])\r
else:\r
- for Datas in self.RawDataList:\r
- Offset = self.ItemSize * Index\r
+ Offset = self.ItemSize * Index\r
\r
return Offset\r
\r
return self.ListSize\r
\r
def PackData(self):\r
- if self.ItemSize == 8:\r
- PackStr = "=Q"\r
- elif self.ItemSize == 4:\r
- PackStr = "=L"\r
- elif self.ItemSize == 2:\r
- PackStr = "=H"\r
- elif self.ItemSize == 1:\r
- PackStr = "=B"\r
- elif self.ItemSize == 0:\r
- PackStr = "=B"\r
- elif self.ItemSize == 16:\r
- # pack Guid\r
- PackStr = ''\r
- else:\r
- # should not reach here\r
- assert(False)\r
+ ## PackGuid\r
+ #\r
+ # Pack the GUID value in C structure format into data array\r
+ #\r
+ # @param GuidStructureValue: The GUID value in C structure format\r
+ #\r
+ # @retval Buffer: a data array contains the Guid\r
+ #\r
+ def PackGuid(GuidStructureValue):\r
+ GuidString = GuidStructureStringToGuidString(GuidStructureValue)\r
+ return PackGUID(GuidString.split('-'))\r
+\r
+ PackStr = PACK_CODE_BY_SIZE[self.ItemSize]\r
\r
Buffer = ''\r
for Datas in self.RawDataList:\r
#\r
class DbExMapTblItemList (DbItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = []\r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def PackData(self):\r
Buffer = ''\r
PackStr = "=LHH"\r
#\r
class DbComItemList (DbItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = []\r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def GetInterOffset(self, Index):\r
Offset = 0\r
if self.ItemSize == 0:\r
return self.ListSize\r
\r
def PackData(self):\r
- if self.ItemSize == 8:\r
- PackStr = "=Q"\r
- elif self.ItemSize == 4:\r
- PackStr = "=L"\r
- elif self.ItemSize == 2:\r
- PackStr = "=H"\r
- elif self.ItemSize == 1:\r
- PackStr = "=B"\r
- elif self.ItemSize == 0:\r
- PackStr = "=B"\r
- else:\r
- assert(False)\r
+ PackStr = PACK_CODE_BY_SIZE[self.ItemSize]\r
\r
Buffer = ''\r
for DataList in self.RawDataList:\r
#\r
class DbVariableTableItemList (DbComItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = []\r
DbComItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def PackData(self):\r
PackStr = "=LLHHLHH"\r
Buffer = ''\r
\r
class DbStringHeadTableItemList(DbItemList):\r
def __init__(self,ItemSize,DataList=None,RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = [] \r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
\r
def GetInterOffset(self, Index):\r
#\r
class DbSkuHeadTableItemList (DbItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = [] \r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def PackData(self):\r
PackStr = "=LL"\r
Buffer = ''\r
#\r
class DbSizeTableItemList (DbItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = [] \r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def GetListSize(self):\r
length = 0\r
for Data in self.RawDataList:\r
# Construct the database buffer\r
Guid = "{0x3c7d193c, 0x682c, 0x4c14, 0xa6, 0x8f, 0x55, 0x2d, 0xea, 0x4f, 0x43, 0x7e}"\r
Guid = StringArrayToList(Guid)\r
- Buffer = pack('=LHHBBBBBBBB', \r
- Guid[0], \r
- Guid[1], \r
- Guid[2], \r
- Guid[3], \r
- Guid[4], \r
- Guid[5],\r
- Guid[6],\r
- Guid[7],\r
- Guid[8],\r
- Guid[9],\r
- Guid[10],\r
- )\r
+ Buffer = PackByteFormatGUID(Guid)\r
\r
b = pack("=L", DATABASE_VERSION)\r
Buffer += b\r
AutoGenC.Append(AdditionalAutoGenC.String)\r
\r
if Info.IsBinaryModule:\r
- DbFileName = os.path.join(Info.PlatformInfo.BuildDir, "FV", Phase + "PcdDataBase.raw")\r
+ DbFileName = os.path.join(Info.PlatformInfo.BuildDir, TAB_FV_DIRECTORY, Phase + "PcdDataBase.raw")\r
else:\r
DbFileName = os.path.join(Info.OutputDir, Phase + "PcdDataBase.raw")\r
DbFile = StringIO()\r
PcdDriverAutoGenData[(skuname,skuid)] = (AdditionalAutoGenH, AdditionalAutoGenC)\r
VarCheckTableData[(skuname,skuid)] = VarCheckTab\r
if Platform.Platform.VarCheckFlag:\r
- dest = os.path.join(Platform.BuildDir, 'FV')\r
+ dest = os.path.join(Platform.BuildDir, TAB_FV_DIRECTORY)\r
VarCheckTable = CreateVarCheckBin(VarCheckTableData)\r
VarCheckTable.dump(dest, Phase)\r
AdditionalAutoGenH, AdditionalAutoGenC = CreateAutoGen(PcdDriverAutoGenData)\r
TokenSpaceGuid = GuidStructureStringToGuidValueName(TokenSpaceGuidStructure)\r
if Pcd.Type in PCD_DYNAMIC_EX_TYPE_SET:\r
if TokenSpaceGuid not in GuidList:\r
- GuidList += [TokenSpaceGuid]\r
+ GuidList.append(TokenSpaceGuid)\r
Dict['GUID_STRUCTURE'].append(TokenSpaceGuidStructure)\r
NumberOfExTokens += 1\r
\r
Pcd.TokenTypeList = ['PCD_DATUM_TYPE_' + Pcd.DatumType]\r
\r
if len(Pcd.SkuInfoList) > 1:\r
-# Pcd.TokenTypeList += ['PCD_TYPE_SKU_ENABLED']\r
NumberOfSkuEnabledPcd += 1\r
\r
SkuIdIndex = 1 \r
if Platform.Platform.VarCheckFlag:\r
var_check_obj = VAR_CHECK_PCD_VARIABLE_TAB(VariableGuidStructure, StringToArray(Sku.VariableName))\r
try:\r
- var_check_obj.push_back(VAR_VALID_OBJECT_FACTORY.Get_valid_object(Pcd, Sku.VariableOffset))\r
+ var_check_obj.push_back(GetValidationObject(Pcd, Sku.VariableOffset))\r
VarAttr, _ = VariableAttributes.GetVarAttributes(Sku.VariableAttribute)\r
var_check_obj.SetAttributes(VarAttr)\r
var_check_obj.UpdateSize()\r
else:\r
EdkLogger.error("build", PCD_VALIDATION_INFO_ERROR,\r
"The PCD '%s.%s' Validation information defined in DEC file has incorrect format." % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName))\r
- Pcd.TokenTypeList += ['PCD_TYPE_HII']\r
+ Pcd.TokenTypeList.append('PCD_TYPE_HII')\r
Pcd.InitString = 'INIT'\r
# Store all variable names of one HII PCD under different SKU to stringTable\r
# and calculate the VariableHeadStringIndex\r
# store VariableGuid to GuidTable and get the VariableHeadGuidIndex\r
\r
if VariableGuid not in GuidList:\r
- GuidList += [VariableGuid]\r
+ GuidList.append(VariableGuid)\r
Dict['GUID_STRUCTURE'].append(VariableGuidStructure)\r
VariableHeadGuidIndex = GuidList.index(VariableGuid)\r
\r
VariableDbValueList.append([VariableHeadGuidIndex, VariableHeadStringIndex, Sku.VariableOffset, VariableOffset, VariableRefTable, Sku.VariableAttribute])\r
\r
elif Sku.VpdOffset != '':\r
- Pcd.TokenTypeList += ['PCD_TYPE_VPD']\r
+ Pcd.TokenTypeList.append('PCD_TYPE_VPD')\r
Pcd.InitString = 'INIT'\r
VpdHeadOffsetList.append(str(Sku.VpdOffset) + 'U')\r
VpdDbOffsetList.append(Sku.VpdOffset)\r
continue\r
\r
if Pcd.DatumType == TAB_VOID:\r
- Pcd.TokenTypeList += ['PCD_TYPE_STRING']\r
+ Pcd.TokenTypeList.append('PCD_TYPE_STRING')\r
Pcd.InitString = 'INIT'\r
if Sku.HiiDefaultValue != '' and Sku.DefaultValue == '':\r
Sku.DefaultValue = Sku.HiiDefaultValue\r
StringTableSize += (StringTabLen)\r
else:\r
if "PCD_TYPE_HII" not in Pcd.TokenTypeList:\r
- Pcd.TokenTypeList += ['PCD_TYPE_DATA']\r
+ Pcd.TokenTypeList.append('PCD_TYPE_DATA')\r
if Sku.DefaultValue == 'TRUE':\r
Pcd.InitString = 'INIT'\r
else:\r