+ def PrintPcdDefault(self, File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue):\r
+ if not DscMatch and DscDefaultValue != None:\r
+ Value = DscDefaultValue.strip()\r
+ IsByteArray, ArrayList = ByteArrayForamt(Value)\r
+ if IsByteArray:\r
+ FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'DSC DEFAULT', "{"))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'DSC DEFAULT', Value))\r
+ if not InfMatch and InfDefaultValue != None:\r
+ Value = InfDefaultValue.strip()\r
+ IsByteArray, ArrayList = ByteArrayForamt(Value)\r
+ if IsByteArray:\r
+ FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'INF DEFAULT', "{"))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'INF DEFAULT', Value))\r
+\r
+ if not DecMatch and DecDefaultValue != None:\r
+ Value = DecDefaultValue.strip()\r
+ IsByteArray, ArrayList = ByteArrayForamt(Value)\r
+ if IsByteArray:\r
+ FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'DEC DEFAULT', "{"))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'DEC DEFAULT', Value))\r
+ if IsStructure:\r
+ self.PrintStructureInfo(File, Pcd.DefaultValues)\r
+\r
+ def PrintPcdValue(self, File, Pcd, PcdTokenCName, TypeName, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue, Flag = ' '):\r
+ if not Pcd.SkuInfoList:\r
+ Value = Pcd.DefaultValue\r
+ IsByteArray, ArrayList = ByteArrayForamt(Value)\r
+ if IsByteArray:\r
+ FileWrite(File, ' %-*s : %6s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', '{'))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %-*s : %6s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', Value))\r
+ if IsStructure:\r
+ OverrideValues = Pcd.SkuOverrideValues\r
+ if OverrideValues:\r
+ Keys = OverrideValues.keys()\r
+ Data = OverrideValues[Keys[0]]\r
+ Struct = Data.values()[0]\r
+ self.PrintStructureInfo(File, Struct)\r
+ self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
+ else:\r
+ FirstPrint = True\r
+ SkuList = sorted(Pcd.SkuInfoList.keys())\r
+ for Sku in SkuList:\r
+ SkuInfo = Pcd.SkuInfoList[Sku]\r
+ if TypeName in ('DYNHII', 'DEXHII'):\r
+ if SkuInfo.DefaultStoreDict:\r
+ DefaultStoreList = sorted(SkuInfo.DefaultStoreDict.keys())\r
+ for DefaultStore in DefaultStoreList:\r
+ Value = SkuInfo.DefaultStoreDict[DefaultStore]\r
+ IsByteArray, ArrayList = ByteArrayForamt(Value)\r
+ if FirstPrint:\r
+ FirstPrint = False\r
+ if IsByteArray:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', '(' + DefaultStore + ')', '{'))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', '(' + DefaultStore + ')', Value))\r
+ else:\r
+ if IsByteArray:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s %10s = %s' % (self.MaxLen, ' ', TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', '(' + DefaultStore + ')', '{'))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s %10s = %s' % (self.MaxLen, ' ', TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', '(' + DefaultStore + ')', Value))\r
+ FileWrite(File, '%*s: %s: %s' % (self.MaxLen + 4, SkuInfo.VariableGuid, SkuInfo.VariableName, SkuInfo.VariableOffset))\r
+ if IsStructure:\r
+ OverrideValues = Pcd.SkuOverrideValues[Sku]\r
+ Struct = OverrideValues[DefaultStore]\r
+ self.PrintStructureInfo(File, Struct)\r
+ self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
+ elif TypeName in ('DYNVPD', 'DEXVPD'):\r
+ Value = SkuInfo.DefaultValue\r
+ IsByteArray, ArrayList = ByteArrayForamt(Value)\r
+ if FirstPrint:\r
+ FirstPrint = False\r
+ if IsByteArray:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', "{"))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', Value))\r
+ else:\r
+ if IsByteArray:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s = %s' % (self.MaxLen, ' ' , TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', "{"))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s = %s' % (self.MaxLen, ' ' , TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', Value))\r
+ FileWrite(File, '%*s' % (self.MaxLen + 4, SkuInfo.VpdOffset))\r
+ if IsStructure:\r
+ OverrideValues = Pcd.SkuOverrideValues[Sku]\r
+ if OverrideValues:\r
+ Keys = OverrideValues.keys()\r
+ Struct = OverrideValues[Keys[0]]\r
+ self.PrintStructureInfo(File, Struct)\r
+ self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
+ else:\r
+ Value = SkuInfo.DefaultValue\r
+ IsByteArray, ArrayList = ByteArrayForamt(Value)\r
+ if FirstPrint:\r
+ FirstPrint = False\r
+ if IsByteArray:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', '{'))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s = %s' % (self.MaxLen, Flag + ' ' + PcdTokenCName, TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', Value))\r
+ else:\r
+ if IsByteArray:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s = %s' % (self.MaxLen, ' ', TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', '{'))\r
+ for Array in ArrayList:\r
+ FileWrite(File, '%s' % (Array))\r
+ else:\r
+ FileWrite(File, ' %-*s : %6s %10s %10s = %s' % (self.MaxLen, ' ', TypeName, '(' + Pcd.DatumType + ')', '(' + SkuInfo.SkuIdName + ')', Value))\r
+ if IsStructure:\r
+ OverrideValues = Pcd.SkuOverrideValues[Sku]\r
+ if OverrideValues:\r
+ Keys = OverrideValues.keys()\r
+ Struct = OverrideValues[Keys[0]]\r
+ self.PrintStructureInfo(File, Struct)\r
+ self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
+\r
+ def PrintStructureInfo(self, File, Struct):\r
+ NewInfo = collections.OrderedDict()\r
+ for Key, Value in Struct.items():\r
+ if Key not in NewInfo:\r
+ NewInfo[Key] = Value[0]\r
+ else:\r
+ del NewInfo[Key]\r
+ NewInfo[Key] = Value[0]\r
+ if NewInfo:\r
+ for item in NewInfo:\r
+ FileWrite(File, ' %-*s = %s' % (self.MaxLen + 4, '.' + item, NewInfo[item]))\r
+\r
+ def StrtoHex(self, value):\r
+ try:\r
+ value = hex(int(value))\r
+ return value\r
+ except:\r
+ if value.startswith("L\"") and value.endswith("\""):\r
+ valuelist = []\r
+ for ch in value[2:-1]:\r
+ valuelist.append(hex(ord(ch)))\r
+ valuelist.append('0x00')\r
+ return valuelist\r
+ elif value.startswith("\"") and value.endswith("\""):\r
+ return hex(ord(value[1:-1]))\r
+ elif value.startswith("{") and value.endswith("}"):\r
+ valuelist = []\r
+ if ',' not in value:\r
+ return value[1:-1]\r
+ for ch in value[1:-1].split(','):\r
+ ch = ch.strip()\r
+ if ch.startswith('0x') or ch.startswith('0X'):\r
+ valuelist.append(ch)\r
+ continue\r
+ try:\r
+ valuelist.append(hex(int(ch.strip())))\r
+ except:\r
+ pass\r
+ return valuelist\r
+ else:\r
+ return value\r