From 7f1aa67611eb83eff1f1a1e9d2e953eac25cfd3c Mon Sep 17 00:00:00 2001 From: Arto Kinnunen Date: Fri, 4 Sep 2020 13:19:52 +0300 Subject: [PATCH] 802.15.4 Atmel RF driver update Sync with master version v3.3.2 --- .../atmel-rf-driver/NanostackRfPhyAtmel.h | 2 +- .../source/NanostackRfPhyAT86RF215.cpp | 2 +- .../source/NanostackRfPhyAtmel.cpp | 36 +++++++++++++------ .../atmel-rf-driver/source/rfbits.h | 3 ++ 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h b/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h index 5a0d13164a..67f710a05e 100644 --- a/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h +++ b/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h @@ -20,7 +20,7 @@ #include "at24mac.h" #include "PinNames.h" -#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && DEVICE_I2C && defined(MBED_CONF_RTOS_PRESENT) +#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && DEVICE_I2C && DEVICE_INTERRUPTIN && defined(MBED_CONF_RTOS_PRESENT) #include "NanostackRfPhy.h" diff --git a/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAT86RF215.cpp b/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAT86RF215.cpp index 7c42547d83..d90e07261d 100644 --- a/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAT86RF215.cpp +++ b/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAT86RF215.cpp @@ -16,7 +16,7 @@ #include -#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && DEVICE_INTERRUPTIN && defined(MBED_CONF_RTOS_PRESENT) +#if defined(MBED_CONF_NANOSTACK_CONFIGURATION) && DEVICE_SPI && DEVICE_I2C && DEVICE_INTERRUPTIN && defined(MBED_CONF_RTOS_PRESENT) #include "ns_types.h" #include "platform/arm_hal_interrupt.h" diff --git a/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAtmel.cpp b/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAtmel.cpp index ef3ce7f447..f2b266fab5 100644 --- a/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAtmel.cpp +++ b/components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAtmel.cpp @@ -34,6 +34,21 @@ #include "inttypes.h" #include "Timeout.h" #include "platform/mbed_error.h" +#include "platform/mbed_version.h" + +#if (MBED_VERSION > MBED_ENCODE_VERSION(6, 0, 0)) +/* Mbed OS 6.0 introduces support for chrono time management */ +using namespace std::chrono; +#define ATMEL_RF_TIME_50US 50us +#define ATMEL_RF_TIME_2MS 2ms +#define ATMEL_RF_TIME_10MS 10ms +#define ATMEL_RF_ATTACH(timer_ref, signal_ref, timeout_ref) timer_ref.attach(signal_ref, timeout_ref) +#else +#define ATMEL_RF_TIME_50US 50 +#define ATMEL_RF_TIME_2MS 2 +#define ATMEL_RF_TIME_10MS 10 +#define ATMEL_RF_ATTACH(timer_ref, signal_ref, timeout_ref) timer_ref.attach_us(signal_ref, timeout_ref) +#endif #define TRACE_GROUP "AtRF" @@ -345,7 +360,6 @@ static rf_trx_part_e rf_radio_type_read(void) return ret_val; } - /* * \brief Function starts the ACK wait timeout. * @@ -356,9 +370,9 @@ static rf_trx_part_e rf_radio_type_read(void) static void rf_if_ack_wait_timer_start(uint16_t slots) { #ifdef MBED_CONF_RTOS_PRESENT - rf->ack_timer.attach_us(rf_if_ack_timer_signal, slots * 50); + ATMEL_RF_ATTACH(rf->ack_timer, rf_if_ack_timer_signal, slots * ATMEL_RF_TIME_50US); #else - rf->ack_timer.attach_us(rf_ack_wait_timer_interrupt, slots * 50); + ATMEL_RF_ATTACH(rf->ack_timer, rf_ack_wait_timer_interrupt, slots * ATMEL_RF_TIME_50US); #endif } @@ -372,9 +386,9 @@ static void rf_if_ack_wait_timer_start(uint16_t slots) static void rf_if_calibration_timer_start(uint32_t slots) { #ifdef MBED_CONF_RTOS_PRESENT - rf->cal_timer.attach_us(rf_if_cal_timer_signal, slots * 50); + ATMEL_RF_ATTACH(rf->cal_timer, rf_if_cal_timer_signal, slots * ATMEL_RF_TIME_50US); #else - rf->cal_timer.attach_us(rf_calibration_timer_interrupt, slots * 50); + ATMEL_RF_ATTACH(rf->cal_timer, rf_calibration_timer_interrupt, slots * ATMEL_RF_TIME_50US); #endif } @@ -388,9 +402,9 @@ static void rf_if_calibration_timer_start(uint32_t slots) static void rf_if_cca_timer_start(uint32_t slots) { #ifdef MBED_CONF_RTOS_PRESENT - rf->cca_timer.attach_us(rf_if_cca_timer_signal, slots * 50); + ATMEL_RF_ATTACH(rf->cca_timer, rf_if_cca_timer_signal, slots * ATMEL_RF_TIME_50US); #else - rf->cca_timer.attach_us(rf_cca_timer_interrupt, slots * 50); + ATMEL_RF_ATTACH(rf->cca_timer, rf_cca_timer_interrupt, slots * ATMEL_RF_TIME_50US); #endif } @@ -519,14 +533,14 @@ static void rf_if_reset_radio(void) #endif rf->IRQ.rise(nullptr); rf->RST = 1; - ThisThread::sleep_for(2); + ThisThread::sleep_for(ATMEL_RF_TIME_2MS); rf->RST = 0; - ThisThread::sleep_for(10); + ThisThread::sleep_for(ATMEL_RF_TIME_10MS); CS_RELEASE(); rf->SLP_TR = 0; - ThisThread::sleep_for(10); + ThisThread::sleep_for(ATMEL_RF_TIME_10MS); rf->RST = 1; - ThisThread::sleep_for(10); + ThisThread::sleep_for(ATMEL_RF_TIME_10MS); rf->IRQ.rise(&rf_if_interrupt_handler); } diff --git a/components/802.15.4_RF/atmel-rf-driver/source/rfbits.h b/components/802.15.4_RF/atmel-rf-driver/source/rfbits.h index e9b17b2ea8..14970ffb30 100644 --- a/components/802.15.4_RF/atmel-rf-driver/source/rfbits.h +++ b/components/802.15.4_RF/atmel-rf-driver/source/rfbits.h @@ -17,6 +17,8 @@ #ifndef RFBITS_H_ #define RFBITS_H_ +#if DEVICE_SPI + #include "DigitalIn.h" #include "DigitalOut.h" #include "InterruptIn.h" @@ -78,4 +80,5 @@ public: DigitalOut ANT_SEL; }; +#endif /* DEVICE_SPI */ #endif /* RFBITS_H_ */