#!/usr/bin/env python3 # coding=utf-8 # ----------------------------------------------------------------------------------------- #Purpose:part of hupg build scripts #Copyright CompanyNameMagicTag 2018-2019.All rights reserved #Author: CompanyName #------------------------------------------------------------------------------------------ import os,codecs import struct #import shutil from io import BytesIO import sys # Manipulate ini files from pkt_cfg_parser import PktCfgParser #product_type=sys.argv[1] #out_dir=sys.argv[2] #in_dir=sys.argv[3] reserve_data = 0 commom_name = 'flash_partition_table.bin' pt_list = [] change_add_list = [] change_ctrl_list = [] BLOCK_SIZE = 0x1000 # Defining a partition class class Partition_Info(object): def __init__(self, name, addr, id, dir, size): self.name = name self.addr = int(addr/BLOCK_SIZE) self.id = id self.dir = dir self.size = int(size/BLOCK_SIZE) def get_uint_array(self): a = (self.addr &0x00000fff)|((self.size&0x00000fff)<<12)|((self.dir&0x1)<<31) data=[a] return data class Pt_ver_Info(object): def __init__(self, boot_support, ver, bitmap): self.boot_support = boot_support self.ver = ver self.bitmap = bitmap def get_uint_array(self): a = (self.boot_support&0x1)|((self.ver&0x1f)<<11)|((self.bitmap&0xffff)<<16) data = [a] return data class Pt_reserve_Info(object): def __init__(self, res1,res2): self.res1 = res1 self.res2 = res2 def get_uint_array(self): data = [self.res1,self.res2] return data class Change_detail_Info(object): def __init__(self,name,order,id,tb): self.name = name self.order = order self.id = id self.tb = tb def get_uchar_array(self): a = (self.id &0x1f)|((self.tb&0x3)<<6) data=[a] return data class Change_ctrl_Info(object): def __init__(self,ver,temp_addr,total_num): self.data = ver #self.data.extend(ver) self.temp_addr = int(temp_addr/BLOCK_SIZE) self.total_num = total_num def get_uint_array(self): a = (self.temp_addr &0x00000fff)|((self.total_num&0x1f)<<12)|(0x1<<31) self.data.append(a) return self.data # Partition table modification information # Parsing the ini file # File / directory operations # Serialization (not recommended) # Common built-in module struct # List / dictionary operations # Class, inheritance # Direct list def make_struct2(output, product_type='com'): with open(output, 'ab') as f_out: f_temp = BytesIO() for u32_val in change_ctrl_list: bin_temp = struct.pack('