blob: bf9b9b6c1d505c9523da8de4e5a149a18f4b0810 [file] [log] [blame]
/* ieee802154_rf2xx_iface.h - ATMEL RF2XX transceiver interface */
/*
* Copyright (c) 2019-2020 Gerson Fernando Budke
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_DRIVERS_IEEE802154_IEEE802154_RF2XX_IFACE_H_
#define ZEPHYR_DRIVERS_IEEE802154_IEEE802154_RF2XX_IFACE_H_
/**
* @brief Resets the TRX radio
*
* @param[in] dev Transceiver device instance
*/
void rf2xx_iface_phy_rst(const struct device *dev);
/**
* @brief Start TX transmission
*
* @param[in] dev Transceiver device instance
*/
void rf2xx_iface_phy_tx_start(const struct device *dev);
/**
* @brief Reads current value from a transceiver register
*
* This function reads the current value from a transceiver register.
*
* @param[in] dev Transceiver device instance
* @param[in] addr Specifies the address of the trx register
* from which the data shall be read
*
* @return value of the register read
*/
uint8_t rf2xx_iface_reg_read(const struct device *dev,
uint8_t addr);
/**
* @brief Writes data into a transceiver register
*
* This function writes a value into transceiver register.
*
* @param[in] dev Transceiver device instance
* @param[in] addr Address of the trx register
* @param[in] data Data to be written to trx register
*
*/
void rf2xx_iface_reg_write(const struct device *dev,
uint8_t addr,
uint8_t data);
/**
* @brief Subregister read
*
* @param[in] dev Transceiver device instance
* @param[in] addr offset of the register
* @param[in] mask bit mask of the subregister
* @param[in] pos bit position of the subregister
*
* @return value of the read bit(s)
*/
uint8_t rf2xx_iface_bit_read(const struct device *dev,
uint8_t addr,
uint8_t mask,
uint8_t pos);
/**
* @brief Subregister write
*
* @param[in] dev Transceiver device instance
* @param[in] reg_addr Offset of the register
* @param[in] mask Bit mask of the subregister
* @param[in] pos Bit position of the subregister
* @param[out] new_value Data, which is muxed into the register
*/
void rf2xx_iface_bit_write(const struct device *dev,
uint8_t reg_addr,
uint8_t mask,
uint8_t pos,
uint8_t new_value);
/**
* @brief Reads frame buffer of the transceiver
*
* This function reads the frame buffer of the transceiver.
*
* @param[in] dev Transceiver device instance
* @param[out] data Pointer to the location to store frame
* @param[in] length Number of bytes to be read from the frame
*/
void rf2xx_iface_frame_read(const struct device *dev,
uint8_t *data,
uint8_t length);
/**
* @brief Writes data into frame buffer of the transceiver
*
* This function writes data into the frame buffer of the transceiver
*
* @param[in] dev Transceiver device instance
* @param[in] data Pointer to data to be written into frame buffer
* @param[in] length Number of bytes to be written into frame buffer
*/
void rf2xx_iface_frame_write(const struct device *dev,
uint8_t *data,
uint8_t length);
/**
* @brief Reads sram data from the transceiver
*
* This function reads the sram data of the transceiver.
*
* @param[in] dev Transceiver device instance
* @param[in] address Start address to be read
* @param[out] data Pointer to the location to store data
* @param[in] length Number of bytes to be read from the sram space
*/
void rf2xx_iface_sram_read(const struct device *dev,
uint8_t address,
uint8_t *data,
uint8_t length);
#endif /* ZEPHYR_DRIVERS_IEEE802154_IEEE802154_RF2XX_IFACE_H_ */