#!/bin/bash

SPINKEY_NR_FILE=/tmp/spinkey_nr
TIMEOUT=20

if [ `find /tmp/ -name 'spinkey_nr' -mmin -1` ]
then
  cat $SPINKEY_NR_FILE
  exit 0
fi

rm -f $SPINKEY_NR_FILE

PORT=9991

perl -e'
use strict;
use IO::Socket;
use IO::Select;


my($cmd, $childpid, $sock, $msg, $hisaddr, $hishost, $hostaddr, $MAXLEN, $PORTNO);

$MAXLEN = 1024;
$PORTNO = '$PORT';

$sock = IO::Socket::INET->new(PeerHost => "127.0.0.1", PeerPort => $PORTNO, Proto => "tcp") or do {
 die "socket: $@";
};

for ( my $cnt=0; $cnt < 5 ; $cnt++ )
{
  $sock->send("serial\r\n");
}


#print "Awaiting Spinkeyd answer\n";

my $start = time;
my $current = time;
while ($current - $start < '$TIMEOUT') {

    if ( IO::Select->new($sock)->can_read(2) )
    {
      $sock->recv($msg, $MAXLEN);
#      print "Got answer: $msg";
      if ( $msg =~ /^300 SERIAL (\d+)\r$/ )
      {
#        print "SERIAL: $1";
	print "$1\n";
        $sock->close();
        exit 0;
      }

    }
    else
    {
	system "sleep 0.1";
#	sleep 1
    }
   $current = time;
}
$sock->close();
#print "Timeout !!";
' | tee $SPINKEY_NR_FILE



