# 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.
#

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
