50 lines
1.8 KiB
Bash
Executable File
50 lines
1.8 KiB
Bash
Executable File
#!/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)
|
|
}
|
|
}
|
|
}
|
|
'
|