--- /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 <inputfile> <outputfile>";
+ 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 (<INPUT>)
+{
+ 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;