#!/usr/bin/perl -w
open IN,"<$ARGV[0]";

print <<EOF
#include "../../defs.h"
#include "../../stub.c"
EOF
;

my $header=<IN>;
my @l=split "->",$header;
my @ins=sort split " ",$l[0];
my @outs=sort split " ",$l[1];
my %map=();

my $reg=0;
my @io=();
print " printf(\"Initializing the Inputs of the cell:\\n\");\n";
foreach(@ins)
{
  print "  reg_mprj_io_$reg = GPIO_MODE_MGMT_STD_OUTPUT; // $_\n";
  $io[$reg>>5]|=1<<($reg&31);
  $reg++;
}
print " printf(\"Initializing the Outputs of the cell:\\n\");\n";
foreach(@outs)
{
  $map{$_}=$reg++;

  print "  reg_mprj_io_$reg = GPIO_MODE_USER_STD_OUTPUT; // $_\n";
}

print "  reg_mprj_xfer=1;\n";
print "  while (reg_mprj_xfer == 1);\n";

foreach(0 .. 3)
{
  print "reg_la".$_."_ena=".sprintf("0x%08X",$io[$_]).";\n" if(defined($io[$_]));
}

my $counter=0;
print " printf(\"Starting the tests:\\n\");\n";

while(<IN>)
{
  last if(m/^function:/);
  @l=split " ",$_;
  my $if=0;
  foreach(@l)
  {
    if(m/(\w+)=(\d)/)
    {
      print "  assert(reg_la".$map{$1}."_data==$2); //$1\n";
    }
    else
    {
      print "  reg_la".$if."_data=$_; //$ins[$if]\n";
    }
    $if++;
  }
  print "  printf(\"Test $counter successful\\n\");\n\n";

  $counter++;
}
