def gen_major_header(self,tracer_dump): self.update_major_header(tracer_dump) major_header = Mem(2); self.avp_handle.write("\t// START OF Program & Data\n") tracer.total_size = tracer.major_header_size for key in tracer.MAJOR_HEADER: mem_addr = "%04x"%(tracer.MAJOR_HEADER[key]["position"]*4) if mem_addr in major_header.mem_lines: major_header.check_mem_line(mem_addr, tracer.MAJOR_HEADER[key]["offset"],tracer.MAJOR_HEADER[key]["size"],tracer.MAJOR_HEADER[key]["value"],tracer.MAJOR_HEADER[key]["DOC"]) else: major_header.add_mem_line(mem_addr, tracer.MAJOR_HEADER[key]["offset"],tracer.MAJOR_HEADER[key]["size"],tracer.MAJOR_HEADER[key]["value"],tracer.MAJOR_HEADER[key]["DOC"]) for key in sorted(major_header.mem_lines): self.avp_handle.write("\tmem\t0x00%s%s\t0x%s\n"%(self.__replay_addr_h,key,major_header.mem_lines[key]["value"])) del(major_header)
def gen_sub_headers(self,subhdr,replay_addr): sub_hdr = Mem(2); for key in subhdr: if eq(key,"hdr_size") or eq(key,"offset"): continue else: mem_addr = "%04x"%(subhdr[key]["position"]*4 + tracer.total_size) if mem_addr in sub_hdr.mem_lines: sub_hdr.check_mem_line(mem_addr,subhdr[key]["offset"],subhdr[key]["size"],subhdr[key]["value"],subhdr[key]["DOC"]) else: sub_hdr.add_mem_line(mem_addr,subhdr[key]["offset"],subhdr[key]["size"],subhdr[key]["value"],subhdr[key]["DOC"]) for key in sorted(sub_hdr.mem_lines): self.avp_handle.write("\tmem\t0x00%s%s\t0x%s\n"%(replay_addr,key,sub_hdr.mem_lines[key]["value"])) del(sub_hdr)
def gen_major_header_type2(self,tracer_dump,replay_addr): if not tracer_dump["occur"]: return self.update_major_header_type2(tracer_dump) major_header = Mem(2); self.avp_handle.write("\t// TRACER DUMP TYPE 2\n") tracer.total_size = tracer.major_header_size for key in tracer.MAJOR_HEADER_type2: mem_addr = "%04x"%(tracer.MAJOR_HEADER_type2[key]["position"]*4) if mem_addr in major_header.mem_lines: major_header.check_mem_line(mem_addr, tracer.MAJOR_HEADER_type2[key]["offset"],tracer.MAJOR_HEADER_type2[key]["size"],tracer.MAJOR_HEADER_type2[key]["value"],tracer.MAJOR_HEADER_type2[key]["DOC"]) else: major_header.add_mem_line(mem_addr, tracer.MAJOR_HEADER_type2[key]["offset"],tracer.MAJOR_HEADER_type2[key]["size"],tracer.MAJOR_HEADER_type2[key]["value"],tracer.MAJOR_HEADER_type2[key]["DOC"]) for key in sorted(major_header.mem_lines): self.avp_handle.write("\tmem\t0x00%s%s\t0x%s\n"%(replay_addr,key,major_header.mem_lines[key]["value"])) del(major_header)
def gen_prologs(self,prolog): avp_prolog = Mem(2); for key in prolog: if eq(key,"prolog_size") or eq(key,"offset"): continue else: mem_addr = "%04x"%(prolog[key]["position"]*4 + tracer.total_size) if mem_addr in avp_prolog.mem_lines: #prolog[key]["value"]= self.adjust_data(prolog[key]["size"],prolog[key]["value"]) avp_prolog.check_mem_line(mem_addr,prolog[key]["offset"],prolog[key]["size"],prolog[key]["value"],prolog[key]["DOC"]) else: avp_prolog.add_mem_line(mem_addr,prolog[key]["offset"],prolog[key]["size"],prolog[key]["value"],prolog[key]["DOC"]) for key in sorted(avp_prolog.mem_lines): self.avp_handle.write("\tmem\t0x00%s%s\t0x%s\n"%(self.__replay_addr_h,key,avp_prolog.mem_lines[key]["value"])) del(avp_prolog)