package RadioMobile::Cov;
use strict;
use warnings;
use Class::Container;
use Params::Validate qw(:types);
use base qw(Class::Container);
use File::Binary;
our $VERSION = '0.10';
# COVERAGE STRUCTURE - Len 74 bytes
# DMAX ([f] single-precision float - VB Single type - 4 bytes),
# THMIN ([f] single-precision float - VB Single type - 4 bytes),
# THMAX ([f] single-precision float - VB Single type - 4 bytes),
# THINC ([f] single-precision float - VB Single type - 4 bytes),
# ANTAZT ([f] single-precision float - VB Single type - 4 bytes),
# FILE ([A] ASCII string - VB String*20 - 20 bytes),
# TRESHOLD ([s] signed short - VB Integer type - 2 bytes),
# LEVEL ([f] single-precision float - VB Single type - 4 bytes),
# AREA ([S] unsigned short - VB Boolean - 2 bytes, non credo bool)
# CAREA ([l] signed long - VB Integer type - 4 bytes),
# CONTOUR ([S] unsigned short - VB Boolean - 2 bytes)
# CCONTOUR ([l] signed long - VB Integer type - 4 bytes),
# VHS ([f] single-precision float - VB Single type - 4 bytes),
# VHT ([f] single-precision float - VB Single type - 4 bytes),
# DMIN ([f] single-precision float - VB Single type - 4 bytes),
# VCOL ([l] signed long - VB Integer type - 4 bytes),
use constant LEN => 74;
use constant PACK => 'fffffA20sfSlSlfffl';
use constant ITEMS => qw/dmax thmin thmax thinc antazt file treshold level
area carea contour ccontour vhs vht dmin vcol/;
__PACKAGE__->valid_params ( map {$_ => {type => SCALAR, default => 1}} (ITEMS));
use Class::MethodMaker [scalar => [ITEMS]];
sub new {
my $package = shift;
my $s = $package->SUPER::new(@_);
return $s;
}
sub parse {
my $s = shift;
my $f = shift;
my @struct = unpack(PACK,$f->get_bytes(LEN));
map {$s->{(ITEMS)[$_]} = $struct[$_]} (0..(ITEMS)-1);
}
sub write {
my $s = shift;
my $f = shift;
$f->put_bytes(pack(PACK, map ($s->{(ITEMS)[$_]},(0..(ITEMS)-1))));
}
sub dump {
my $s = shift;
return Data::Dumper::Dumper($s->dump_parameters);
}
1;
__END__