warn "IGNORED ",as_hex($data);
}
});
- return as_hex $afi;
+ warn "## read_afi ",dump($tag, $afi);
+ return $afi;
+}
+
+sub write_afi {
+ my $tag = shift;
+ $tag = shift if ref $tag;
+ my $afi = shift || die "no afi?";
+
+ $afi = as_hex $afi;
+
+ cmd(
+ "09 $tag $afi", "write_afi $tag $afi", sub {
+ my $data = shift;
+
+ if ( my $rest = _matched $data => '09 00' ) {
+
+ my $tag = substr($rest,0,8);
+ $afi = substr($rest,8,1);
+
+ warn "# SECURITY ", hex_tag($tag), " AFI: ", as_hex($afi);
+
+ } elsif ( my $rest = _matched $data => '0A 06' ) {
+ warn "ERROR writing AFI to $tag ", as_hex($data);
+ undef $afi;
+ } else {
+ warn "IGNORED ",as_hex($data);
+ undef $afi;
+ }
+ });
+ warn "## write_afi ", dump( $tag, $afi );
+ return $afi;
}
1
ok( my @tags = $o->inventory, 'inventory' );
diag dump @tags;
-ok( my $blocks = $o->read_blocks( $_ ), "read_blocks $_" ) foreach @tags;
+my $old_afi;
-ok( my $afi = $o->read_afi( $_ ), "read_afi $_" ) foreach @tags;
+foreach my $tag ( @tags ) {
+
+ ok( my $blocks = $o->read_blocks( $tag ), "read_blocks $tag" );
+
+ ok( my $afi = $o->read_afi( $tag ), "read_afi $tag" );
+
+ my $new_afi = "\x42";
+
+ ok( $o->write_afi( $tag, $new_afi ), sprintf( "write_afi %s %x", $tag, $new_afi ) );
+
+ cmp_ok( $o->read_afi( $tag ), 'eq', $new_afi, 'AFI check' );
+
+ ok( $o->write_afi( $tag, $afi ), sprintf( "write_afi %s %x", $tag, $afi ) );
+
+}
ok( my $visible = $o->scan, 'scan' );
diag dump $visible;