X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=host%2Fget_test.rb;h=df16955b5d7a65c3075f7283171491314d0d3c26;hb=7715ef86b09869014eb5afd319e4acc2ce157b00;hp=987a5b1f7ea1a8bb6773afd8c720eec4baa2d5a2;hpb=0076b72ccd398bf7571c5144ba36eda8a24f6c70;p=avr-crypto-lib.git diff --git a/host/get_test.rb b/host/get_test.rb index 987a5b1..df16955 100644 --- a/host/get_test.rb +++ b/host/get_test.rb @@ -1,24 +1,44 @@ #!/usr/bin/ruby +# get_test.rb +=begin + This file is part of the AVR-Crypto-Lib. + Copyright (C) 2008, 2009 Daniel Otte (daniel.otte@rub.de) -require 'serialport' + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -if ARGV.size < 5 - STDERR.print <=6)?ARGV[5]:""; -param=(ARGV.size>=7)?ARGV[6]:""; + You should have received a copy of the GNU General Public License + along with this program. If not, see . +=end -puts("\nPort: "+ARGV[0]+ "@"+ARGV[1]+" "+ARGV[2]+"N"+ARGV[3]+"\n"); -$linewidth = 16 -$sp = SerialPort.new(ARGV[0], ARGV[1].to_i, ARGV[2].to_i, ARGV[3].to_i, SerialPort::NONE); -$sp.read_timeout=1*60*1000; # 5 minutes -$extended_wait=10; -$sp.write(command); +require 'rubygems' +require 'serialport' + +$debug = false + +def read_line(error_msg=true) + begin + i = $extended_wait + begin + s = $sp.gets() + i -= 1 + end while !s && i > 0 + if s==nil + puts("ERROR: read timeout!\n") if error_msg + return nil + end + putc('.') if s.include?(6.chr) + puts(s.inspect) if $debug + end while s == 6.chr + s.gsub(/\006/, '') +end def readTestVector(param) fname=$dir; @@ -27,11 +47,8 @@ def readTestVector(param) set=0; vector=0; begin - ctr=$extended_wait; - while((lb=$sp.gets())==nil && ctr>=0)do - ctr -= 1; - end - if (m=/unknown command/.match(lb) || m=/[Ee][Rr]{2}[Oo][Rr]/.match(lb)) + lb = read_line(false) + if (m=/unknown command/.match(lb) || m=/[Ee][Rr]{2}[Oo][Rr]/.match(lb)) puts("ERROR: "+lb); exit(2); end @@ -42,10 +59,7 @@ def readTestVector(param) buffer += lb; begin - ctr=$extended_wait; - while((lb=$sp.gets())==nil && ctr>=0)do - ctr -= 1; - end + lb = read_line() if(lb==nil) return false; end @@ -57,17 +71,16 @@ def readTestVector(param) if(m) fname+=m[1]+"."; end + return false if lb==nil buffer+=lb; - ctr=$extended_wait; - while((lb=$sp.gets())==nil && ctr>=0)do - ctr -= 1; - end + lb = read_line(); end if(param!="") fname+=param+"."; end puts("-> "+fname+"txt"); file=File.new(fname+"txt", "w"); + file.sync = true buffer+=lb; file.write(buffer); begin @@ -83,10 +96,7 @@ def readTestVector(param) end printf(" %4u", vector); end - ctr=$extended_wait; - while((lb=$sp.gets())==nil && ctr>=0)do - ctr -= 1; - end + lb=read_line(); if(lb==nil) file.close(); return false; @@ -98,9 +108,28 @@ def readTestVector(param) return true end + +if ARGV.size < 5 + STDERR.print <=6)?ARGV[5]:""; +param=(ARGV.size>=7)?ARGV[6]:""; + +puts("\nPort: "+ARGV[0]+ "@"+ARGV[1]+" "+ARGV[2]+"N"+ARGV[3]+"\n"); +$linewidth = 16 +$sp = SerialPort.new(ARGV[0], ARGV[1].to_i, ARGV[2].to_i, ARGV[3].to_i, SerialPort::NONE); +$sp.read_timeout=1000; # 1 second +$extended_wait=10; +$sp.write(command); + if(readTestVector(param)==false) puts("ERROR: test seems not to be implemented"); - exit(3); + exit(0); # 3 end while(readTestVector(param))