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 #!/bin/sh
echo "grab result"|nc localhost 8888|awk ' ebusctl grab result|awk '
BEGIN{ BEGIN{
len[""]=0 len[""]=0
delete len[""] delete len[""]
found=0
} }
/grab disabled/ { /grab disabled/ {
print "enable grab first!" print "enable grab first!"
@@ -10,9 +11,10 @@ BEGIN{
} }
/.+/ { /.+/ {
len[substr($1,3)]=length($3)/2; len[substr($1,3)]=length($3)/2;
found=1
} }
END { 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" print "# type (r[1-9];w;u),circuit,name,[comment],[QQ],ZZ,PBSB,[ID],field1,part (m/s),datatypes/templates"
for (i in len) { for (i in len) {
zz=substr(i,1,2) zz=substr(i,1,2)
@@ -20,22 +22,28 @@ END {
id=substr(i,9) id=substr(i,9)
idlen=length(id)/2 idlen=length(id)/2
if (pbsb=="b509" && substr(id,1,2)=="0d") { if (pbsb=="b509" && substr(id,1,2)=="0d") {
//register read # register read
reg=strtonum("0x" substr(id,3,2)) reg=index("123456789abcdef",tolower(substr(id,4,1)))
reg+=strtonum("0x" substr(id,5,2))*256 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) 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") { } else if (pbsb=="b509" && substr(id,1,2)=="0e") {
//register write # register write
reg=strtonum("0x" substr(id,3,2)) reg=index("123456789abcdef",tolower(substr(id,4,1)))
reg+=strtonum("0x" substr(id,5,2))*256 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) 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") { } else if (pbsb=="b509" && substr(id,1,2)=="29") {
//register update # register update
reg=strtonum("0x" substr(id,3,2)) reg=index("123456789abcdef",tolower(substr(id,4,1)))
reg+=strtonum("0x" substr(id,5,2))*256 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) 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) { } else if (len[i]<=1 || idlen>3) {
//seems to be a write # seems to be a write
if (idlen>3) idlen=3 if (idlen>3) idlen=3
else if (len[i]<=1) idlen--; else if (len[i]<=1) idlen--;
printf "w,unknown" zz "," printf "w,unknown" zz ","