You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by GitBox <gi...@apache.org> on 2018/10/18 20:33:26 UTC

[GitHub] andrzej-kaczmarek closed pull request #1346: hw/bsp: Refactor BSP for RuuviTag rev B

andrzej-kaczmarek closed pull request #1346: hw/bsp: Refactor BSP for RuuviTag rev B
URL: https://github.com/apache/mynewt-core/pull/1346
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/hw/bsp/ruuvi_tag_revb2/pkg.yml b/hw/bsp/ruuvi_tag_revb2/pkg.yml
index f2e6755a39..12c3528349 100644
--- a/hw/bsp/ruuvi_tag_revb2/pkg.yml
+++ b/hw/bsp/ruuvi_tag_revb2/pkg.yml
@@ -18,56 +18,5 @@
 #
 
 pkg.name: hw/bsp/ruuvi_tag_revb2
-pkg.type: bsp
-pkg.description: BSP definition for the Ruuvi Tag rev B (B3 and B4).
-pkg.author: "Apache Mynewt <de...@mynewt.apache.org>"
-pkg.homepage: "http://mynewt.apache.org/"
-pkg.keywords:
-    - ruuvi
-    - ruuvi_tag
-    - nrf52
-    - nrf52dk
-
-pkg.cflags:
-    - '-DNRF52'
-
-pkg.cflags.HARDFLOAT:
-    - -mfloat-abi=hard -mfpu=fpv4-sp-d16
-
-pkg.deps:
-    - "@apache-mynewt-core/hw/mcu/nordic/nrf52xxx-compat"
-    - "@apache-mynewt-core/libc/baselibc"
-
-pkg.deps.BLE_DEVICE:
-    - "@apache-mynewt-core/hw/drivers/nimble/nrf52"
-
-pkg.deps.UART_0:
-    - "@apache-mynewt-core/hw/drivers/uart/uart_hal"
-
-pkg.deps.UART_1:
-    - "@apache-mynewt-core/hw/drivers/uart/uart_bitbang"
-
-pkg.deps.ADC_0:
-    - "@apache-mynewt-core/hw/drivers/adc/adc_nrf52"
-
-pkg.deps.PWM_0:
-    - "@apache-mynewt-core/hw/drivers/pwm/pwm_nrf52"
-
-pkg.deps.PWM_1:
-    - "@apache-mynewt-core/hw/drivers/pwm/pwm_nrf52"
-
-pkg.deps.PWM_2:
-    - "@apache-mynewt-core/hw/drivers/pwm/pwm_nrf52"
-
-pkg.deps.SOFT_PWM:
-    - "@apache-mynewt-core/hw/drivers/pwm/soft_pwm"
-
-pkg.deps.BME280_ONB:
-    - "@apache-mynewt-core/hw/drivers/sensors/bme280"
-
-pkg.deps.LIS2DH12_ONB:
-    - "@apache-mynewt-core/hw/drivers/sensors/lis2dh12"
-
-pkg.init:
-    config_lis2dh12_sensor: 400
-    config_bme280_sensor: 400
+pkg.type: transient
+pkg.link: "@apache-mynewt-core/hw/bsp/ruuvitag_rev_b"
diff --git a/hw/bsp/ruuvi_tag_revb2/src/hal_bsp.c b/hw/bsp/ruuvi_tag_revb2/src/hal_bsp.c
deleted file mode 100644
index 899618708c..0000000000
--- a/hw/bsp/ruuvi_tag_revb2/src/hal_bsp.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * 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.
- */
-
-#include <stdint.h>
-#include <stddef.h>
-#include <string.h>
-#include <assert.h>
-#include "os/mynewt.h"
-#include "nrfx.h"
-#include "flash_map/flash_map.h"
-#include "hal/hal_bsp.h"
-#include "hal/hal_system.h"
-#include "hal/hal_flash.h"
-#include "hal/hal_spi.h"
-#include "hal/hal_watchdog.h"
-#include "hal/hal_i2c.h"
-#include "mcu/nrf52_hal.h"
-#if MYNEWT_VAL(UART_0) || MYNEWT_VAL(UART_1)
-#include "uart/uart.h"
-#endif
-#if MYNEWT_VAL(UART_0)
-#include "uart_hal/uart_hal.h"
-#endif
-#if MYNEWT_VAL(UART_1)
-#include "uart_bitbang/uart_bitbang.h"
-#endif
-#include "bsp.h"
-#if MYNEWT_VAL(ADC_0)
-#include <adc_nrf52/adc_nrf52.h>
-#include <nrfx_saadc.h>
-#endif
-#if MYNEWT_VAL(PWM_0) || MYNEWT_VAL(PWM_1) || MYNEWT_VAL(PWM_2)
-#include <pwm_nrf52/pwm_nrf52.h>
-#endif
-#if MYNEWT_VAL(SOFT_PWM)
-#include <soft_pwm/soft_pwm.h>
-#endif
-
-#if MYNEWT_VAL(BME280_ONB)
-#include <bme280/bme280.h>
-static struct bme280 bme280;
-#endif
-
-#if MYNEWT_VAL(LIS2DH12_ONB)
-#include <lis2dh12/lis2dh12.h>
-static struct lis2dh12 lis2dh12;
-#endif
-
-#if MYNEWT_VAL(UART_0)
-static struct uart_dev os_bsp_uart0;
-static const struct nrf52_uart_cfg os_bsp_uart0_cfg = {
-    .suc_pin_tx = MYNEWT_VAL(UART_0_PIN_TX),
-    .suc_pin_rx = MYNEWT_VAL(UART_0_PIN_RX),
-    .suc_pin_rts = MYNEWT_VAL(UART_0_PIN_RTS),
-    .suc_pin_cts = MYNEWT_VAL(UART_0_PIN_CTS),
-};
-#endif
-
-#if MYNEWT_VAL(UART_1)
-static struct uart_dev os_bsp_bitbang_uart1;
-static const struct uart_bitbang_conf os_bsp_uart1_cfg = {
-    .ubc_txpin = MYNEWT_VAL(UART_1_PIN_TX),
-    .ubc_rxpin = MYNEWT_VAL(UART_1_PIN_RX),
-    .ubc_cputimer_freq = MYNEWT_VAL(OS_CPUTIME_FREQ),
-};
-#endif
-
-#if MYNEWT_VAL(SPI_0_MASTER)
-/*
- * NOTE: Our HAL expects that the SS pin, if used, is treated as a gpio line
- * and is handled outside the SPI routines.
- */
-static const struct nrf52_hal_spi_cfg os_bsp_spi0m_cfg = {
-    .sck_pin      = MYNEWT_VAL(SPI_0_MASTER_PIN_SCK),
-    .mosi_pin     = MYNEWT_VAL(SPI_0_MASTER_PIN_MOSI),
-    .miso_pin     = MYNEWT_VAL(SPI_0_MASTER_PIN_MISO),
-};
-
-#if MYNEWT_VAL(BME280_ONB)
-static const struct sensor_itf spi_0_itf_bme = {
-    .si_type = SENSOR_ITF_SPI,
-    .si_num = 0,
-    .si_cs_pin = 3
-};
-#endif
-
-#if MYNEWT_VAL(LIS2DH12_ONB)
-static const struct sensor_itf spi_0_itf_lis = {
-    .si_type = SENSOR_ITF_SPI,
-    .si_num = 0,
-    .si_cs_pin = 8,
-    .si_low_pin = 2,
-    .si_high_pin = 6
-};
-#endif
-#endif
-
-#if MYNEWT_VAL(SPI_0_SLAVE)
-static const struct nrf52_hal_spi_cfg os_bsp_spi0s_cfg = {
-    .sck_pin      = MYNEWT_VAL(SPI_0_SLAVE_PIN_SCK),
-    .mosi_pin     = MYNEWT_VAL(SPI_0_SLAVE_PIN_MOSI),
-    .miso_pin     = MYNEWT_VAL(SPI_0_SLAVE_PIN_MISO),
-    .ss_pin       = MYNEWT_VAL(SPI_0_SLAVE_PIN_SS),
-};
-#endif
-
-#if MYNEWT_VAL(ADC_0)
-static struct adc_dev os_bsp_adc0;
-static struct nrf52_adc_dev_cfg os_bsp_adc0_config = {
-    .nadc_refmv     = MYNEWT_VAL(ADC_0_REFMV_0),
-};
-#endif
-
-
-#if MYNEWT_VAL(PWM_0)
-static struct pwm_dev os_bsp_pwm0;
-int pwm0_idx;
-#endif
-#if MYNEWT_VAL(PWM_1)
-static struct pwm_dev os_bsp_pwm1;
-int pwm1_idx;
-#endif
-#if MYNEWT_VAL(PWM_2)
-static struct pwm_dev os_bsp_pwm2;
-int pwm2_idx;
-#endif
-#if MYNEWT_VAL(SOFT_PWM)
-static struct pwm_dev os_bsp_spwm[MYNEWT_VAL(SOFT_PWM_DEVS)];
-char* spwm_name[MYNEWT_VAL(SOFT_PWM_DEVS)];
-int spwm_idx[MYNEWT_VAL(SOFT_PWM_DEVS)];
-#endif
-
-#if MYNEWT_VAL(I2C_0)
-static const struct nrf52_hal_i2c_cfg hal_i2c_cfg = {
-    .scl_pin = MYNEWT_VAL(I2C_0_PIN_SCL),
-    .sda_pin = MYNEWT_VAL(I2C_0_PIN_SDA),
-    .i2c_frequency = MYNEWT_VAL(I2C_0_FREQ_KHZ),
-};
-#endif
-
-/*
- * What memory to include in coredump.
- */
-static const struct hal_bsp_mem_dump dump_cfg[] = {
-    [0] = {
-        .hbmd_start = &_ram_start,
-        .hbmd_size = RAM_SIZE
-    }
-};
-
-const struct hal_flash *
-hal_bsp_flash_dev(uint8_t id)
-{
-    /*
-     * Internal flash mapped to id 0.
-     */
-    if (id != 0) {
-        return NULL;
-    }
-    return &nrf52k_flash_dev;
-}
-
-const struct hal_bsp_mem_dump *
-hal_bsp_core_dump(int *area_cnt)
-{
-    *area_cnt = sizeof(dump_cfg) / sizeof(dump_cfg[0]);
-    return dump_cfg;
-}
-
-int
-hal_bsp_power_state(int state)
-{
-    return (0);
-}
-
-/**
- * Returns the configured priority for the given interrupt. If no priority
- * configured, return the priority passed in
- *
- * @param irq_num
- * @param pri
- *
- * @return uint32_t
- */
-uint32_t
-hal_bsp_get_nvic_priority(int irq_num, uint32_t pri)
-{
-    uint32_t cfg_pri;
-
-    switch (irq_num) {
-    /* Radio gets highest priority */
-    case RADIO_IRQn:
-        cfg_pri = 0;
-        break;
-    default:
-        cfg_pri = pri;
-    }
-    return cfg_pri;
-}
-
-/**
- * BME280 Sensor default configuration
- *
- * @return 0 on success, non-zero on failure
- */
-int
-config_bme280_sensor(void)
-{
-#if MYNEWT_VAL(BME280_ONB)
-    int rc;
-    struct os_dev *dev;
-    struct bme280_cfg bmecfg;
-
-    dev = (struct os_dev *) os_dev_open("bme280_0", OS_TIMEOUT_NEVER, NULL);
-    assert(dev != NULL);
-
-    memset(&bmecfg, 0, sizeof(bmecfg));
-
-    bmecfg.bc_mode = BME280_MODE_FORCED;
-    bmecfg.bc_iir = BME280_FILTER_OFF;
-    bmecfg.bc_sby_dur = BME280_STANDBY_MS_0_5;
-    bmecfg.bc_boc[0].boc_type = SENSOR_TYPE_RELATIVE_HUMIDITY;
-    bmecfg.bc_boc[1].boc_type = SENSOR_TYPE_PRESSURE;
-    bmecfg.bc_boc[2].boc_type = SENSOR_TYPE_AMBIENT_TEMPERATURE;
-    bmecfg.bc_boc[0].boc_oversample = BME280_SAMPLING_X1;
-    bmecfg.bc_boc[1].boc_oversample = BME280_SAMPLING_X1;
-    bmecfg.bc_boc[2].boc_oversample = BME280_SAMPLING_X1;
-    bmecfg.bc_s_mask = SENSOR_TYPE_AMBIENT_TEMPERATURE|
-                       SENSOR_TYPE_PRESSURE|
-                       SENSOR_TYPE_RELATIVE_HUMIDITY;
-
-    rc = bme280_config((struct bme280 *)dev, &bmecfg);
-    SYSINIT_PANIC_ASSERT(rc == 0);
-
-    os_dev_close(dev);
-#endif
-    return 0;
-}
-
-/**
- * LIS2Dh12 Sensor default configuration
- *
- * @return 0 on success, non-zero on failure
- */
-int
-config_lis2dh12_sensor(void)
-{
-#if MYNEWT_VAL(LIS2DH12_ONB)
-    int rc;
-    struct os_dev *dev;
-    struct lis2dh12_cfg cfg;
-
-    dev = (struct os_dev *) os_dev_open("lis2dh12_0", OS_TIMEOUT_NEVER, NULL);
-    assert(dev != NULL);
-
-    memset(&cfg, 0, sizeof(cfg));
-
-    cfg.lc_s_mask = SENSOR_TYPE_ACCELEROMETER;
-    cfg.lc_rate = LIS2DH12_DATA_RATE_HN_1344HZ_L_5376HZ;
-    cfg.lc_fs = LIS2DH12_FS_2G;
-
-    rc = lis2dh12_config((struct lis2dh12 *)dev, &cfg);
-    SYSINIT_PANIC_ASSERT(rc == 0);
-
-    os_dev_close(dev);
-#endif
-    return 0;
-}
-
-static void
-sensor_dev_create(void)
-{
-    int rc;
-    (void)rc;
-
-#if MYNEWT_VAL(BME280_ONB)
-    rc = os_dev_create((struct os_dev *) &bme280, "bme280_0",
-      OS_DEV_INIT_PRIMARY, 0, bme280_init, (void *)&spi_0_itf_bme);
-    assert(rc == 0);
-#endif
-
-#if MYNEWT_VAL(LIS2DH12_ONB)
-    rc = os_dev_create((struct os_dev *) &lis2dh12, "lis2dh12_0",
-      OS_DEV_INIT_PRIMARY, 0, lis2dh12_init, (void *)&spi_0_itf_lis);
-    assert(rc == 0);
-#endif
-
-}
-
-void
-hal_bsp_init(void)
-{
-    int rc;
-#if MYNEWT_VAL(SOFT_PWM)
-    int idx;
-#endif
-
-    (void)rc;
-
-    /* Make sure system clocks have started */
-    hal_system_clock_start();
-
-#if MYNEWT_VAL(TIMER_0)
-    rc = hal_timer_init(0, NULL);
-    assert(rc == 0);
-#endif
-#if MYNEWT_VAL(TIMER_1)
-    rc = hal_timer_init(1, NULL);
-    assert(rc == 0);
-#endif
-#if MYNEWT_VAL(TIMER_2)
-    rc = hal_timer_init(2, NULL);
-    assert(rc == 0);
-#endif
-#if MYNEWT_VAL(TIMER_3)
-    rc = hal_timer_init(3, NULL);
-    assert(rc == 0);
-#endif
-#if MYNEWT_VAL(TIMER_4)
-    rc = hal_timer_init(4, NULL);
-    assert(rc == 0);
-#endif
-#if MYNEWT_VAL(TIMER_5)
-    rc = hal_timer_init(5, NULL);
-    assert(rc == 0);
-#endif
-
-#if MYNEWT_VAL(ADC_0)
-    rc = os_dev_create((struct os_dev *) &os_bsp_adc0,
-                       "adc0",
-                       OS_DEV_INIT_KERNEL,
-                       OS_DEV_INIT_PRIO_DEFAULT,
-                       nrf52_adc_dev_init,
-                       &os_bsp_adc0_config);
-    assert(rc == 0);
-#endif
-
-#if MYNEWT_VAL(PWM_0)
-    pwm0_idx = 0;
-    rc = os_dev_create((struct os_dev *) &os_bsp_pwm0,
-                       "pwm0",
-                       OS_DEV_INIT_KERNEL,
-                       OS_DEV_INIT_PRIO_DEFAULT,
-                       nrf52_pwm_dev_init,
-                       &pwm0_idx);
-    assert(rc == 0);
-#endif
-#if MYNEWT_VAL(PWM_1)
-    pwm1_idx = 1;
-    rc = os_dev_create((struct os_dev *) &os_bsp_pwm1,
-                       "pwm1",
-                       OS_DEV_INIT_KERNEL,
-                       OS_DEV_INIT_PRIO_DEFAULT,
-                       nrf52_pwm_dev_init,
-                       &pwm1_idx);
-    assert(rc == 0);
-#endif
-#if MYNEWT_VAL(PWM_2)
-    pwm2_idx = 2;
-    rc = os_dev_create((struct os_dev *) &os_bsp_pwm2,
-                       "pwm2",
-                       OS_DEV_INIT_KERNEL,
-                       OS_DEV_INIT_PRIO_DEFAULT,
-                       nrf52_pwm_dev_init,
-                       &pwm2_idx);
-    assert(rc == 0);
-#endif
-#if MYNEWT_VAL(SOFT_PWM)
-    for (idx = 0; idx < MYNEWT_VAL(SOFT_PWM_DEVS); idx++)
-    {
-        spwm_name[idx] = "spwm0";
-        spwm_name[idx][4] = '0' + idx;
-        spwm_idx[idx] = idx;
-        rc = os_dev_create((struct os_dev *) &os_bsp_spwm[idx],
-                           spwm_name[idx],
-                           OS_DEV_INIT_KERNEL,
-                           OS_DEV_INIT_PRIO_DEFAULT,
-                           soft_pwm_dev_init,
-                           &spwm_idx[idx]);
-        assert(rc == 0);
-    }
-#endif
-
-#if (MYNEWT_VAL(OS_CPUTIME_TIMER_NUM) >= 0)
-    rc = os_cputime_init(MYNEWT_VAL(OS_CPUTIME_FREQ));
-    assert(rc == 0);
-#endif
-
-#if MYNEWT_VAL(I2C_0)
-    rc = hal_i2c_init(0, (void *)&hal_i2c_cfg);
-    assert(rc == 0);
-#endif
-
-#if MYNEWT_VAL(SPI_0_MASTER)
-    rc = hal_spi_init(0, (void *)&os_bsp_spi0m_cfg, HAL_SPI_TYPE_MASTER);
-    assert(rc == 0);
-#endif
-
-#if MYNEWT_VAL(SPI_0_SLAVE)
-    rc = hal_spi_init(0, (void *)&os_bsp_spi0s_cfg, HAL_SPI_TYPE_SLAVE);
-    assert(rc == 0);
-#endif
-
-#if MYNEWT_VAL(UART_0)
-    rc = os_dev_create((struct os_dev *) &os_bsp_uart0, "uart0",
-      OS_DEV_INIT_PRIMARY, 0, uart_hal_init, (void *)&os_bsp_uart0_cfg);
-    assert(rc == 0);
-#endif
-
-#if MYNEWT_VAL(UART_1)
-    rc = os_dev_create((struct os_dev *) &os_bsp_bitbang_uart1, "uart1",
-      OS_DEV_INIT_PRIMARY, 0, uart_bitbang_init, (void *)&os_bsp_uart1_cfg);
-    assert(rc == 0);
-#endif
-
-    sensor_dev_create();
-}
diff --git a/hw/bsp/ruuvi_tag_revb2/syscfg.yml b/hw/bsp/ruuvi_tag_revb2/syscfg.yml
deleted file mode 100644
index 12bfc86081..0000000000
--- a/hw/bsp/ruuvi_tag_revb2/syscfg.yml
+++ /dev/null
@@ -1,130 +0,0 @@
-# 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
diff --git a/hw/bsp/ruuvi_tag_revb2/boot-nrf52xxaa.ld b/hw/bsp/ruuvitag_rev_b/boot-nrf52xxaa.ld
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/boot-nrf52xxaa.ld
rename to hw/bsp/ruuvitag_rev_b/boot-nrf52xxaa.ld
diff --git a/hw/bsp/ruuvi_tag_revb2/bsp.yml b/hw/bsp/ruuvitag_rev_b/bsp.yml
similarity index 79%
rename from hw/bsp/ruuvi_tag_revb2/bsp.yml
rename to hw/bsp/ruuvitag_rev_b/bsp.yml
index 27fc1ff3d4..f2615f621a 100644
--- a/hw/bsp/ruuvi_tag_revb2/bsp.yml
+++ b/hw/bsp/ruuvitag_rev_b/bsp.yml
@@ -20,16 +20,16 @@
 bsp.arch: cortex_m4
 bsp.compiler: compiler/arm-none-eabi-m4
 bsp.linkerscript:
