mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-01-05 21:59:45 +00:00
92 lines
2.7 KiB
Python
92 lines
2.7 KiB
Python
#!/usr/bin/env python
|
|
import os
|
|
import re
|
|
import sys
|
|
|
|
class State:
|
|
SearchStartAPI = 0
|
|
RemoveEmptyLinesAfterAPIStart = 1
|
|
SearchEndAPI = 2
|
|
DoneAPI = 3
|
|
|
|
docs_folder = ""
|
|
appendix_file = docs_folder + "appendix_apis.tex"
|
|
|
|
api_header = """% !TEX root = btstack_gettingstarted.tex
|
|
\section{API_TITLE API}
|
|
\label{appendix:API_LABLE}
|
|
$ $
|
|
\\begin{lstlisting}
|
|
"""
|
|
|
|
api_ending = """\end{lstlisting}
|
|
\pagebreak
|
|
"""
|
|
|
|
# [file_name, api_title, api_lable]
|
|
list_of_apis = [
|
|
["../../include/btstack/run_loop.h", "Run Loop", "api_run_loop"],
|
|
["../../src/hci.h", "HCI", "api_hci"],
|
|
["../../src/l2cap.h", "L2CAP", "api_l2cap"],
|
|
["../../src/rfcomm.h", "RFCOMM", "api_rfcomm"],
|
|
["../../src/sdp.h", "SDP", "api_sdp"],
|
|
["../../src/sdp_client.h", "SDP Client", "api_sdp_client"],
|
|
["../../src/sdp_query_rfcomm.h", "SDP RFCOMM Query", "api_sdp_queries"],
|
|
["../../ble/gatt_client.h", "GATT Client", "api_gatt_client"],
|
|
["../../src/pan.h", "PAN", "api_pan"],
|
|
["../../src/bnep.h", "BNEP", "api_bnep"],
|
|
["../../src/gap.h", "GAP", "api_gap"],
|
|
["../../ble/sm.h", "SM", "api_sm"]
|
|
]
|
|
|
|
def replacePlaceholder(template, title, lable):
|
|
api_title = title + " API"
|
|
snippet = template.replace("API_TITLE", title).replace("API_LABLE", lable)
|
|
return snippet
|
|
|
|
def writeAPI(fout, infile_name):
|
|
state = State.SearchStartAPI
|
|
with open(infile_name, 'rb') as fin:
|
|
for line in fin:
|
|
if state == State.SearchStartAPI:
|
|
parts = re.match('\s*(/\*).*API_START.*(\*/)',line)
|
|
if parts:
|
|
state = State.RemoveEmptyLinesAfterAPIStart
|
|
continue
|
|
|
|
if state == State.RemoveEmptyLinesAfterAPIStart:
|
|
if line == "" or line == "\n":
|
|
continue
|
|
state = State.SearchEndAPI
|
|
|
|
if state == State.SearchEndAPI:
|
|
parts = re.match('\s*(/\*).*API_END.*(\*/)',line)
|
|
if parts:
|
|
state = State.DoneAPI
|
|
return
|
|
fout.write(line)
|
|
|
|
for api_tuple in list_of_apis:
|
|
infile_name = api_tuple[0]
|
|
if not infile_name:
|
|
continue
|
|
|
|
api_title = api_tuple[1]
|
|
api_lable = api_tuple[2]
|
|
outfile_name = docs_folder + api_lable + ".tex"
|
|
|
|
with open(outfile_name, 'w') as fout:
|
|
fout.write(replacePlaceholder(api_header, api_title, api_lable))
|
|
writeAPI(fout, infile_name)
|
|
fout.write(api_ending)
|
|
|
|
|
|
with open(appendix_file, 'w') as aout:
|
|
aout.write("% !TEX root = btstack_gettingstarted.tex\n\n")
|
|
for api_tuple in list_of_apis:
|
|
infile_name = api_tuple[0]
|
|
if not infile_name:
|
|
continue
|
|
tex_input = "\input{" + api_tuple[2]+ "}\n"
|
|
aout.write(tex_input)
|