btstack/port/apollo2-em9304/create_examples.py

89 lines
2.9 KiB
Python
Executable File

#!/usr/bin/env python
#
# Create project files for all BTstack embedded examples in AmbiqSuite/boards/apollo2_evb_am_ble
import os
import shutil
import sys
import time
import subprocess
makefile_gatt_add_on = '''
$(CONFIG)/EXAMPLE.o: $(CONFIG)/EXAMPLE.h
$(CONFIG)/EXAMPLE.h: ../../../../../third_party/btstack/example/EXAMPLE.gatt
\t../../../../../third_party/btstack/tool/compile_gatt.py $^ $@
'''
# get script path
script_path = os.path.abspath(os.path.dirname(sys.argv[0]))
# validate AmbiqSuite root by reading VERSION.txt
am_root = script_path + "/../../../../"
am_version_txt = ""
try:
with open(am_root + 'VERSION.txt', 'r') as fin:
am_version_txt = fin.read() # Read the contents of the file into memory.
except:
pass
if len(am_version_txt) == 0:
print("Cannot find AmbiqSuite root. Make sure BTstack is checked out as AmbiqSuite/third/btstack");
sys.exit(1)
# show WICED version
print("Found AmbiqSuite SDK version: %s" % am_version_txt)
# path to examples
examples_embedded = script_path + "/../../example/"
# path to example template
example_template = script_path + "/example-template/"
# path to AmbiqSuite/boards/apollo2_evb_am_ble/examples
apps_btstack = am_root + "/boards/apollo2_evb_am_ble/examples/"
print("Creating examples in /boards/apollo2_evb_am_ble/examples:")
LE_EXAMPLES = ["ancs_client_demo", "gap_le_advertisements", "gatt_battery_query", "gatt_browser", "le_counter", "le_streamer", "le_streamer_client", "sm_pairing_peripheral", "sm_pairing_central"]
# iterate over btstack examples
for example in LE_EXAMPLES:
# create example folder
apps_folder = apps_btstack + "btstack_" + example + "/"
if not os.path.exists(apps_folder):
os.makedirs(apps_folder)
# copy project makefile
shutil.copyfile(example_template + "Makefile", apps_folder + "Makefile");
# create GCC folder
gcc_folder = apps_folder + "/gcc/"
if not os.path.exists(gcc_folder):
os.makedirs(gcc_folder)
# add rule to generate .h file in src folder if .gatt is present
gatt_path = examples_embedded + example + ".gatt"
need_h = False
if os.path.exists(gatt_path):
# create src folder
src_folder = apps_folder + "/src/"
if not os.path.exists(src_folder):
os.makedirs(src_folder)
need_h = True
# copy makefile and update project name
with open(gcc_folder + 'Makefile', "wt") as fout:
with open(example_template + 'gcc/Makefile', "rt") as fin:
for line in fin:
fout.write(line.replace('TARGET := EXAMPLE', 'TARGET := ' + example))
if (need_h):
fout.write(makefile_gatt_add_on.replace("EXAMPLE",example))
fout.write("INCLUDES += -I${CONFIG}\n")
# copy other files
for file in ['startup_gcc.c', 'btstack_template.ld']:
shutil.copyfile(example_template + "gcc/" + file, apps_folder + "/gcc/" + file);
print("- %s" % example)