1CONFIG_BT=y
2CONFIG_BT_SMP=y
3CONFIG_BT_PERIPHERAL=y
4CONFIG_BT_DIS=y
5CONFIG_BT_DIS_PNP=n
6CONFIG_BT_BAS=y
7CONFIG_BT_HRS=y
8CONFIG_BT_DEVICE_NAME="Zephyr Heartrate Sensor"
9CONFIG_BT_DEVICE_APPEARANCE=833
10
11# Drivers and peripherals
12CONFIG_I2C=n
13CONFIG_WATCHDOG=n
14CONFIG_PINCTRL=n
15CONFIG_SPI=n
16CONFIG_GPIO=n
17CONFIG_SERIAL=n
18
19# Power management
20CONFIG_PM=n
21
22# Interrupts
23CONFIG_DYNAMIC_INTERRUPTS=n
24CONFIG_IRQ_OFFLOAD=n
25
26# Memory protection
27CONFIG_THREAD_STACK_INFO=n
28CONFIG_THREAD_CUSTOM_DATA=n
29CONFIG_FPU=n
30
31# Boot
32CONFIG_BOOT_BANNER=n
33CONFIG_BOOT_DELAY=0
34
35# Console
36CONFIG_CONSOLE=n
37CONFIG_UART_CONSOLE=n
38CONFIG_STDOUT_CONSOLE=n
39CONFIG_PRINTK=n
40CONFIG_EARLY_CONSOLE=n
41
42# Build
43CONFIG_SIZE_OPTIMIZATIONS=y
44
45# ARM
46CONFIG_ARM_MPU=n
47CONFIG_BUILTIN_STACK_GUARD=n
48
49# In order to correctly tune the stack sizes for the threads the following
50# Configurations can enabled to print the current use:
51# CONFIG_THREAD_NAME=y
52# CONFIG_THREAD_ANALYZER=y
53# CONFIG_THREAD_ANALYZER_AUTO=y
54# CONFIG_THREAD_ANALYZER_RUN_UNLOCKED=y
55# CONFIG_THREAD_ANALYZER_USE_PRINTK=y
56# CONFIG_THREAD_ANALYZER_AUTO_INTERVAL=20
57# CONFIG_CONSOLE=y
58# CONFIG_UART_CONSOLE=y
59# CONFIG_SERIAL=y
60# CONFIG_PRINTK=y
61
62# Example output of thread analyzer
63# BT RX               : STACK: unused 576 usage 448 / 1024 (43 %); CPU: 0 %
64# BT RX pri           : STACK: unused 260 usage 188 / 448 (41 %); CPU: 0 %
65# BT ECC              : STACK: unused 256 usage 888 / 1144 (77 %); CPU: 1 %
66# BT TX               : STACK: unused 296 usage 344 / 640 (53 %); CPU: 0 %
67# thread_analyzer     : STACK: unused 128 usage 384 / 512 (75 %); CPU: 1 %
68# sysworkq            : STACK: unused 856 usage 168 / 1024 (16 %); CPU: 0 %
69# logging             : STACK: unused 232 usage 536 / 768 (69 %); CPU: 0 %
70# idle 00             : STACK: unused 208 usage 48 / 256 (18 %); CPU: 97 %
71# main                : STACK: unused 576 usage 448 / 1024 (43 %); CPU: 0 %
72CONFIG_BT_RX_STACK_SIZE=1024
73CONFIG_BT_HCI_TX_STACK_SIZE_WITH_PROMPT=y
74CONFIG_BT_HCI_TX_STACK_SIZE=640
75CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1100
76CONFIG_BT_LONG_WQ_STACK_SIZE=1100
77CONFIG_IDLE_STACK_SIZE=128
78CONFIG_MAIN_STACK_SIZE=640
79CONFIG_ISR_STACK_SIZE=1024
80
81# Disable features not needed
82CONFIG_TIMESLICING=n
83CONFIG_COMMON_LIBC_MALLOC=n
84CONFIG_LOG=n
85CONFIG_ASSERT=n
86
87# Disable Bluetooth features not needed
88# CONFIG_BT_DEBUG_NONE=y
89CONFIG_BT_ASSERT=n
90CONFIG_BT_DATA_LEN_UPDATE=n
91CONFIG_BT_PHY_UPDATE=n
92CONFIG_BT_GATT_CACHING=n
93CONFIG_BT_GATT_SERVICE_CHANGED=n
94CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=n
95CONFIG_BT_HCI_VS=n
96CONFIG_BT_CONN_DYNAMIC_CALLBACKS=n
97
98# Reduce Bluetooth buffers
99CONFIG_BT_BUF_EVT_DISCARDABLE_COUNT=1
100CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=45
101CONFIG_BT_BUF_EVT_RX_COUNT=4
102
103CONFIG_BT_L2CAP_TX_BUF_COUNT=2
104CONFIG_BT_BUF_ACL_TX_COUNT=3
105CONFIG_BT_BUF_ACL_TX_SIZE=27
106
107# Limit the number of key slots in PSA Crypto core to reduce
108# RAM footprint
109CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT=5
110
111# This is required because otherwise there won't be
112# __heap_start/__heap_end symbols defined in the build. This
113# is due to Mbed TLS which at boot uses standard calloc/free
114# functions and only after the initialization done from Zephyr
115# it switches to its internal memory management functions.
116CONFIG_COMMON_LIBC_MALLOC=y
117