1if BLE_MESH
2
3    config BLE_MESH_HCI_5_0
4        bool "Support sending 20ms non-connectable adv packets"
5        default y
6        help
7            It is a temporary solution and needs further modifications.
8
9    config BLE_MESH_RANDOM_ADV_INTERVAL
10        bool "Support using random adv interval for mesh packets"
11        select BT_BLE_HIGH_DUTY_ADV_INTERVAL if BT_BLUEDROID_ENABLED
12        select BT_NIMBLE_HIGH_DUTY_ADV_ITVL if BT_NIMBLE_ENABLED
13        default n
14        help
15            Enable this option to allow using random advertising interval
16            for mesh packets. And this could help avoid collision of
17            advertising packets.
18
19    config BLE_MESH_USE_DUPLICATE_SCAN
20        bool "Support Duplicate Scan in BLE Mesh"
21        select BTDM_BLE_SCAN_DUPL if IDF_TARGET_ESP32
22        select BTDM_BLE_MESH_SCAN_DUPL_EN if IDF_TARGET_ESP32
23        select BT_CTRL_BLE_SCAN_DUPL if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3
24        select BT_CTRL_BLE_MESH_SCAN_DUPL_EN if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3
25        select BT_LE_SCAN_DUPL if IDF_TARGET_ESP32C6 || IDF_TARGET_ESP32H2
26        select BT_NIMBLE_VS_SUPPORT if BT_NIMBLE_ENABLED
27        default y
28        help
29            Enable this option to allow using specific duplicate scan filter
30            in BLE Mesh, and Scan Duplicate Type must be set by choosing the
31            option in the Bluetooth Controller section in menuconfig, which is
32            "Scan Duplicate By Device Address and Advertising Data".
33
34    choice BLE_MESH_MEM_ALLOC_MODE
35        prompt "Memory allocation strategy"
36        default BLE_MESH_MEM_ALLOC_MODE_INTERNAL
37        help
38            Allocation strategy for BLE Mesh stack, essentially provides ability to
39            allocate all required dynamic allocations from,
40
41            - Internal DRAM memory only
42            - External SPIRAM memory only
43            - Either internal or external memory based on default malloc()
44              behavior in ESP-IDF
45            - Internal IRAM memory wherever applicable else internal DRAM
46
47            Recommended mode here is always internal (*), since that is most preferred
48            from security perspective. But if application requirement does not
49            allow sufficient free internal memory then alternate mode can be
50            selected.
51
52            (*) In case of ESP32-S2/ESP32-S3, hardware allows encryption of external
53            SPIRAM contents provided hardware flash encryption feature is enabled.
54            In that case, using external SPIRAM allocation strategy is also safe choice
55            from security perspective.
56
57        config BLE_MESH_MEM_ALLOC_MODE_INTERNAL
58            bool "Internal DRAM"
59
60        config BLE_MESH_MEM_ALLOC_MODE_EXTERNAL
61            bool "External SPIRAM"
62            depends on SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC
63
64        config BLE_MESH_MEM_ALLOC_MODE_DEFAULT
65            bool "Default alloc mode"
66            help
67                Enable this option to use the default memory allocation strategy when
68                external SPIRAM is enabled. See the SPIRAM options for more details.
69
70        config BLE_MESH_MEM_ALLOC_MODE_IRAM_8BIT
71            bool "Internal IRAM"
72            depends on ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY
73            help
74                Allows to use IRAM memory region as 8bit accessible region. Every
75                unaligned (8bit or 16bit) access will result in an exception and
76                incur penalty of certain clock cycles per unaligned read/write.
77
78    endchoice # BLE_MESH_MEM_ALLOC_MODE
79
80    config BLE_MESH_FREERTOS_STATIC_ALLOC
81        bool "Enable FreeRTOS static allocation"
82        depends on FREERTOS_SUPPORT_STATIC_ALLOCATION && ((IDF_TARGET_ESP32 && SPIRAM) || ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY) # NOERROR
83        default n
84        help
85            Enable this option to use FreeRTOS static allocation APIs for BLE Mesh,
86            which provides the ability to use different dynamic memory (i.e. SPIRAM
87            or IRAM) for FreeRTOS objects.
88            If this option is disabled, the FreeRTOS static allocation APIs will not
89            be used, and internal DRAM will be allocated for FreeRTOS objects.
90
91    choice BLE_MESH_FREERTOS_STATIC_ALLOC_MODE
92        prompt "Memory allocation for FreeRTOS objects"
93        depends on BLE_MESH_FREERTOS_STATIC_ALLOC
94        help
95            Choose the memory to be used for FreeRTOS objects.
96
97        config BLE_MESH_FREERTOS_STATIC_ALLOC_EXTERNAL
98            bool "External SPIRAM"
99            depends on IDF_TARGET_ESP32 && SPIRAM
100            help
101                If enabled, BLE Mesh allocates dynamic memory from external SPIRAM for
102                FreeRTOS objects, i.e. mutex, queue, and task stack. External SPIRAM
103                can only be used for task stack when SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY
104                is enabled. See the SPIRAM options for more details.
105
106        config BLE_MESH_FREERTOS_STATIC_ALLOC_IRAM_8BIT
107            bool "Internal IRAM"
108            depends on ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY
109            help
110                If enabled, BLE Mesh allocates dynamic memory from internal IRAM for
111                FreeRTOS objects, i.e. mutex, queue. Note: IRAM region cannot be used
112                as task stack.
113
114    endchoice # BLE_MESH_FREERTOS_STATIC_ALLOC_MODE
115
116    config BLE_MESH_DEINIT
117        bool "Support de-initialize BLE Mesh stack"
118        default y
119        help
120            If enabled, users can use the function esp_ble_mesh_deinit() to de-initialize
121            the whole BLE Mesh stack.
122
123    menu "BLE Mesh and BLE coexistence support"
124
125        config BLE_MESH_SUPPORT_BLE_ADV
126            bool "Support sending normal BLE advertising packets"
127            default n
128            help
129                When selected, users can send normal BLE advertising packets
130                with specific API.
131
132        if BLE_MESH_SUPPORT_BLE_ADV
133
134            config BLE_MESH_BLE_ADV_BUF_COUNT
135                int "Number of advertising buffers for BLE advertising packets"
136                default 3
137                range 1 255
138                help
139                    Number of advertising buffers for BLE packets available.
140
141        endif # BLE_MESH_SUPPORT_BLE_ADV
142
143        config BLE_MESH_SUPPORT_BLE_SCAN
144            bool "Support scanning normal BLE advertising packets"
145            default n
146            help
147                When selected, users can register a callback and receive normal BLE
148                advertising packets in the application layer.
149
150    endmenu # BLE Mesh and BLE coexistence support
151
152    config BLE_MESH_FAST_PROV
153        bool "Enable BLE Mesh Fast Provisioning"
154        select BLE_MESH_NODE
155        select BLE_MESH_PROVISIONER
156        select BLE_MESH_PB_ADV
157        default n
158        help
159            Enable this option to allow BLE Mesh fast provisioning solution to be used.
160            When there are multiple unprovisioned devices around, fast provisioning can
161            greatly reduce the time consumption of the whole provisioning process.
162            When this option is enabled, and after an unprovisioned device is provisioned
163            into a node successfully, it can be changed to a temporary Provisioner.
164
165    config BLE_MESH_NODE
166        bool "Support for BLE Mesh Node"
167        help
168            Enable the device to be provisioned into a node. This option should be
169            enabled when an unprovisioned device is going to be provisioned into a
170            node and communicate with other nodes in the BLE Mesh network.
171
172    config BLE_MESH_PROVISIONER
173        bool "Support for BLE Mesh Provisioner"
174        help
175            Enable the device to be a Provisioner. The option should be enabled when
176            a device is going to act as a Provisioner and provision unprovisioned
177            devices into the BLE Mesh network.
178
179    if BLE_MESH_PROVISIONER
180
181        config BLE_MESH_WAIT_FOR_PROV_MAX_DEV_NUM
182            int "Maximum number of unprovisioned devices that can be added to device queue"
183            default 10
184            range 1 100
185            help
186                This option specifies how many unprovisioned devices can be added to device
187                queue for provisioning. Users can use this option to define the size of the
188                queue in the bottom layer which is used to store unprovisioned device
189                information (e.g. Device UUID, address).
190
191        config BLE_MESH_MAX_PROV_NODES
192            int "Maximum number of devices that can be provisioned by Provisioner"
193            default 10
194            range 1 1000
195            help
196                This option specifies how many devices can be provisioned by a Provisioner.
197                This value indicates the maximum number of unprovisioned devices which can be
198                provisioned by a Provisioner. For instance, if the value is 6, it means the
199                Provisioner can provision up to 6 unprovisioned devices.
200                Theoretically a Provisioner without the limitation of its memory can provision
201                up to 32766 unprovisioned devices, here we limit the maximum number to 100
202                just to limit the memory used by a Provisioner. The bigger the value is, the
203                more memory it will cost by a Provisioner to store the information of nodes.
204
205        if BLE_MESH_PB_ADV
206            config BLE_MESH_PBA_SAME_TIME
207                int "Maximum number of PB-ADV running at the same time by Provisioner"
208                default 2
209                range 1 10
210                help
211                    This option specifies how many devices can be provisioned at the same time
212                    using PB-ADV. For examples, if the value is 2, it means a Provisioner can
213                    provision two unprovisioned devices with PB-ADV at the same time.
214
215        endif # BLE_MESH_PB_ADV
216
217        if BLE_MESH_PB_GATT
218            config BLE_MESH_PBG_SAME_TIME
219                int "Maximum number of PB-GATT running at the same time by Provisioner"
220                default 1
221                range 1 5
222                help
223                    This option specifies how many devices can be provisioned at the same
224                    time using PB-GATT. For example, if the value is 2, it means a Provisioner
225                    can provision two unprovisioned devices with PB-GATT at the same time.
226
227        endif # BLE_MESH_PB_GATT
228
229        config BLE_MESH_PROVISIONER_SUBNET_COUNT
230            int "Maximum number of mesh subnets that can be created by Provisioner"
231            default 3
232            range 1 4096
233            help
234                This option specifies how many subnets per network a Provisioner can create.
235                Indeed, this value decides the number of network keys which can be added by a Provisioner.
236
237        config BLE_MESH_PROVISIONER_APP_KEY_COUNT
238            int "Maximum number of application keys that can be owned by Provisioner"
239            default 3
240            range 1 4096
241            help
242                This option specifies how many application keys the Provisioner can have.
243                Indeed, this value decides the number of the application keys which can be added by a Provisioner.
244
245        config BLE_MESH_PROVISIONER_RECV_HB
246            bool "Support receiving Heartbeat messages"
247            default n
248            help
249                When this option is enabled, Provisioner can call specific functions to enable
250                or disable receiving Heartbeat messages and notify them to the application layer.
251
252        if BLE_MESH_PROVISIONER_RECV_HB
253
254            config BLE_MESH_PROVISIONER_RECV_HB_FILTER_SIZE
255                int "Maximum number of filter entries for receiving Heartbeat messages"
256                default 3
257                range 1 1000
258                help
259                    This option specifies how many heartbeat filter entries Provisioner supports.
260                    The heartbeat filter (acceptlist or rejectlist) entries are used to store a
261                    list of SRC and DST which can be used to decide if a heartbeat message will
262                    be processed and notified to the application layer by Provisioner.
263                    Note: The filter is an empty rejectlist by default.
264
265        endif # BLE_MESH_PROVISIONER_RECV_HB
266
267    endif # BLE_MESH_PROVISIONER
268
269    # Virtual option enabled whenever Generic Provisioning layer is needed
270    config BLE_MESH_PROV
271        bool "BLE Mesh Provisioning support"
272        default y
273        help
274            Enable this option to support BLE Mesh Provisioning functionality. For
275            BLE Mesh, this option should be always enabled.
276
277    config BLE_MESH_PB_ADV
278        bool "Provisioning support using the advertising bearer (PB-ADV)"
279        select BLE_MESH_PROV
280        default y
281        help
282            Enable this option to allow the device to be provisioned over the
283            advertising bearer. This option should be enabled if PB-ADV is
284            going to be used during provisioning procedure.
285
286    config BLE_MESH_UNPROVISIONED_BEACON_INTERVAL
287        int "Interval between two consecutive Unprovisioned Device Beacon"
288        depends on BLE_MESH_NODE && BLE_MESH_PB_ADV
289        default 5
290        default 3 if BLE_MESH_FAST_PROV
291        range 1 100
292        help
293            This option specifies the interval of sending two consecutive unprovisioned
294            device beacon, users can use this option to change the frequency of sending
295            unprovisioned device beacon. For example, if the value is 5, it means the
296            unprovisioned device beacon will send every 5 seconds. When the option of
297            BLE_MESH_FAST_PROV is selected, the value is better to be 3 seconds, or less.
298
299    config BLE_MESH_PB_GATT
300        bool "Provisioning support using GATT (PB-GATT)"
301        select BLE_MESH_PROXY
302        select BLE_MESH_PROV
303        help
304            Enable this option to allow the device to be provisioned over GATT.
305            This option should be enabled if PB-GATT is going to be used during
306            provisioning procedure.
307
308            # Virtual option enabled whenever any Proxy protocol is needed
309    config BLE_MESH_PROXY
310        bool "BLE Mesh Proxy protocol support"
311        default y
312        help
313            Enable this option to support BLE Mesh Proxy protocol used by PB-GATT
314            and other proxy pdu transmission.
315
316    config BLE_MESH_GATT_PROXY_SERVER
317        bool "BLE Mesh GATT Proxy Server"
318        select BLE_MESH_PROXY
319        depends on BLE_MESH_NODE
320        default y
321        help
322            This option enables support for Mesh GATT Proxy Service, i.e. the
323            ability to act as a proxy between a Mesh GATT Client and a Mesh network.
324            This option should be enabled if a node is going to be a Proxy Server.
325
326    config BLE_MESH_NODE_ID_TIMEOUT
327        int "Node Identity advertising timeout"
328        depends on BLE_MESH_GATT_PROXY_SERVER
329        range 1 60
330        default 60
331        help
332            This option determines for how long the local node advertises using
333            Node Identity. The given value is in seconds. The specification limits
334            this to 60 seconds and lists it as the recommended value as well.
335            So leaving the default value is the safest option.
336            When an unprovisioned device is provisioned successfully and becomes a
337            node, it will start to advertise using Node Identity during the time
338            set by this option. And after that, Network ID will be advertised.
339
340    config BLE_MESH_PROXY_FILTER_SIZE
341        int "Maximum number of filter entries per Proxy Client"
342        depends on BLE_MESH_GATT_PROXY_SERVER
343        default 4
344        range 1 32767
345        help
346            This option specifies how many Proxy Filter entries the local node supports.
347            The entries of Proxy filter (whitelist or blacklist) are used to store a
348            list of addresses which can be used to decide which messages will be forwarded
349            to the Proxy Client by the Proxy Server.
350
351    config BLE_MESH_GATT_PROXY_CLIENT
352        bool "BLE Mesh GATT Proxy Client"
353        select BLE_MESH_PROXY
354        default n
355        help
356            This option enables support for Mesh GATT Proxy Client. The Proxy Client
357            can use the GATT bearer to send mesh messages to a node that supports the
358            advertising bearer.
359
360    config BLE_MESH_NET_BUF_POOL_USAGE
361        bool
362        default y
363        help
364            Enable BLE Mesh net buffer pool tracking. This option is used to introduce another
365            variable in the bottom layer to record the usage of advertising buffers of BLE Mesh
366            devices. Recommend to enable this option as default.
367
368    config BLE_MESH_SETTINGS
369        bool "Store BLE Mesh configuration persistently"
370        default n
371        help
372            When selected, the BLE Mesh stack will take care of storing/restoring the BLE
373            Mesh configuration persistently in flash.
374            If the device is a BLE Mesh node, when this option is enabled, the configuration
375            of the device will be stored persistently, including unicast address, NetKey,
376            AppKey, etc.
377            And if the device is a BLE Mesh Provisioner, the information of the device will
378            be stored persistently, including the information of provisioned nodes, NetKey,
379            AppKey, etc.
380
381    if BLE_MESH_SETTINGS
382
383        config BLE_MESH_STORE_TIMEOUT
384            int "Delay (in seconds) before storing anything persistently"
385            range 0 1000000
386            default 0
387            help
388                This value defines in seconds how soon any pending changes are actually
389                written into persistent storage (flash) after a change occurs.
390                The option allows nodes to delay a certain period of time to save proper
391                information to flash. The default value is 0, which means information
392                will be stored immediately once there are updates.
393
394        config BLE_MESH_SEQ_STORE_RATE
395            int "How often the sequence number gets updated in storage"
396            range 0 1000000
397            default 0
398            help
399                This value defines how often the local sequence number gets updated in
400                persistent storage (i.e. flash). e.g. a value of 100 means that the
401                sequence number will be stored to flash on every 100th increment.
402                If the node sends messages very frequently a higher value makes more
403                sense, whereas if the node sends infrequently a value as low as 0
404                (update storage for every increment) can make sense. When the stack
405                gets initialized it will add sequence number to the last stored one,
406                so that it starts off with a value that's guaranteed to be larger than
407                the last one used before power off.
408
409        config BLE_MESH_RPL_STORE_TIMEOUT
410            int "Minimum frequency that the RPL gets updated in storage"
411            range 0 1000000
412            default 0
413            help
414                This value defines in seconds how soon the RPL (Replay Protection List)
415                gets written to persistent storage after a change occurs. If the node
416                receives messages frequently, then a large value is recommended. If the
417                node receives messages rarely, then the value can be as low as 0 (which
418                means the RPL is written into the storage immediately).
419                Note that if the node operates in a security-sensitive case, and there is
420                a risk of sudden power-off, then a value of 0 is strongly recommended.
421                Otherwise, a power loss before RPL being written into the storage may
422                introduce message replay attacks and system security will be in a
423                vulnerable state.
424
425        config BLE_MESH_SETTINGS_BACKWARD_COMPATIBILITY
426            bool "A specific option for settings backward compatibility"
427            depends on BLE_MESH_NODE
428            default n
429            help
430                This option is created to solve the issue of failure in recovering
431                node information after mesh stack updates. In the old version mesh
432                stack, there is no key of "mesh/role" in nvs. In the new version
433                mesh stack, key of "mesh/role" is added in nvs, recovering node
434                information needs to check "mesh/role" key in nvs and implements
435                selective recovery of mesh node information. Therefore, there may
436                be failure in recovering node information during node restarting
437                after OTA.
438
439                The new version mesh stack adds the option of "mesh/role" because
440                we have added the support of storing Provisioner information, while
441                the old version only supports storing node information.
442
443                If users are updating their nodes from old version to new version,
444                we recommend enabling this option, so that system could set the flag
445                in advance before recovering node information and make sure the node
446                information recovering could work as expected.
447
448        config BLE_MESH_SPECIFIC_PARTITION
449            bool "Use a specific NVS partition for BLE Mesh"
450            default n
451            help
452                When selected, the mesh stack will use a specified NVS partition instead of
453                default NVS partition. Note that the specified partition must be registered
454                with NVS using nvs_flash_init_partition() API, and the partition must exists
455                in the csv file.
456                When Provisioner needs to store a large amount of nodes' information in the
457                flash (e.g. more than 20), this option is recommended to be enabled.
458
459        config BLE_MESH_PARTITION_NAME
460            string "Name of the NVS partition for BLE Mesh"
461            depends on BLE_MESH_SPECIFIC_PARTITION
462            default "ble_mesh"
463            help
464                This value defines the name of the specified NVS partition used by the
465                mesh stack.
466
467        config BLE_MESH_USE_MULTIPLE_NAMESPACE
468            bool "Support using multiple NVS namespaces by Provisioner"
469            depends on BLE_MESH_PROVISIONER
470            default n
471            help
472                When selected, Provisioner can use different NVS namespaces to store
473                different instances of mesh information.
474                For example, if in the first room, Provisioner uses NetKey A, AppKey
475                A and provisions three devices, these information will be treated as
476                mesh information instance A. When the Provisioner moves to the second
477                room, it uses NetKey B, AppKey B and provisions two devices, then the
478                information will be treated as mesh information instance B.
479                Here instance A and instance B will be stored in different namespaces.
480                With this option enabled, Provisioner needs to use specific functions
481                to open the corresponding NVS namespace, restore the mesh information,
482                release the mesh information or erase the mesh information.
483
484        config BLE_MESH_MAX_NVS_NAMESPACE
485            int "Maximum number of NVS namespaces"
486            depends on BLE_MESH_USE_MULTIPLE_NAMESPACE
487            default 2
488            range 1 255
489            help
490                This option specifies the maximum NVS namespaces supported by Provisioner.
491
492    endif  # if BLE_MESH_SETTINGS
493
494    config BLE_MESH_SUBNET_COUNT
495        int "Maximum number of mesh subnets per network"
496        default 3
497        range 1 4096
498        help
499            This option specifies how many subnets a Mesh network can have at the same time.
500            Indeed, this value decides the number of the network keys which can be owned by a node.
501
502    config BLE_MESH_APP_KEY_COUNT
503        int "Maximum number of application keys per network"
504        default 3
505        range 1 4096
506        help
507            This option specifies how many application keys the device can store per network.
508            Indeed, this value decides the number of the application keys which can be owned by a node.
509
510    config BLE_MESH_MODEL_KEY_COUNT
511        int "Maximum number of application keys per model"
512        default 3
513        range 1 4096
514        help
515            This option specifies the maximum number of application keys to which each model
516            can be bound.
517
518    config BLE_MESH_MODEL_GROUP_COUNT
519        int "Maximum number of group address subscriptions per model"
520        default 3
521        range 1 4096
522        help
523            This option specifies the maximum number of addresses to which each model can
524            be subscribed.
525
526    config BLE_MESH_LABEL_COUNT
527        int "Maximum number of Label UUIDs used for Virtual Addresses"
528        default 3
529        range 0 4096
530        help
531            This option specifies how many Label UUIDs can be stored.
532            Indeed, this value decides the number of the Virtual Addresses can be supported by a node.
533
534    config BLE_MESH_CRPL
535        int "Maximum capacity of the replay protection list"
536        default 10
537        range 2 65535
538        help
539            This option specifies the maximum capacity of the replay protection list.
540            It is similar to Network message cache size, but has a different purpose.
541            The replay protection list is used to prevent a node from replay attack,
542            which will store the source address and sequence number of the received
543            mesh messages.
544            For Provisioner, the replay protection list size should not be smaller than
545            the maximum number of nodes whose information can be stored. And the element
546            number of each node should also be taken into consideration. For example, if
547            Provisioner can provision up to 20 nodes and each node contains two elements,
548            then the replay protection list size of Provisioner should be at least 40.
549
550    config BLE_MESH_NOT_RELAY_REPLAY_MSG
551        bool "Not relay replayed messages in a mesh network"
552        depends on BLE_MESH_EXPERIMENTAL
553        default n
554        help
555            There may be many expired messages in a complex mesh network that would be
556            considered replayed messages.
557            Enable this option will refuse to relay such messages, which could help to
558            reduce invalid packets in the mesh network.
559            However, it should be noted that enabling this option may result in packet
560            loss in certain environments.
561            Therefore, users need to decide whether to enable this option according to
562            the actual usage situation.
563
564    config BLE_MESH_MSG_CACHE_SIZE
565        int "Network message cache size"
566        default 10
567        range 2 65535
568        help
569            Number of messages that are cached for the network. This helps prevent
570            unnecessary decryption operations and unnecessary relays. This option
571            is similar to Replay protection list, but has a different purpose.
572            A node is not required to cache the entire Network PDU and may cache
573            only part of it for tracking, such as values for SRC/SEQ or others.
574
575    config BLE_MESH_ADV_BUF_COUNT
576        int "Number of advertising buffers"
577        default 60
578        range 6 256
579        help
580            Number of advertising buffers available. The transport layer reserves
581            ADV_BUF_COUNT - 3 buffers for outgoing segments. The maximum outgoing
582            SDU size is 12 times this value (out of which 4 or 8 bytes are used
583            for the Transport Layer MIC). For example, 5 segments means the maximum
584            SDU size is 60 bytes, which leaves 56 bytes for application layer data
585            using a 4-byte MIC, or 52 bytes using an 8-byte MIC.
586
587    config BLE_MESH_IVU_DIVIDER
588        int "Divider for IV Update state refresh timer"
589        default 4
590        range 2 96
591        help
592            When the IV Update state enters Normal operation or IV Update
593            in Progress, we need to keep track of how many hours has passed
594            in the state, since the specification requires us to remain in
595            the state at least for 96 hours (Update in Progress has an
596            additional upper limit of 144 hours).
597
598            In order to fulfill the above requirement, even if the node might
599            be powered off once in a while, we need to store persistently
600            how many hours the node has been in the state. This doesn't
601            necessarily need to happen every hour (thanks to the flexible
602            duration range). The exact cadence will depend a lot on the
603            ways that the node will be used and what kind of power source it
604            has.
605
606            Since there is no single optimal answer, this configuration
607            option allows specifying a divider, i.e. how many intervals
608            the 96 hour minimum gets split into. After each interval the
609            duration that the node has been in the current state gets
610            stored to flash. E.g. the default value of 4 means that the
611            state is saved every 24 hours (96 / 4).
612
613    config BLE_MESH_IVU_RECOVERY_IVI
614        bool "Recovery the IV index when the latest whole IV update procedure is missed"
615        default n
616        help
617            According to Section 3.10.5 of Mesh Specification v1.0.1.
618            If a node in Normal Operation receives a Secure Network beacon with an IV index
619            equal to the last known IV index+1 and the IV Update Flag set to 0, the node may
620            update its IV without going to the IV Update in Progress state, or it may initiate
621            an IV Index Recovery procedure (Section 3.10.6), or it may ignore the Secure
622            Network beacon. The node makes the choice depending on the time since last IV
623            update and the likelihood that the node has missed the Secure Network beacons
624            with the IV update Flag.
625            When the above situation is encountered, this option can be used to decide whether
626            to perform the IV index recovery procedure.
627
628    config BLE_MESH_TX_SEG_MSG_COUNT
629        int "Maximum number of simultaneous outgoing segmented messages"
630        default 1
631        range 1 BLE_MESH_ADV_BUF_COUNT
632        help
633            Maximum number of simultaneous outgoing multi-segment and/or reliable messages.
634            The default value is 1, which means the device can only send one segmented
635            message at a time. And if another segmented message is going to be sent, it
636            should wait for the completion of the previous one.
637            If users are going to send multiple segmented messages at the same time, this
638            value should be configured properly.
639
640    config BLE_MESH_RX_SEG_MSG_COUNT
641        int "Maximum number of simultaneous incoming segmented messages"
642        default 1
643        range 1 255
644        help
645            Maximum number of simultaneous incoming multi-segment and/or reliable messages.
646            The default value is 1, which means the device can only receive one segmented
647            message at a time. And if another segmented message is going to be received,
648            it should wait for the completion of the previous one.
649            If users are going to receive multiple segmented messages at the same time, this
650            value should be configured properly.
651
652    config BLE_MESH_RX_SDU_MAX
653        int "Maximum incoming Upper Transport Access PDU length"
654        default 384
655        range 36 384
656        help
657            Maximum incoming Upper Transport Access PDU length. Leave this to the default
658            value, unless you really need to optimize memory usage.
659
660    config BLE_MESH_TX_SEG_MAX
661        int "Maximum number of segments in outgoing messages"
662        default 32
663        range 2 32
664        help
665            Maximum number of segments supported for outgoing messages.
666            This value should typically be fine-tuned based on what
667            models the local node supports, i.e. what's the largest
668            message payload that the node needs to be able to send.
669            This value affects memory and call stack consumption, which
670            is why the default is lower than the maximum that the
671            specification would allow (32 segments).
672
673            The maximum outgoing SDU size is 12 times this number (out of
674            which 4 or 8 bytes is used for the Transport Layer MIC). For
675            example, 5 segments means the maximum SDU size is 60 bytes,
676            which leaves 56 bytes for application layer data using a
677            4-byte MIC and 52 bytes using an 8-byte MIC.
678
679            Be sure to specify a sufficient number of advertising buffers
680            when setting this option to a higher value. There must be at
681            least three more advertising buffers (BLE_MESH_ADV_BUF_COUNT)
682            as there are outgoing segments.
683
684    config BLE_MESH_RELAY
685        bool "Relay support"
686        depends on BLE_MESH_NODE
687        default y
688        help
689            Support for acting as a Mesh Relay Node. Enabling this option will allow
690            a node to support the Relay feature, and the Relay feature can still
691            be enabled or disabled by proper configuration messages. Disabling this
692            option will let a node not support the Relay feature.
693
694    if BLE_MESH_RELAY
695
696        config BLE_MESH_RELAY_ADV_BUF
697            bool "Use separate advertising buffers for relay packets"
698            default n
699            help
700                When selected, self-send packets will be put in a high-priority
701                queue and relay packets will be put in a low-priority queue.
702
703        if BLE_MESH_RELAY_ADV_BUF
704
705            config BLE_MESH_RELAY_ADV_BUF_COUNT
706                int "Number of advertising buffers for relay packets"
707                default 60
708                range 6 256
709                help
710                    Number of advertising buffers for relay packets available.
711
712        endif # BLE_MESH_RELAY_ADV_BUF
713
714    endif # BLE_MESH_RELAY
715
716    config BLE_MESH_LOW_POWER
717        bool "Support for Low Power features"
718        depends on BLE_MESH_NODE
719        help
720            Enable this option to operate as a Low Power Node. If low power consumption
721            is required by a node, this option should be enabled. And once the node
722            enters the mesh network, it will try to find a Friend node and establish a
723            friendship.
724
725    if BLE_MESH_LOW_POWER
726
727        config BLE_MESH_LPN_ESTABLISHMENT
728            bool "Perform Friendship establishment using low power"
729            default n
730            help
731                Perform the Friendship establishment using low power with the help of a
732                reduced scan duty cycle. The downside of this is that the node may miss
733                out on messages intended for it until it has successfully set up Friendship
734                with a Friend node.
735                When this option is enabled, the node will stop scanning for a period of
736                time after a Friend Request or Friend Poll is sent, so as to reduce more
737                power consumption.
738
739        config BLE_MESH_LPN_AUTO
740            bool "Automatically start looking for Friend nodes once provisioned"
741            default n
742            help
743                Once provisioned, automatically enable LPN functionality and start looking
744                for Friend nodes. If this option is disabled LPN mode needs to be manually
745                enabled by calling bt_mesh_lpn_set(true).
746                When an unprovisioned device is provisioned successfully and becomes a node,
747                enabling this option will trigger the node starts to send Friend Request at
748                a certain period until it finds a proper Friend node.
749
750        config BLE_MESH_LPN_AUTO_TIMEOUT
751            int "Time from last received message before going to LPN mode"
752            default 15
753            range 0 3600
754            depends on BLE_MESH_LPN_AUTO
755            help
756                Time in seconds from the last received message, that the node waits out
757                before starting to look for Friend nodes.
758
759        config BLE_MESH_LPN_RETRY_TIMEOUT
760            int "Retry timeout for Friend requests"
761            default 6
762            range 1 3600
763            help
764                Time in seconds between Friend Requests, if a previous Friend Request did
765                not yield any acceptable Friend Offers.
766
767        config BLE_MESH_LPN_RSSI_FACTOR
768            int "RSSIFactor, used in Friend Offer Delay calculation"
769            range 0 3
770            default 0
771            help
772                The contribution of the RSSI, measured by the Friend node, used in Friend
773                Offer Delay calculations. 0 = 1, 1 = 1.5, 2 = 2, 3 = 2.5.
774                RSSIFactor, one of the parameters carried by Friend Request sent by Low Power
775                node, which is used to calculate the Friend Offer Delay.
776
777        config BLE_MESH_LPN_RECV_WIN_FACTOR
778            int "ReceiveWindowFactor, used in Friend Offer Delay calculation"
779            range 0 3
780            default 0
781            help
782                The contribution of the supported Receive Window used in Friend Offer
783                Delay calculations. 0 = 1, 1 = 1.5, 2 = 2, 3 = 2.5.
784                ReceiveWindowFactor, one of the parameters carried by Friend Request sent by
785                Low Power node, which is used to calculate the Friend Offer Delay.
786
787        config BLE_MESH_LPN_MIN_QUEUE_SIZE
788            int "Minimum size of the acceptable friend queue (MinQueueSizeLog)"
789            range 1 7
790            default 1
791            help
792                The MinQueueSizeLog field is defined as log_2(N), where N is the minimum
793                number of maximum size Lower Transport PDUs that the Friend node can store
794                in its Friend Queue. As an example, MinQueueSizeLog value 1 gives N = 2,
795                and value 7 gives N = 128.
796
797        config BLE_MESH_LPN_RECV_DELAY
798            int "Receive delay requested by the local node"
799            range 10 255
800            default 100
801            help
802                The ReceiveDelay is the time between the Low Power node sending a
803                request and listening for a response. This delay allows the Friend
804                node time to prepare the response. The value is in units of milliseconds.
805
806        config BLE_MESH_LPN_POLL_TIMEOUT
807            int "The value of the PollTimeout timer"
808            range 10 244735
809            default 300
810            help
811                PollTimeout timer is used to measure time between two consecutive
812                requests sent by a Low Power node. If no requests are received
813                the Friend node before the PollTimeout timer expires, then the
814                friendship is considered terminated. The value is in units of 100
815                milliseconds, so e.g. a value of 300 means 30 seconds.
816                The smaller the value, the faster the Low Power node tries to get
817                messages from corresponding Friend node and vice versa.
818
819        config BLE_MESH_LPN_INIT_POLL_TIMEOUT
820            int "The starting value of the PollTimeout timer"
821            range 10 BLE_MESH_LPN_POLL_TIMEOUT
822            default BLE_MESH_LPN_POLL_TIMEOUT
823            help
824                The initial value of the PollTimeout timer when Friendship is to be
825                established for the first time. After this, the timeout gradually
826                grows toward the actual PollTimeout, doubling in value for each iteration.
827                The value is in units of 100 milliseconds, so e.g. a value of 300 means
828                30 seconds.
829
830        config BLE_MESH_LPN_SCAN_LATENCY
831            int "Latency for enabling scanning"
832            range 0 50
833            default 10
834            help
835                Latency (in milliseconds) is the time it takes to enable scanning. In
836                practice, it means how much time in advance of the Receive Window, the
837                request to enable scanning is made.
838
839        config BLE_MESH_LPN_GROUPS
840            int "Number of groups the LPN can subscribe to"
841            range 0 16384
842            default 8
843            help
844                Maximum number of groups to which the LPN can subscribe.
845
846        config BLE_MESH_LPN_SUB_ALL_NODES_ADDR
847            bool "Automatically subscribe all nodes address"
848            default n
849            help
850                Automatically subscribe all nodes address when friendship
851                established.
852
853    endif # BLE_MESH_LOW_POWER
854
855    config BLE_MESH_FRIEND
856        bool "Support for Friend feature"
857        help
858            Enable this option to be able to act as a Friend Node.
859
860    if BLE_MESH_FRIEND
861
862        config BLE_MESH_FRIEND_RECV_WIN
863            int "Friend Receive Window"
864            range 1 255
865            default 255
866            help
867                Receive Window in milliseconds supported by the Friend node.
868
869        config BLE_MESH_FRIEND_QUEUE_SIZE
870            int "Minimum number of buffers supported per Friend Queue"
871            range 2 65536
872            default 16
873            help
874                Minimum number of buffers available to be stored for each local Friend Queue.
875                This option decides the size of each buffer which can be used by a Friend node
876                to store messages for each Low Power node.
877
878        config BLE_MESH_FRIEND_SUB_LIST_SIZE
879            int "Friend Subscription List Size"
880            range 0 1023
881            default 3
882            help
883                Size of the Subscription List that can be supported by a Friend node for a
884                Low Power node. And Low Power node can send Friend Subscription List Add or
885                Friend Subscription List Remove messages to the Friend node to add or remove
886                subscription addresses.
887
888        config BLE_MESH_FRIEND_LPN_COUNT
889            int "Number of supported LPN nodes"
890            range 1 1000
891            default 2
892            help
893                Number of Low Power Nodes with which a Friend can have Friendship simultaneously.
894                A Friend node can have friendship with multiple Low Power nodes at the same time,
895                while a Low Power node can only establish friendship with only one Friend node at
896                the same time.
897
898        config BLE_MESH_FRIEND_SEG_RX
899            int "Number of incomplete segment lists per LPN"
900            range 1 1000
901            default 1
902            help
903                Number of incomplete segment lists tracked for each Friends' LPN.
904                In other words, this determines from how many elements can segmented
905                messages destined for the Friend queue be received simultaneously.
906
907    endif # BLE_MESH_FRIEND
908
909    config BLE_MESH_NO_LOG
910        bool "Disable BLE Mesh debug logs (minimize bin size)"
911        depends on BLE_MESH
912        default n
913        help
914            Select this to save the BLE Mesh related rodata code size. Enabling this option
915            will disable the output of BLE Mesh debug log.
916
917    menu "BLE Mesh STACK DEBUG LOG LEVEL"
918        depends on BLE_MESH && !BLE_MESH_NO_LOG
919
920        choice BLE_MESH_STACK_TRACE_LEVEL
921            prompt "BLE_MESH_STACK"
922            default BLE_MESH_TRACE_LEVEL_WARNING
923            depends on BLE_MESH && !BLE_MESH_NO_LOG
924            help
925                Define BLE Mesh trace level for BLE Mesh stack.
926
927            config BLE_MESH_TRACE_LEVEL_NONE
928                bool "NONE"
929            config BLE_MESH_TRACE_LEVEL_ERROR
930                bool "ERROR"
931            config BLE_MESH_TRACE_LEVEL_WARNING
932                bool "WARNING"
933            config BLE_MESH_TRACE_LEVEL_INFO
934                bool "INFO"
935            config BLE_MESH_TRACE_LEVEL_DEBUG
936                bool "DEBUG"
937            config BLE_MESH_TRACE_LEVEL_VERBOSE
938                bool "VERBOSE"
939        endchoice
940
941        config BLE_MESH_STACK_TRACE_LEVEL
942            int
943            depends on BLE_MESH
944            default 0 if BLE_MESH_TRACE_LEVEL_NONE
945            default 1 if BLE_MESH_TRACE_LEVEL_ERROR
946            default 2 if BLE_MESH_TRACE_LEVEL_WARNING
947            default 3 if BLE_MESH_TRACE_LEVEL_INFO
948            default 4 if BLE_MESH_TRACE_LEVEL_DEBUG
949            default 5 if BLE_MESH_TRACE_LEVEL_VERBOSE
950            default 2
951
952    endmenu #BLE Mesh DEBUG LOG LEVEL
953
954    menu "BLE Mesh NET BUF DEBUG LOG LEVEL"
955        depends on BLE_MESH && !BLE_MESH_NO_LOG
956
957        choice BLE_MESH_NET_BUF_TRACE_LEVEL
958            prompt "BLE_MESH_NET_BUF"
959            default BLE_MESH_NET_BUF_TRACE_LEVEL_WARNING
960            depends on BLE_MESH && !BLE_MESH_NO_LOG
961            help
962                Define BLE Mesh trace level for BLE Mesh net buffer.
963
964            config BLE_MESH_NET_BUF_TRACE_LEVEL_NONE
965                bool "NONE"
966            config BLE_MESH_NET_BUF_TRACE_LEVEL_ERROR
967                bool "ERROR"
968            config BLE_MESH_NET_BUF_TRACE_LEVEL_WARNING
969                bool "WARNING"
970            config BLE_MESH_NET_BUF_TRACE_LEVEL_INFO
971                bool "INFO"
972            config BLE_MESH_NET_BUF_TRACE_LEVEL_DEBUG
973                bool "DEBUG"
974            config BLE_MESH_NET_BUF_TRACE_LEVEL_VERBOSE
975                bool "VERBOSE"
976        endchoice
977
978        config BLE_MESH_NET_BUF_TRACE_LEVEL
979            int
980            depends on BLE_MESH
981            default 0 if BLE_MESH_NET_BUF_TRACE_LEVEL_NONE
982            default 1 if BLE_MESH_NET_BUF_TRACE_LEVEL_ERROR
983            default 2 if BLE_MESH_NET_BUF_TRACE_LEVEL_WARNING
984            default 3 if BLE_MESH_NET_BUF_TRACE_LEVEL_INFO
985            default 4 if BLE_MESH_NET_BUF_TRACE_LEVEL_DEBUG
986            default 5 if BLE_MESH_NET_BUF_TRACE_LEVEL_VERBOSE
987            default 2
988
989    endmenu #BLE Mesh NET BUF DEBUG LOG LEVEL
990
991    config BLE_MESH_CLIENT_MSG_TIMEOUT
992        int "Timeout(ms) for client message response"
993        range 100 1200000
994        default 4000
995        help
996            Timeout value used by the node to get response of the acknowledged
997            message which is sent by the client model.
998            This value indicates the maximum time that a client model waits for
999            the response of the sent acknowledged messages. If a client model
1000            uses 0 as the timeout value when sending acknowledged messages, then
1001            the default value will be used which is four seconds.
1002
1003    menu "Support for BLE Mesh Foundation models"
1004
1005        config BLE_MESH_CFG_CLI
1006            bool "Configuration Client model"
1007            help
1008                Enable support for Configuration Client model.
1009
1010        config BLE_MESH_HEALTH_CLI
1011            bool "Health Client model"
1012            help
1013                Enable support for Health Client model.
1014
1015        config BLE_MESH_HEALTH_SRV
1016            bool "Health Server model"
1017            default y
1018            help
1019                Enable support for Health Server model.
1020
1021    endmenu #Support for BLE Mesh Foundation models
1022
1023    menu "Support for BLE Mesh Client/Server models"
1024
1025        config BLE_MESH_GENERIC_ONOFF_CLI
1026            bool "Generic OnOff Client model"
1027            help
1028                Enable support for Generic OnOff Client model.
1029
1030        config BLE_MESH_GENERIC_LEVEL_CLI
1031            bool "Generic Level Client model"
1032            help
1033                Enable support for Generic Level Client model.
1034
1035        config BLE_MESH_GENERIC_DEF_TRANS_TIME_CLI
1036            bool "Generic Default Transition Time Client model"
1037            help
1038                Enable support for Generic Default Transition Time Client model.
1039
1040        config BLE_MESH_GENERIC_POWER_ONOFF_CLI
1041            bool "Generic Power OnOff Client model"
1042            help
1043                Enable support for Generic Power OnOff Client model.
1044
1045        config BLE_MESH_GENERIC_POWER_LEVEL_CLI
1046            bool "Generic Power Level Client model"
1047            help
1048                Enable support for Generic Power Level Client model.
1049
1050        config BLE_MESH_GENERIC_BATTERY_CLI
1051            bool "Generic Battery Client model"
1052            help
1053                Enable support for Generic Battery Client model.
1054
1055        config BLE_MESH_GENERIC_LOCATION_CLI
1056            bool "Generic Location Client model"
1057            help
1058                Enable support for Generic Location Client model.
1059
1060        config BLE_MESH_GENERIC_PROPERTY_CLI
1061            bool "Generic Property Client model"
1062            help
1063                Enable support for Generic Property Client model.
1064
1065        config BLE_MESH_SENSOR_CLI
1066            bool "Sensor Client model"
1067            help
1068                Enable support for Sensor Client model.
1069
1070        config BLE_MESH_TIME_CLI
1071            bool "Time Client model"
1072            help
1073                Enable support for Time Client model.
1074
1075        config BLE_MESH_SCENE_CLI
1076            bool "Scene Client model"
1077            help
1078                Enable support for Scene Client model.
1079
1080        config BLE_MESH_SCHEDULER_CLI
1081            bool "Scheduler Client model"
1082            help
1083                Enable support for Scheduler Client model.
1084
1085        config BLE_MESH_LIGHT_LIGHTNESS_CLI
1086            bool "Light Lightness Client model"
1087            help
1088                Enable support for Light Lightness Client model.
1089
1090        config BLE_MESH_LIGHT_CTL_CLI
1091            bool "Light CTL Client model"
1092            help
1093                Enable support for Light CTL Client model.
1094
1095        config BLE_MESH_LIGHT_HSL_CLI
1096            bool "Light HSL Client model"
1097            help
1098                Enable support for Light HSL Client model.
1099
1100        config BLE_MESH_LIGHT_XYL_CLI
1101            bool "Light XYL Client model"
1102            help
1103                Enable support for Light XYL Client model.
1104
1105        config BLE_MESH_LIGHT_LC_CLI
1106            bool "Light LC Client model"
1107            help
1108                Enable support for Light LC Client model.
1109
1110        config BLE_MESH_GENERIC_SERVER
1111            bool "Generic server models"
1112            default y
1113            help
1114                Enable support for Generic server models.
1115
1116        config BLE_MESH_SENSOR_SERVER
1117            bool "Sensor server models"
1118            default y
1119            help
1120                Enable support for Sensor server models.
1121
1122        config BLE_MESH_TIME_SCENE_SERVER
1123            bool "Time and Scenes server models"
1124            default y
1125            help
1126                Enable support for Time and Scenes server models.
1127
1128        config BLE_MESH_LIGHTING_SERVER
1129            bool "Lighting server models"
1130            default y
1131            help
1132                Enable support for Lighting server models.
1133
1134    endmenu #Support for BLE Mesh Client/Server models
1135
1136    config BLE_MESH_IV_UPDATE_TEST
1137        bool "Test the IV Update Procedure"
1138        default n
1139        help
1140            This option removes the 96 hour limit of the IV Update Procedure and
1141            lets the state to be changed at any time.
1142            If IV Update test mode is going to be used, this option should be enabled.
1143
1144    config BLE_MESH_DISCARD_OLD_SEQ_AUTH
1145        bool
1146        default y
1147        help
1148            This option is used to decide whether discarding the old SeqAuth when
1149            receiving a segmented message.
1150
1151    menu "BLE Mesh specific test option"
1152
1153        config BLE_MESH_SELF_TEST
1154            bool "Perform BLE Mesh self-tests"
1155            default n
1156            help
1157                This option adds extra self-tests which are run every time BLE Mesh
1158                networking is initialized.
1159
1160        config BLE_MESH_BQB_TEST
1161            bool "Enable BLE Mesh specific internal test"
1162            default n
1163            help
1164                This option is used to enable some internal functions for auto-pts test.
1165
1166        config BLE_MESH_BQB_TEST_LOG
1167            bool
1168            depends on BLE_MESH_BQB_TEST
1169            default y
1170            help
1171                This option is used to enable the log of auto-pts test.
1172
1173        if BLE_MESH_SELF_TEST
1174
1175            config BLE_MESH_TEST_AUTO_ENTER_NETWORK
1176                bool "Unprovisioned device enters mesh network automatically"
1177                default y
1178                help
1179                    With this option enabled, an unprovisioned device can automatically
1180                    enters mesh network using a specific test function without the pro-
1181                    visioning procedure. And on the Provisioner side, a test function
1182                    needs to be invoked to add the node information into the mesh stack.
1183
1184            config BLE_MESH_TEST_USE_WHITE_LIST
1185                bool "Use white list to filter mesh advertising packets"
1186                default n
1187                help
1188                    With this option enabled, users can use white list to filter mesh
1189                    advertising packets while scanning.
1190
1191        endif # BLE_MESH_SELF_TEST
1192
1193        config BLE_MESH_SHELL
1194            bool "Enable BLE Mesh shell"
1195            default n
1196            help
1197                Activate shell module that provides BLE Mesh commands to the console.
1198
1199        config BLE_MESH_DEBUG
1200            bool "Enable BLE Mesh debug logs"
1201            default n
1202            help
1203                Enable debug logs for the BLE Mesh functionality.
1204
1205        if BLE_MESH_DEBUG
1206
1207            config BLE_MESH_DEBUG_NET
1208                bool "Network layer debug"
1209                help
1210                    Enable Network layer debug logs for the BLE Mesh functionality.
1211
1212            config BLE_MESH_DEBUG_TRANS
1213                bool "Transport layer debug"
1214                help
1215                    Enable Transport layer debug logs for the BLE Mesh functionality.
1216
1217            config BLE_MESH_DEBUG_BEACON
1218                bool "Beacon debug"
1219                help
1220                    Enable Beacon-related debug logs for the BLE Mesh functionality.
1221
1222            config BLE_MESH_DEBUG_CRYPTO
1223                bool "Crypto debug"
1224                help
1225                    Enable cryptographic debug logs for the BLE Mesh functionality.
1226
1227            config BLE_MESH_DEBUG_PROV
1228                bool "Provisioning debug"
1229                help
1230                    Enable Provisioning debug logs for the BLE Mesh functionality.
1231
1232            config BLE_MESH_DEBUG_ACCESS
1233                bool "Access layer debug"
1234                help
1235                    Enable Access layer debug logs for the BLE Mesh functionality.
1236
1237            config BLE_MESH_DEBUG_MODEL
1238                bool "Foundation model debug"
1239                help
1240                    Enable Foundation Models debug logs for the BLE Mesh functionality.
1241
1242            config BLE_MESH_DEBUG_ADV
1243                bool "Advertising debug"
1244                help
1245                    Enable advertising debug logs for the BLE Mesh functionality.
1246
1247            config BLE_MESH_DEBUG_LOW_POWER
1248                bool "Low Power debug"
1249                help
1250                    Enable Low Power debug logs for the BLE Mesh functionality.
1251
1252            config BLE_MESH_DEBUG_FRIEND
1253                bool "Friend debug"
1254                help
1255                    Enable Friend debug logs for the BLE Mesh functionality.
1256
1257            config BLE_MESH_DEBUG_PROXY
1258                bool "Proxy debug"
1259                depends on BLE_MESH_PROXY
1260                help
1261                    Enable Proxy protocol debug logs for the BLE Mesh functionality.
1262
1263        endif # BLE_MESH_DEBUG
1264
1265    endmenu
1266
1267    config BLE_MESH_EXPERIMENTAL
1268        bool "Make BLE Mesh experimental features visible"
1269        default n
1270        help
1271            Make BLE Mesh Experimental features visible.
1272            Experimental features list:
1273            - CONFIG_BLE_MESH_NOT_RELAY_REPLAY_MSG
1274
1275endif # BLE_MESH
1276