1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/cpu/cc2538/include/cc2538_rf_internal.h

105 lines
2.6 KiB
C

/*
* Copyright (C) 2016 MUTEX NZ Ltd.
*
* This file is subject to the terms and conditions of the GNU Lesser General
* Public License v2.1. See the file LICENSE in the top level directory for more
* details.
*
*/
/**
* @ingroup cpu_cc2538
* @{
*
* @file
* @brief Internal interfaces for the cc2538_rf driver
*
* @author Aaron Sowry <aaron@mutex.nz>
*/
#ifndef CC2538_RF_INTERNAL_H
#define CC2538_RF_INTERNAL_H
#ifdef __cplusplus
extern "C" {
#endif
#define CC2538_RX_FIFO_ADDR 0x40088000
#define CC2538_TX_FIFO_ADDR 0x40088200
/**
* @brief Read a single byte from the RX FIFO
*
* This function will return the first currently unread byte
* from the RX FIFO, and advance the FIFO pointer by one. Hence,
* subsequent calls to this function will return subsequent bytes
* from the RX FIFO.
*
* @return The first currently unread byte from the RX FIFO
*/
uint_fast8_t rfcore_read_byte(void);
/**
* @brief Peek a single byte from the RX FIFO
*
* Peeking, as opposed to reading, a byte from the RX FIFO
* will not advance the FIFO pointer. Further, bytes may be
* read from any position in the FIFO by providing an index.
*
* @param[in] idx The index of the byte to peek
*
* @return The byte at index idx
*/
uint_fast8_t rfcore_peek_rx_fifo(int idx);
/**
* @brief Read the remaining unread data from the RX FIFO
*
* @param[out] buf The buffer to read the data into
* @param[in] len The maximum length of the buffer
*/
void rfcore_read_fifo(void *buf, uint_fast8_t len);
/**
* @brief Issue a command strobe from the CPU to the radio
*
* @param[in] instr The instruction to issue
*/
void rfcore_strobe(uint_fast8_t instr);
/**
* @brief Write a single byte to the next index of the TX FIFO
*
* @param[in] byte The byte to write
*/
void rfcore_write_byte(uint_fast8_t byte);
/**
* @brief Poke a single byte in the TX FIFO
*
* Poking, as opposed to writing, a byte to the TX FIFO
* will not advance the FIFO pointer. Further, bytes may be
* written to any position in the FIFO by providing an index.
*
* @param[in] idx The index of the byte to write to
* @param[in] byte The byte to write
*/
void rfcore_poke_tx_fifo(int idx, uint_fast8_t byte);
/**
* @brief Write a string of bytes to the TX FIFO
*
* @param[in] buf The buffer containing the data to write
* @param[in] len The length of the data to write
*/
void rfcore_write_fifo(const void *buf, uint_fast8_t len);
bool RFCORE_ASSERT_failure(const char *expr, const char *func, int line);
#ifdef __cplusplus
}
#endif
#endif /* CC2538_RF_INTERNAL_H */
/** @} */