diff -r 000000000000 -r dfb7c4ff071f commsfwtools/commstools/svg/xti2bt.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsfwtools/commstools/svg/xti2bt.pl Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,145 @@ +#!/usr/bin/perl +# Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# Tool to convert xti ascii logs with freeway logging into btrace files +# suitable for input to utracedecoder +# + +my $input = $ARGV[0]; +if (length($input) == 0) +{ + print "Usage: xti2bt.pl "; + exit(-1); +} + +my $output = $ARGV[1]; +if (length($output) == 0) +{ + print "Outputting to btrace.bin\n"; + $output = "btrace.bin"; +} + +open INPUT, "< $input" or die "Couldn't open $input"; +open BTRACE , "> $output" or die "Couldn't open $output"; +binmode BTRACE; + +sub writePrintf +{ + $trace = shift; + $trace =~ s/¿/\t/g; + $len = length($trace); + if ($len > 104) + { + $trace = substr $trace, 0, 104; + $len = length($trace); + } + $alignment = $len % 4; + for ($i = 0; $i < (4-$alignment); $i++) + { + $trace = $trace."X"; + } + $len = length($trace) + 8; + + $header = pack("CCCC", $len, 0, 0, 0); + print BTRACE $header; + print BTRACE "0000"; + print BTRACE $trace; +} + +while () +{ + if (/IConsole/) + { + next; + } elsif (/xti1:SYMBIAN_TRACE; channel:0xE0; \[([0-9a-f,]*)/) + { + @bytes = split(/,/, $1); + + $size = hex($bytes[0]); + $flags = hex($bytes[1]); + $size2 = scalar(@bytes); + +# $bytes[0] = sprintf "%x", $size2; +# print "reported size $size\tarray size $size2 $trailing0\t"; +# print "flags $flags\t"; +# if ($flags & 1<<0) { +# $flags2 = hex($bytes[4]); +# $part = "?"; +# if ($flags2 == 1) +# { +# $part = "S"; +# } elsif ($flags2 == 2) +# { +# $part = "M"; +# } elsif ($flags2 == 3) +# { +# $part = "E"; +# } +# print "H2[$part], "; +# } + +# if ($flags & 1<<1) { +# print "T,"; +# } + +# if ($flags & 1<<2) { +# print "T2, "; +# } + +# if ($flags & 1<<3) { +# print "Cid, "; +# } + +# if ($flags & 1<<4) { +# print "PC, "; +# } + +# if ($flags & 1<<5) { +# print "Ext, "; +# } + +# if ($flags & 1<<6) { +# print "Trunc, "; +# } + +# if ($flags & 1<<7) { +# print "Miss, "; +# } +# print "\t@bytes\n"; + + $moddedsize = $size; + if (($moddedsize % 4) != 0) + { + $moddedsize += 4 - ($moddedsize % 4); + } + while (scalar(@bytes) < $moddedsize) + { + push @bytes, "00"; + # print "Size all strange ( $size $size2 ): @bytes\n"; + } + + foreach (@bytes) { + my $out = pack("C", hex $_); + print BTRACE $out; + } + } elsif (/xti1:MCU_ASCII_PRINTF; channel:0xE0; msg:(.*)/) + { + writePrintf($1); + } elsif (/symb:(.*)/) + { + writePrintf($1); + } +} +close BTRACE; +close INPUT;