summaryrefslogtreecommitdiff
path: root/lib/MIMOSA.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MIMOSA.pm')
-rw-r--r--lib/MIMOSA.pm177
1 files changed, 0 insertions, 177 deletions
diff --git a/lib/MIMOSA.pm b/lib/MIMOSA.pm
deleted file mode 100644
index 54a5e15..0000000
--- a/lib/MIMOSA.pm
+++ /dev/null
@@ -1,177 +0,0 @@
-package MIMOSA;
-
-use strict;
-use warnings;
-use 5.020;
-
-use Carp;
-use Carp::Assert::More;
-use File::Slurp qw(read_dir);
-use IPC::Run qw(harness);
-use List::Util qw(max);
-
-our $VERSION = '0.00';
-
-sub new {
- my ( $class, %opt ) = @_;
-
- my $self = \%opt;
-
- bless( $self, $class );
-
- return $self;
-}
-
-sub start {
- my ($self) = @_;
- my $buf;
-
- my $mim_daemon = harness(
- [ 'MimosaCMD', '--start' ],
- '<' => \undef,
- '>&' => \$buf
- );
- my $mim_p1 = harness(
- [ 'MimosaCMD', '--parameter', 'offset', $self->{mimosa_offset} ],
- '<' => \undef,
- '>&' => \$buf
- );
- my $mim_p2 = harness(
- [ 'MimosaCMD', '--parameter', 'shunt', $self->{mimosa_shunt} ],
- '<' => \undef,
- '>&' => \$buf
- );
- my $mim_p3 = harness(
- [ 'MimosaCMD', '--parameter', 'voltage', $self->{mimosa_voltage} ],
- '<' => \undef,
- '>&' => \$buf
- );
- my $mim_p4 = harness(
- [ 'MimosaCMD', '--parameter', 'directory', 'src/apps/DriverEval' ],
- '<' => \undef,
- '>&' => \$buf
- );
- my $mim_start = harness(
- [ 'MimosaCMD', '--mimosa-start' ],
- '<' => \undef,
- '>&' => \$buf
- );
-
- if ( $self->is_running ) {
- croak("MIMOSA daemon is already running");
- }
-
- $mim_daemon->run or croak();
- $mim_p1->run or croak();
- $mim_p2->run or croak();
- $mim_p3->run or croak();
- $mim_start->run or croak();
-}
-
-sub is_running {
- my ($self) = @_;
-
- my $buf;
-
- my $mim_check = harness(
- [ 'pidof', 'MimosaCMD' ],
- '<' => \undef,
- '>&' => \$buf
- );
-
- return $mim_check->run;
-}
-
-sub stop {
- my ($self) = @_;
- my $buf;
-
- my $mim_stop = harness(
- [ 'MimosaCMD', '--mimosa-stop' ],
- '<' => \undef,
- '>&' => \$buf
- );
- my $mim_kill = harness(
- [ 'MimosaCMD', '--stop' ],
- '<' => \undef,
- '>&' => \$buf
- );
-
- # make sure MIMOSA has all teh data
- sleep(5);
-
- $mim_stop->run or croak();
-
- $self->wait_for_save;
-
- $mim_kill->run or croak();
-
- while ( $self->is_running ) {
- sleep(1);
- }
-}
-
-sub wait_for_save {
- my ($self) = @_;
-
- my $mtime = 0;
- my $mtime_changed = 1;
-
- while ($mtime_changed) {
- sleep(3);
- my @mim_files = grep { m{ \. mim $ }x } read_dir('.');
- my @mtimes = map { ( stat($_) )[9] } @mim_files;
- my $new_mtime = max @mtimes;
- if ( $new_mtime != $mtime ) {
- $mtime = $new_mtime;
- }
- else {
- $mtime_changed = 0;
- }
- }
-
- return $self;
-}
-
-sub kill {
- my ($self) = @_;
- my $buf;
-
- my $mim_kill = harness(
- [ 'MimosaCMD', '--stop' ],
- '<' => \undef,
- '>&' => \$buf
- );
-
- $mim_kill->run or croak();
-}
-
-sub calibrate {
- my ($self) = @_;
-
- $self->mimosactl('disconnect');
- sleep(2);
- $self->mimosactl('1k'); # actually 987 Ohm
- sleep(2);
- $self->mimosactl('100k'); # actually 99.3 kOhm
- sleep(2);
- $self->mimosactl('connect');
-}
-
-sub mimosactl {
- my ( $self, $arg ) = @_;
- my $buf;
-
- my $mimosactl = harness(
- [ 'mimosactl', $arg ],
- '<' => \undef,
- '>&' => \$buf
- );
-
- $mimosactl->run
- or croak( "mimosactl $arg returned " . $mimosactl->full_result );
-
- return $self;
-}
-
-1;