use KB::2mmint; use Time::HiRes; my $nodeno = 28; my @all_errorlist = (112); my @resultlist; my @result; open( LOGFILEHANDLE, ">testlog.txt" ) or die $!; my $overAllResult=0; $result = &Active_err( $nodeno, \@all_errorlist); $overAllResult=1 unless ($result eq "PASSED"); $result = &set_all_faults( $nodeno, \@all_errorlist); $overAllResult=1 unless ($result eq "PASSED"); sub Active_err { my ( $nodeno, $refErrlst ) = @_; my ( @dataIn, @dataOut ); @dataIn = ( 0x65, 0, 3, 0 ); # commands for activating error my $result = "PASSED"; foreach $var (@$refErrlst) { $dataIn[20] = $var & 0xFF; # give the fault no $dataIn[21] = $var >> 8; print ("\ntest :", $dataIn[20], "-", $dataIn[21], "\n"); undef @dataOut; # clear output buffer $retVal = &KB::2mmint::Request( $nodeno, 128, 1, \@dataIn, \@dataOut ); if($retVal != 0) { logMessage($retVal, "Error caused by 2mmint", sprintf ("2mmint returned %d", $retVal)); return "ERROR"; } unless($dataOut[4] == ord('P')) # char nr. 4 must P for Passed { my $failMessage = sprintf ("activating ErrNr. %d failed\n", $var); $failMessage = sprintf ("%s\n", join (" ", @dataOut)); logMessage(1, "Active_err Failed", $failMessage); $result = "FAILED"; } } print $result; if($result eq "PASSED") { logMessage(0, "Active_err Passed", ""); return "PASSED"; } else { logMessage(1, "Active_err ", $result); return $result; } } ## Active_err sub set_all_faults { my ( $nodeno, $refErrlst, $refResList ) = @_; my ( @dataIn, @dataOut ); @dataIn = ( 0x67, 0, 3, 0 ); # commands for set_all_faults my $result = "PASSED"; foreach $var (@$refErrlst) { $dataIn[20] = $var & 0xFF;# give the fault no $dataIn[21] = $var >> 8; print ("\ntest :", $dataIn[20], "-", $dataIn[21], "\n"); undef @dataOut; # clear output buffer $retVal = &KB::2mmint::Request( $nodeno, 128, 1, \@dataIn, \@dataOut ); if($retVal != 0) { logMessage($retVal, "Error caused by 2mmint", sprintf ("2mmint returned %d", $retVal)); return "ERROR"; } unless($dataOut[4] == ord('P')) # char nr. 4 must P for Passed { my $failMessage = sprintf ("set all faults. %d failed\n", $var); $failMessage = sprintf ("%s\n", join (" ", @dataOut)); logMessage(1, "set_all_faults Failed", $failMessage); $result = "FAILED"; } } print $result; if($result eq "PASSED") { logMessage(0, "set_all_faults Passed", ""); return "PASSED"; } else { logMessage(1, "set_all_faults ", $result); return $result; } } sub logMessage { my ( $Failed, $LogMessage, $ErrMessage ) = @_; printf LOGFILEHANDLE ("--------------------------\n"); # get time and print it my ( $secs, $usecs ) = Time::HiRes::gettimeofday(); my @ltime = localtime($secs); my ( $dyear, $dmonth, $ddate, $dhour, $dmin, $dsecs ) = ( $ltime[5] + 1900, $ltime[4] + 1, $ltime[3], $ltime[2], $ltime[1], $ltime[0] ); my $TimeString = sprintf( "%04d-%02d-%02d %02d:%02d:%02d.%06d", $dyear, $dmonth, $ddate, $dhour, $dmin, $dsecs, $usecs ); printf LOGFILEHANDLE ( "Timestamp %s\n", $TimeString ); printf LOGFILEHANDLE ( "%s \n", $LogMessage ); if ($Failed) { printf LOGFILEHANDLE ("ErrorMessage:\n"); printf LOGFILEHANDLE ( "%s\n", $ErrMessage ); printf LOGFILEHANDLE ( "----------%s----------\n\n", "FAILED" ); } else { printf LOGFILEHANDLE ( "----------%s----------\n\n", "PASSED" ); } } } #### return "ERROR";