File Coverage

blib/lib/Device/WebIO/Device/ADC.pm
Criterion Covered Total %
statement 18 18 100.0
branch n/a
condition n/a
subroutine 5 5 100.0
pod 2 3 66.6
total 25 26 96.1


line stmt bran cond sub pod time code
1             # Copyright (c) 2014 Timm Murray
2             # All rights reserved.
3             #
4             # Redistribution and use in source and binary forms, with or without
5             # modification, are permitted provided that the following conditions are met:
6             #
7             # * Redistributions of source code must retain the above copyright notice,
8             # this list of conditions and the following disclaimer.
9             # * Redistributions in binary form must reproduce the above copyright
10             # notice, this list of conditions and the following disclaimer in the
11             # documentation and/or other materials provided with the distribution.
12             #
13             # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14             # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15             # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16             # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
17             # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18             # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19             # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20             # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21             # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22             # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
23             # POSSIBILITY OF SUCH DAMAGE.
24             package Device::WebIO::Device::ADC;
25             $Device::WebIO::Device::ADC::VERSION = '0.022';
26 2     2   12567 use v5.12;
  2         7  
27 2     2   9 use Moo::Role;
  2         4  
  2         10  
28              
29             with 'Device::WebIO::Device';
30              
31             requires 'adc_bit_resolution';
32             requires 'adc_volt_ref';
33             requires 'adc_pin_count';
34             requires 'adc_input_int';
35              
36              
37             sub adc_max_int
38             {
39 6     6 1 8 my ($self, $pin) = @_;
40 6         13 my $bit_resolution = $self->adc_bit_resolution( $pin );
41 6         31 return 2 ** $bit_resolution - 1;
42             }
43              
44             sub adc_input_float
45             {
46 4     4 1 7 my ($self, $pin) = @_;
47 4         9 my $in = $self->adc_input_int( $pin );
48 4         16 my $max_int = $self->adc_max_int( $pin );
49 4         7 my $in_float = $in / $max_int;
50 4         10 return $in_float;
51             }
52              
53             sub adc_input_volts
54             {
55 2     2 0 4 my ($self, $pin) = @_;
56 2         4 my $in_float = $self->adc_input_float( $pin );
57 2         5 my $volt_ref = $self->adc_volt_ref( $pin );
58 2         8 my $in_volt = $volt_ref * $in_float;
59 2         6 return $in_volt;
60             }
61              
62              
63             1;
64             __END__