-    - "hw/bsp/ruuvi_tag_revb2/nrf52xxaa.ld"
+    - "hw/bsp/ruuvitag_rev_b/nrf52xxaa.ld"
     - "@apache-mynewt-core/hw/mcu/nordic/nrf52xxx/nrf52.ld"
 bsp.linkerscript.BOOT_LOADER.OVERWRITE:
-    - "hw/bsp/ruuvi_tag_revb2/boot-nrf52xxaa.ld"
+    - "hw/bsp/ruuvitag_rev_b/boot-nrf52xxaa.ld"
     - "@apache-mynewt-core/hw/mcu/nordic/nrf52xxx/nrf52.ld"
-bsp.part2linkerscript: "hw/bsp/ruuvi_tag_revb2/split-nrf52dk.ld"
-bsp.downloadscript: "hw/bsp/ruuvi_tag_revb2/nrf52dk_download.sh"
-bsp.debugscript: "hw/bsp/ruuvi_tag_revb2/nrf52dk_debug.sh"
-bsp.downloadscript.WINDOWS.OVERWRITE: "hw/bsp/ruuvi_tag_revb2/nrf52dk_download.cmd"
-bsp.debugscript.WINDOWS.OVERWRITE: "hw/bsp/ruuvi_tag_revb2/nrf52dk_debug.cmd"
+bsp.part2linkerscript: "hw/bsp/ruuvitag_rev_b/split-ruuvitag_rev_b.ld"
+bsp.downloadscript: "hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_download.sh"
+bsp.debugscript: "hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_debug.sh"
+bsp.downloadscript.WINDOWS.OVERWRITE: "hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_download.cmd"
+bsp.debugscript.WINDOWS.OVERWRITE: "hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_debug.cmd"
 
 bsp.flash_map:
     areas:
