1#!/usr/bin/env python 2# 3# Create project files for all BTstack embedded examples in local port/renesas-tb-s1ja-cc256x folder 4 5import os 6import shutil 7import sys 8import time 9import subprocess 10 11# use for CC2564B 12# init_script = 'bluetooth_init_cc2564B_1.8_BT_Spec_4.1.c' 13 14# use for CC2564C 15init_script = 'bluetooth_init_cc2564C_1.3.c' 16 17gatt_update_template = '''#!/bin/sh 18DIR=`dirname $0` 19BTSTACK_ROOT=$DIR/../../../.. 20echo "Creating EXAMPLE.h from EXAMPLE.gatt" 21$BTSTACK_ROOT/tool/compile_gatt.py $BTSTACK_ROOT/example/EXAMPLE.gatt $DIR/EXAMPLE.h 22''' 23 24def fetch_init_script(): 25 # print("Fetch CC256x initscript: " + init_script) 26 # subprocess.call("make -f ../../chipset/cc256x/Makefile.inc BTSTACK_ROOT=../.. " + init_script, shell=True) 27 print("Using local CC256x initscript: " + init_script) 28 29def create_folder(path): 30 if os.path.exists(path): 31 shutil.rmtree(path) 32 os.makedirs(path) 33 34def create_examples(port_folder, suffix): 35 # path to examples 36 examples_embedded = port_folder + "/../../example/" 37 38 # path to project template 39 project_template = port_folder + "/template/btstack_example/" 40 41 # path to example projects 42 example_folder = port_folder + "/example" + suffix + "/" 43 44 print("Creating example folder") 45 create_folder(example_folder) 46 47 print("Creating example projects in example folder") 48 49 # iterate over btstack examples 50 for file in os.listdir(examples_embedded): 51 if not file.endswith(".c"): 52 continue 53 if file in ['panu_demo.c', 'sco_demo_util.c', 'ant_test.c']: 54 continue 55 56 example = file[:-2] 57 gatt_path = examples_embedded + example + ".gatt" 58 59 # create project folder 60 project_folder = example_folder + example + "/" 61 create_folder(project_folder) 62 63 # copy some folders 64 for folder in ['.settings', 'script', 'synergy', 'synergy_cfg']: 65 src = project_template + folder 66 dst = project_folder + folder 67 shutil.copytree(src, dst) 68 69 # copy some files 70 for file in ['configuration.xml', 'synergy_cfg.txt', 'TB_S1JA.pincfg']: 71 shutil.copy(project_template + file, project_folder) 72 73 # create src folder 74 src_folder = project_folder + 'src/' 75 create_folder(src_folder) 76 77 # copy files skipping example.c and gatt_streamer_server.h 78 for file in ['btstack_config.h', 'hal_entry.c']: 79 shutil.copy(project_template + "src/" + file, src_folder) 80 81 # copy synergy_gen 82 src = project_template + 'src/synergy_gen' 83 dst = project_folder + 'src/synergy_gen' 84 shutil.copytree(src, dst) 85 86 # copy example file 87 shutil.copyfile(examples_embedded + example + '.c', src_folder + example + ".c") 88 89 # copy init script 90 shutil.copy(port_folder + "/" + init_script, src_folder) 91 92 # add sco_demo_util.c for audio examples 93 if example in ['hfp_ag_demo','hfp_hf_demo', 'hsp_ag_demo', 'hsp_hs_demo']: 94 shutil.copy(examples_embedded + 'sco_demo_util.c', src_folder) 95 shutil.copy(examples_embedded + 'sco_demo_util.h', src_folder) 96 97 # update project files 98 for file in ['.project', '.cproject']: 99 with open(project_template + file, 'r') as fin: 100 template = fin.read() 101 with open(project_folder + file, 'wt') as fout: 102 template = template.replace("btstack_example", example) 103 fout.write(template) 104 105 # copy jlink and launch files 106 shutil.copy(project_template + 'btstack_port Debug.jlink', project_folder + example + ' Debug.jlink' ) 107 shutil.copy(project_template + 'btstack_port Debug.launch', project_folder + example + ' Debug.launch') 108 109 # generate .h from .gatt 110 gatt_path = examples_embedded + example + ".gatt" 111 if os.path.exists(gatt_path): 112 update_gatt_script = project_folder + "update_gatt_db.sh" 113 with open(update_gatt_script, "wt") as fout: 114 fout.write(gatt_update_template.replace("EXAMPLE", example)) 115 os.chmod(update_gatt_script, 0o755) 116 subprocess.call("sh " + update_gatt_script, shell=True) 117 print("- %s - converting GATT DB" % example) 118 else: 119 print("- %s" % example) 120 121if __name__ == '__main__': 122 # get script path 123 port_folder = os.path.abspath(os.path.dirname(sys.argv[0])) 124 suffix = '' 125 if len(sys.argv) > 1: 126 suffix = sys.argv[1] 127 fetch_init_script() 128 create_examples(port_folder, suffix) 129 130 131