--- 3m-810.pl 2009/06/01 21:07:11 39 +++ 3m-810.pl 2009/06/01 21:17:12 40 @@ -247,7 +247,7 @@ die "got block $ord, expected block $expected_ord from ",dump( $block ) if $ord != $expected_ord; my $data = substr( $block, 2 ); die "data payload should be 4 bytes" if length($data) != 4; - warn sprintf "## tag %9s %02d %s |%-4s|\n", $tag, $ord, as_hex( $data ), $data; + warn sprintf "## tag %9s %02d: %s |%-4s|\n", $tag, $ord, as_hex( $data ), $data; $tag_data_block->{$tag}->[ $ord ] = $data; } $tags_data->{ $tag } = join('', @{ $tag_data_block->{$tag} }); @@ -317,7 +317,6 @@ $hex_data =~ s{\s+}{}g; } else { - # pad to block size $data .= "\0" x ( 4 - ( length($data) % 4 ) ); my $max_len = 7 * 4; @@ -331,14 +330,16 @@ } my $len = length($hex_data) / 2; - my $blocks = sprintf('%02x', $len / 4); + # pad to block size + $hex_data .= '00' x ( 4 - $len % 4 ); + my $blocks = sprintf('%02x', length($hex_data) / 4); print "write_tag $tag = ",dump( $data ), " [$len/$blocks] == $hex_data\n"; cmd( "d6 00 ff 04 $tag 00 $blocks 00 $hex_data ffff", "write $tag", "d6 00 0d 04 00 $tag $blocks afb1", sub { assert() }, - ) foreach ( 1 .. 3 ); # xxx 3m software does this three times! + ); # foreach ( 1 .. 3 ); # XXX 3m software does this three times! my $to = $path; $to .= '.' . time();