93 lines
2.2 KiB
Awk
Executable File
93 lines
2.2 KiB
Awk
Executable File
#!/usr/bin/awk -f
|
|
|
|
BEGIN {
|
|
|
|
servicesFile = "../src/Span.h"
|
|
charsFile = "../src/Characteristics.h"
|
|
|
|
ws="[ \t,();]+" # regexp of separators
|
|
ltws="^" ws "|" ws "$" # regexp of leading and training separators
|
|
|
|
nServs=0
|
|
|
|
while(getline < servicesFile ){
|
|
|
|
gsub(ltws,"") # strip out leading or trailing separators
|
|
n=split($0,x,ws) # split line by separators
|
|
|
|
if(x[1]=="CREATE_SERV"){
|
|
currentService=x[2]
|
|
services[nServs++]=currentService
|
|
uuid[currentService]=x[3]
|
|
nChars[currentService]=0
|
|
desc[currentService]="Placeholder for description of Service"
|
|
}
|
|
|
|
else if(x[1]=="REQ" || x[1]=="OPT"){
|
|
servChars[currentService,nChars[currentService]]=x[2]
|
|
servReq[currentService,nChars[currentService]]=(x[1]=="REQ")
|
|
nChars[currentService]++
|
|
}
|
|
|
|
else if(x[1]=="CREATE_CHAR"){
|
|
char=x[3]
|
|
default[char]=x[4]
|
|
min[char]=x[5]
|
|
max[char]=x[6]
|
|
nVals[char]=n-6 # number of pre-defined constants
|
|
for(i=0;i<nVals[char];i++)
|
|
vals[char,i]=x[i+7]
|
|
}
|
|
|
|
}
|
|
|
|
close(servicesFile)
|
|
|
|
while(getline < charsFile){
|
|
|
|
gsub(ltws,"") # strip out leading or trailing separators
|
|
n=split($0,x,ws) # split line by separators
|
|
|
|
if(x[1]=="HAPCHAR"){
|
|
char=x[2]
|
|
uuid[char]=x[3]
|
|
perms[char]=x[4]
|
|
format[char]=tolower(x[5])
|
|
static[char]=x[6]
|
|
}
|
|
|
|
}
|
|
|
|
close(charsFile)
|
|
|
|
for(i=0;i<nServs;i++){
|
|
s=services[i]
|
|
printf("## %s (%s)\n",s,uuid[s])
|
|
printf("<details><summary>%s</summary><br><table>\n",desc[s])
|
|
printf("<tr><th>Characteristic</th><th>UUID</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants</th></tr>\n")
|
|
for(j=0;j<nChars[s];j++){
|
|
char=servChars[s,j]
|
|
printf("<tr>")
|
|
printf("<td>%s%s</td>",char,servReq[s,j]?" *":"")
|
|
printf("<td align=\"center\">%s</td>",uuid[char])
|
|
printf("<td align=\"center\">%s</td>",format[char])
|
|
printf("<td align=\"center\">%s</td>",perms[char])
|
|
|
|
if(format[char]!="string")
|
|
printf("<td align=\"center\">%s</td><td align=\"center\">%s</td>",min[char],max[char])
|
|
else
|
|
printf("<td align=\"center\">-</td><td align=\"center\">-</td>")
|
|
|
|
printf("<td><ul>")
|
|
for(k=0;k<nVals[char];k++)
|
|
printf("<li>%s (%d)</li>",vals[char,k],k)
|
|
|
|
printf("</ul></td></tr>\n")
|
|
}
|
|
printf("</table><br></details>\n\n")
|
|
}
|
|
|
|
}
|
|
|
|
|