#
# 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:
    OC_TRANSPORT_SERIAL:
        description: 'Enables OIC transport over nlip serial'
        value: '0'

    OC_TRANSPORT_GATT:
        description: 'Enables OIC transport over BLE GATT'
        value: '0'

    OC_TRANSPORT_IP:
        description: 'Enables OIC transport over IP UDP'
        value: '0'

    OC_TRANSPORT_IPV6:
        description: 'Support IPv6'
        value: '1'

    OC_TRANSPORT_IPV4:
        description: 'Support IPv4'
        value: '0'

    OC_TRANSPORT_LORA:
        description: 'Support Lora'
        value: '0'

    OC_TRANSPORT_TCP4:
        description: 'Enables OIC transport over TCP/IPv4'
        value: 0
        restrictions:
            - OC_TRANSPORT_IP

    OC_LORA_PORT:
        description: 'Which LORA port to use'
        value: 0xbb

    OC_CLIENT:
        description: 'Enables OIC client support'
        value: '0'

    OC_CLIENT_DISCOVERY_ENABLE:
        description: 'Enables OIC discovery from client side'
        value: '1'

    OC_SERVER:
        description: 'Enables OIC server support'
        value: '0'

    OC_BLE_CENTRAL:
        description: 'Send messages as characteristic writes'
        value: '0'

    OC_DEBUG:
        description: 'Enables OIC debug logs'
        value: '0'

    OC_NUM_REP_OBJECTS:
        description: 'Estimated number of nodes in payload tree structure'
        value: 32

    OC_CONCURRENT_REQUESTS:
        description: 'Maximum number of concurrent requests'
        value: 2

    OC_MAX_PAYLOAD_SIZE:
        description: 'Maximum size of request/response PDUs'
        value: 1120

    OC_APP_RESOURCES:
        description: 'Maximum number of server resources'
        value: 3

    OC_NUM_DEVICES:
        description: 'Number of devices on the OCF platform'
        value: 1

    OC_MAX_PAYLOAD:
        description: 'Platform payload size'
        value: 256

    OC_SEPARATE_RESPONSES:
        description: 'Support COAP delayed responses for slow resousrces.'
        value: 1

    OC_TRANS_SECURITY:
        description: >
            Enables per-resource transport layer security requirements.
        value: 1

    OC_COAP_RESPONSE_TIMEOUT:
        description: 'How many seconds before client request times out'
        value: 4

    OC_CONN_EV_CB_CNT:
        description: >
            How many connection callback events for connection reated/removed
            events can be queued at the same time.
        value: 4

    OC_SYSINIT_STAGE_MAIN:
        description: >
            Main sysinit stage for OIC functionality.
        value: 300
    OC_SYSINIT_STAGE_IP6:
        description: >
            Sysinit stage for the IPv6 OIC transport.
        value: 301
    OC_SYSINIT_STAGE_IP4:
        description: >
            Sysinit stage for the IPv4 OIC transport.
        value: 301
    OC_SYSINIT_STAGE_SERIAL:
        description: >
            Sysinit stage for the serial OIC transport.
        value: 301
    OC_SYSINIT_STAGE_GATT:
        description: >
            Sysinit stage for the GATT (BLE) OIC transport.
        value: 301
    OC_SYSINIT_STAGE_LORA:
        description: >
            Sysinit stage for the LoRa OIC transport.
        value: 301
    OC_SYSINIT_STAGE_TCP4:
        description: >
            Sysinit stage for the TCP4 OIC transport.
        value: 301

    OC_TCP4_MAX_CONNS:
        description: >
            Maximum CoAP-aware TCP connections.
        value: 4

    ### Log settings.

    OC_LOGGING:
        description: 'Logging enabled'
        value: 0
    OC_LOG_MOD:
        description: 'Numeric module ID to use for OC log messages.'
        value: 7
    OC_LOG_LVL:
        description: 'Minimum level for the OC log.'
        value: 1

syscfg.logs:
    OC_LOG:
        module: MYNEWT_VAL(OC_LOG_MOD)
        level: MYNEWT_VAL(OC_LOG_LVL)
