| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- /******************************************************************************
- * \attention
- *
- * <h2><center>© COPYRIGHT 2020 STMicroelectronics</center></h2>
- *
- * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * www.st.com/myliberty
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
- * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************/
- /*
- * PROJECT: ST25R391x firmware
- * Revision:
- * LANGUAGE: ISO C99
- */
- /*! \file rfal_AnalogConfig.h
- *
- * \author bkam
- *
- * \brief RF Chip Analog Configuration Settings
- *
- *
- * \addtogroup RFAL
- * @{
- *
- * \addtogroup RFAL-HAL
- * \brief RFAL Hardware Abstraction Layer
- * @{
- *
- * \addtogroup AnalogConfig
- * \brief RFAL Analog Config Module
- * @{
- *
- */
- #ifndef RFAL_ANALOG_CONFIG_H
- #define RFAL_ANALOG_CONFIG_H
- /*
- ******************************************************************************
- * INCLUDES
- ******************************************************************************
- */
- #include "platform.h"
- #include "st_errno.h"
- #include "rfal_rf.h"
- /*
- ******************************************************************************
- * DEFINES
- ******************************************************************************
- */
- #define RFAL_ANALOG_CONFIG_LUT_SIZE (87U) /*!< Maximum number of Configuration IDs in the Loop Up Table */
- #define RFAL_ANALOG_CONFIG_LUT_NOT_FOUND (0xFFU) /*!< Index value indicating no Configuration IDs found */
- #define RFAL_ANALOG_CONFIG_TBL_SIZE (1024U) /*!< Maximum number of Register-Mask-Value in the Setting List */
- #define RFAL_ANALOG_CONFIG_POLL_LISTEN_MODE_MASK (0x8000U) /*!< Mask bit of Poll Mode in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_MASK (0x7F00U) /*!< Mask bits for Technology in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_MASK (0x00F0U) /*!< Mask bits for Bit rate in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_DIRECTION_MASK (0x000FU) /*!< Mask bits for Direction in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_CHIP_SPECIFIC_MASK (0x00FFU) /*!< Mask bits for Chip Specific Technology */
- #define RFAL_ANALOG_CONFIG_POLL_LISTEN_MODE_SHIFT (15U) /*!< Shift value of Poll Mode in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_SHIFT (8U) /*!< Shift value for Technology in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_SHIFT (4U) /*!< Shift value for Technology in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_DIRECTION_SHIFT (0U) /*!< Shift value for Direction in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_POLL (0x0000U) /*!< Poll Mode bit setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_LISTEN (0x8000U) /*!< Listen Mode bit setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_CHIP (0x0000U) /*!< Chip-Specific bit setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_NFCA (0x0100U) /*!< NFC-A Technology bits setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_NFCB (0x0200U) /*!< NFC-B Technology bits setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_NFCF (0x0400U) /*!< NFC-F Technology bits setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_AP2P (0x0800U) /*!< AP2P Technology bits setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_NFCV (0x1000U) /*!< NFC-V Technology bits setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_TECH_RFU (0x2000U) /*!< RFU for Technology bits */
- #define RFAL_ANALOG_CONFIG_BITRATE_COMMON (0x0000U) /*!< Common settings for all bit rates in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_106 (0x0010U) /*!< 106kbits/s settings in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_212 (0x0020U) /*!< 212kbits/s settings in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_424 (0x0030U) /*!< 424kbits/s settings in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_848 (0x0040U) /*!< 848kbits/s settings in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_1695 (0x0050U) /*!< 1695kbits/s settings in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_3390 (0x0060U) /*!< 3390kbits/s settings in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_6780 (0x0070U) /*!< 6780kbits/s settings in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_1OF4 (0x00C0U) /*!< 1 out of 4 for NFC-V setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_BITRATE_1OF256 (0x00D0U) /*!< 1 out of 256 for NFC-V setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_NO_DIRECTION (0x0000U) /*!< No direction setting in Analog Conf ID (Chip Specific only) */
- #define RFAL_ANALOG_CONFIG_TX (0x0001U) /*!< Transmission bit setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_RX (0x0002U) /*!< Reception bit setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_ANTICOL (0x0003U) /*!< Anticollision setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_DPO (0x0004U) /*!< DPO setting in Analog Configuration ID */
- #define RFAL_ANALOG_CONFIG_CHIP_INIT (0x0000U) /*!< Chip-Specific event: Startup;Reset;Initialize */
- #define RFAL_ANALOG_CONFIG_CHIP_DEINIT (0x0001U) /*!< Chip-Specific event: Deinitialize */
- #define RFAL_ANALOG_CONFIG_CHIP_FIELD_ON (0x0002U) /*!< Chip-Specific event: Field On */
- #define RFAL_ANALOG_CONFIG_CHIP_FIELD_OFF (0x0003U) /*!< Chip-Specific event: Field Off */
- #define RFAL_ANALOG_CONFIG_CHIP_WAKEUP_ON (0x0004U) /*!< Chip-Specific event: Wake-up On */
- #define RFAL_ANALOG_CONFIG_CHIP_WAKEUP_OFF (0x0005U) /*!< Chip-Specific event: Wake-up Off */
- #define RFAL_ANALOG_CONFIG_CHIP_LISTEN_ON (0x0006U) /*!< Chip-Specific event: Listen On */
- #define RFAL_ANALOG_CONFIG_CHIP_LISTEN_OFF (0x0007U) /*!< Chip-Specific event: Listen Off */
- #define RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON (0x0008U) /*!< Chip-Specific event: Poll common */
- #define RFAL_ANALOG_CONFIG_CHIP_LISTEN_COMMON (0x0009U) /*!< Chip-Specific event: Listen common */
- #define RFAL_ANALOG_CONFIG_CHIP_LOWPOWER_ON (0x000AU) /*!< Chip-Specific event: Low Power On */
- #define RFAL_ANALOG_CONFIG_CHIP_LOWPOWER_OFF (0x000BU) /*!< Chip-Specific event: Low Power Off */
- #define RFAL_ANALOG_CONFIG_UPDATE_LAST (0x00U) /*!< Value indicating Last configuration set during update */
- #define RFAL_ANALOG_CONFIG_UPDATE_MORE (0x01U) /*!< Value indicating More configuration set coming during update */
- /*
- ******************************************************************************
- * GLOBAL MACROS
- ******************************************************************************
- */
- #define RFAL_ANALOG_CONFIG_ID_GET_POLL_LISTEN(id) (RFAL_ANALOG_CONFIG_POLL_LISTEN_MODE_MASK & (id)) /*!< Check if id indicates Listen mode */
- #define RFAL_ANALOG_CONFIG_ID_GET_TECH(id) (RFAL_ANALOG_CONFIG_TECH_MASK & (id)) /*!< Get the technology of Configuration ID */
- #define RFAL_ANALOG_CONFIG_ID_IS_CHIP(id) (RFAL_ANALOG_CONFIG_TECH_MASK & (id)) /*!< Check if ID indicates Chip-specific */
- #define RFAL_ANALOG_CONFIG_ID_IS_NFCA(id) (RFAL_ANALOG_CONFIG_TECH_NFCA & (id)) /*!< Check if ID indicates NFC-A */
- #define RFAL_ANALOG_CONFIG_ID_IS_NFCB(id) (RFAL_ANALOG_CONFIG_TECH_NFCB & (id)) /*!< Check if ID indicates NFC-B */
- #define RFAL_ANALOG_CONFIG_ID_IS_NFCF(id) (RFAL_ANALOG_CONFIG_TECH_NFCF & (id)) /*!< Check if ID indicates NFC-F */
- #define RFAL_ANALOG_CONFIG_ID_IS_AP2P(id) (RFAL_ANALOG_CONFIG_TECH_AP2P & (id)) /*!< Check if ID indicates AP2P */
- #define RFAL_ANALOG_CONFIG_ID_IS_NFCV(id) (RFAL_ANALOG_CONFIG_TECH_NFCV & (id)) /*!< Check if ID indicates NFC-V */
- #define RFAL_ANALOG_CONFIG_ID_GET_BITRATE(id) (RFAL_ANALOG_CONFIG_BITRATE_MASK & (id)) /*!< Get Bitrate of Configuration ID */
- #define RFAL_ANALOG_CONFIG_ID_IS_COMMON(id) (RFAL_ANALOG_CONFIG_BITRATE_MASK & (id)) /*!< Check if ID indicates common bitrate */
- #define RFAL_ANALOG_CONFIG_ID_IS_106(id) (RFAL_ANALOG_CONFIG_BITRATE_106 & (id)) /*!< Check if ID indicates 106kbits/s */
- #define RFAL_ANALOG_CONFIG_ID_IS_212(id) (RFAL_ANALOG_CONFIG_BITRATE_212 & (id)) /*!< Check if ID indicates 212kbits/s */
- #define RFAL_ANALOG_CONFIG_ID_IS_424(id) (RFAL_ANALOG_CONFIG_BITRATE_424 & (id)) /*!< Check if ID indicates 424kbits/s */
- #define RFAL_ANALOG_CONFIG_ID_IS_848(id) (RFAL_ANALOG_CONFIG_BITRATE_848 & (id)) /*!< Check if ID indicates 848kbits/s */
- #define RFAL_ANALOG_CONFIG_ID_IS_1695(id) (RFAL_ANALOG_CONFIG_BITRATE_1695 & (id)) /*!< Check if ID indicates 1695kbits/s */
- #define RFAL_ANALOG_CONFIG_ID_IS_3390(id) (RFAL_ANALOG_CONFIG_BITRATE_3390 & (id)) /*!< Check if ID indicates 3390kbits/s */
- #define RFAL_ANALOG_CONFIG_ID_IS_6780(id) (RFAL_ANALOG_CONFIG_BITRATE_6780 & (id)) /*!< Check if ID indicates 6780kbits/s */
- #define RFAL_ANALOG_CONFIG_ID_IS_1OF4(id) (RFAL_ANALOG_CONFIG_BITRATE_1OF4 & (id)) /*!< Check if ID indicates 1 out of 4 bitrate */
- #define RFAL_ANALOG_CONFIG_ID_IS_1OF256(id) (RFAL_ANALOG_CONFIG_BITRATE_1OF256 & (id)) /*!< Check if ID indicates 1 out of 256 bitrate */
- #define RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(id) (RFAL_ANALOG_CONFIG_DIRECTION_MASK & (id)) /*!< Get Direction of Configuration ID */
- #define RFAL_ANALOG_CONFIG_ID_IS_TX(id) (RFAL_ANALOG_CONFIG_TX & (id)) /*!< Check if id indicates TX */
- #define RFAL_ANALOG_CONFIG_ID_IS_RX(id) (RFAL_ANALOG_CONFIG_RX & (id)) /*!< Check if id indicates RX */
- #define RFAL_ANALOG_CONFIG_CONFIG_NUM(x) (sizeof(x)/sizeof((x)[0])) /*!< Get Analog Config number */
- /*! Set Analog Config ID value by: Mode, Technology, Bitrate and Direction */
- #define RFAL_ANALOG_CONFIG_ID_SET(mode, tech, br, direction) \
- ( RFAL_ANALOG_CONFIG_ID_GET_POLL_LISTEN(mode) \
- | RFAL_ANALOG_CONFIG_ID_GET_TECH(tech) \
- | RFAL_ANALOG_CONFIG_ID_GET_BITRATE(br) \
- | RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(direction) \
- )
- /*
- ******************************************************************************
- * GLOBAL DATA TYPES
- ******************************************************************************
- */
- typedef uint8_t rfalAnalogConfigMode; /*!< Polling or Listening Mode of Configuration */
- typedef uint8_t rfalAnalogConfigTech; /*!< Technology of Configuration */
- typedef uint8_t rfalAnalogConfigBitrate; /*!< Bitrate of Configuration */
- typedef uint8_t rfalAnalogConfigDirection; /*!< Transmit/Receive direction of Configuration */
- typedef uint8_t rfalAnalogConfigRegAddr[2]; /*!< Register Address to ST Chip */
- typedef uint8_t rfalAnalogConfigRegMask; /*!< Register Mask Value */
- typedef uint8_t rfalAnalogConfigRegVal; /*!< Register Value */
- typedef uint16_t rfalAnalogConfigId; /*!< Analog Configuration ID */
- typedef uint16_t rfalAnalogConfigOffset; /*!< Analog Configuration offset address in the table */
- typedef uint8_t rfalAnalogConfigNum; /*!< Number of Analog settings for the respective Configuration ID */
- /*! Struct that contain the Register-Mask-Value set. Make sure that the whole structure size is even and unaligned! */
- typedef struct {
- rfalAnalogConfigRegAddr addr; /*!< Register Address */
- rfalAnalogConfigRegMask mask; /*!< Register Mask Value */
- rfalAnalogConfigRegVal val; /*!< Register Value */
- } rfalAnalogConfigRegAddrMaskVal;
- /*! Struct that represents the Analog Configs */
- typedef struct {
- uint8_t id[sizeof(rfalAnalogConfigId)]; /*!< Configuration ID */
- rfalAnalogConfigNum num; /*!< Number of Config Sets to follow */
- rfalAnalogConfigRegAddrMaskVal regSet[]; /*!< Register-Mask-Value sets */ /* PRQA S 1060 # MISRA 18.7 - Flexible Array Members are the only meaningful way of denoting a variable length input buffer which follows a fixed header structure. */
- } rfalAnalogConfig;
- /*
- ******************************************************************************
- * GLOBAL FUNCTION PROTOTYPES
- ******************************************************************************
- */
- /*!
- *****************************************************************************
- * \brief Initialize the Analog Configuration
- *
- * Reset the Analog Configuration LUT pointer to reference to default settings.
- *
- *****************************************************************************
- */
- void rfalAnalogConfigInitialize( void );
- /*!
- *****************************************************************************
- * \brief Indicate if the current Analog Configuration Table is complete and ready to be used.
- *
- * \return true if current Analog Configuration Table is complete and ready to be used.
- * \return false if current Analog Configuration Table is incomplete
- *
- *****************************************************************************
- */
- bool rfalAnalogConfigIsReady( void );
- /*!
- *****************************************************************************
- * \brief Write the whole Analog Configuration table in raw format
- *
- * Writes the Analog Configuration and Look Up Table with the given raw table
- *
- * NOTE: Function does not check the validity of the given Table contents
- *
- * \param[in] configTbl: location of config Table to be loaded
- * \param[in] configTblSize: size of the config Table to be loaded
- *
- * \return ERR_NONE : if setting is updated
- * \return ERR_PARAM : if configTbl is invalid
- * \return ERR_NOMEM : if the given Table is bigger exceeds the max size
- * \return ERR_REQUEST : if the update Configuration Id is disabled
- *
- *****************************************************************************
- */
- ReturnCode rfalAnalogConfigListWriteRaw( const uint8_t *configTbl, uint16_t configTblSize );
- /*!
- *****************************************************************************
- * \brief Write the Analog Configuration table with new analog settings.
- *
- * Writes the Analog Configuration and Look Up Table with the new list of register-mask-value
- * and Configuration ID respectively.
- *
- * NOTE: Function does not check for the validity of the Register Address.
- *
- * \param[in] more: 0x00 indicates it is last Configuration ID settings;
- * 0x01 indicates more Configuration ID setting(s) are coming.
- * \param[in] *config: reference to the configuration list of current Configuraiton ID.
- *
- * \return ERR_PARAM : if Configuration ID or parameter is invalid
- * \return ERR_NOMEM : if LUT is full
- * \return ERR_REQUEST : if the update Configuration Id is disabled
- * \return ERR_NONE : if setting is updated
- *
- *****************************************************************************
- */
- ReturnCode rfalAnalogConfigListWrite( uint8_t more, const rfalAnalogConfig *config );
- /*!
- *****************************************************************************
- * \brief Read the whole Analog Configuration table in raw format
- *
- * Reads the whole Analog Configuration Table in raw format
- *
- * \param[out] tblBuf: location to the buffer to place the Config Table
- * \param[in] tblBufLen: length of the buffer to place the Config Table
- * \param[out] configTblSize: Config Table size
- *
- * \return ERR_PARAM : if configTbl or configTblSize is invalid
- * \return ERR_NOMEM : if configTblSize is not enough for the whole table
- * \return ERR_NONE : if read is successful
- *
- *****************************************************************************
- */
- ReturnCode rfalAnalogConfigListReadRaw( uint8_t *tblBuf, uint16_t tblBufLen, uint16_t *configTblSize );
- /*!
- *****************************************************************************
- * \brief Read the Analog Configuration table.
- *
- * Read the Analog Configuration Table
- *
- * \param[in] configOffset: offset to the next Configuration ID in the List Table to be read.
- * \param[out] more: 0x00 indicates it is last Configuration ID settings;
- * 0x01 indicates more Configuration ID setting(s) are coming.
- * \param[out] config: configuration id, number of configuration sets and register-mask-value sets
- * \param[in] numConfig: the remaining configuration settings space available;
- *
- * \return ERR_NOMEM : if number of Configuration for respective Configuration ID is greater the the remaining configuration setting space available
- * \return ERR_NONE : if read is successful
- *
- *****************************************************************************
- */
- ReturnCode rfalAnalogConfigListRead( rfalAnalogConfigOffset *configOffset, uint8_t *more, rfalAnalogConfig *config, rfalAnalogConfigNum numConfig );
- /*!
- *****************************************************************************
- * \brief Set the Analog settings of indicated Configuration ID.
- *
- * Update the chip with indicated analog settings of indicated Configuration ID.
- *
- * \param[in] configId: configuration ID
- *
- * \return ERR_PARAM if Configuration ID is invalid
- * \return ERR_INTERNAL if error updating setting to chip
- * \return ERR_NONE if new settings is applied to chip
- *
- *****************************************************************************
- */
- ReturnCode rfalSetAnalogConfig( rfalAnalogConfigId configId );
- /*!
- *****************************************************************************
- * \brief Generates Analog Config mode ID
- *
- * Converts RFAL mode and bitrate into Analog Config Mode ID.
- *
- * Update the chip with indicated analog settings of indicated Configuration ID.
- *
- * \param[in] md: RFAL mode format
- * \param[in] br: RFAL bit rate format
- * \param[in] dir: Analog Config communication direction
- *
- * \return Analog Config Mode ID
- *
- *****************************************************************************
- */
- uint16_t rfalAnalogConfigGenModeID( rfalMode md, rfalBitRate br, uint16_t dir );
- #endif /* RFAL_ANALOG_CONFIG_H */
- /**
- * @}
- *
- * @}
- *
- * @}
- */
|