HelloWorld_IDS01A4 mbed application for Spirit1 P2P demo.

Dependencies:   mbed

Fork of HelloWorld_IDS01A5_Program by rosarium pila

mbed 2.0 (a.k.a classic) HelloWorld example for Spirit1 to transfer data from one node to another.
To send the predefined data packet from the sender to the receiver, user needs to press User Button on the board. The LED on the receiver expansion board will toggle on reception of data successfully.
Data packets sent and received can be seen on USB serial terminal.

EVALUATION BOARDS RF FREQUENCY DESCRIPTION :
X-NUCLEO-IDS01A4 868 MHz 868 MHz RF expansion board based on SPIRIT1

Committer:
rosarium
Date:
Thu May 25 16:38:55 2017 +0000
Revision:
0:2ddc0583bcec
First draft version of HelloWorld_IDS01A5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rosarium 0:2ddc0583bcec 1 /**
rosarium 0:2ddc0583bcec 2 ******************************************************************************
rosarium 0:2ddc0583bcec 3 * @file SPIRIT_Irq.h
rosarium 0:2ddc0583bcec 4 * @author VMA division - AMS
rosarium 0:2ddc0583bcec 5 * @version 3.2.2
rosarium 0:2ddc0583bcec 6 * @date 08-July-2015
rosarium 0:2ddc0583bcec 7 * @brief Configuration and management of SPIRIT IRQs.
rosarium 0:2ddc0583bcec 8 *
rosarium 0:2ddc0583bcec 9 * @details
rosarium 0:2ddc0583bcec 10 *
rosarium 0:2ddc0583bcec 11 * On the Spirit side specific IRQs can be enabled by setting a specific bitmask.
rosarium 0:2ddc0583bcec 12 * The Spirit libraries allow the user to do this in two different ways:
rosarium 0:2ddc0583bcec 13 * <ul>
rosarium 0:2ddc0583bcec 14 *
rosarium 0:2ddc0583bcec 15 * <li>The first enables the IRQs one by one, i.e. using an SPI transaction for each
rosarium 0:2ddc0583bcec 16 * IRQ to enable.
rosarium 0:2ddc0583bcec 17 *
rosarium 0:2ddc0583bcec 18 * <b>Example:</b>
rosarium 0:2ddc0583bcec 19 * @code
rosarium 0:2ddc0583bcec 20 *
rosarium 0:2ddc0583bcec 21 * SpiritIrqDeInit(NULL); // this call is used to reset the IRQ mask registers
rosarium 0:2ddc0583bcec 22 * SpiritIrq(RX_DATA_READY , S_ENABLE);
rosarium 0:2ddc0583bcec 23 * SpiritIrq(VALID_SYNC , S_ENABLE);
rosarium 0:2ddc0583bcec 24 * SpiritIrq(RX_TIMEOUT , S_ENABLE);
rosarium 0:2ddc0583bcec 25 *
rosarium 0:2ddc0583bcec 26 * @endcode
rosarium 0:2ddc0583bcec 27 *
rosarium 0:2ddc0583bcec 28 * </li>
rosarium 0:2ddc0583bcec 29 *
rosarium 0:2ddc0583bcec 30 * <li>The second strategy is to set the IRQ bitfields structure. So, during the initialization the user
rosarium 0:2ddc0583bcec 31 * has to fill the @ref SpiritIrqs structure setting to one the single field related to the IRQ he
rosarium 0:2ddc0583bcec 32 * wants to enable, and to zero the single field related to all the IRQs he wants to disable.
rosarium 0:2ddc0583bcec 33 *
rosarium 0:2ddc0583bcec 34 * <b>Example:</b>
rosarium 0:2ddc0583bcec 35 * @code
rosarium 0:2ddc0583bcec 36 *
rosarium 0:2ddc0583bcec 37 * SpiritIrqs irqMask;
rosarium 0:2ddc0583bcec 38 *
rosarium 0:2ddc0583bcec 39 * ...
rosarium 0:2ddc0583bcec 40 *
rosarium 0:2ddc0583bcec 41 * SpiritIrqDeInit(&irqMask); // this call is used to reset the IRQ mask registers
rosarium 0:2ddc0583bcec 42 * // and to set to 0x00000000 the irq mask in order to disable
rosarium 0:2ddc0583bcec 43 * // all IRQs (disabled by default on startup)
rosarium 0:2ddc0583bcec 44 * irqMask.IRQ_RX_DATA_READY = 1;
rosarium 0:2ddc0583bcec 45 * irqMask.IRQ_VALID_SYNC = 1;
rosarium 0:2ddc0583bcec 46 * irqMask.IRQ_RX_TIMEOUT = 1;
rosarium 0:2ddc0583bcec 47 *
rosarium 0:2ddc0583bcec 48 * ...
rosarium 0:2ddc0583bcec 49 * @endcode
rosarium 0:2ddc0583bcec 50 * </li>
rosarium 0:2ddc0583bcec 51 * </ul>
rosarium 0:2ddc0583bcec 52 *
rosarium 0:2ddc0583bcec 53 * The most applications will require a Spirit IRQ notification on an microcontroller EXTI line.
rosarium 0:2ddc0583bcec 54 * Then, the user can check which IRQ has been raised using two different ways.
rosarium 0:2ddc0583bcec 55 *
rosarium 0:2ddc0583bcec 56 * On the ISR of the EXTI line phisically linked to the Spirit pin configured for IRQ:
rosarium 0:2ddc0583bcec 57 *
rosarium 0:2ddc0583bcec 58 * <ul>
rosarium 0:2ddc0583bcec 59 * <li> Check <b>only one</b> Spirit IRQ (because the Spirit IRQ status register automatically blanks itself
rosarium 0:2ddc0583bcec 60 * after an SPI reading) into the ISR.
rosarium 0:2ddc0583bcec 61 *
rosarium 0:2ddc0583bcec 62 * <b>Example:</b>
rosarium 0:2ddc0583bcec 63 * @code
rosarium 0:2ddc0583bcec 64 *
rosarium 0:2ddc0583bcec 65 * if(SpiritIrqCheckFlag(RX_DATA_READY))
rosarium 0:2ddc0583bcec 66 * {
rosarium 0:2ddc0583bcec 67 * // do something...
rosarium 0:2ddc0583bcec 68 * }
rosarium 0:2ddc0583bcec 69 *
rosarium 0:2ddc0583bcec 70 * @endcode
rosarium 0:2ddc0583bcec 71 * </li>
rosarium 0:2ddc0583bcec 72 *
rosarium 0:2ddc0583bcec 73 * <li> Check more than one Spirit IRQ status by storing the entire IRQ status registers into a bitfields <i>@ref SpiritIrqs</i> structure
rosarium 0:2ddc0583bcec 74 * and then check the interested bits.
rosarium 0:2ddc0583bcec 75 *
rosarium 0:2ddc0583bcec 76 * <b>Example:</b>
rosarium 0:2ddc0583bcec 77 * @code
rosarium 0:2ddc0583bcec 78 *
rosarium 0:2ddc0583bcec 79 * SpiritIrqGetStatus(&irqStatus);
rosarium 0:2ddc0583bcec 80 *
rosarium 0:2ddc0583bcec 81 * if(irqStatus.IRQ_RX_DATA_READY)
rosarium 0:2ddc0583bcec 82 * {
rosarium 0:2ddc0583bcec 83 * // do something...
rosarium 0:2ddc0583bcec 84 * }
rosarium 0:2ddc0583bcec 85 * if(irqStatus.IRQ_VALID_SYNC)
rosarium 0:2ddc0583bcec 86 * {
rosarium 0:2ddc0583bcec 87 * // do something...
rosarium 0:2ddc0583bcec 88 * }
rosarium 0:2ddc0583bcec 89 * if(irqStatus.RX_TIMEOUT)
rosarium 0:2ddc0583bcec 90 * {
rosarium 0:2ddc0583bcec 91 * // do something...
rosarium 0:2ddc0583bcec 92 * }
rosarium 0:2ddc0583bcec 93 *
rosarium 0:2ddc0583bcec 94 * @endcode
rosarium 0:2ddc0583bcec 95 * </li>
rosarium 0:2ddc0583bcec 96 * </ul>
rosarium 0:2ddc0583bcec 97 *
rosarium 0:2ddc0583bcec 98
rosarium 0:2ddc0583bcec 99 * @attention
rosarium 0:2ddc0583bcec 100 *
rosarium 0:2ddc0583bcec 101 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 102 *
rosarium 0:2ddc0583bcec 103 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 104 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 105 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 106 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 107 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 108 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 109 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 110 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 111 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 112 * without specific prior written permission.
rosarium 0:2ddc0583bcec 113 *
rosarium 0:2ddc0583bcec 114 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 115 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 116 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 117 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 118 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 119 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 120 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 121 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 122 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 123 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 124 *
rosarium 0:2ddc0583bcec 125 ******************************************************************************
rosarium 0:2ddc0583bcec 126 */
rosarium 0:2ddc0583bcec 127
rosarium 0:2ddc0583bcec 128 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 129 #ifndef __SPIRIT1_IRQ_H
rosarium 0:2ddc0583bcec 130 #define __SPIRIT1_IRQ_H
rosarium 0:2ddc0583bcec 131
rosarium 0:2ddc0583bcec 132
rosarium 0:2ddc0583bcec 133 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 134
rosarium 0:2ddc0583bcec 135 #include "SPIRIT_Regs.h"
rosarium 0:2ddc0583bcec 136 #include "SPIRIT_Types.h"
rosarium 0:2ddc0583bcec 137
rosarium 0:2ddc0583bcec 138
rosarium 0:2ddc0583bcec 139 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 140 extern "C" {
rosarium 0:2ddc0583bcec 141 #endif
rosarium 0:2ddc0583bcec 142
rosarium 0:2ddc0583bcec 143
rosarium 0:2ddc0583bcec 144 /**
rosarium 0:2ddc0583bcec 145 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 146 * @{
rosarium 0:2ddc0583bcec 147 */
rosarium 0:2ddc0583bcec 148
rosarium 0:2ddc0583bcec 149
rosarium 0:2ddc0583bcec 150 /**
rosarium 0:2ddc0583bcec 151 * @defgroup SPIRIT_Irq IRQ
rosarium 0:2ddc0583bcec 152 * @brief Configuration and management of SPIRIT IRQs.
rosarium 0:2ddc0583bcec 153 * @details See the file <i>@ref SPIRIT_Irq.h</i> for more details.
rosarium 0:2ddc0583bcec 154 * @{
rosarium 0:2ddc0583bcec 155 */
rosarium 0:2ddc0583bcec 156
rosarium 0:2ddc0583bcec 157 /**
rosarium 0:2ddc0583bcec 158 * @defgroup Irq_Exported_Types IRQ Exported Types
rosarium 0:2ddc0583bcec 159 * @{
rosarium 0:2ddc0583bcec 160 */
rosarium 0:2ddc0583bcec 161
rosarium 0:2ddc0583bcec 162
rosarium 0:2ddc0583bcec 163 /**
rosarium 0:2ddc0583bcec 164 * @brief IRQ bitfield structure for SPIRIT. This structure is used to read or write the single IRQ bit.
rosarium 0:2ddc0583bcec 165 * During the initialization the user has to fill this structure setting to one the single field related
rosarium 0:2ddc0583bcec 166 * to the IRQ he wants to enable, and to zero the single field related to all the IRQs he wants to disable.
rosarium 0:2ddc0583bcec 167 * The same structure can be used to retrieve all the IRQ events from the IRQ registers IRQ_STATUS[3:0],
rosarium 0:2ddc0583bcec 168 * and read if one or more specific IRQ raised.
rosarium 0:2ddc0583bcec 169 * @note The fields order in the structure depends on used endianness (little or big
rosarium 0:2ddc0583bcec 170 * endian). The actual definition is valid ONLY for LITTLE ENDIAN mode. Be sure to
rosarium 0:2ddc0583bcec 171 * change opportunely the fields order when use a different endianness.
rosarium 0:2ddc0583bcec 172 */
rosarium 0:2ddc0583bcec 173 typedef struct
rosarium 0:2ddc0583bcec 174 {
rosarium 0:2ddc0583bcec 175 SpiritFlagStatus IRQ_SYNTH_LOCK_TIMEOUT:1; /*!< IRQ: only for debug; LOCK state timeout */
rosarium 0:2ddc0583bcec 176 SpiritFlagStatus IRQ_SYNTH_LOCK_STARTUP:1; /*!< IRQ: only for debug; see CALIBR_START_COUNTER */
rosarium 0:2ddc0583bcec 177 SpiritFlagStatus IRQ_SYNTH_CAL_TIMEOUT:1; /*!< IRQ: only for debug; SYNTH calibration timeout */
rosarium 0:2ddc0583bcec 178 SpiritFlagStatus IRQ_TX_START_TIME:1; /*!< IRQ: only for debug; TX circuitry startup time; see TX_START_COUNTER */
rosarium 0:2ddc0583bcec 179 SpiritFlagStatus IRQ_RX_START_TIME:1; /*!< IRQ: only for debug; RX circuitry startup time; see TX_START_COUNTER */
rosarium 0:2ddc0583bcec 180 SpiritFlagStatus IRQ_RX_TIMEOUT:1; /*!< IRQ: RX operation timeout */
rosarium 0:2ddc0583bcec 181 SpiritFlagStatus IRQ_AES_END:1; /*!< IRQ: AES End of operation */
rosarium 0:2ddc0583bcec 182 SpiritFlagStatus reserved:1; /*!< Reserved bit */
rosarium 0:2ddc0583bcec 183
rosarium 0:2ddc0583bcec 184 SpiritFlagStatus IRQ_READY:1; /*!< IRQ: READY state */
rosarium 0:2ddc0583bcec 185 SpiritFlagStatus IRQ_STANDBY_DELAYED:1; /*!< IRQ: STANDBY state after MCU_CK_CONF_CLOCK_TAIL_X clock cycles */
rosarium 0:2ddc0583bcec 186 SpiritFlagStatus IRQ_LOW_BATT_LVL:1; /*!< IRQ: Battery level below threshold*/
rosarium 0:2ddc0583bcec 187 SpiritFlagStatus IRQ_POR:1; /*!< IRQ: Power On Reset */
rosarium 0:2ddc0583bcec 188 SpiritFlagStatus IRQ_BOR:1; /*!< IRQ: Brown out event (both accurate and inaccurate)*/
rosarium 0:2ddc0583bcec 189 SpiritFlagStatus IRQ_LOCK:1; /*!< IRQ: LOCK state */
rosarium 0:2ddc0583bcec 190 SpiritFlagStatus IRQ_PM_COUNT_EXPIRED:1; /*!< IRQ: only for debug; Power Management startup timer expiration (see reg PM_START_COUNTER, 0xB5) */
rosarium 0:2ddc0583bcec 191 SpiritFlagStatus IRQ_XO_COUNT_EXPIRED:1; /*!< IRQ: only for debug; Crystal oscillator settling time counter expired */
rosarium 0:2ddc0583bcec 192
rosarium 0:2ddc0583bcec 193 SpiritFlagStatus IRQ_TX_FIFO_ALMOST_EMPTY:1; /*!< IRQ: TX FIFO almost empty */
rosarium 0:2ddc0583bcec 194 SpiritFlagStatus IRQ_RX_FIFO_ALMOST_FULL:1; /*!< IRQ: RX FIFO almost full */
rosarium 0:2ddc0583bcec 195 SpiritFlagStatus IRQ_RX_FIFO_ALMOST_EMPTY:1; /*!< IRQ: RX FIFO almost empty */
rosarium 0:2ddc0583bcec 196 SpiritFlagStatus IRQ_MAX_BO_CCA_REACH:1; /*!< IRQ: Max number of back-off during CCA */
rosarium 0:2ddc0583bcec 197 SpiritFlagStatus IRQ_VALID_PREAMBLE:1; /*!< IRQ: Valid preamble detected */
rosarium 0:2ddc0583bcec 198 SpiritFlagStatus IRQ_VALID_SYNC:1; /*!< IRQ: Sync word detected */
rosarium 0:2ddc0583bcec 199 SpiritFlagStatus IRQ_RSSI_ABOVE_TH:1; /*!< IRQ: RSSI above threshold */
rosarium 0:2ddc0583bcec 200 SpiritFlagStatus IRQ_WKUP_TOUT_LDC:1; /*!< IRQ: Wake-up timeout in LDC mode */
rosarium 0:2ddc0583bcec 201
rosarium 0:2ddc0583bcec 202 SpiritFlagStatus IRQ_RX_DATA_READY:1; /*!< IRQ: RX data ready */
rosarium 0:2ddc0583bcec 203 SpiritFlagStatus IRQ_RX_DATA_DISC:1; /*!< IRQ: RX data discarded (upon filtering) */
rosarium 0:2ddc0583bcec 204 SpiritFlagStatus IRQ_TX_DATA_SENT:1; /*!< IRQ: TX data sent */
rosarium 0:2ddc0583bcec 205 SpiritFlagStatus IRQ_MAX_RE_TX_REACH:1; /*!< IRQ: Max re-TX reached */
rosarium 0:2ddc0583bcec 206 SpiritFlagStatus IRQ_CRC_ERROR:1; /*!< IRQ: CRC error */
rosarium 0:2ddc0583bcec 207 SpiritFlagStatus IRQ_TX_FIFO_ERROR:1; /*!< IRQ: TX FIFO underflow/overflow error */
rosarium 0:2ddc0583bcec 208 SpiritFlagStatus IRQ_RX_FIFO_ERROR:1; /*!< IRQ: RX FIFO underflow/overflow error */
rosarium 0:2ddc0583bcec 209 SpiritFlagStatus IRQ_TX_FIFO_ALMOST_FULL:1; /*!< IRQ: TX FIFO almost full */
rosarium 0:2ddc0583bcec 210 } SpiritIrqs;
rosarium 0:2ddc0583bcec 211
rosarium 0:2ddc0583bcec 212 // betzw: uint32_t masks
rosarium 0:2ddc0583bcec 213 #define IRQ_TX_FIFO_ALMOST_EMPTY_MASK (0x00010000) /* (1<<16) */
rosarium 0:2ddc0583bcec 214 #define IRQ_RX_FIFO_ALMOST_FULL_MASK (0x00020000) /* (1<<17) */
rosarium 0:2ddc0583bcec 215 #define IRQ_VALID_SYNC_MASK (0x00200000) /* (1<<21) */
rosarium 0:2ddc0583bcec 216 #define IRQ_RX_DATA_READY_MASK (0x01000000) /* (1<<24) */
rosarium 0:2ddc0583bcec 217 #define IRQ_RX_DATA_DISC_MASK (0x02000000) /* (1<<25) */
rosarium 0:2ddc0583bcec 218 #define IRQ_TX_DATA_SENT_MASK (0x04000000) /* (1<<26) */
rosarium 0:2ddc0583bcec 219 #define IRQ_TX_FIFO_ERROR_MASK (0x20000000) /* (1<<29) */
rosarium 0:2ddc0583bcec 220 #define IRQ_RX_FIFO_ERROR_MASK (0x40000000) /* (1<<30) */
rosarium 0:2ddc0583bcec 221
rosarium 0:2ddc0583bcec 222 /**
rosarium 0:2ddc0583bcec 223 * @brief IRQ list enumeration for SPIRIT. This enumeration type can be used to address a
rosarium 0:2ddc0583bcec 224 * specific IRQ.
rosarium 0:2ddc0583bcec 225 */
rosarium 0:2ddc0583bcec 226 typedef enum
rosarium 0:2ddc0583bcec 227 {
rosarium 0:2ddc0583bcec 228 RX_DATA_READY = 0x00000001, /*!< IRQ: RX data ready */
rosarium 0:2ddc0583bcec 229 RX_DATA_DISC = 0x00000002, /*!< IRQ: RX data discarded (upon filtering) */
rosarium 0:2ddc0583bcec 230 TX_DATA_SENT = 0x00000004, /*!< IRQ: TX data sent */
rosarium 0:2ddc0583bcec 231 MAX_RE_TX_REACH = 0x00000008, /*!< IRQ: Max re-TX reached */
rosarium 0:2ddc0583bcec 232 CRC_ERROR = 0x00000010, /*!< IRQ: CRC error */
rosarium 0:2ddc0583bcec 233 TX_FIFO_ERROR = 0x00000020, /*!< IRQ: TX FIFO underflow/overflow error */
rosarium 0:2ddc0583bcec 234 RX_FIFO_ERROR = 0x00000040, /*!< IRQ: RX FIFO underflow/overflow error */
rosarium 0:2ddc0583bcec 235 TX_FIFO_ALMOST_FULL = 0x00000080, /*!< IRQ: TX FIFO almost full */
rosarium 0:2ddc0583bcec 236 TX_FIFO_ALMOST_EMPTY = 0x00000100, /*!< IRQ: TX FIFO almost empty */
rosarium 0:2ddc0583bcec 237 RX_FIFO_ALMOST_FULL = 0x00000200, /*!< IRQ: RX FIFO almost full */
rosarium 0:2ddc0583bcec 238 RX_FIFO_ALMOST_EMPTY = 0x00000400, /*!< IRQ: RX FIFO almost empty */
rosarium 0:2ddc0583bcec 239 MAX_BO_CCA_REACH = 0x00000800, /*!< IRQ: Max number of back-off during CCA */
rosarium 0:2ddc0583bcec 240 VALID_PREAMBLE = 0x00001000, /*!< IRQ: Valid preamble detected */
rosarium 0:2ddc0583bcec 241 VALID_SYNC = 0x00002000, /*!< IRQ: Sync word detected */
rosarium 0:2ddc0583bcec 242 RSSI_ABOVE_TH = 0x00004000, /*!< IRQ: RSSI above threshold */
rosarium 0:2ddc0583bcec 243 WKUP_TOUT_LDC = 0x00008000, /*!< IRQ: Wake-up timeout in LDC mode */
rosarium 0:2ddc0583bcec 244 READY = 0x00010000, /*!< IRQ: READY state */
rosarium 0:2ddc0583bcec 245 STANDBY_DELAYED = 0x00020000, /*!< IRQ: STANDBY state after MCU_CK_CONF_CLOCK_TAIL_X clock cycles */
rosarium 0:2ddc0583bcec 246 LOW_BATT_LVL = 0x00040000, /*!< IRQ: Battery level below threshold*/
rosarium 0:2ddc0583bcec 247 POR = 0x00080000, /*!< IRQ: Power On Reset */
rosarium 0:2ddc0583bcec 248 BOR = 0x00100000, /*!< IRQ: Brown out event (both accurate and inaccurate)*/
rosarium 0:2ddc0583bcec 249 LOCK = 0x00200000, /*!< IRQ: LOCK state */
rosarium 0:2ddc0583bcec 250 PM_COUNT_EXPIRED = 0x00400000, /*!< IRQ: only for debug; Power Management startup timer expiration (see reg PM_START_COUNTER, 0xB5) */
rosarium 0:2ddc0583bcec 251 XO_COUNT_EXPIRED = 0x00800000, /*!< IRQ: only for debug; Crystal oscillator settling time counter expired */
rosarium 0:2ddc0583bcec 252 SYNTH_LOCK_TIMEOUT = 0x01000000, /*!< IRQ: only for debug; LOCK state timeout */
rosarium 0:2ddc0583bcec 253 SYNTH_LOCK_STARTUP = 0x02000000, /*!< IRQ: only for debug; see CALIBR_START_COUNTER */
rosarium 0:2ddc0583bcec 254 SYNTH_CAL_TIMEOUT = 0x04000000, /*!< IRQ: only for debug; SYNTH calibration timeout */
rosarium 0:2ddc0583bcec 255 TX_START_TIME = 0x08000000, /*!< IRQ: only for debug; TX circuitry startup time; see TX_START_COUNTER */
rosarium 0:2ddc0583bcec 256 RX_START_TIME = 0x10000000, /*!< IRQ: only for debug; RX circuitry startup time; see TX_START_COUNTER */
rosarium 0:2ddc0583bcec 257 RX_TIMEOUT = 0x20000000, /*!< IRQ: RX operation timeout */
rosarium 0:2ddc0583bcec 258 AES_END = 0x40000000, /*!< IRQ: AES End of operation */
rosarium 0:2ddc0583bcec 259 ALL_IRQ = 0x7FFFFFFF /*!< All the above mentioned IRQs */
rosarium 0:2ddc0583bcec 260
rosarium 0:2ddc0583bcec 261 } IrqList;
rosarium 0:2ddc0583bcec 262
rosarium 0:2ddc0583bcec 263 #define IS_SPIRIT_IRQ_LIST(VALUE) ((VALUE == RX_DATA_READY) || \
rosarium 0:2ddc0583bcec 264 (VALUE == RX_DATA_DISC) || \
rosarium 0:2ddc0583bcec 265 (VALUE == TX_DATA_SENT) || \
rosarium 0:2ddc0583bcec 266 (VALUE == MAX_RE_TX_REACH) || \
rosarium 0:2ddc0583bcec 267 (VALUE == CRC_ERROR) || \
rosarium 0:2ddc0583bcec 268 (VALUE == TX_FIFO_ERROR) || \
rosarium 0:2ddc0583bcec 269 (VALUE == RX_FIFO_ERROR) || \
rosarium 0:2ddc0583bcec 270 (VALUE == TX_FIFO_ALMOST_FULL) || \
rosarium 0:2ddc0583bcec 271 (VALUE == TX_FIFO_ALMOST_EMPTY) || \
rosarium 0:2ddc0583bcec 272 (VALUE == RX_FIFO_ALMOST_FULL) || \
rosarium 0:2ddc0583bcec 273 (VALUE == RX_FIFO_ALMOST_EMPTY) || \
rosarium 0:2ddc0583bcec 274 (VALUE == MAX_BO_CCA_REACH) || \
rosarium 0:2ddc0583bcec 275 (VALUE == VALID_PREAMBLE) || \
rosarium 0:2ddc0583bcec 276 (VALUE == VALID_SYNC) || \
rosarium 0:2ddc0583bcec 277 (VALUE == RSSI_ABOVE_TH) || \
rosarium 0:2ddc0583bcec 278 (VALUE == WKUP_TOUT_LDC) || \
rosarium 0:2ddc0583bcec 279 (VALUE == READY) || \
rosarium 0:2ddc0583bcec 280 (VALUE == STANDBY_DELAYED) || \
rosarium 0:2ddc0583bcec 281 (VALUE == LOW_BATT_LVL) || \
rosarium 0:2ddc0583bcec 282 (VALUE == POR) || \
rosarium 0:2ddc0583bcec 283 (VALUE == BOR) || \
rosarium 0:2ddc0583bcec 284 (VALUE == LOCK) || \
rosarium 0:2ddc0583bcec 285 (VALUE == PM_COUNT_EXPIRED) || \
rosarium 0:2ddc0583bcec 286 (VALUE == XO_COUNT_EXPIRED) || \
rosarium 0:2ddc0583bcec 287 (VALUE == SYNTH_LOCK_TIMEOUT) || \
rosarium 0:2ddc0583bcec 288 (VALUE == SYNTH_LOCK_STARTUP) || \
rosarium 0:2ddc0583bcec 289 (VALUE == SYNTH_CAL_TIMEOUT) || \
rosarium 0:2ddc0583bcec 290 (VALUE == TX_START_TIME) || \
rosarium 0:2ddc0583bcec 291 (VALUE == RX_START_TIME) || \
rosarium 0:2ddc0583bcec 292 (VALUE == RX_TIMEOUT) || \
rosarium 0:2ddc0583bcec 293 (VALUE == AES_END) || \
rosarium 0:2ddc0583bcec 294 (VALUE == ALL_IRQ ))
rosarium 0:2ddc0583bcec 295
rosarium 0:2ddc0583bcec 296
rosarium 0:2ddc0583bcec 297 /**
rosarium 0:2ddc0583bcec 298 * @}
rosarium 0:2ddc0583bcec 299 */
rosarium 0:2ddc0583bcec 300
rosarium 0:2ddc0583bcec 301
rosarium 0:2ddc0583bcec 302 /**
rosarium 0:2ddc0583bcec 303 * @defgroup Irq_Exported_Constants IRQ Exported Constants
rosarium 0:2ddc0583bcec 304 * @{
rosarium 0:2ddc0583bcec 305 */
rosarium 0:2ddc0583bcec 306
rosarium 0:2ddc0583bcec 307
rosarium 0:2ddc0583bcec 308 /**
rosarium 0:2ddc0583bcec 309 * @}
rosarium 0:2ddc0583bcec 310 */
rosarium 0:2ddc0583bcec 311
rosarium 0:2ddc0583bcec 312
rosarium 0:2ddc0583bcec 313 /**
rosarium 0:2ddc0583bcec 314 * @defgroup Irq_Exported_Macros IRQ Exported Macros
rosarium 0:2ddc0583bcec 315 * @{
rosarium 0:2ddc0583bcec 316 */
rosarium 0:2ddc0583bcec 317
rosarium 0:2ddc0583bcec 318
rosarium 0:2ddc0583bcec 319 /**
rosarium 0:2ddc0583bcec 320 * @}
rosarium 0:2ddc0583bcec 321 */
rosarium 0:2ddc0583bcec 322
rosarium 0:2ddc0583bcec 323
rosarium 0:2ddc0583bcec 324 /**
rosarium 0:2ddc0583bcec 325 * @defgroup Irq_Exported_Functions IRQ Exported Functions
rosarium 0:2ddc0583bcec 326 * @{
rosarium 0:2ddc0583bcec 327 */
rosarium 0:2ddc0583bcec 328
rosarium 0:2ddc0583bcec 329 void SpiritIrqDeInit(SpiritIrqs* pxIrqInit);
rosarium 0:2ddc0583bcec 330 void SpiritIrqInit(SpiritIrqs* pxIrqInit);
rosarium 0:2ddc0583bcec 331 void SpiritIrq(IrqList xIrq, SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 332 void SpiritIrqGetMask(SpiritIrqs* pxIrqMask);
rosarium 0:2ddc0583bcec 333 void SpiritIrqGetStatus(SpiritIrqs* pxIrqStatus);
rosarium 0:2ddc0583bcec 334 void SpiritIrqClearStatus(void);
rosarium 0:2ddc0583bcec 335 SpiritBool SpiritIrqCheckFlag(IrqList xFlag);
rosarium 0:2ddc0583bcec 336
rosarium 0:2ddc0583bcec 337 /**
rosarium 0:2ddc0583bcec 338 * @}
rosarium 0:2ddc0583bcec 339 */
rosarium 0:2ddc0583bcec 340
rosarium 0:2ddc0583bcec 341 /**
rosarium 0:2ddc0583bcec 342 * @}
rosarium 0:2ddc0583bcec 343 */
rosarium 0:2ddc0583bcec 344
rosarium 0:2ddc0583bcec 345
rosarium 0:2ddc0583bcec 346 /**
rosarium 0:2ddc0583bcec 347 * @}
rosarium 0:2ddc0583bcec 348 */
rosarium 0:2ddc0583bcec 349
rosarium 0:2ddc0583bcec 350
rosarium 0:2ddc0583bcec 351 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 352 }
rosarium 0:2ddc0583bcec 353 #endif
rosarium 0:2ddc0583bcec 354
rosarium 0:2ddc0583bcec 355 #endif
rosarium 0:2ddc0583bcec 356
rosarium 0:2ddc0583bcec 357 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/