#!/usr/bin/perl -W

use strict;
use Device::SerialPort;
use Time::HiRes qw(sleep);

my $port = Device::SerialPort->new("/dev/ttyUSB0"); # <-- match to right com port
$port->databits(8);
$port->baudrate(4800); # <-- match to arduino settings
$port->parity("none");
$port->stopbits(1);
$port->dtr_active(0);
$| = 1; # buffers disabled


while(1) {
	my $loadavg = `iostat -c 1 2 | tail -n 2 | head -n 1 | gawk '{print \$1}'`;
	$loadavg = $loadavg / 14.3;
	$loadavg = round($loadavg);

	$port->write(pack("C",1)); # start byte
	sleep(0.01);
	$port->write(pack("C",$ARGV[0] || 3)); # command: tbar
	sleep(0.01);
	$port->write(pack("C",$ARGV[1] || $loadavg)); # draw up to row ? (0..7)
	sleep(0.01);
	$port->write(pack("C",$ARGV[2] || 255)); # full RED
	sleep(0.01);
	$port->write(pack("C",$ARGV[3] || 0)); # no GREEN
	sleep(0.01);
	$port->write(pack("C",$ARGV[4] || 0)); # no BLUE
	sleep(0.01);
	$port->write(pack("C",1)); # stop byte
	sleep(.1);
}

sub round {
	my $number = shift;
	return int($number + 0.5);
}

