#!/usr/bin/perl -I . use strict; use doorcontrol; sub test_status ($) { my $status = shift; return 0 unless ( ( $status == $doorcontrol::DOOR_LOCKED ) || ( $status == $doorcontrol::DOOR_OPEN ) || ( $status == $doorcontrol::DOOR_MOVING ) || ( $status == $doorcontrol::DOOR_READY )); return 1; } print "Verifying status values ..."; die ("Failed to verify DOOR_OPEN == 79") unless test_status( 79 ); print " OK\n"; print "Verifying status values 2 ..."; die ("Failed to verify DOOR_OPEN != 10") if test_status( 10 ); print " OK\n"; print "Opening device ..."; my $handle = doorcontrol::door_init("/dev/ttyS0"); die("Unable to open device") if $handle == -1; die("Unexpected, no handle") if not defined $handle; print " OK\n"; print "Reading status ..."; my $status = doorcontrol::door_status($handle) ; die ("Failed to get valid status") unless test_status( $status ); print " OK\n"; if ( $status == $doorcontrol::DOOR_LOCKED ) { print "Opening door ..."; $status = doorcontrol::door_open($handle); die ("Door not open after locking") if ( $status != $doorcontrol::DOOR_OPEN ); print " OK\n"; } elsif ( $status == $doorcontrol::DOOR_OPEN ) { print "Locking door ..."; $status = doorcontrol::door_lock($handle); die ("Door not locked after opening") if ( $status != $doorcontrol::DOOR_LOCKED ); print " OK\n"; } print "Numeric values of constants: "; print $doorcontrol::DOOR_LOCKED . ", "; print $doorcontrol::DOOR_OPEN . ", "; print $doorcontrol::DOOR_MOVING . ", "; print $doorcontrol::DOOR_READY . "\n"; close $handle;