diff --git a/hw/bsp/ruuvi_tag_revb2/include/bsp/bsp.h b/hw/bsp/ruuvitag_rev_b/include/bsp/bsp.h
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/include/bsp/bsp.h
rename to hw/bsp/ruuvitag_rev_b/include/bsp/bsp.h
diff --git a/hw/bsp/ruuvi_tag_revb2/nrf52xxaa.ld b/hw/bsp/ruuvitag_rev_b/nrf52xxaa.ld
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/nrf52xxaa.ld
rename to hw/bsp/ruuvitag_rev_b/nrf52xxaa.ld
diff --git a/hw/bsp/ruuvitag_rev_b/pkg.yml b/hw/bsp/ruuvitag_rev_b/pkg.yml
new file mode 100644
index 0000000000..1eb5c4b8ae
--- /dev/null
+++ b/hw/bsp/ruuvitag_rev_b/pkg.yml
@@ -0,0 +1,54 @@
+#
+# 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.
+#
+
+pkg.name: hw/bsp/ruuvitag_rev_b
+pkg.type: bsp
+pkg.description: BSP definition for the RuuviTag rev B.
+pkg.author: "Apache Mynewt <de...@mynewt.apache.org>"
+pkg.homepage: "http://mynewt.apache.org/"
+pkg.keywords:
+    - ruuvi
+    - ruuvitag
+    - nrf52
+
+pkg.cflags:
+    - '-DNRF52'
+
+pkg.cflags.HARDFLOAT:
+    - -mfloat-abi=hard -mfpu=fpv4-sp-d16
+
+pkg.deps:
+    - "@apache-mynewt-core/hw/mcu/nordic/nrf52xxx"
+    - "@apache-mynewt-core/libc/baselibc"
+
+pkg.deps.UARTBB_0:
+    - "@apache-mynewt-core/hw/drivers/uart/uart_bitbang"
+
+pkg.deps.SOFT_PWM:
+    - "@apache-mynewt-core/hw/drivers/pwm/soft_pwm"
+
+pkg.deps.BME280_ONB:
+    - "@apache-mynewt-core/hw/drivers/sensors/bme280"
+
+pkg.deps.LIS2DH12_ONB:
+    - "@apache-mynewt-core/hw/drivers/sensors/lis2dh12"
+
+pkg.init:
+    config_bme280_sensor: 400
+    config_lis2dh12_sensor: 400
diff --git a/hw/bsp/ruuvi_tag_revb2/nrf52dk_debug.cmd b/hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_debug.cmd
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/nrf52dk_debug.cmd
rename to hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_debug.cmd
diff --git a/hw/bsp/ruuvi_tag_revb2/nrf52dk_debug.sh b/hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_debug.sh
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/nrf52dk_debug.sh
rename to hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_debug.sh
diff --git a/hw/bsp/ruuvi_tag_revb2/nrf52dk_download.cmd b/hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_download.cmd
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/nrf52dk_download.cmd
rename to hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_download.cmd
diff --git a/hw/bsp/ruuvi_tag_revb2/nrf52dk_download.sh b/hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_download.sh
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/nrf52dk_download.sh
rename to hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_download.sh
diff --git a/hw/bsp/ruuvi_tag_revb2/nrf52dk_no_boot.ld b/hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_no_boot.ld
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/nrf52dk_no_boot.ld
rename to hw/bsp/ruuvitag_rev_b/ruuvitag_rev_b_no_boot.ld
diff --git a/hw/bsp/ruuvi_tag_revb2/split-nrf52dk.ld b/hw/bsp/ruuvitag_rev_b/split-ruuvitag_rev_b.ld
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/split-nrf52dk.ld
rename to hw/bsp/ruuvitag_rev_b/split-ruuvitag_rev_b.ld
diff --git a/hw/bsp/ruuvi_tag_revb2/src/arch/cortex_m4/gcc_startup_nrf52.s b/hw/bsp/ruuvitag_rev_b/src/arch/cortex_m4/gcc_startup_nrf52.s
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/src/arch/cortex_m4/gcc_startup_nrf52.s
rename to hw/bsp/ruuvitag_rev_b/src/arch/cortex_m4/gcc_startup_nrf52.s
diff --git a/hw/bsp/ruuvi_tag_revb2/src/arch/cortex_m4/gcc_startup_nrf52_split.s b/hw/bsp/ruuvitag_rev_b/src/arch/cortex_m4/gcc_startup_nrf52_split.s
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/src/arch/cortex_m4/gcc_startup_nrf52_split.s
rename to hw/bsp/ruuvitag_rev_b/src/arch/cortex_m4/gcc_startup_nrf52_split.s
diff --git a/hw/bsp/ruuvitag_rev_b/src/hal_bsp.c b/hw/bsp/ruuvitag_rev_b/src/hal_bsp.c
new file mode 100644
index 0000000000..28316141df
--- /dev/null
+++ b/hw/bsp/ruuvitag_rev_b/src/hal_bsp.c
@@ -0,0 +1,254 @@
+
+/*
+ * 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.
+ */
+
+#include <stdint.h>
+#include <stddef.h>
+#include <assert.h>
+#include "os/mynewt.h"
+#include "nrfx.h"
+#include "flash_map/flash_map.h"
+#include "hal/hal_bsp.h"
+#include "hal/hal_flash.h"
+#include "hal/hal_system.h"
+#include "mcu/nrf52_hal.h"
+#include "mcu/nrf52_periph.h"
+#include "bsp/bsp.h"
+#include "defs/sections.h"
+#if MYNEWT_VAL(SOFT_PWM)
+#include "pwm/pwm.h"
+#include "soft_pwm/soft_pwm.h"
+#endif
+#if MYNEWT_VAL(UARTBB_0)
+#include "uart_bitbang/uart_bitbang.h"
+#endif
+#if MYNEWT_VAL(BME280_ONB)
+#include "bme280/bme280.h"
+static struct bme280 bme280;
+#endif
+#if MYNEWT_VAL(LIS2DH12_ONB)
+#include "lis2dh12/lis2dh12.h"
+static struct lis2dh12 lis2dh12;
+#endif
+
+#if MYNEWT_VAL(SOFT_PWM)
+static struct pwm_dev os_bsp_spwm[MYNEWT_VAL(SOFT_PWM_DEVS)];
+#endif
+
+#if MYNEWT_VAL(UARTBB_0)
+static const struct uart_bitbang_conf os_bsp_uartbb0_cfg = {
+    .ubc_txpin = MYNEWT_VAL(UARTBB_0_PIN_TX),
+    .ubc_rxpin = MYNEWT_VAL(UARTBB_0_PIN_RX),
+    .ubc_cputimer_freq = MYNEWT_VAL(OS_CPUTIME_FREQ),
+};
+#endif
+
+#if MYNEWT_VAL(BME280_ONB)
+static const struct sensor_itf spi_0_itf_bme = {
+    .si_type = SENSOR_ITF_SPI,
+    .si_num = 0,
+    .si_cs_pin = 3
+};
+#endif
+
+#if MYNEWT_VAL(LIS2DH12_ONB)
+static const struct sensor_itf spi_0_itf_lis = {
+    .si_type = SENSOR_ITF_SPI,
+    .si_num = 0,
+    .si_cs_pin = 8,
+    .si_low_pin = 2,
+    .si_high_pin = 6
+};
+#endif
+
+/*
+ * What memory to include in coredump.
+ */
+static const struct hal_bsp_mem_dump dump_cfg[] = {
+    [0] = {
+        .hbmd_start = &_ram_start,
+        .hbmd_size = RAM_SIZE
+    }
+};
+
+const struct hal_flash *
+hal_bsp_flash_dev(uint8_t id)
+{
+    /*
+     * Internal flash mapped to id 0.
+     */
+    if (id == 0) {
+        return &nrf52k_flash_dev;
+    }
+
+    return NULL;
+}
+
+const struct hal_bsp_mem_dump *
+hal_bsp_core_dump(int *area_cnt)
+{
+    *area_cnt = sizeof(dump_cfg) / sizeof(dump_cfg[0]);
+    return dump_cfg;
+}
+
+int
+hal_bsp_power_state(int state)
+{
+    return (0);
+}
+
+/**
+ * Returns the configured priority for the given interrupt. If no priority
+ * configured, return the priority passed in
+ *
+ * @param irq_num
+ * @param pri
+ *
+ * @return uint32_t
+ */
+uint32_t
+hal_bsp_get_nvic_priority(int irq_num, uint32_t pri)
+{
+    uint32_t cfg_pri;
+
+    switch (irq_num) {
+    /* Radio gets highest priority */
+    case RADIO_IRQn:
+        cfg_pri = 0;
+        break;
+    default:
+        cfg_pri = pri;
+    }
+    return cfg_pri;
+}
+
+int
+config_bme280_sensor(void)
+{
+#if MYNEWT_VAL(BME280_ONB)
+    int rc;
+    struct os_dev *dev;
+    struct bme280_cfg bmecfg;
+
+    dev = (struct os_dev *) os_dev_open("bme280_0", OS_TIMEOUT_NEVER, NULL);
+    assert(dev != NULL);
+
+    memset(&bmecfg, 0, sizeof(bmecfg));
+
+    bmecfg.bc_mode = BME280_MODE_FORCED;
+    bmecfg.bc_iir = BME280_FILTER_OFF;
+    bmecfg.bc_sby_dur = BME280_STANDBY_MS_0_5;
+    bmecfg.bc_boc[0].boc_type = SENSOR_TYPE_RELATIVE_HUMIDITY;
+    bmecfg.bc_boc[1].boc_type = SENSOR_TYPE_PRESSURE;
+    bmecfg.bc_boc[2].boc_type = SENSOR_TYPE_AMBIENT_TEMPERATURE;
+    bmecfg.bc_boc[0].boc_oversample = BME280_SAMPLING_X1;
+    bmecfg.bc_boc[1].boc_oversample = BME280_SAMPLING_X1;
+    bmecfg.bc_boc[2].boc_oversample = BME280_SAMPLING_X1;
+    bmecfg.bc_s_mask = SENSOR_TYPE_AMBIENT_TEMPERATURE|
+                       SENSOR_TYPE_PRESSURE|
+                       SENSOR_TYPE_RELATIVE_HUMIDITY;
+
+    rc = bme280_config((struct bme280 *)dev, &bmecfg);
+    SYSINIT_PANIC_ASSERT(rc == 0);
+
+    os_dev_close(dev);
+#endif
+    return 0;
+}
+
+int
+config_lis2dh12_sensor(void)
+{
+#if MYNEWT_VAL(LIS2DH12_ONB)
+    int rc;
+    struct os_dev *dev;
+    struct lis2dh12_cfg cfg;
+
+    dev = (struct os_dev *) os_dev_open("lis2dh12_0", OS_TIMEOUT_NEVER, NULL);
+    assert(dev != NULL);
+
+    memset(&cfg, 0, sizeof(cfg));
+
+    cfg.lc_s_mask = SENSOR_TYPE_ACCELEROMETER;
+    cfg.lc_rate = LIS2DH12_DATA_RATE_HN_1344HZ_L_5376HZ;
+    cfg.lc_fs = LIS2DH12_FS_2G;
+
+    rc = lis2dh12_config((struct lis2dh12 *)dev, &cfg);
+    SYSINIT_PANIC_ASSERT(rc == 0);
+
+    os_dev_close(dev);
+#endif
+    return 0;
+}
+
+static void
+sensor_dev_create(void)
+{
+    int rc;
+    (void)rc;
+
+#if MYNEWT_VAL(BME280_ONB)
+    rc = os_dev_create((struct os_dev *) &bme280, "bme280_0",
+                       OS_DEV_INIT_PRIMARY, 0, bme280_init,
+                       (void *)&spi_0_itf_bme);
+    assert(rc == 0);
+#endif
+
+#if MYNEWT_VAL(LIS2DH12_ONB)
+    rc = os_dev_create((struct os_dev *) &lis2dh12, "lis2dh12_0",
+                       OS_DEV_INIT_PRIMARY, 0, lis2dh12_init,
+                       (void *)&spi_0_itf_lis);
+    assert(rc == 0);
+#endif
+}
+
+void
+hal_bsp_init(void)
+{
+#if MYNEWT_VAL(SOFT_PWM)
+    int rc;
+    int idx;
+    char *spwm_name;
+#endif
+
+    /* Make sure system clocks have started */
+    hal_system_clock_start();
+
+    /* Create all available nRF52832 peripherals */
+    nrf52_periph_create();
+
+#if MYNEWT_VAL(SOFT_PWM)
+    for (idx = 0; idx < MYNEWT_VAL(SOFT_PWM_DEVS); idx++) {
+        asprintf(&spwm_name, "spwm%d", idx);
+        rc = os_dev_create(&os_bsp_spwm[idx].pwm_os_dev, spwm_name,
+                           OS_DEV_INIT_KERNEL, OS_DEV_INIT_PRIO_DEFAULT,
+                           soft_pwm_dev_init, UINT_TO_POINTER(idx));
+        assert(rc == 0);
+    }
+#endif
+
+#if MYNEWT_VAL(UARTBB_0)
+    rc = os_dev_create(&os_bsp_uartbb0.ud_dev, "uartbb0",
+                       OS_DEV_INIT_PRIMARY, 0, uart_bitbang_init,
+                       (void *)&os_bsp_uartbb0_cfg);
+    assert(rc == 0);
+#endif
+
+    sensor_dev_create();
+}
diff --git a/hw/bsp/ruuvi_tag_revb2/src/sbrk.c b/hw/bsp/ruuvitag_rev_b/src/sbrk.c
similarity index 100%
rename from hw/bsp/ruuvi_tag_revb2/src/sbrk.c
rename to hw/bsp/ruuvitag_rev_b/src/sbrk.c
diff --git a/hw/bsp/ruuvitag_rev_b/syscfg.yml b/hw/bsp/ruuvitag_rev_b/syscfg.yml
new file mode 100644
index 0000000000..6b58c7dab6
--- /dev/null
+++ b/hw/bsp/ruuvitag_rev_b/syscfg.yml
@@ -0,0 +1,91 @@
+# 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
+
+    BSP_RUUVITAG_REV_B_NUM:
+        description: >
+            Indicates exact RuuviTag hardware revision B number. This is used
+            to setup default settings for peripherals.
+            Supported values are 1-6 which corresponds to revisions B1-B6.
+        value: '6'
+
+    SOFT_PWM:
+        description: 'Enable soft PWM'
+        value: 0
+
+    UARTBB_0:
+        description: 'Enable bit-banger UART 0'
+        value: 0
+    UARTBB_0_PIN_TX:
+        description: 'TX pin for UARTBB0'
+        value: -1
+    UARTBB_0_PIN_RX:
+        description: 'RX pin for UARTBB0'
+        value: -1
+
+    BME280_ONB:
+        description: 'Enable RuuviTag onboard BME280 sensor'
+        value:  0
+
+    LIS2DH12_ONB:
+        description: 'Enable RuuviTag onboard LIS2DH12 sensor (rev. B3 and newer)'
+        value:  0
+
+syscfg.vals:
+    # Enable nRF52832 MCU
+    MCU_NRF52832: 1
+    # Set default pins for peripherals
+    # Latest revisions have testpoints instead of dedicated UART pins,
+    # we can use them instead
+    UART_0_PIN_TX: 4
+    UART_0_PIN_RX: 5
+    SPI_0_MASTER_PIN_SCK: 29
+    SPI_0_MASTER_PIN_MOSI: 25
+    SPI_0_MASTER_PIN_MISO: 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
+    XTAL_32768: 1
+    BOOT_SERIAL_DETECT_PIN: 13  # Button 1
+
+syscfg.vals.'BSP_RUUVITAG_REV_B_NUM == 1':
+    # Revision B1 has dedicated pins for UART
+    UART_0_PIN_TX: 7
+    UART_0_PIN_RX: 8
+
+syscfg.vals.BLE_LP_CLOCK:
+    TIMER_0: 0
+    TIMER_5: 1
+    OS_CPUTIME_FREQ: 32768
+    OS_CPUTIME_TIMER_NUM: 5
+    BLE_XTAL_SETTLE_TIME: 1500
+
+syscfg.restrictions:
+    - "!UARTBB_0 || (UARTBB_0_PIN_TX >= 0 && UARTBB_0_PIN_RX >= 0)"
+    - "!BME280_ONB || SPI_0_MASTER"
+    - "!LIS2DH12_ONB || SPI_0_MASTER"
+    - "!LIS2DH12_ONB || BSP_RUUVITAG_REV >= 3"


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services