# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

# Package: net/nimble

syscfg.defs:
    # Supported GAP roles.  By default, all four roles are enabled.
    BLE_ROLE_CENTRAL:
        description: 'Enables the Central bluetooth role. (0/1)'
        value: 1
    BLE_ROLE_PERIPHERAL:
        description: 'Enables the Peripheral bluetooth role. (0/1)'
        value: 1
    BLE_ROLE_BROADCASTER:
        description: 'Enables the Broadcaster bluetooth role. (0/1)'
        value: 1
    BLE_ROLE_OBSERVER:
        description: 'Enables the Observer bluetooth role. (0/1)'
        value: 1

    BLE_MAX_CONNECTIONS:
        description: 'The maximum number of concurrent connections.'
        value: 1
    BLE_WHITELIST:
        description: >
            Enables the BLE whitelist for controlling who to connect to or
            accept a connection from. (0/1)
        value: 1
    BLE_MULTI_ADV_INSTANCES:
        description: >
            This is the number of multi-advertising instances. This is NOT the
            total number of advertising instances. The total number of
            advertising instances is this number plus 1 (assuming the device
            supports advertising).
        value: 0
    BLE_EXT_ADV:
        description: >
            This enables extended advertising feature.
        value: 0
    BLE_EXT_ADV_MAX_SIZE:
        description: >
            This allows to configure maximum size of advertising data and
            scan response data used in LE Advertising Extensions.
            Valid range 31-1650.
        value: 31
