fixed script to work with standard awk

For some reason, I don't have GNU awk installed - so I removed the usage of array length and strtonum().
Further I'd prefer ebusctl which seems to come with every ebusd installation to avoid the dependency for 'nc'.
This commit is contained in:
Sven Giermann
2015-11-18 08:58:59 +01:00
parent cf6e052a92
commit 01922f86db
+20 -12
View File
@@ -1,8 +1,9 @@
#!/bin/sh
echo "grab result"|nc localhost 8888|awk '
ebusctl grab result|awk '
BEGIN{
len[""]=0
delete len[""]
found=0
}
/grab disabled/ {
print "enable grab first!"
@@ -10,9 +11,10 @@ BEGIN{
}
/.+/ {
len[substr($1,3)]=length($3)/2;
found=1
}
END {
if (length(len)>0)
if (found>0)
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)
@@ -20,22 +22,28 @@ END {
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
# register read
reg=index("123456789abcdef",tolower(substr(id,4,1)))
reg+=index("123456789abcdef",tolower(substr(id,3,1)))*16
reg+=index("123456789abcdef",tolower(substr(id,6,1)))*256
reg+=index("123456789abcdef",tolower(substr(id,5,1)))*4096
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
# register write
reg=index("123456789abcdef",tolower(substr(id,4,1)))
reg+=index("123456789abcdef",tolower(substr(id,3,1)))*16
reg+=index("123456789abcdef",tolower(substr(id,6,1)))*256
reg+=index("123456789abcdef",tolower(substr(id,5,1)))*4096
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
# register update
reg=index("123456789abcdef",tolower(substr(id,4,1)))
reg+=index("123456789abcdef",tolower(substr(id,3,1)))*16
reg+=index("123456789abcdef",tolower(substr(id,6,1)))*256
reg+=index("123456789abcdef",tolower(substr(id,5,1)))*4096
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
# seems to be a write
if (idlen>3) idlen=3
else if (len[i]<=1) idlen--;
printf "w,unknown" zz ","