#
# 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:
    BSP_NRF52:
        description: 'Set to indicate that BSP has NRF52'
        value: 1

    SOFT_PWM:
        description: 'Enable soft PWM'
        value: 0

    UARTBB_0:
        description: 'Enable bit-banger UART 0'
        value: 0

syscfg.vals:
    # Enable nRF52832 MCU and common startup code
    MCU_TARGET: nRF52832
    MCU_COMMON_STARTUP: 1

    MCU_RAM_START: 0x20000000
    MCU_RAM_SIZE: 0x10000

    # Set default pins for peripherals
    UART_0_PIN_TX: 29
    UART_0_PIN_RX: 30
    UART_0_PIN_RTS: 2
    UART_0_PIN_CTS: 28
    SPI_0_MASTER_PIN_SCK: 8
    SPI_0_MASTER_PIN_MOSI: 6
    SPI_0_MASTER_PIN_MISO: 7
    SPI_0_SLAVE_PIN_SCK: 8
    SPI_0_SLAVE_PIN_MOSI: 6
    SPI_0_SLAVE_PIN_MISO: 7
    SPI_0_SLAVE_PIN_SS: 3
    SPI_1_MASTER_PIN_SCK: 2
    SPI_1_MASTER_PIN_MOSI: 29
    SPI_1_MASTER_PIN_MISO: 30
    SPI_1_SLAVE_PIN_SCK: 2
    SPI_1_SLAVE_PIN_MOSI: 29
    SPI_1_SLAVE_PIN_MISO: 30
    SPI_1_SLAVE_PIN_SS: 28
    I2C_0_PIN_SCL: 2
    I2C_0_PIN_SDA: 28

    CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
    REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
    NFFS_FLASH_AREA: FLASH_AREA_NFFS
    COREDUMP_FLASH_AREA: FLASH_AREA_IMAGE_1
    MCU_DCDC_ENABLED: 1
    MCU_LFCLK_SOURCE: LFXO

syscfg.vals.BLE_CONTROLLER:
    TIMER_0: 0
    TIMER_5: 1
    OS_CPUTIME_FREQ: 32768
    OS_CPUTIME_TIMER_NUM: 5
    BLE_LL_RFMGMT_ENABLE_TIME: 1500
