diff options
Diffstat (limited to 'xpp/gen_slic_init')
-rwxr-xr-x | xpp/gen_slic_init | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/xpp/gen_slic_init b/xpp/gen_slic_init new file mode 100755 index 0000000..f102c33 --- /dev/null +++ b/xpp/gen_slic_init @@ -0,0 +1,37 @@ +#! /usr/bin/perl -w + +use strict; + +my $input; +my $header; +my $comment; + +@ARGV == 2 or die "Usage: $0 <infile> <outfile>\n"; +$input = $ARGV[0]; +$header = $ARGV[1]; +open(IF, "$input") or die "Failed to write '$input': $!\n"; +open(HF, ">$header") or die "Failed to write '$header': $!\n"; + +while(<IF>) { + chomp; + undef $comment; + s/\r//; # CRLF -> LF + if(s/\s*[;#]\s*(.*?)$//) { # Comments + $comment = $1; + } + if(/^\s*$/) { # Empty lines + next; + } + my ($slic0, $slic1, $slic2, $slic3, $len, @data) = split; + die "Bad input (len=$len)" if hex($len) != @data; + my $slic = "$slic3$slic2$slic1$slic0"; + die "Bad slic address '$slic'" if length($slic) != 8; + grep(s/\w+/0x$&/g, ($slic, $len, @data)); + my $str = join(", ", @data); + print HF "S_($slic,\t$len,\t$str),\t"; +} continue { + if(defined($comment)) { + print HF "// $comment"; + } + print HF "\n"; +} |