File Coverage

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


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.009';
26 2     2   9931 use v5.12;
  2         5  
  2         74  
27 2     2   10 use Moo::Role;
  2         3  
  2         11  
28              
29             with 'Device::WebIO::Device';
30              
31             requires 'adc_max_int';
32             requires 'adc_bit_resolution';
33             requires 'adc_volt_ref';
34             requires 'adc_pin_count';
35             requires 'adc_input_int';
36              
37              
38             sub adc_max_int
39             {
40 6     6 1 8 my ($self, $pin) = @_;
41 6         11 my $bit_resolution = $self->adc_bit_resolution( $pin );
42 6         31 return 2 ** $bit_resolution - 1;
43             }
44              
45             sub adc_input_float
46             {
47 4     4 1 2 my ($self, $pin) = @_;
48 4         9 my $in = $self->adc_input_int( $pin );
49 4         20 my $max_int = $self->adc_max_int( $pin );
50 4         7 my $in_float = $in / $max_int;
51 4         10 return $in_float;
52             }
53              
54             sub adc_input_volts
55             {
56 2     2 0 1 my ($self, $pin) = @_;
57 2         6 my $in_float = $self->adc_input_float( $pin );
58 2         5 my $volt_ref = $self->adc_volt_ref( $pin );
59 2         8 my $in_volt = $volt_ref * $in_float;
60 2         10 return $in_volt;
61             }
62              
63              
64             1;
65             __END__