diff --git a/cpu/cc26xx-cc13xx/rf-core/prop-mode.c b/cpu/cc26xx-cc13xx/rf-core/prop-mode.c index 21e54c181..826a3d4cd 100644 --- a/cpu/cc26xx-cc13xx/rf-core/prop-mode.c +++ b/cpu/cc26xx-cc13xx/rf-core/prop-mode.c @@ -427,6 +427,26 @@ rf_cmd_prop_rx() return ret; } /*---------------------------------------------------------------------------*/ +static void +init_rx_buffers(void) +{ + rfc_dataEntry_t *entry; + + entry = (rfc_dataEntry_t *)rx_buf_0; + entry->status = DATA_ENTRY_STATUS_PENDING; + entry->config.type = DATA_ENTRY_TYPE_GEN; + entry->config.lenSz = DATA_ENTRY_LENSZ_WORD; + entry->length = RX_BUF_SIZE - 8; + entry->pNextEntry = rx_buf_1; + + entry = (rfc_dataEntry_t *)rx_buf_1; + entry->status = DATA_ENTRY_STATUS_PENDING; + entry->config.type = DATA_ENTRY_TYPE_GEN; + entry->config.lenSz = DATA_ENTRY_LENSZ_WORD; + entry->length = RX_BUF_SIZE - 8; + entry->pNextEntry = rx_buf_0; +} +/*---------------------------------------------------------------------------*/ static int rx_on_prop(void) { @@ -564,8 +584,6 @@ static const rf_core_primary_mode_t mode_prop = { static int init(void) { - rfc_dataEntry_t *entry; - lpm_register_module(&prop_lpm_module); if(ti_lib_chipinfo_chip_family_is_cc13xx() == false) { @@ -578,20 +596,6 @@ init(void) memset(rx_buf_0, 0, RX_BUF_SIZE); memset(rx_buf_1, 0, RX_BUF_SIZE); - entry = (rfc_dataEntry_t *)rx_buf_0; - entry->status = DATA_ENTRY_STATUS_PENDING; - entry->config.type = DATA_ENTRY_TYPE_GEN; - entry->config.lenSz = DATA_ENTRY_LENSZ_WORD; - entry->length = RX_BUF_SIZE - 8; - entry->pNextEntry = rx_buf_1; - - entry = (rfc_dataEntry_t *)rx_buf_1; - entry->status = DATA_ENTRY_STATUS_PENDING; - entry->config.type = DATA_ENTRY_TYPE_GEN; - entry->config.lenSz = DATA_ENTRY_LENSZ_WORD; - entry->length = RX_BUF_SIZE - 8; - entry->pNextEntry = rx_buf_0; - /* Set of RF Core data queue. Circular buffer, no last entry */ rx_data_queue.pCurrEntry = rx_buf_0; rx_data_queue.pLastEntry = NULL; @@ -904,6 +908,8 @@ on(void) rf_core_setup_interrupts(false); + init_rx_buffers(); + /* * Trigger a switch to the XOSC, so that we can subsequently use the RF FS * This will block until the XOSC is actually ready, but give how we @@ -927,8 +933,6 @@ on(void) static int off(void) { - rfc_dataEntry_t *entry; - /* * If we are in the middle of a BLE operation, we got called by ContikiMAC * from within an interrupt context. Abort, but pretend everything is OK. @@ -948,12 +952,6 @@ off(void) /* We pulled the plug, so we need to restore the status manually */ smartrf_settings_cmd_prop_rx_adv.status = RF_CORE_RADIO_OP_STATUS_IDLE; - entry = (rfc_dataEntry_t *)rx_buf_0; - entry->status = DATA_ENTRY_STATUS_PENDING; - - entry = (rfc_dataEntry_t *)rx_buf_1; - entry->status = DATA_ENTRY_STATUS_PENDING; - return RF_CORE_CMD_OK; } /*---------------------------------------------------------------------------*/