#!/usr/bin/perl

# Jacobsen/npxdesigns.com
# $Id: showtemp,v 1.1 2004/06/18 19:21:44 jacobsen Exp $

use Fcntl;
use strict;
use Getopt::Long;

sub testecho; sub drain_iceboot;

my $domdev = shift;

if($domdev =~ /^(\d)(\d)(\w)$/) {
    my $dom    = $3;
    $dom    =~ tr/[a-z]/[A-Z]/;
    $domdev = "/dev/dhc$1"."w$2"."d$dom";
}

die "Usage: $0 <dom_device_file>\n" unless defined $domdev;
die "Couldn't find DOM device file $domdev" unless -e $domdev;

sysopen(DD, $domdev, O_RDWR)
    || die "Can't open $domdev: $!\n";

my $buf;

print "Showing temperature for DOM on $domdev...\n";

drain_iceboot;
syswrite DD, "readTemp\r";
syswrite DD, ".s\r";
syswrite DD, "prtTemp\r";

select undef,undef,undef,1.5;

drain_iceboot;
print "\n";

close DD;

exit;

sub drain_iceboot {
    my $gotsomething = 0;
    my $dataread = "";
    for(1..10) {
	my $read = sysread DD, $buf, 4096;
	if($read > 0) {
	    print "$buf";
	    $gotsomething++;
	    $dataread .= $buf;
	}
	select undef,undef,undef,0.001;
    }
    if($dataread =~ /error/i) {
	print "Error present on stream from DOM.\n";
	return 1;
    }
	
    return 0;
}


