-# Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
# which accompanies this distribution. The full text of the license may be found at\r
for item in sku_var_info_offset_list:\r
data_type = item.data_type\r
value_list = item.default_value.strip("{").strip("}").split(",")\r
- if data_type in ["BOOLEAN","UINT8","UINT16","UINT32","UINT64"]:\r
- if data_type == ["BOOLEAN","UINT8"]:\r
+ if data_type in DataType.TAB_PCD_NUMERIC_TYPES:\r
+ if data_type == ["BOOLEAN", DataType.TAB_UINT8]:\r
data_flag = "=B"\r
- elif data_type == "UINT16":\r
+ elif data_type == DataType.TAB_UINT16:\r
data_flag = "=H"\r
- elif data_type == "UINT32":\r
+ elif data_type == DataType.TAB_UINT32:\r
data_flag = "=L"\r
- elif data_type == "UINT64":\r
+ elif data_type == DataType.TAB_UINT64:\r
data_flag = "=Q"\r
data = value_list[0]\r
value_list = []\r
except:\r
EdkLogger.error("build", AUTOGEN_ERROR, "Variable offset conflict in PCDs: %s \n" % (" and ".join([item.pcdname for item in sku_var_info_offset_list])))\r
n = sku_var_info_offset_list[0]\r
- indexedvarinfo[key] = [var_info(n.pcdindex,n.pcdname,n.defaultstoragename,n.skuname,n.var_name, n.var_guid, "0x00",n.var_attribute,newvaluestr , newvaluestr , "VOID*")]\r
+ indexedvarinfo[key] = [var_info(n.pcdindex,n.pcdname,n.defaultstoragename,n.skuname,n.var_name, n.var_guid, "0x00",n.var_attribute,newvaluestr , newvaluestr , DataType.TAB_VOID)]\r
self.VarInfo = [item[0] for item in indexedvarinfo.values()]\r
\r
def assemble_variable(self, valuelist):\r
- ordered_value = [valuelist[k] for k in sorted(valuelist.keys())]\r
ordered_offset = sorted(valuelist.keys())\r
+ ordered_value = [valuelist[k] for k in ordered_offset]\r
var_value = []\r
num = 0\r
for offset in ordered_offset:\r
return var_value\r
def process_variable_data(self):\r
\r
- var_data = dict()\r
+ var_data = collections.defaultdict(collections.OrderedDict)\r
\r
indexedvarinfo = collections.OrderedDict()\r
for item in self.VarInfo:\r
default_data_buffer = ""\r
others_data_buffer = ""\r
tail = None\r
- default_sku_default = indexedvarinfo.get(index).get(("DEFAULT",DataType.TAB_DEFAULT_STORES_DEFAULT))\r
+ default_sku_default = indexedvarinfo.get(index).get((DataType.TAB_DEFAULT,DataType.TAB_DEFAULT_STORES_DEFAULT))\r
\r
- if default_sku_default.data_type not in ["UINT8","UINT16","UINT32","UINT64","BOOLEAN"]:\r
+ if default_sku_default.data_type not in DataType.TAB_PCD_NUMERIC_TYPES:\r
var_max_len = max([len(var_item.default_value.split(",")) for var_item in sku_var_info.values()])\r
if len(default_sku_default.default_value.split(",")) < var_max_len:\r
tail = ",".join([ "0x00" for i in range(var_max_len-len(default_sku_default.default_value.split(",")))])\r
for item in default_data_buffer:\r
default_data_array += unpack("B",item)\r
\r
- if ("DEFAULT",DataType.TAB_DEFAULT_STORES_DEFAULT) not in var_data:\r
- var_data[("DEFAULT",DataType.TAB_DEFAULT_STORES_DEFAULT)] = collections.OrderedDict()\r
- var_data[("DEFAULT",DataType.TAB_DEFAULT_STORES_DEFAULT)][index] = (default_data_buffer,sku_var_info[("DEFAULT",DataType.TAB_DEFAULT_STORES_DEFAULT)])\r
+ var_data[(DataType.TAB_DEFAULT,DataType.TAB_DEFAULT_STORES_DEFAULT)][index] = (default_data_buffer,sku_var_info[(DataType.TAB_DEFAULT,DataType.TAB_DEFAULT_STORES_DEFAULT)])\r
\r
for (skuid,defaultstoragename) in indexedvarinfo.get(index):\r
tail = None\r
- if (skuid,defaultstoragename) == ("DEFAULT",DataType.TAB_DEFAULT_STORES_DEFAULT):\r
+ if (skuid,defaultstoragename) == (DataType.TAB_DEFAULT,DataType.TAB_DEFAULT_STORES_DEFAULT):\r
continue\r
other_sku_other = indexedvarinfo.get(index).get((skuid,defaultstoragename))\r
\r
- if default_sku_default.data_type not in ["UINT8","UINT16","UINT32","UINT64","BOOLEAN"]:\r
+ if default_sku_default.data_type not in DataType.TAB_PCD_NUMERIC_TYPES:\r
if len(other_sku_other.default_value.split(",")) < var_max_len:\r
tail = ",".join([ "0x00" for i in range(var_max_len-len(other_sku_other.default_value.split(",")))])\r
\r
\r
data_delta = self.calculate_delta(default_data_array, others_data_array)\r
\r
- if (skuid,defaultstoragename) not in var_data:\r
- var_data[(skuid,defaultstoragename)] = collections.OrderedDict()\r
var_data[(skuid,defaultstoragename)][index] = (data_delta,sku_var_info[(skuid,defaultstoragename)])\r
return var_data\r
\r
if not var_data:\r
return []\r
\r
- pcds_default_data = var_data.get(("DEFAULT",DataType.TAB_DEFAULT_STORES_DEFAULT),{})\r
+ pcds_default_data = var_data.get((DataType.TAB_DEFAULT,DataType.TAB_DEFAULT_STORES_DEFAULT),{})\r
NvStoreDataBuffer = ""\r
var_data_offset = collections.OrderedDict()\r
offset = NvStorageHeaderSize\r
\r
data_delta_structure_buffer = ""\r
for skuname,defaultstore in var_data:\r
- if (skuname,defaultstore) == ("DEFAULT",DataType.TAB_DEFAULT_STORES_DEFAULT):\r
+ if (skuname,defaultstore) == (DataType.TAB_DEFAULT,DataType.TAB_DEFAULT_STORES_DEFAULT):\r
continue\r
pcds_sku_data = var_data.get((skuname,defaultstore))\r
delta_data_set = []\r
def PACK_VARIABLES_DATA(self, var_value,data_type, tail = None):\r
Buffer = ""\r
data_len = 0\r
- if data_type == "VOID*":\r
+ if data_type == DataType.TAB_VOID:\r
for value_char in var_value.strip("{").strip("}").split(","):\r
Buffer += pack("=B",int(value_char,16))\r
data_len += len(var_value.split(","))\r
elif data_type == "BOOLEAN":\r
Buffer += pack("=B",True) if var_value.upper() == "TRUE" else pack("=B",False)\r
data_len += 1\r
- elif data_type == "UINT8":\r
+ elif data_type == DataType.TAB_UINT8:\r
Buffer += pack("=B",GetIntegerValue(var_value))\r
data_len += 1\r
- elif data_type == "UINT16":\r
+ elif data_type == DataType.TAB_UINT16:\r
Buffer += pack("=H",GetIntegerValue(var_value))\r
data_len += 2\r
- elif data_type == "UINT32":\r
+ elif data_type == DataType.TAB_UINT32:\r
Buffer += pack("=L",GetIntegerValue(var_value))\r
data_len += 4\r
- elif data_type == "UINT64":\r
+ elif data_type == DataType.TAB_UINT64:\r
Buffer += pack("=Q",GetIntegerValue(var_value))\r
data_len += 8\r
\r