Fixed issue with drift in synth
This commit is contained in:
parent
de0197d71f
commit
10ff89ba01
@ -1,11 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, George Oikonomou - http://www.spd.gr
|
* Copyright (c) 2018, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
* are met:
|
* are met:
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
@ -28,16 +27,15 @@
|
|||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
/**
|
/**
|
||||||
* \addtogroup cc13xx-cc26xx
|
* \addtogroup cc13xx-cc26xx-cpu
|
||||||
* @{
|
* @{
|
||||||
*
|
*
|
||||||
* \file
|
* \file
|
||||||
* Header with configuration defines common to the CC13xx/CC26xx platform.
|
* Header with configuration defines common to the CC13xx/CC26xx
|
||||||
*
|
* platform.
|
||||||
* \author
|
* \author
|
||||||
* Edvard Pettersen <e.pettersen@ti.com>
|
* Edvard Pettersen <e.pettersen@ti.com>
|
||||||
*/
|
*/
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#ifndef SIMPLELINK_CONF_H_
|
#ifndef SIMPLELINK_CONF_H_
|
||||||
@ -47,12 +45,20 @@
|
|||||||
|
|
||||||
#include "rf-core.h"
|
#include "rf-core.h"
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* GPIO HAL configuration. */
|
/**
|
||||||
|
* \name GPIO HAL configuration.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
#define GPIO_HAL_CONF_ARCH_SW_TOGGLE 0
|
#define GPIO_HAL_CONF_ARCH_SW_TOGGLE 0
|
||||||
#define GPIO_HAL_CONF_ARCH_HDR_PATH "dev/gpio-hal-arch.h"
|
#define GPIO_HAL_CONF_ARCH_HDR_PATH "dev/gpio-hal-arch.h"
|
||||||
|
/** @} */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* RF configuration */
|
/**
|
||||||
|
* \name RF configuration.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If set, the systems keeps the HF crystal oscillator on even when the
|
* If set, the systems keeps the HF crystal oscillator on even when the
|
||||||
@ -65,96 +71,124 @@
|
|||||||
# define RF_FAST_RADIO_STARTUP 0
|
# define RF_FAST_RADIO_STARTUP 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configure TX power to either default PA or High PA, defaults to
|
||||||
|
* default PA.
|
||||||
|
*/
|
||||||
|
#ifndef RF_CONF_TXPOWER_HIGH_PA
|
||||||
|
#define RF_CONF_TXPOWER_HIGH_PA 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (RF_CONF_TXPOWER_HIGH_PA) && !(SUPPORTS_HIGH_PA)
|
||||||
|
# error "Device does not support High PA"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CC13xx only: Configure TX power to use boot mode, allowing to gain
|
||||||
|
* up to 14 dBm with the default PA. This will, however, increase power
|
||||||
|
* consumption.
|
||||||
|
*/
|
||||||
|
#ifndef RF_CONF_TXPOWER_BOOST_MODE
|
||||||
|
#define RF_CONF_TXPOWER_BOOST_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configure RF mode. That is, whether to run on Sub-1 GHz (Prop-mode) or
|
* Configure RF mode. That is, whether to run on Sub-1 GHz (Prop-mode) or
|
||||||
* 2.4 GHz (IEEE-mode).
|
* 2.4 GHz (IEEE-mode).
|
||||||
*/
|
*/
|
||||||
#ifdef RF_CONF_MODE
|
#ifdef RF_CONF_MODE
|
||||||
/* Sanity check a valid configuration is given */
|
/* Sanity check a valid configuration is provided. */
|
||||||
# if !(RF_CONF_MODE & RF_MODE_BM)
|
# if !(RF_CONF_MODE & RF_MODE_BM)
|
||||||
# error "Invalid RF_CONF_MODE"
|
# error "Invalid RF_CONF_MODE provided"
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# define RF_MODE RF_CONF_MODE
|
# define RF_MODE RF_CONF_MODE
|
||||||
#endif /* RF_CONF_MODE */
|
#endif /* RF_CONF_MODE */
|
||||||
|
|
||||||
/* Number of RX buffers */
|
/* Number of RX buffers. */
|
||||||
#ifdef RF_CONF_RX_BUF_CNT
|
#ifdef RF_CONF_RX_BUF_CNT
|
||||||
# define RF_RX_BUF_CNT RF_CONF_RX_BUF_CNT
|
# define RF_RX_BUF_CNT RF_CONF_RX_BUF_CNT
|
||||||
#else
|
#else
|
||||||
# define RF_RX_BUF_CNT 4
|
# define RF_RX_BUF_CNT 4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Size of each RX buffer in bytes */
|
/* Size of each RX buffer in bytes. */
|
||||||
#ifdef RF_CONF_RX_BUF_SIZE
|
#ifdef RF_CONF_RX_BUF_SIZE
|
||||||
# define RF_RX_BUF_SIZE RF_CONF_RX_BUF_SIZE
|
# define RF_RX_BUF_SIZE RF_CONF_RX_BUF_SIZE
|
||||||
#else
|
#else
|
||||||
# define RF_RX_BUF_SIZE 144
|
# define RF_RX_BUF_SIZE 144
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Enable/disable BLE beacon */
|
/* Enable/disable BLE beacon. */
|
||||||
#ifdef RF_CONF_BLE_BEACON_ENABLE
|
#ifdef RF_CONF_BLE_BEACON_ENABLE
|
||||||
# define RF_BLE_BEACON_ENABLE RF_CONF_BLE_BEACON_ENABLE
|
# define RF_BLE_BEACON_ENABLE RF_CONF_BLE_BEACON_ENABLE
|
||||||
#else
|
#else
|
||||||
# define RF_BLE_BEACON_ENABLE 0
|
# define RF_BLE_BEACON_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (RF_BLE_BEACON_ENABLE) && !(SUPPORTS_BLE_BEACON)
|
||||||
|
# error "Device does not support BLE for BLE beacon"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*----- CC13xx Device Line --------------------------------------------------*/
|
/*----- CC13xx Device Line --------------------------------------------------*/
|
||||||
/* CC13xx supports both IEEE and Prop mode, depending on which device */
|
/* CC13xx supports both IEEE and Prop mode, depending on which device. */
|
||||||
#if defined(DEVICE_LINE_CC13XX)
|
#if defined(DEVICE_LINE_CC13XX)
|
||||||
|
|
||||||
/* Default to Prop-mode for CC13xx devices if not configured */
|
/* Default to Prop-mode for CC13xx devices if not configured. */
|
||||||
# ifndef RF_MODE
|
# ifndef RF_MODE
|
||||||
# define RF_MODE RF_MODE_SUB_1_GHZ
|
# define RF_MODE RF_MODE_SUB_1_GHZ
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
/*----- CC13xx Prop-mode ----------------------------------------------------*/
|
||||||
# if (RF_MODE == RF_MODE_SUB_1_GHZ) && (SUPPORTS_PROP_MODE)
|
# if (RF_MODE == RF_MODE_SUB_1_GHZ) && (SUPPORTS_PROP_MODE)
|
||||||
/*----- CC13xx Prop Mode ----------------------------------------------------*/
|
|
||||||
/* Netstack configuration */
|
|
||||||
# define NETSTACK_CONF_RADIO prop_mode_driver
|
|
||||||
|
|
||||||
/* CSMA configuration */
|
/* Netstack configuration. */
|
||||||
# define CSMA_CONF_ACK_WAIT_TIME (RTIMER_SECOND / 300)
|
# define NETSTACK_CONF_RADIO prop_mode_driver
|
||||||
# define CSMA_CONF_AFTER_ACK_DETECTED_WAIT_TIME (RTIMER_SECOND / 1000)
|
|
||||||
# define CSMA_CONF_SEND_SOFT_ACK 1
|
|
||||||
|
|
||||||
|
/* CSMA configuration. */
|
||||||
|
# define CSMA_CONF_ACK_WAIT_TIME (RTIMER_SECOND / 300)
|
||||||
|
# define CSMA_CONF_AFTER_ACK_DETECTED_WAIT_TIME (RTIMER_SECOND / 1000)
|
||||||
|
# define CSMA_CONF_SEND_SOFT_ACK 1
|
||||||
|
|
||||||
|
/*----- CC13xx IEEE-mode ----------------------------------------------------*/
|
||||||
# elif (RF_MODE == RF_MODE_2_4_GHZ) && (SUPPORTS_IEEE_MODE)
|
# elif (RF_MODE == RF_MODE_2_4_GHZ) && (SUPPORTS_IEEE_MODE)
|
||||||
/*----- CC13xx IEEE Mode ----------------------------------------------------*/
|
|
||||||
/* Netstack configuration */
|
|
||||||
# define NETSTACK_CONF_RADIO ieee_mode_driver
|
|
||||||
|
|
||||||
/* CSMA configuration */
|
/* Netstack configuration. */
|
||||||
# define CSMA_CONF_SEND_SOFT_ACK 0
|
# define NETSTACK_CONF_RADIO ieee_mode_driver
|
||||||
|
|
||||||
|
/* CSMA configuration. */
|
||||||
|
# define CSMA_CONF_SEND_SOFT_ACK 0
|
||||||
|
|
||||||
# else
|
# else
|
||||||
/*----- CC13xx Non-supported Mode -------------------------------------------*/
|
/*----- CC13xx Unsupported Mode ---------------------------------------------*/
|
||||||
# error "Invalid radio mode configuration of CC13xx device"
|
# error "Invalid RF mode configuration of CC13xx device"
|
||||||
# endif /* CC13xx RF Mode configuration */
|
# endif /* CC13xx RF Mode configuration */
|
||||||
|
|
||||||
/*----- CC26xx Device Line --------------------------------------------------*/
|
/*----- CC26xx Device Line --------------------------------------------------*/
|
||||||
/* CC26xx only supports IEEE mode */
|
/* CC26xx only supports IEEE mode */
|
||||||
#elif defined(DEVICE_LINE_CC26XX)
|
#elif defined(DEVICE_LINE_CC26XX)
|
||||||
|
|
||||||
/* Default to IEEE-mode for CC13xx devices if not configured */
|
/* Default to IEEE-mode for CC26xx devices if not configured */
|
||||||
# ifndef RF_MODE
|
# ifndef RF_MODE
|
||||||
# define RF_MODE RF_MODE_2_4_GHZ
|
# define RF_MODE RF_MODE_2_4_GHZ
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
/*----- CC26xx IEEE-mode ----------------------------------------------------*/
|
||||||
# if (RF_MODE == RF_MODE_2_4_GHZ) && (SUPPORTS_IEEE_MODE)
|
# if (RF_MODE == RF_MODE_2_4_GHZ) && (SUPPORTS_IEEE_MODE)
|
||||||
/*----- CC26xx IEEE Mode ----------------------------------------------------*/
|
|
||||||
/* Netstack configuration */
|
/* Netstack configuration */
|
||||||
# define NETSTACK_CONF_RADIO ieee_mode_driver
|
# define NETSTACK_CONF_RADIO ieee_mode_driver
|
||||||
|
|
||||||
/* CSMA configuration */
|
/* CSMA configuration */
|
||||||
# define CSMA_CONF_SEND_SOFT_ACK 0
|
# define CSMA_CONF_SEND_SOFT_ACK 0
|
||||||
|
|
||||||
/* Frequncy band configuration */
|
/* Frequncy band configuration */
|
||||||
# undef DOT_15_4G_FREQ_BAND_ID
|
# undef DOT_15_4G_FREQ_BAND_ID
|
||||||
# define DOT_15_4G_CONF_FREQ_BAND_ID DOT_15_4G_FREQ_BAND_2450
|
# define DOT_15_4G_CONF_FREQ_BAND_ID DOT_15_4G_FREQ_BAND_2450
|
||||||
|
|
||||||
# else
|
# else
|
||||||
/*----- CC26xx Non-supported Mode -------------------------------------------*/
|
/*----- CC26xx Unsupported Mode ---------------------------------------------*/
|
||||||
# error "IEEE mode only supported by CC26xx devices"
|
# error "IEEE-mode only supported by CC26xx devices"
|
||||||
# endif /* CC26xx RF Mode configuration */
|
# endif /* CC26xx RF Mode configuration */
|
||||||
|
|
||||||
/*----- Unsupported device line ---------------------------------------------*/
|
/*----- Unsupported device line ---------------------------------------------*/
|
||||||
@ -165,23 +199,23 @@
|
|||||||
/** @} */
|
/** @} */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* \name IEEE address configuration
|
* \name IEEE address configuration. Used to generate our link-local and
|
||||||
*
|
* global IPv6 addresses.
|
||||||
* Used to generate our link-local & IPv6 address
|
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Location of the IEEE address
|
* \brief Location of the IEEE address.
|
||||||
* 0 => Read from InfoPage,
|
* 0 => Read from InfoPage.
|
||||||
* 1 => Use a hardcoded address, configured by IEEE_ADDR_CONF_ADDRESS
|
* 1 => Use a hardcoded address, configured by IEEE_ADDR_CONF_ADDRESS.
|
||||||
*/
|
*/
|
||||||
#ifndef IEEE_ADDR_CONF_HARDCODED
|
#ifndef IEEE_ADDR_CONF_HARDCODED
|
||||||
#define IEEE_ADDR_CONF_HARDCODED 0
|
#define IEEE_ADDR_CONF_HARDCODED 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief The hardcoded IEEE address to be used when IEEE_ADDR_CONF_HARDCODED
|
* \brief The hardcoded IEEE address to be used when IEEE_ADDR_CONF_HARDCODED
|
||||||
* is defined as 1
|
* is defined as 1. Must be a byte array of size 8.
|
||||||
*/
|
*/
|
||||||
#ifndef IEEE_ADDR_CONF_ADDRESS
|
#ifndef IEEE_ADDR_CONF_ADDRESS
|
||||||
#define IEEE_ADDR_CONF_ADDRESS { 0x00, 0x12, 0x4B, 0x00, 0x89, 0xAB, 0xCD, 0xEF }
|
#define IEEE_ADDR_CONF_ADDRESS { 0x00, 0x12, 0x4B, 0x00, 0x89, 0xAB, 0xCD, 0xEF }
|
||||||
@ -189,107 +223,157 @@
|
|||||||
/** @} */
|
/** @} */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* \name RF configuration
|
* \name IEEE-mode configuration.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* RF Config */
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Configure auto-ACK for IEEE-mode, which is ACK generated by the
|
||||||
|
* radio.
|
||||||
|
* 0 => ACK generated by software
|
||||||
|
* 1 => ACK generated by the radio.
|
||||||
|
*/
|
||||||
#ifndef IEEE_MODE_CONF_AUTOACK
|
#ifndef IEEE_MODE_CONF_AUTOACK
|
||||||
#define IEEE_MODE_CONF_AUTOACK 1 /**< RF H/W generates ACKs */
|
#define IEEE_MODE_CONF_AUTOACK 1 /**< RF H/W generates ACKs */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Configure promiscouos mode for IEEE-mode.
|
||||||
|
*/
|
||||||
#ifndef IEEE_MODE_CONF_PROMISCOUS
|
#ifndef IEEE_MODE_CONF_PROMISCOUS
|
||||||
#define IEEE_MODE_CONF_PROMISCOUS 0 /**< 1 to enable promiscous mode */
|
#define IEEE_MODE_CONF_PROMISCOUS 0 /**< 1 to enable promiscous mode */
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* \name TI Drivers Configuration
|
* \name TI Drivers Configuration.
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* UART */
|
/**
|
||||||
|
* \brief Enable or disable UART driver.
|
||||||
|
*/
|
||||||
#ifndef TI_UART_CONF_ENABLE
|
#ifndef TI_UART_CONF_ENABLE
|
||||||
#define TI_UART_CONF_ENABLE 1
|
#define TI_UART_CONF_ENABLE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Enable or disable UART0 peripheral.
|
||||||
|
*/
|
||||||
#ifndef TI_UART_CONF_UART0_ENABLE
|
#ifndef TI_UART_CONF_UART0_ENABLE
|
||||||
#define TI_UART_CONF_UART0_ENABLE TI_UART_CONF_ENABLE
|
#define TI_UART_CONF_UART0_ENABLE TI_UART_CONF_ENABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Enable or disable UART1 peripheral.
|
||||||
|
*/
|
||||||
#ifndef TI_UART_CONF_UART1_ENABLE
|
#ifndef TI_UART_CONF_UART1_ENABLE
|
||||||
#define TI_UART_CONF_UART1_ENABLE 0
|
#define TI_UART_CONF_UART1_ENABLE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief UART driver baud rate configuration.
|
||||||
|
*/
|
||||||
#ifndef TI_UART_CONF_BAUD_RATE
|
#ifndef TI_UART_CONF_BAUD_RATE
|
||||||
#define TI_UART_CONF_BAUD_RATE 115200
|
#define TI_UART_CONF_BAUD_RATE 115200
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* SPI */
|
/**
|
||||||
|
* \brief Enable or disable SPI driver.
|
||||||
|
*/
|
||||||
#ifndef TI_SPI_CONF_ENABLE
|
#ifndef TI_SPI_CONF_ENABLE
|
||||||
#define TI_SPI_CONF_ENABLE 1
|
#define TI_SPI_CONF_ENABLE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Enable or disable SPI0 peripheral.
|
||||||
|
*/
|
||||||
#ifndef TI_SPI_CONF_SPI0_ENABLE
|
#ifndef TI_SPI_CONF_SPI0_ENABLE
|
||||||
#define TI_SPI_CONF_SPI0_ENABLE TI_SPI_CONF_ENABLE
|
#define TI_SPI_CONF_SPI0_ENABLE TI_SPI_CONF_ENABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Enable or disable SPI1 peripheral.
|
||||||
|
*/
|
||||||
#ifndef TI_SPI_CONF_SPI1_ENABLE
|
#ifndef TI_SPI_CONF_SPI1_ENABLE
|
||||||
#define TI_SPI_CONF_SPI1_ENABLE 0
|
#define TI_SPI_CONF_SPI1_ENABLE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* I2C */
|
/**
|
||||||
|
* \brief Enable or disable I2C driver.
|
||||||
|
*/
|
||||||
#ifndef TI_I2C_CONF_ENABLE
|
#ifndef TI_I2C_CONF_ENABLE
|
||||||
#define TI_I2C_CONF_ENABLE 1
|
#define TI_I2C_CONF_ENABLE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Enable or disable I2C0 peripheral.
|
||||||
|
*/
|
||||||
#ifndef TI_I2C_CONF_I2C0_ENABLE
|
#ifndef TI_I2C_CONF_I2C0_ENABLE
|
||||||
#define TI_I2C_CONF_I2C0_ENABLE TI_I2C_CONF_ENABLE
|
#define TI_I2C_CONF_I2C0_ENABLE TI_I2C_CONF_ENABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* NVS */
|
/**
|
||||||
|
* \brief Enable or disable Non-Volatile Storage (NVS) driver.
|
||||||
|
*/
|
||||||
#ifndef TI_NVS_CONF_ENABLE
|
#ifndef TI_NVS_CONF_ENABLE
|
||||||
#define TI_NVS_CONF_ENABLE 1
|
#define TI_NVS_CONF_ENABLE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Enable or disable internal flash storage.
|
||||||
|
*/
|
||||||
#ifndef TI_NVS_CONF_NVS_INTERNAL_ENABLE
|
#ifndef TI_NVS_CONF_NVS_INTERNAL_ENABLE
|
||||||
#define TI_NVS_CONF_NVS_INTERNAL_ENABLE TI_NVS_CONF_ENABLE
|
#define TI_NVS_CONF_NVS_INTERNAL_ENABLE TI_NVS_CONF_ENABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Enable or disable external flash storage.
|
||||||
|
*/
|
||||||
#ifndef TI_NVS_CONF_NVS_EXTERNAL_ENABLE
|
#ifndef TI_NVS_CONF_NVS_EXTERNAL_ENABLE
|
||||||
#define TI_NVS_CONF_NVS_EXTERNAL_ENABLE TI_NVS_CONF_ENABLE
|
#define TI_NVS_CONF_NVS_EXTERNAL_ENABLE TI_NVS_CONF_ENABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Display */
|
/**
|
||||||
|
* \brief Enable or disable Display driver.
|
||||||
|
*/
|
||||||
#ifndef TI_DISPLAY_CONF_ENABLE
|
#ifndef TI_DISPLAY_CONF_ENABLE
|
||||||
#define TI_DISPLAY_CONF_ENABLE 0
|
#define TI_DISPLAY_CONF_ENABLE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* UART Display uses UART0 */
|
/**
|
||||||
|
* \brief Enable or disable UART Display peripheral.
|
||||||
|
*/
|
||||||
#ifndef TI_DISPLAY_CONF_UART_ENABLE
|
#ifndef TI_DISPLAY_CONF_UART_ENABLE
|
||||||
#define TI_DISPLAY_CONF_UART_ENABLE TI_UART_CONF_UART0_ENABLE
|
#define TI_DISPLAY_CONF_UART_ENABLE TI_UART_CONF_UART0_ENABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Configure UART Display peripheral to use ANSI or not.
|
||||||
|
*/
|
||||||
#ifndef TI_DISPLAY_CONF_USE_UART_ANSI
|
#ifndef TI_DISPLAY_CONF_USE_UART_ANSI
|
||||||
#define TI_DISPLAY_CONF_USE_UART_ANSI 0
|
#define TI_DISPLAY_CONF_USE_UART_ANSI 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* LCD Display uses SPI0 */
|
/**
|
||||||
|
* \brief Enable or disable LCD Display peripheral.
|
||||||
|
*/
|
||||||
#ifndef TI_DISPLAY_CONF_LCD_ENABLE
|
#ifndef TI_DISPLAY_CONF_LCD_ENABLE
|
||||||
#define TI_DISPLAY_CONF_LCD_ENABLE TI_SPI_CONF_SPI0_ENABLE
|
#define TI_DISPLAY_CONF_LCD_ENABLE TI_SPI_CONF_SPI0_ENABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* SD card */
|
/**
|
||||||
|
* \brief Enable or disable SD driver.
|
||||||
|
*/
|
||||||
#ifndef TI_SD_CONF_ENABLE
|
#ifndef TI_SD_CONF_ENABLE
|
||||||
#define TI_SD_CONF_ENABLE 0
|
#define TI_SD_CONF_ENABLE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* \name Misc. Configuration
|
* \name Slip configuration
|
||||||
*
|
*
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, Alex Stanoev
|
* Copyright (c) 2018, Texas Instruments Incorporated - http://www.ti.com/
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -27,13 +27,14 @@
|
|||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
/**
|
/**
|
||||||
* \addtogroup cc13xx-cc26xx
|
* \addtogroup cc13xx-cc26xx-cpu
|
||||||
* @{
|
* @{
|
||||||
*
|
*
|
||||||
* \file
|
* \file
|
||||||
* Customer Configuration (CCFG) for the cc13xx-cc26xx CPU family
|
* Customer Configuration (CCFG) for the CC13xx/CC26xx CPU family.
|
||||||
|
* \author
|
||||||
|
* Edvard Pettersen <e.pettersen@ti.com>
|
||||||
*/
|
*/
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#ifndef CCFG_CONF_H_
|
#ifndef CCFG_CONF_H_
|
||||||
@ -50,14 +51,14 @@
|
|||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if CCFG_CONF_JTAG_INTERFACE_DISABLE
|
#if CCFG_CONF_JTAG_INTERFACE_DISABLE
|
||||||
# define SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE 0x00
|
# define SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE 0x00
|
||||||
# define SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE 0x00
|
# define SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE 0x00
|
||||||
# define SET_CCFG_CCFG_TAP_DAP_0_PRCM_TAP_ENABLE 0x00
|
# define SET_CCFG_CCFG_TAP_DAP_0_PRCM_TAP_ENABLE 0x00
|
||||||
# define SET_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE 0x00
|
# define SET_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE 0x00
|
||||||
# define SET_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE 0x00
|
# define SET_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE 0x00
|
||||||
# define SET_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE 0x00
|
# define SET_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE 0x00
|
||||||
# define SET_CCFG_CCFG_TAP_DAP_1_WUC_TAP_ENABLE 0x00
|
# define SET_CCFG_CCFG_TAP_DAP_1_WUC_TAP_ENABLE 0x00
|
||||||
#endif /* CCFG_CONF_JTAG_INTERFACE_DISABLE */
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
@ -67,36 +68,35 @@
|
|||||||
* output power with the default PA front-end configuration.
|
* output power with the default PA front-end configuration.
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined(DEVICE_LINE_CC13XX) && CC13XX_CONF_TXPOWER_BOOST_MODE
|
#if defined(DEVICE_LINE_CC13XX) && (RF_CONF_TXPOWER_BOOST_MODE)
|
||||||
# define CCFG_FORCE_VDDR_HH 1
|
# define CCFG_FORCE_VDDR_HH 1
|
||||||
#endif /* CCFG_CONF_TXPOWER_BOOST_MODE */
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* \name ROM Bootloader configuration
|
* \name ROM Bootloader configuration
|
||||||
*
|
*
|
||||||
* Enable/Disable the ROM bootloader in your image, if the board supports it.
|
* Enable/Disable the ROM bootloader in your image, if the board supports it.
|
||||||
* Look in board.h to choose the DIO and corresponding level that will cause
|
* Look in Board.h to choose the DIO and corresponding level that will cause
|
||||||
* the chip to enter bootloader mode.
|
* the chip to enter bootloader mode.
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#ifndef CCFG_CONF_ROM_BOOTLOADER_ENABLE
|
#ifndef CCFG_CONF_ROM_BOOTLOADER_ENABLE
|
||||||
#define CCFG_CONF_ROM_BOOTLOADER_ENABLE 0
|
#define CCFG_CONF_ROM_BOOTLOADER_ENABLE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CCFG_CONF_ROM_BOOTLOADER_ENABLE
|
#if CCFG_CONF_ROM_BOOTLOADER_ENABLE
|
||||||
# define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0xC5
|
# define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0xC5
|
||||||
# define SET_CCFG_BL_CONFIG_BL_LEVEL 0x00
|
# define SET_CCFG_BL_CONFIG_BL_LEVEL 0x00
|
||||||
# if defined(CCFG_CONF_BL_PIN_NUMBER)
|
# if defined(CCFG_CONF_BL_PIN_NUMBER)
|
||||||
# define SET_CCFG_BL_CONFIG_BL_PIN_NUMBER CCFG_CONF_BL_PIN_NUMBER
|
# define SET_CCFG_BL_CONFIG_BL_PIN_NUMBER CCFG_CONF_BL_PIN_NUMBER
|
||||||
# endif
|
# endif
|
||||||
# define SET_CCFG_BL_CONFIG_BL_ENABLE 0xC5
|
# define SET_CCFG_BL_CONFIG_BL_ENABLE 0xC5
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#endif /* CCFG_CONF_H_ */
|
#endif /* CCFG_CONF_H_ */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* @}
|
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -45,10 +45,13 @@
|
|||||||
#define DOT_15_4G_H_
|
#define DOT_15_4G_H_
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#include "contiki.h"
|
#include "contiki.h"
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
#include <ti/devices/DeviceFamily.h>
|
#include <ti/devices/DeviceFamily.h>
|
||||||
#include DeviceFamily_constructPath(driverlib/rf_mailbox.h)
|
#include DeviceFamily_constructPath(driverlib/rf_mailbox.h)
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
/* IEEE 802.15.4g frequency band identifiers (Table 68f) */
|
/* IEEE 802.15.4g frequency band identifiers (Table 68f) */
|
||||||
#define DOT_15_4G_FREQ_BAND_169 0 /* 169.400–169.475 (Europe) - 169 MHz band */
|
#define DOT_15_4G_FREQ_BAND_169 0 /* 169.400–169.475 (Europe) - 169 MHz band */
|
||||||
#define DOT_15_4G_FREQ_BAND_450 1 /* 450–470 (US FCC Part 22/90) - 450 MHz band */
|
#define DOT_15_4G_FREQ_BAND_450 1 /* 450–470 (US FCC Part 22/90) - 450 MHz band */
|
||||||
@ -79,76 +82,89 @@
|
|||||||
*
|
*
|
||||||
* DOT_15_4G_CHAN0_FREQ is specified here in KHz
|
* DOT_15_4G_CHAN0_FREQ is specified here in KHz
|
||||||
*/
|
*/
|
||||||
#if DOT_15_4G_FREQ_BAND_ID==DOT_15_4G_FREQ_BAND_470
|
#if (DOT_15_4G_FREQ_BAND_ID == DOT_15_4G_FREQ_BAND_470)
|
||||||
# define DOT_15_4G_CHAN_MIN 0
|
# define DOT_15_4G_CHAN_MIN 0
|
||||||
# define DOT_15_4G_CHAN_MAX 198
|
# define DOT_15_4G_CHAN_MAX 198
|
||||||
# define DOT_15_4G_FREQ_SPACING 200
|
# define DOT_15_4G_FREQ_SPACING 200
|
||||||
# define DOT_15_4G_CHAN0_FREQ 470200
|
# define DOT_15_4G_CHAN0_FREQ 470200
|
||||||
|
|
||||||
|
# define PROP_MODE_CONF_CENTER_FREQ 0x01EA
|
||||||
# define PROP_MODE_CONF_LO_DIVIDER 0x0A
|
# define PROP_MODE_CONF_LO_DIVIDER 0x0A
|
||||||
|
|
||||||
#elif DOT_15_4G_FREQ_BAND_ID==DOT_15_4G_FREQ_BAND_780
|
#elif (DOT_15_4G_FREQ_BAND_ID == DOT_15_4G_FREQ_BAND_780)
|
||||||
# define DOT_15_4G_CHAN_MIN 0
|
# define DOT_15_4G_CHAN_MIN 0
|
||||||
# define DOT_15_4G_CHAN_MAX 38
|
# define DOT_15_4G_CHAN_MAX 38
|
||||||
# define DOT_15_4G_FREQ_SPACING 200
|
# define DOT_15_4G_FREQ_SPACING 200
|
||||||
# define DOT_15_4G_CHAN0_FREQ 779200
|
# define DOT_15_4G_CHAN0_FREQ 779200
|
||||||
|
|
||||||
|
# define PROP_MODE_CONF_CENTER_FREQ 0x030F
|
||||||
# define PROP_MODE_CONF_LO_DIVIDER 0x06
|
# define PROP_MODE_CONF_LO_DIVIDER 0x06
|
||||||
|
|
||||||
#elif DOT_15_4G_FREQ_BAND_ID==DOT_15_4G_FREQ_BAND_863
|
#elif (DOT_15_4G_FREQ_BAND_ID == DOT_15_4G_FREQ_BAND_863)
|
||||||
# define DOT_15_4G_CHAN_MIN 0
|
# define DOT_15_4G_CHAN_MIN 0
|
||||||
# define DOT_15_4G_CHAN_MAX 33
|
# define DOT_15_4G_CHAN_MAX 33
|
||||||
# define DOT_15_4G_FREQ_SPACING 200
|
# define DOT_15_4G_FREQ_SPACING 200
|
||||||
# define DOT_15_4G_CHAN0_FREQ 863125
|
# define DOT_15_4G_CHAN0_FREQ 863125
|
||||||
|
|
||||||
|
# define PROP_MODE_CONF_CENTER_FREQ 0x0362
|
||||||
# define PROP_MODE_CONF_LO_DIVIDER 0x05
|
# define PROP_MODE_CONF_LO_DIVIDER 0x05
|
||||||
|
|
||||||
#elif DOT_15_4G_FREQ_BAND_ID==DOT_15_4G_FREQ_BAND_915
|
#elif (DOT_15_4G_FREQ_BAND_ID == DOT_15_4G_FREQ_BAND_915)
|
||||||
# define DOT_15_4G_CHAN_MIN 0
|
# define DOT_15_4G_CHAN_MIN 0
|
||||||
# define DOT_15_4G_CHAN_MAX 128
|
# define DOT_15_4G_CHAN_MAX 128
|
||||||
# define DOT_15_4G_FREQ_SPACING 200
|
# define DOT_15_4G_FREQ_SPACING 200
|
||||||
# define DOT_15_4G_CHAN0_FREQ 902200
|
# define DOT_15_4G_CHAN0_FREQ 902200
|
||||||
|
|
||||||
|
# define PROP_MODE_CONF_CENTER_FREQ 0x0393
|
||||||
# define PROP_MODE_CONF_LO_DIVIDER 0x05
|
# define PROP_MODE_CONF_LO_DIVIDER 0x05
|
||||||
|
|
||||||
#elif DOT_15_4G_FREQ_BAND_ID==DOT_15_4G_FREQ_BAND_920
|
#elif (DOT_15_4G_FREQ_BAND_ID == DOT_15_4G_FREQ_BAND_920)
|
||||||
# define DOT_15_4G_CHAN_MIN 0
|
# define DOT_15_4G_CHAN_MIN 0
|
||||||
# define DOT_15_4G_CHAN_MAX 37
|
# define DOT_15_4G_CHAN_MAX 37
|
||||||
# define DOT_15_4G_FREQ_SPACING 200
|
# define DOT_15_4G_FREQ_SPACING 200
|
||||||
# define DOT_15_4G_CHAN0_FREQ 920600
|
# define DOT_15_4G_CHAN0_FREQ 920600
|
||||||
|
|
||||||
|
# define PROP_MODE_CONF_CENTER_FREQ 0x039C
|
||||||
# define PROP_MODE_CONF_LO_DIVIDER 0x05
|
# define PROP_MODE_CONF_LO_DIVIDER 0x05
|
||||||
|
|
||||||
#elif DOT_15_4G_FREQ_BAND_ID==DOT_15_4G_FREQ_BAND_950
|
#elif (DOT_15_4G_FREQ_BAND_ID == DOT_15_4G_FREQ_BAND_950)
|
||||||
# define DOT_15_4G_CHAN_MIN 0
|
# define DOT_15_4G_CHAN_MIN 0
|
||||||
# define DOT_15_4G_CHAN_MAX 32
|
# define DOT_15_4G_CHAN_MAX 32
|
||||||
# define DOT_15_4G_FREQ_SPACING 200
|
# define DOT_15_4G_FREQ_SPACING 200
|
||||||
# define DOT_15_4G_CHAN0_FREQ 951000
|
# define DOT_15_4G_CHAN0_FREQ 951000
|
||||||
|
|
||||||
|
# define PROP_MODE_CONF_CENTER_FREQ 0x03BA
|
||||||
# define PROP_MODE_CONF_LO_DIVIDER 0x05
|
# define PROP_MODE_CONF_LO_DIVIDER 0x05
|
||||||
|
|
||||||
#elif DOT_15_4G_FREQ_BAND_ID==DOT_15_4G_FREQ_BAND_2450
|
#elif (DOT_15_4G_FREQ_BAND_ID == DOT_15_4G_FREQ_BAND_2450)
|
||||||
# define DOT_15_4G_CHAN_MIN 11
|
# define DOT_15_4G_CHAN_MIN 11
|
||||||
# define DOT_15_4G_CHAN_MAX 26
|
# define DOT_15_4G_CHAN_MAX 26
|
||||||
# define DOT_15_4G_FREQ_SPACING 5000
|
# define DOT_15_4G_FREQ_SPACING 5000
|
||||||
# define DOT_15_4G_CHAN0_FREQ 2405000
|
# define DOT_15_4G_CHAN0_FREQ 2405000
|
||||||
|
|
||||||
#else
|
#else
|
||||||
# error The selected IEEE 802.15.4g frequency band is not supported
|
# error "The selected IEEE 802.15.4g frequency band is not supported"
|
||||||
#endif
|
#endif
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#define DOT_15_4_G_FREQ(chan) \
|
static inline uint32_t
|
||||||
(DOT_15_4G_CHAN0_FREQ + DOT_15_4G_FREQ_SPACING * ((chan) - DOT_15_4G_CHAN_MIN))
|
dot_15_4g_freq(const uint16_t chan)
|
||||||
|
{
|
||||||
#define DOT_15_4_G_CHAN_IN_RANGE(chan) \
|
const uint32_t chan0 = DOT_15_4G_CHAN0_FREQ;
|
||||||
(((chan) >= DOT_15_4G_CHAN_MIN) && ((chan) <= DOT_15_4G_CHAN_MAX))
|
const uint32_t spacing = DOT_15_4G_FREQ_SPACING;
|
||||||
|
const uint32_t chan_min = DOT_15_4G_CHAN_MIN;
|
||||||
|
return (chan0 + spacing * ((uint32_t)chan - chan_min));
|
||||||
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#define DOT_15_4_G_DEFAULT_CHAN IEEE802154_DEFAULT_CHANNEL
|
static inline bool
|
||||||
|
dot_15_4g_chan_in_range(const uint16_t chan)
|
||||||
/* Sanity check default channel */
|
{
|
||||||
#if !(DOT_15_4_G_CHAN_IN_RANGE(DOT_15_4_G_DEFAULT_CHAN))
|
const uint16_t chan_min = DOT_15_4G_CHAN_MIN;
|
||||||
# error IEEE802154_DEFAULT_CHANNEL is not in valid channel range
|
const uint16_t chan_max = DOT_15_4G_CHAN_MAX;
|
||||||
#endif
|
return ((chan >= chan_min) &&
|
||||||
|
(chan <= chan_max));
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#define DOT_15_4G_DEFAULT_CHAN IEEE802154_DEFAULT_CHANNEL
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#endif /* DOT_15_4G_H_ */
|
#endif /* DOT_15_4G_H_ */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include "contiki.h"
|
#include "contiki.h"
|
||||||
#include "dev/watchdog.h"
|
#include "dev/watchdog.h"
|
||||||
#include "sys/cc.h"
|
#include "sys/cc.h"
|
||||||
|
#include "sys/etimer.h"
|
||||||
#include "sys/process.h"
|
#include "sys/process.h"
|
||||||
#include "sys/energest.h"
|
#include "sys/energest.h"
|
||||||
#include "net/netstack.h"
|
#include "net/netstack.h"
|
||||||
@ -60,10 +61,10 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#if 0
|
#if 1
|
||||||
# define PRINTF(...)
|
|
||||||
#else
|
|
||||||
# define PRINTF(...) printf(__VA_ARGS__)
|
# define PRINTF(...) printf(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
# define PRINTF(...)
|
||||||
#endif
|
#endif
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#define CMD_FS_RETRIES 3
|
#define CMD_FS_RETRIES 3
|
||||||
@ -78,11 +79,17 @@
|
|||||||
|
|
||||||
#define EVENTS_CMD_DONE(events) (((events) & RF_EVENTS_CMD_DONE) != 0)
|
#define EVENTS_CMD_DONE(events) (((events) & RF_EVENTS_CMD_DONE) != 0)
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
/* Synth re-calibration every 3 minutes */
|
||||||
|
#define SYNTH_RECAL_INTERVAL (CLOCK_SECOND * 60 * 3)
|
||||||
|
|
||||||
|
static struct etimer synth_recal_timer;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
static RF_Object rf_netstack;
|
static RF_Object rf_netstack;
|
||||||
static RF_Object rf_ble;
|
static RF_Object rf_ble;
|
||||||
|
|
||||||
static RF_CmdHandle cmd_rx_handle;
|
static RF_CmdHandle cmd_rx_handle;
|
||||||
|
|
||||||
|
static bool rf_is_on;
|
||||||
static volatile bool rx_buf_full;
|
static volatile bool rx_buf_full;
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
@ -180,6 +187,9 @@ rf_yield(void)
|
|||||||
|
|
||||||
ENERGEST_OFF(ENERGEST_TYPE_LISTEN);
|
ENERGEST_OFF(ENERGEST_TYPE_LISTEN);
|
||||||
|
|
||||||
|
etimer_stop(&synth_recal_timer);
|
||||||
|
rf_is_on = false;
|
||||||
|
|
||||||
return RF_RESULT_OK;
|
return RF_RESULT_OK;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -285,7 +295,7 @@ netstack_sched_ieee_tx(bool recieve_ack)
|
|||||||
* chained TX command.
|
* chained TX command.
|
||||||
*/
|
*/
|
||||||
if (rx_ack_required) {
|
if (rx_ack_required) {
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(false);
|
||||||
if (res != RF_RESULT_OK) {
|
if (res != RF_RESULT_OK) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -393,7 +403,7 @@ netstack_sched_prop_tx(void)
|
|||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
rf_result_t
|
rf_result_t
|
||||||
netstack_sched_rx(void)
|
netstack_sched_rx(bool start)
|
||||||
{
|
{
|
||||||
if (cmd_rx_is_active()) {
|
if (cmd_rx_is_active()) {
|
||||||
PRINTF("netstack_sched_rx: already in RX\n");
|
PRINTF("netstack_sched_rx: already in RX\n");
|
||||||
@ -424,6 +434,11 @@ netstack_sched_rx(void)
|
|||||||
|
|
||||||
ENERGEST_ON(ENERGEST_TYPE_LISTEN);
|
ENERGEST_ON(ENERGEST_TYPE_LISTEN);
|
||||||
|
|
||||||
|
if (start) {
|
||||||
|
rf_is_on = true;
|
||||||
|
process_poll(&rf_core_process);
|
||||||
|
}
|
||||||
|
|
||||||
return RF_RESULT_OK;
|
return RF_RESULT_OK;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -502,27 +517,47 @@ PROCESS_THREAD(rf_core_process, ev, data)
|
|||||||
PROCESS_BEGIN();
|
PROCESS_BEGIN();
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
PROCESS_YIELD_UNTIL(ev == PROCESS_EVENT_POLL);
|
PROCESS_YIELD_UNTIL((ev == PROCESS_EVENT_POLL) ||
|
||||||
|
etimer_expired(&synth_recal_timer));
|
||||||
|
|
||||||
do {
|
if (ev == PROCESS_EVENT_POLL) {
|
||||||
//watchdog_periodic();
|
do {
|
||||||
packetbuf_clear();
|
watchdog_periodic();
|
||||||
len = NETSTACK_RADIO.read(packetbuf_dataptr(), PACKETBUF_SIZE);
|
packetbuf_clear();
|
||||||
|
len = NETSTACK_RADIO.read(packetbuf_dataptr(), PACKETBUF_SIZE);
|
||||||
|
|
||||||
if (rx_buf_full) {
|
/*
|
||||||
PRINTF("rf_core: RX buf full, restart RX\n");
|
* RX will stop if the RX buffers are full. In this case, restart
|
||||||
rx_buf_full = false;
|
* RX after we've freed at least on packet.
|
||||||
/* Restart RX */
|
*/
|
||||||
netstack_stop_rx();
|
if (rx_buf_full) {
|
||||||
netstack_sched_rx();
|
PRINTF("rf_core: RX buf full, restart RX\n");
|
||||||
}
|
rx_buf_full = false;
|
||||||
|
|
||||||
if(len > 0) {
|
/* Restart RX. */
|
||||||
packetbuf_set_datalen(len);
|
netstack_stop_rx();
|
||||||
|
netstack_sched_rx(false);
|
||||||
|
}
|
||||||
|
|
||||||
NETSTACK_MAC.input();
|
if(len > 0) {
|
||||||
}
|
packetbuf_set_datalen(len);
|
||||||
} while(len > 0);
|
|
||||||
|
NETSTACK_MAC.input();
|
||||||
|
}
|
||||||
|
} while(len > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* start the synth re-calibration timer once. */
|
||||||
|
if (rf_is_on) {
|
||||||
|
rf_is_on = false;
|
||||||
|
etimer_set(&synth_recal_timer, SYNTH_RECAL_INTERVAL);
|
||||||
|
}
|
||||||
|
/* Scheduling CMD_FS will re-calibrate the synth. */
|
||||||
|
if (etimer_expired(&synth_recal_timer)) {
|
||||||
|
netstack_sched_fs();
|
||||||
|
|
||||||
|
etimer_reset(&synth_recal_timer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
PROCESS_END();
|
PROCESS_END();
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ RF_Handle netstack_open(RF_Params *params);
|
|||||||
rf_result_t netstack_sched_fs(void);
|
rf_result_t netstack_sched_fs(void);
|
||||||
rf_result_t netstack_sched_ieee_tx(bool recieve_ack);
|
rf_result_t netstack_sched_ieee_tx(bool recieve_ack);
|
||||||
rf_result_t netstack_sched_prop_tx(void);
|
rf_result_t netstack_sched_prop_tx(void);
|
||||||
rf_result_t netstack_sched_rx(void);
|
rf_result_t netstack_sched_rx(bool start);
|
||||||
rf_result_t netstack_stop_rx(void);
|
rf_result_t netstack_stop_rx(void);
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* BLE radio: BLE Beacon Daemon */
|
/* BLE radio: BLE Beacon Daemon */
|
||||||
|
@ -78,7 +78,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
#if 0
|
#if 1
|
||||||
# define PRINTF(...)
|
# define PRINTF(...)
|
||||||
#else
|
#else
|
||||||
# define PRINTF(...) printf(__VA_ARGS__)
|
# define PRINTF(...) printf(__VA_ARGS__)
|
||||||
@ -106,23 +106,13 @@
|
|||||||
#else
|
#else
|
||||||
# define IEEE_MODE_RSSI_THRESHOLD 0xA6
|
# define IEEE_MODE_RSSI_THRESHOLD 0xA6
|
||||||
#endif /* IEEE_MODE_CONF_RSSI_THRESHOLD */
|
#endif /* IEEE_MODE_CONF_RSSI_THRESHOLD */
|
||||||
|
|
||||||
/* Configuration for TX power table */
|
|
||||||
#ifdef IEEE_MODE_CONF_TX_POWER_TABLE
|
|
||||||
# define TX_POWER_TABLE IEEE_MODE_CONF_TX_POWER_TABLE
|
|
||||||
#else
|
|
||||||
# define TX_POWER_TABLE rf_ieee_tx_power_table
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef IEEE_MODE_CONF_TX_POWER_TABLE_SIZE
|
|
||||||
# define TX_POWER_TABLE_SIZE IEEE_MODE_CONF_TX_POWER_TABLE_SIZE
|
|
||||||
#else
|
|
||||||
# define TX_POWER_TABLE_SIZE RF_IEEE_TX_POWER_TABLE_SIZE
|
|
||||||
#endif
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* TX power table convenience macros */
|
/* TX power table convenience macros */
|
||||||
#define TX_POWER_MIN (TX_POWER_TABLE[0].power)
|
#define TX_POWER_TABLE rf_ieee_tx_power_table
|
||||||
#define TX_POWER_MAX (TX_POWER_TABLE[TX_POWER_TABLE_SIZE - 1].power)
|
#define TX_POWER_TABLE_SIZE rf_ieee_tx_power_table_size
|
||||||
|
|
||||||
|
#define TX_POWER_MIN (TX_POWER_TABLE[0].power)
|
||||||
|
#define TX_POWER_MAX (TX_POWER_TABLE[TX_POWER_TABLE_SIZE - 1].power)
|
||||||
|
|
||||||
#define TX_POWER_IN_RANGE(dbm) (((dbm) >= TX_POWER_MIN) && ((dbm) <= TX_POWER_MAX))
|
#define TX_POWER_IN_RANGE(dbm) (((dbm) >= TX_POWER_MIN) && ((dbm) <= TX_POWER_MAX))
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -310,10 +300,10 @@ init_rf_params(void)
|
|||||||
static rf_result_t
|
static rf_result_t
|
||||||
set_channel(uint8_t channel)
|
set_channel(uint8_t channel)
|
||||||
{
|
{
|
||||||
if (!DOT_15_4_G_CHAN_IN_RANGE(channel)) {
|
if (!dot_15_4g_chan_in_range(channel)) {
|
||||||
PRINTF("set_channel: illegal channel %d, defaults to %d\n",
|
PRINTF("set_channel: illegal channel %d, defaults to %d\n",
|
||||||
(int)channel, DOT_15_4_G_DEFAULT_CHAN);
|
(int)channel, DOT_15_4G_DEFAULT_CHAN);
|
||||||
channel = DOT_15_4_G_DEFAULT_CHAN;
|
channel = DOT_15_4G_DEFAULT_CHAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -328,7 +318,7 @@ set_channel(uint8_t channel)
|
|||||||
|
|
||||||
cmd_rx.channel = channel;
|
cmd_rx.channel = channel;
|
||||||
|
|
||||||
const uint32_t new_freq = (uint32_t)DOT_15_4_G_FREQ(channel);
|
const uint32_t new_freq = dot_15_4g_freq(channel);
|
||||||
const uint16_t freq = (uint16_t)(new_freq / 1000);
|
const uint16_t freq = (uint16_t)(new_freq / 1000);
|
||||||
const uint16_t frac = (uint16_t)(((new_freq - (freq * 1000)) * 0x10000) / 1000);
|
const uint16_t frac = (uint16_t)(((new_freq - (freq * 1000)) * 0x10000) / 1000);
|
||||||
|
|
||||||
@ -428,7 +418,7 @@ init(void)
|
|||||||
return RF_RESULT_ERROR;
|
return RF_RESULT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_channel(DOT_15_4_G_DEFAULT_CHAN);
|
set_channel(DOT_15_4G_DEFAULT_CHAN);
|
||||||
|
|
||||||
ENERGEST_ON(ENERGEST_TYPE_LISTEN);
|
ENERGEST_ON(ENERGEST_TYPE_LISTEN);
|
||||||
|
|
||||||
@ -598,7 +588,7 @@ cca_request(cmd_cca_req_t *cmd_cca_req)
|
|||||||
const bool rx_is_idle = !rx_is_active();
|
const bool rx_is_idle = !rx_is_active();
|
||||||
|
|
||||||
if (rx_is_idle) {
|
if (rx_is_idle) {
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(false);
|
||||||
if (res != RF_RESULT_OK) {
|
if (res != RF_RESULT_OK) {
|
||||||
return RF_RESULT_ERROR;
|
return RF_RESULT_ERROR;
|
||||||
}
|
}
|
||||||
@ -700,7 +690,7 @@ on(void)
|
|||||||
|
|
||||||
data_queue_reset();
|
data_queue_reset();
|
||||||
|
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(true);
|
||||||
|
|
||||||
if (res != RF_RESULT_OK) {
|
if (res != RF_RESULT_OK) {
|
||||||
return RF_RESULT_ERROR;
|
return RF_RESULT_ERROR;
|
||||||
@ -854,7 +844,7 @@ set_value(radio_param_t param, radio_value_t value)
|
|||||||
|
|
||||||
/* Channel */
|
/* Channel */
|
||||||
case RADIO_PARAM_CHANNEL:
|
case RADIO_PARAM_CHANNEL:
|
||||||
if (!DOT_15_4_G_CHAN_IN_RANGE(value)) {
|
if (!dot_15_4g_chan_in_range(value)) {
|
||||||
return RADIO_RESULT_INVALID_VALUE;
|
return RADIO_RESULT_INVALID_VALUE;
|
||||||
}
|
}
|
||||||
set_channel((uint8_t)value);
|
set_channel((uint8_t)value);
|
||||||
@ -868,7 +858,7 @@ set_value(radio_param_t param, radio_value_t value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
netstack_stop_rx();
|
netstack_stop_rx();
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(false);
|
||||||
return (res == RF_RESULT_OK)
|
return (res == RF_RESULT_OK)
|
||||||
? RADIO_RESULT_OK
|
? RADIO_RESULT_OK
|
||||||
: RADIO_RESULT_ERROR;
|
: RADIO_RESULT_ERROR;
|
||||||
@ -881,7 +871,7 @@ set_value(radio_param_t param, radio_value_t value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
netstack_stop_rx();
|
netstack_stop_rx();
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(false);
|
||||||
return (res == RF_RESULT_OK)
|
return (res == RF_RESULT_OK)
|
||||||
? RADIO_RESULT_OK
|
? RADIO_RESULT_OK
|
||||||
: RADIO_RESULT_ERROR;
|
: RADIO_RESULT_ERROR;
|
||||||
@ -920,7 +910,7 @@ set_value(radio_param_t param, radio_value_t value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
netstack_stop_rx();
|
netstack_stop_rx();
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(false);
|
||||||
return (res == RF_RESULT_OK)
|
return (res == RF_RESULT_OK)
|
||||||
? RADIO_RESULT_OK
|
? RADIO_RESULT_OK
|
||||||
: RADIO_RESULT_ERROR;
|
: RADIO_RESULT_ERROR;
|
||||||
@ -952,7 +942,7 @@ set_value(radio_param_t param, radio_value_t value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
netstack_stop_rx();
|
netstack_stop_rx();
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(false);
|
||||||
return (res == RF_RESULT_OK)
|
return (res == RF_RESULT_OK)
|
||||||
? RADIO_RESULT_OK
|
? RADIO_RESULT_OK
|
||||||
: RADIO_RESULT_ERROR;
|
: RADIO_RESULT_ERROR;
|
||||||
@ -1028,7 +1018,7 @@ set_object(radio_param_t param, const void *src, size_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
netstack_stop_rx();
|
netstack_stop_rx();
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(false);
|
||||||
return (res == RF_RESULT_OK)
|
return (res == RF_RESULT_OK)
|
||||||
? RADIO_RESULT_OK
|
? RADIO_RESULT_OK
|
||||||
: RADIO_RESULT_ERROR;
|
: RADIO_RESULT_ERROR;
|
||||||
|
@ -136,15 +136,9 @@
|
|||||||
/* How long to wait for the rx read entry to become ready */
|
/* How long to wait for the rx read entry to become ready */
|
||||||
#define TIMEOUT_DATA_ENTRY_BUSY (RTIMER_SECOND / 250)
|
#define TIMEOUT_DATA_ENTRY_BUSY (RTIMER_SECOND / 250)
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* Configuration for TX power table */
|
|
||||||
#ifdef PROP_MODE_CONF_TX_POWER_TABLE
|
|
||||||
# define TX_POWER_TABLE PROP_MODE_CONF_TX_POWER_TABLE
|
|
||||||
#else
|
|
||||||
# define TX_POWER_TABLE rf_prop_tx_power_table
|
|
||||||
#endif
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
/* TX power table convenience macros */
|
/* TX power table convenience macros */
|
||||||
#define TX_POWER_TABLE_SIZE ((sizeof(TX_POWER_TABLE) / sizeof(TX_POWER_TABLE[0])) - 1)
|
#define TX_POWER_TABLE rf_prop_tx_power_table
|
||||||
|
#define TX_POWER_TABLE_SIZE rf_prop_tx_power_table_size
|
||||||
|
|
||||||
#define TX_POWER_MIN (TX_POWER_TABLE[0].power)
|
#define TX_POWER_MIN (TX_POWER_TABLE[0].power)
|
||||||
#define TX_POWER_MAX (TX_POWER_TABLE[TX_POWER_TABLE_SIZE - 1].power)
|
#define TX_POWER_MAX (TX_POWER_TABLE[TX_POWER_TABLE_SIZE - 1].power)
|
||||||
@ -208,11 +202,14 @@ static int off(void);
|
|||||||
static void
|
static void
|
||||||
init_rf_params(void)
|
init_rf_params(void)
|
||||||
{
|
{
|
||||||
|
cmd_radio_setup.centerFreq = PROP_MODE_CONF_CENTER_FREQ;
|
||||||
|
cmd_radio_setup.loDivider = PROP_MODE_CONF_LO_DIVIDER;
|
||||||
|
|
||||||
data_queue_t *data_queue = data_queue_init(sizeof(lensz_t));
|
data_queue_t *data_queue = data_queue_init(sizeof(lensz_t));
|
||||||
|
|
||||||
cmd_rx.maxPktLen = DOT_4G_MAX_FRAME_LEN - cmd_rx.lenOffset;
|
cmd_rx.maxPktLen = DOT_4G_MAX_FRAME_LEN - cmd_rx.lenOffset;
|
||||||
cmd_rx.pQueue = data_queue;
|
cmd_rx.pQueue = data_queue;
|
||||||
cmd_rx.pOutput = (uint8_t *)&prop_radio.rx_stats;
|
cmd_rx.pOutput = (uint8_t *)&prop_radio.rx_stats;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static int8_t
|
static int8_t
|
||||||
@ -223,7 +220,7 @@ get_rssi(void)
|
|||||||
const bool rx_is_idle = !rx_is_active();
|
const bool rx_is_idle = !rx_is_active();
|
||||||
|
|
||||||
if (rx_is_idle) {
|
if (rx_is_idle) {
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(false);
|
||||||
if (res != RF_RESULT_OK) {
|
if (res != RF_RESULT_OK) {
|
||||||
return RF_GET_RSSI_ERROR_VAL;
|
return RF_GET_RSSI_ERROR_VAL;
|
||||||
}
|
}
|
||||||
@ -266,10 +263,10 @@ set_channel(uint16_t channel)
|
|||||||
{
|
{
|
||||||
rf_result_t res;
|
rf_result_t res;
|
||||||
|
|
||||||
if (!DOT_15_4_G_CHAN_IN_RANGE(channel)) {
|
if (!dot_15_4g_chan_in_range(channel)) {
|
||||||
PRINTF("set_channel: illegal channel %d, defaults to %d\n",
|
PRINTF("set_channel: illegal channel %d, defaults to %d\n",
|
||||||
(int)channel, IEEE802154_DEFAULT_CHANNEL);
|
(int)channel, DOT_15_4G_DEFAULT_CHAN);
|
||||||
channel = IEEE802154_DEFAULT_CHANNEL;
|
channel = DOT_15_4G_DEFAULT_CHAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channel == prop_radio.channel) {
|
if (channel == prop_radio.channel) {
|
||||||
@ -277,7 +274,7 @@ set_channel(uint16_t channel)
|
|||||||
return RF_RESULT_OK;
|
return RF_RESULT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint32_t new_freq = DOT_15_4_G_FREQ(channel);
|
const uint32_t new_freq = dot_15_4g_freq(channel);
|
||||||
const uint16_t freq = (uint16_t)(new_freq / 1000);
|
const uint16_t freq = (uint16_t)(new_freq / 1000);
|
||||||
const uint16_t frac = (uint16_t)(((new_freq - (freq * 1000)) * 0x10000) / 1000);
|
const uint16_t frac = (uint16_t)(((new_freq - (freq * 1000)) * 0x10000) / 1000);
|
||||||
|
|
||||||
@ -513,7 +510,7 @@ on(void)
|
|||||||
|
|
||||||
data_queue_reset();
|
data_queue_reset();
|
||||||
|
|
||||||
res = netstack_sched_rx();
|
res = netstack_sched_rx(true);
|
||||||
|
|
||||||
if (res != RF_RESULT_OK) {
|
if (res != RF_RESULT_OK) {
|
||||||
return RF_RESULT_ERROR;
|
return RF_RESULT_ERROR;
|
||||||
|
Loading…
Reference in New Issue
Block a user