HiPi
view release on metacpan or search on metacpan
lib/HiPi/Interface/MPL3115A2.pm view on Meta::CPAN
sub who_am_i {
my $self = shift;
( $self->device->bus_read(MPL_REG_WHO_AM_I, 1))[0];
}
sub active {
my ($self, $set) = @_;
my ( $curreg ) = $self->device->bus_read(MPL_REG_CTRL_REG1, 1);
my $rval = $curreg & MPL_CTRL_REG1_SBYB;
if (defined($set)) {
my $setmask = ( $set ) ? MPL_CTRL_REG1_SBYB | $curreg : $curreg &~MPL_CTRL_REG1_SBYB;
$self->device->bus_write(MPL_REG_CTRL_REG1, $setmask);
$rval = $setmask & MPL_CTRL_REG1_SBYB;
}
return $rval;
}
sub reboot {
my $self = shift;
$self->device->bus_write_error(MPL_REG_CTRL_REG1, MPL_CTRL_REG1_RST);
$self->device->delay(100);
}
lib/HiPi/Interface/MPL3115A2.pm view on Meta::CPAN
sub mode {
my($self, $newmode) = @_;
my ( $curreg ) = $self->device->bus_read(MPL_REG_CTRL_REG1, 1);
my $currentmode = ( $curreg & MPL_CTRL_REG1_ALT ) ? MPL_FUNC_ALTITUDE : MPL_FUNC_PRESSURE;
if(defined($newmode)) {
unless( $currentmode == $newmode ) {
if( $curreg & MPL_CTRL_REG1_SBYB ) {
croak('cannot set altitude / pressure mode while system is active');
}
my $setmask = ($newmode == MPL_FUNC_ALTITUDE) ? $curreg | MPL_CTRL_REG1_ALT : $curreg &~MPL_CTRL_REG1_ALT;
$self->device->bus_write(MPL_REG_CTRL_REG1, $setmask );
( $curreg ) = $self->device->bus_read(MPL_REG_CTRL_REG1, 1);
$currentmode = ( $curreg & MPL_CTRL_REG1_ALT ) ? MPL_FUNC_ALTITUDE : MPL_FUNC_PRESSURE;
}
}
return $currentmode;
}
sub os_temperature {
my $self = shift;
my ( $pvalue, $tvalue ) = $self->os_any_data;
( run in 0.552 second using v1.01-cache-2.11-cpan-cc502c75498 )