if (Vpd is None):\r
EdkLogger.error("VpdInfoFile", BuildToolError.ATTRIBUTE_UNKNOWN_ERROR, "Invalid VPD PCD entry.")\r
\r
- if not (Offset >= 0 or Offset == TAB_STAR):\r
+ if not (Offset >= "0" or Offset == TAB_STAR):\r
EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, "Invalid offset parameter: %s." % Offset)\r
\r
if Vpd.DatumType == TAB_VOID:\r
- if Vpd.MaxDatumSize <= 0:\r
+ if Vpd.MaxDatumSize <= "0":\r
EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID,\r
"Invalid max datum size for VPD PCD %s.%s" % (Vpd.TokenSpaceGuidCName, Vpd.TokenCName))\r
elif Vpd.DatumType in TAB_PCD_NUMERIC_TYPES:\r
if not Vpd.MaxDatumSize:\r
Vpd.MaxDatumSize = MAX_SIZE_TYPE[Vpd.DatumType]\r
else:\r
- if Vpd.MaxDatumSize <= 0:\r
+ if Vpd.MaxDatumSize <= "0":\r
EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID,\r
"Invalid max datum size for VPD PCD %s.%s" % (Vpd.TokenSpaceGuidCName, Vpd.TokenCName))\r
\r
"Invalid parameter FilePath: %s." % FilePath)\r
\r
Content = FILE_COMMENT_TEMPLATE\r
- Pcds = sorted(self._VpdArray.keys())\r
+ Pcds = sorted(self._VpdArray.keys(), key=lambda x: x.TokenCName)\r
for Pcd in Pcds:\r
i = 0\r
PcdTokenCName = Pcd.TokenCName\r
Found = False\r
\r
if (TokenSpaceName, PcdTokenName) not in self._VpdInfo:\r
- self._VpdInfo[(TokenSpaceName, PcdTokenName)] = []\r
- self._VpdInfo[(TokenSpaceName, PcdTokenName)].append((SkuId, Offset, Value))\r
+ self._VpdInfo[(TokenSpaceName, PcdTokenName)] = {}\r
+ self._VpdInfo[(TokenSpaceName, PcdTokenName)][(SkuId, Offset)] = Value\r
for VpdObject in self._VpdArray:\r
VpdObjectTokenCName = VpdObject.TokenCName\r
for PcdItem in GlobalData.MixedPcd:\r
return self._VpdArray[vpd]\r
def GetVpdInfo(self, arg):\r
(PcdTokenName, TokenSpaceName) = arg\r
- return self._VpdInfo.get((TokenSpaceName, PcdTokenName))\r
+ return [(sku,offset,value) for (sku,offset),value in self._VpdInfo.get((TokenSpaceName, PcdTokenName)).items()]\r
\r
## Call external BPDG tool to process VPD file\r
#\r
except Exception as X:\r
EdkLogger.error("BPDG", BuildToolError.COMMAND_FAILURE, ExtraData=str(X))\r
(out, error) = PopenObject.communicate()\r
- print(out)\r
+ print(out.decode(encoding='utf-8', errors='ignore'))\r
while PopenObject.returncode is None :\r
PopenObject.wait()\r
\r