| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- /******************************************************************************
- * \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: ST25R3916 firmware
- * Revision:
- * LANGUAGE: ISO C99
- */
- /*! \file
- *
- * \author Gustavo Patricio
- *
- * \brief ST25R3916 Interrupt handling
- *
- * \addtogroup RFAL
- * @{
- *
- * \addtogroup RFAL-HAL
- * \brief RFAL Hardware Abstraction Layer
- * @{
- *
- * \addtogroup ST25R3916
- * \brief RFAL ST25R3916 Driver
- * @{
- *
- * \addtogroup ST25R3916_IRQ
- * \brief RFAL ST25R3916 IRQ
- * @{
- *
- */
- #ifndef ST25R3916_IRQ_H
- #define ST25R3916_IRQ_H
- /*
- ******************************************************************************
- * INCLUDES
- ******************************************************************************
- */
- #include "platform.h"
- /*
- ******************************************************************************
- * GLOBAL DEFINES
- ******************************************************************************
- */
- #define ST25R3916_IRQ_MASK_ALL \
- (uint32_t)(0xFFFFFFFFUL) /*!< All ST25R3916 interrupt sources */
- #define ST25R3916_IRQ_MASK_NONE \
- (uint32_t)(0x00000000UL) /*!< No ST25R3916 interrupt source */
- /* Main interrupt register */
- #define ST25R3916_IRQ_MASK_OSC \
- (uint32_t)(0x00000080U) /*!< ST25R3916 oscillator stable interrupt */
- #define ST25R3916_IRQ_MASK_FWL \
- (uint32_t)(0x00000040U) /*!< ST25R3916 FIFO water level interrupt */
- #define ST25R3916_IRQ_MASK_RXS \
- (uint32_t)(0x00000020U) /*!< ST25R3916 start of receive interrupt */
- #define ST25R3916_IRQ_MASK_RXE \
- (uint32_t)(0x00000010U) /*!< ST25R3916 end of receive interrupt */
- #define ST25R3916_IRQ_MASK_TXE \
- (uint32_t)(0x00000008U) /*!< ST25R3916 end of transmission interrupt */
- #define ST25R3916_IRQ_MASK_COL \
- (uint32_t)(0x00000004U) /*!< ST25R3916 bit collision interrupt */
- #define ST25R3916_IRQ_MASK_RX_REST \
- (uint32_t)(0x00000002U) /*!< ST25R3916 automatic reception restart interrupt */
- #define ST25R3916_IRQ_MASK_RFU \
- (uint32_t)(0x00000001U) /*!< ST25R3916 RFU interrupt */
- /* Timer and NFC interrupt register */
- #define ST25R3916_IRQ_MASK_DCT \
- (uint32_t)(0x00008000U) /*!< ST25R3916 termination of direct command interrupt. */
- #define ST25R3916_IRQ_MASK_NRE \
- (uint32_t)(0x00004000U) /*!< ST25R3916 no-response timer expired interrupt */
- #define ST25R3916_IRQ_MASK_GPE \
- (uint32_t)(0x00002000U) /*!< ST25R3916 general purpose timer expired interrupt */
- #define ST25R3916_IRQ_MASK_EON \
- (uint32_t)(0x00001000U) /*!< ST25R3916 external field on interrupt */
- #define ST25R3916_IRQ_MASK_EOF \
- (uint32_t)(0x00000800U) /*!< ST25R3916 external field off interrupt */
- #define ST25R3916_IRQ_MASK_CAC \
- (uint32_t)(0x00000400U) /*!< ST25R3916 collision during RF collision avoidance interrupt */
- #define ST25R3916_IRQ_MASK_CAT \
- (uint32_t)(0x00000200U) /*!< ST25R3916 minimum guard time expired interrupt */
- #define ST25R3916_IRQ_MASK_NFCT \
- (uint32_t)(0x00000100U) /*!< ST25R3916 initiator bit rate recognised interrupt */
- /* Error and wake-up interrupt register */
- #define ST25R3916_IRQ_MASK_CRC \
- (uint32_t)(0x00800000U) /*!< ST25R3916 CRC error interrupt */
- #define ST25R3916_IRQ_MASK_PAR \
- (uint32_t)(0x00400000U) /*!< ST25R3916 parity error interrupt */
- #define ST25R3916_IRQ_MASK_ERR2 \
- (uint32_t)(0x00200000U) /*!< ST25R3916 soft framing error interrupt */
- #define ST25R3916_IRQ_MASK_ERR1 \
- (uint32_t)(0x00100000U) /*!< ST25R3916 hard framing error interrupt */
- #define ST25R3916_IRQ_MASK_WT \
- (uint32_t)(0x00080000U) /*!< ST25R3916 wake-up interrupt */
- #define ST25R3916_IRQ_MASK_WAM \
- (uint32_t)(0x00040000U) /*!< ST25R3916 wake-up due to amplitude interrupt */
- #define ST25R3916_IRQ_MASK_WPH \
- (uint32_t)(0x00020000U) /*!< ST25R3916 wake-up due to phase interrupt */
- #define ST25R3916_IRQ_MASK_WCAP \
- (uint32_t)(0x00010000U) /*!< ST25R3916 wake-up due to capacitance measurement */
- /* Passive Target Interrupt Register */
- #define ST25R3916_IRQ_MASK_PPON2 \
- (uint32_t)(0x80000000U) /*!< ST25R3916 PPON2 Field on waiting Timer interrupt */
- #define ST25R3916_IRQ_MASK_SL_WL \
- (uint32_t)(0x40000000U) /*!< ST25R3916 Passive target slot number water level interrupt */
- #define ST25R3916_IRQ_MASK_APON \
- (uint32_t)(0x20000000U) /*!< ST25R3916 Anticollision done and Field On interrupt */
- #define ST25R3916_IRQ_MASK_RXE_PTA \
- (uint32_t)(0x10000000U) /*!< ST25R3916 RXE with an automatic response interrupt */
- #define ST25R3916_IRQ_MASK_WU_F \
- (uint32_t)(0x08000000U) /*!< ST25R3916 212/424b/s Passive target interrupt: Active */
- #define ST25R3916_IRQ_MASK_RFU2 \
- (uint32_t)(0x04000000U) /*!< ST25R3916 RFU2 interrupt */
- #define ST25R3916_IRQ_MASK_WU_A_X \
- (uint32_t)(0x02000000U) /*!< ST25R3916 106kb/s Passive target state interrupt: Active* */
- #define ST25R3916_IRQ_MASK_WU_A \
- (uint32_t)(0x01000000U) /*!< ST25R3916 106kb/s Passive target state interrupt: Active */
- /*
- ******************************************************************************
- * GLOBAL FUNCTION PROTOTYPES
- ******************************************************************************
- */
- /*!
- *****************************************************************************
- * \brief Wait until an ST25R3916 interrupt occurs
- *
- * This function is used to access the ST25R3916 interrupt flags. Use this
- * to wait for max. \a tmo milliseconds for the \b first interrupt indicated
- * with mask \a mask to occur.
- *
- * \param[in] mask : mask indicating the interrupts to wait for.
- * \param[in] tmo : time in milliseconds until timeout occurs. If set to 0
- * the functions waits forever.
- *
- * \return : 0 if timeout occured otherwise a mask indicating the cleared
- * interrupts.
- *
- *****************************************************************************
- */
- uint32_t st25r3916WaitForInterruptsTimed(uint32_t mask, uint16_t tmo);
- /*!
- *****************************************************************************
- * \brief Get status for the given interrupt
- *
- * This function is used to check whether the interrupt given by \a mask
- * has occured. If yes the interrupt gets cleared. This function returns
- * only status bits which are inside \a mask.
- *
- * \param[in] mask : mask indicating the interrupt to check for.
- *
- * \return the mask of the interrupts occurred
- *
- *****************************************************************************
- */
- uint32_t st25r3916GetInterrupt(uint32_t mask);
- /*!
- *****************************************************************************
- * \brief Init the 3916 interrupt
- *
- * This function is used to check whether the interrupt given by \a mask
- * has occured.
- *
- *****************************************************************************
- */
- void st25r3916InitInterrupts(void);
- /*!
- *****************************************************************************
- * \brief Modifies the Interrupt
- *
- * This function modifies the interrupt
- *
- * \param[in] clr_mask : bit mask to be cleared on the interrupt mask
- * \param[in] set_mask : bit mask to be set on the interrupt mask
- *****************************************************************************
- */
- void st25r3916ModifyInterrupts(uint32_t clr_mask, uint32_t set_mask);
- /*!
- *****************************************************************************
- * \brief Checks received interrupts
- *
- * Checks received interrupts and saves the result into global params
- *****************************************************************************
- */
- void st25r3916CheckForReceivedInterrupts(void);
- /*!
- *****************************************************************************
- * \brief ISR Service routine
- *
- * This function modiefies the interupt
- *****************************************************************************
- */
- void st25r3916Isr(void);
- /*!
- *****************************************************************************
- * \brief Enable a given ST25R3916 Interrupt source
- *
- * This function enables all interrupts given by \a mask,
- * ST25R3916_IRQ_MASK_ALL enables all interrupts.
- *
- * \param[in] mask: mask indicating the interrupts to be enabled
- *
- *****************************************************************************
- */
- void st25r3916EnableInterrupts(uint32_t mask);
- /*!
- *****************************************************************************
- * \brief Disable one or more a given ST25R3916 Interrupt sources
- *
- * This function disables all interrupts given by \a mask. 0xff disables all.
- *
- * \param[in] mask: mask indicating the interrupts to be disabled.
- *
- *****************************************************************************
- */
- void st25r3916DisableInterrupts(uint32_t mask);
- /*!
- *****************************************************************************
- * \brief Clear all ST25R3916 irq flags
- *
- *****************************************************************************
- */
- void st25r3916ClearInterrupts(void);
- /*!
- *****************************************************************************
- * \brief Clears and then enables the given ST25R3916 Interrupt sources
- *
- * \param[in] mask: mask indicating the interrupts to be cleared and enabled
- *****************************************************************************
- */
- void st25r3916ClearAndEnableInterrupts(uint32_t mask);
- /*!
- *****************************************************************************
- * \brief Sets IRQ callback for the ST25R3916 interrupt
- *
- *****************************************************************************
- */
- void st25r3916IRQCallbackSet(void (*cb)(void));
- /*!
- *****************************************************************************
- * \brief Sets IRQ callback for the ST25R3916 interrupt
- *
- *****************************************************************************
- */
- void st25r3916IRQCallbackRestore(void);
- #endif /* ST25R3916_IRQ_H */
- /**
- * @}
- *
- * @}
- *
- * @}
- *
- * @}
- */
|