Skip to content

Commit

Permalink
Close it down properly
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanstowe committed May 16, 2016
1 parent e4ad3cb commit 8f85da3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
12 changes: 12 additions & 0 deletions examples/siney
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@ sub MAIN(Int :$address where 0 <= * < 4 = 0, Int :$samplerate = 44100, Int :$fre

my $d = Device::Velleman::K8055.new(:$address);

signal(SIGINT).tap({
if $d.defined {
$d.close(:reset);
exit;
}
});


my $sec = 60/($bpm * 4);
my $inc = $samplerate * $sec;
Expand All @@ -23,6 +30,11 @@ sub MAIN(Int :$address where 0 <= * < 4 = 0, Int :$samplerate = 44100, Int :$fre
$pos += $inc;
}
}

END {
}


}

# vim: expandtab shiftwidth=4 ft=perl6
13 changes: 12 additions & 1 deletion lib/Device/Velleman/K8055.pm
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,10 @@ class Device::Velleman::K8055 {
}
$digitalBitmask, $analog0, $analog1, $debounce0, $debounce1;
}

method reset() {
self.set-all-digital(0) && self.set-all-analog(0,0);
}
}

sub k8055_open_device(int32 $port, Pointer $device is rw) is native(LIB) returns int32 { * }
Expand All @@ -163,10 +167,17 @@ class Device::Velleman::K8055 {
}
$p.deref;
}

method close(Bool :$reset = False) {
if $reset {
self.reset;
}
$!device.close;
}

sub k8055_debug(bool $value) is native(LIB) { * }

has Device $!device handles <set-all-digital set-digital set-all-analog set-analog reset-counter set-debounce-time get-all-input get-all-output>;
has Device $!device handles <set-all-digital set-digital set-all-analog set-analog reset-counter set-debounce-time get-all-input get-all-output reset>;

submethod BUILD(Int :$!address where 0 <= * < 4 = 0, Bool :$debug) {
$!device = self!open-device(:$!address);
Expand Down

0 comments on commit 8f85da3

Please sign in to comment.