# 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: hw/bsp/nrf52dk

syscfg.defs:
    BSP_NRF52:
        description: 'Set to indicate that BSP has NRF52'
        value: 1

    UART_0:
        description: 'Whether to enable UART0'
        value:  1
    UART_0_PIN_TX:
        description: 'TX pin for UART0'
        value:  4
    UART_0_PIN_RX:
        description: 'RX pin for UART0'
        value:  5
    UART_0_PIN_RTS:
        description: 'RTS pin for UART0'
        value:  -1
    UART_0_PIN_CTS:
        description: 'CTS pin for UART0'
        value: -1

    UART_1:
        description: 'Whether to enable bitbanger UART1'
        value:  0
    UART_1_PIN_TX:
        description: 'TX pin for UART1'
        value:  -1
    UART_1_PIN_RX:
        description: 'RX pin for UART1'
        value:  -1

    SPI_0_MASTER_PIN_SCK:
        description: 'SCK pin for SPI_0_MASTER'
        value:  29
    SPI_0_MASTER_PIN_MOSI:
        description: 'MOSI pin for SPI_0_MASTER'
        value:  25
    SPI_0_MASTER_PIN_MISO:
        description: 'MISO pin for SPI_0_MASTER'
        value:  28

    SPI_0_SLAVE_PIN_SCK:
        description: 'SCK pin for SPI_0_SLAVE'
        value:  29
    SPI_0_SLAVE_PIN_MOSI:
        description: 'MOSI pin for SPI_0_SLAVE'
        value:  25
    SPI_0_SLAVE_PIN_MISO:
        description: 'MISO pin for SPI_0_SLAVE'
        value:  28
    SPI_0_SLAVE_PIN_SS:
        description: 'SS pin for SPI_0_SLAVE'
        value:  22

    I2C_0_PIN_SCL:
        description: 'SCL pin for I2C_0'
        value:  27
    I2C_0_PIN_SDA:
        description: 'SDA pin for I2C_0'
        value:  26
    I2C_0_FREQ_KHZ:
        description: 'Frequency in khz for I2C_0 bus'
        value:  100

    TIMER_0:
        description: 'NRF52 Timer 0'
        value:  1
    TIMER_1:
        description: 'NRF52 Timer 1'
        value:  0
    TIMER_2:
        description: 'NRF52 Timer 2'
        value:  0
    TIMER_3:
        description: 'NRF52 Timer 3'
        value:  0
    TIMER_4:
        description: 'NRF52 Timer 4'
        value:  0
    TIMER_5:
        description: 'NRF52 RTC 0'
        value:  0

    BME280_ONB:
        description: 'ruuvi-tag onboard bme280 sensor'
        value:  0

    LIS2DH12_ONB:
        description: 'ruuvi-tag onboard lis2dh12 sensor'
        value:  0

syscfg.defs.BLE_LP_CLOCK:
    TIMER_0:
        value: 0
    TIMER_5:
        value: 1

syscfg.vals:
    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
    XTAL_32768: 1
    BOOT_SERIAL_DETECT_PIN: 13  # Button 1

syscfg.vals.BLE_LP_CLOCK:
    OS_CPUTIME_FREQ: 32768
    OS_CPUTIME_TIMER_NUM: 5
    BLE_XTAL_SETTLE_TIME: 1500
