diff --git a/contrib/scripts/makegrabcsv.sh b/contrib/scripts/makegrabcsv.sh new file mode 100755 index 00000000..a5c9a466 --- /dev/null +++ b/contrib/scripts/makegrabcsv.sh @@ -0,0 +1,49 @@ +#!/bin/sh +echo "grab result"|nc localhost 8888|awk ' +// { + len[substr($1,3)]=length($3)/2; +} +END { + print "# type (r[1-9];w;u),circuit,name,[comment],[QQ],ZZ,PBSB,[ID],field1,part (m/s),datatypes/templates" + for (i in len) { + zz=substr(i,1,2) + pbsb=substr(i,3,4) + id=substr(i,9) + idlen=length(id)/2 + if (pbsb=="b509" && substr(id,1,2)=="0d") { + //register read + reg=strtonum("0x" substr(id,3,2)) + reg+=strtonum("0x" substr(id,5,2))*256 + print "r,unknown" zz ",reg" reg ",,," zz "," pbsb "," substr(id,3,4) ",data,,HEX:" (len[i]-1) + } else if (pbsb=="b509" && substr(id,1,2)=="0e") { + //register write + reg=strtonum("0x" substr(id,3,2)) + reg+=strtonum("0x" substr(id,5,2))*256 + print "w,unknown" zz ",reg" reg ",,," zz "," pbsb "," substr(id,3,4) ",data,,HEX:" (idlen-3) + } else if (pbsb=="b509" && substr(id,1,2)=="29") { + //register update + reg=strtonum("0x" substr(id,3,2)) + reg+=strtonum("0x" substr(id,5,2))*256 + print "u,unknown" zz ",reg" reg ",,," zz "," pbsb "," substr(id,3,4) ",,,IGN:2,,,,data,,HEX:" (len[i]-3) + } else if (len[i]<=1 || idlen>3) { + //seems to be a write + if (idlen>3) idlen=3 + else if (len[i]<=1) idlen--; + printf "w,unknown" zz "," + if (substr(pbsb,1,2)=="b5") printf "block" substr(pbsb,3,2) + else printf pbsb + printf substr(id,1,idlen*2) ",,," zz "," pbsb "," substr(id,1,idlen*2) + if (length(id)/2>idlen) + printf ",data,,HEX:" (length(id)/2-idlen) + if (len[i]>1) + printf ",result,s,HEX:" (len[i]-1) + print "" + } else { + printf "r,unknown" zz "," + if (substr(pbsb,1,2)=="b5") printf "block" substr(pbsb,3,2) + else printf pbsb + print id ",,," zz "," pbsb "," id ",data,,HEX:" (len[i]-1) + } + } +} +'