#\r
# @param offset integer value for VPD's offset in specific SKU.\r
#\r
- def Add(self, Vpd, Offset):\r
+ def Add(self, Vpd, skuname,Offset):\r
if (Vpd == None):\r
EdkLogger.error("VpdInfoFile", BuildToolError.ATTRIBUTE_UNKNOWN_ERROR, "Invalid VPD PCD entry.")\r
\r
#\r
# If there is no Vpd instance in dict, that imply this offset for a given SKU is a new one \r
#\r
- self._VpdArray[Vpd] = [Offset]\r
- else:\r
- #\r
- # If there is an offset for a specific SKU in dict, then append this offset for other sku to array.\r
- #\r
- self._VpdArray[Vpd].append(Offset)\r
+ self._VpdArray[Vpd] = {}\r
+\r
+ self._VpdArray[Vpd].update({skuname:Offset})\r
\r
\r
## Generate VPD PCD information into a text file\r
for PcdItem in GlobalData.MixedPcd:\r
if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName) in GlobalData.MixedPcd[PcdItem]:\r
PcdTokenCName = PcdItem[0]\r
- for Offset in self._VpdArray[Pcd]:\r
- PcdValue = str(Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[i]].DefaultValue).strip()\r
+ for skuname in self._VpdArray[Pcd]:\r
+ PcdValue = str(Pcd.SkuInfoList[skuname].DefaultValue).strip()\r
if PcdValue == "" :\r
PcdValue = Pcd.DefaultValue\r
\r
- Content += "%s.%s|%s|%s|%s|%s \n" % (Pcd.TokenSpaceGuidCName, PcdTokenCName, str(Pcd.SkuInfoList.keys()[i]),str(Offset).strip(), str(Pcd.MaxDatumSize).strip(),PcdValue)\r
+ Content += "%s.%s|%s|%s|%s|%s \n" % (Pcd.TokenSpaceGuidCName, PcdTokenCName, skuname,str(self._VpdArray[Pcd][skuname]).strip(), str(Pcd.MaxDatumSize).strip(),PcdValue)\r
i += 1\r
\r
return SaveFileOnChange(FilePath, Content, False)\r
VpdObjectTokenCName = PcdItem[0]\r
for sku in VpdObject.SkuInfoList.keys():\r
if VpdObject.TokenSpaceGuidCName == TokenSpaceName and VpdObjectTokenCName == PcdTokenName.strip() and sku == SkuId:\r
- if self._VpdArray[VpdObject][VpdObject.SkuInfoList.keys().index(sku)] == "*":\r
+ if self._VpdArray[VpdObject][sku] == "*":\r
if Offset == "*":\r
EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID, "The offset of %s has not been fixed up by third-party BPDG tool." % PcdName) \r
- self._VpdArray[VpdObject][VpdObject.SkuInfoList.keys().index(sku)] = Offset\r
+ self._VpdArray[VpdObject][sku] = Offset\r
Found = True\r
if not Found:\r
EdkLogger.error("BPDG", BuildToolError.PARSER_ERROR, "Can not find PCD defined in VPD guid file.")\r