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:
@@ -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 ","
|
||||||
|
|||||||
Reference in New Issue
Block a user