#!/usr/bin/perl
# IR 信号のグラフ化

@D = split(/[,\r\n]+/, join("", <>));

$header  = shift(@D);
$cmd     = shift(@D);
$freq    = eval("0x".shift(@D));
$samp    = 1/(16.5*1000*1000/($freq))*1000*1000;

#print "Remote controller IR DATA Decoder for 1KEY-USB\n";
#print "Header Text:  $header\n";
#print "Command: ${cmd}H\n";
#if ($freq) { print "Frequency: $freq(", 16.5*1000*1000/$freq/1000/2, " kHz)\n"; }
if ($ARGV) { $title=$ARGV } else {  $title="IR"; }

		
$even = 1;

while (@D) {
		$s = shift(@D);
		$v = eval("0x" . $s);
		if (($v & 0x80) == 0) {
				# 0-127
				push(@DATA, $v*$samp);
				$prev[$even] = $v;
				$even ^= 1;
		} elsif (($v & 0xc0) == 0x80) {
				# 64-16383
				$h = $v & 63;
				$l =  eval("0x" . shift(@D));
				$v = ($h<<8) | $l;
				push (@DATA, $v*$samp);
				$prev[$even] = $v;
				$even ^= 1;
		} elsif (($v & 0xc0) == 0xc0) {
				$loop = $v & 63;
				foreach (1..$loop) {
						push(@DATA, $prev[$even]*$samp);
						$even ^= 1;
				}
		} else {
				die "Format error.\n";
		}
}

$sum  = 0;
push(@SUM, $sum);
foreach $i (0..$#DATA) {
		$sum = $sum + $DATA[$i];
		push(@SUM, $sum);
}
		


$bit=0;
print "us, $title\r\n";
foreach $i (0..$#SUM) {
		printf("%1.2f,%d\r\n", $SUM[$i],$bit);
		$bit = $bit ^ 1;
		printf("%1.2f,%d\r\n", $SUM[$i],$bit);
}
