#!/usr/bin/perl
use strict;

my $bin = shift;
my $terms = shift;

my $addr = "0x1e000";
my $iab = 0xa8c; # Redwire, LLC's IAB

my $mac_h;
my $mac_l;

if(defined($iab)) {
    $mac_h = 0x0050C200 | ($iab >> 4);
    $mac_l = ($iab & 0xf) << 28;
}

if (! $terms) {
	print "Usage: $0 flasher.bin num-devices\n";
	die;
}

for (my $t=0; $t<$terms; $t++) {
	my $dev_num = 2 * $t + 1;
	$mac_l |= $dev_num;
	#stupid 32-bit thing...
	my $mac;
	printf("mac_h %x\n", $mac_h);
	printf("mac_l %x\n", $mac_l);
	my @words;
	for(my $i=0; $i<4; $i++) {
	    push @words, ($mac_h >> ($i * 8)) & 0xff;
	}
	for(my $i=0; $i<4; $i++) {
	    push @words, ($mac_l >> ($i * 8)) & 0xff;
	}
	reverse @words;
	foreach my $byte (@words) {
	    printf("%02X",$byte);
	}
	print "\n";

	my $word1 = sprintf("%02X%02X%02X%02X",$words[4],$words[5],$words[6],$words[7]);
	my $word2 = sprintf("%02X%02X%02X%02X",$words[0],$words[1],$words[2],$words[3]);

	my $ftdi_num = $terms - $t - 1;

	my $cmd = "../burn-mac.pl --iab=a8c --term=/dev/ttyUSB$dev_num --index=$ftdi_num $bin $dev_num";
	print "$cmd\n";
	system($cmd);
}