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_PktStack.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 STack packets.
rosarium 0:2ddc0583bcec 8 *
rosarium 0:2ddc0583bcec 9 * @details
rosarium 0:2ddc0583bcec 10 *
rosarium 0:2ddc0583bcec 11 * This module can be used to manage the configuration of Spirit STack
rosarium 0:2ddc0583bcec 12 * packets, and it is quite similar to the Basic packets one since the
rosarium 0:2ddc0583bcec 13 * STack packets can be considered an extension of Basic.
rosarium 0:2ddc0583bcec 14 * The user can obtain a packet configuration filling the structure
rosarium 0:2ddc0583bcec 15 * <i>@ref PktStackInit</i>, defining in it some general parameters
rosarium 0:2ddc0583bcec 16 * for the Spirit STack packet format.
rosarium 0:2ddc0583bcec 17 * Another structure the user can fill is <i>@ref PktStackAddressesInit</i>
rosarium 0:2ddc0583bcec 18 * to define the addresses which will be used during the communication.
rosarium 0:2ddc0583bcec 19 * The structure <i>@ref PktStackLlpInit</i> is provided in order to configure
rosarium 0:2ddc0583bcec 20 * the link layer protocol features like autoack, autoretransmission
rosarium 0:2ddc0583bcec 21 * or piggybacking.
rosarium 0:2ddc0583bcec 22 * Moreover, functions to set the payload length and the destination address
rosarium 0:2ddc0583bcec 23 * are provided.
rosarium 0:2ddc0583bcec 24 *
rosarium 0:2ddc0583bcec 25 * <b>Example:</b>
rosarium 0:2ddc0583bcec 26 * @code
rosarium 0:2ddc0583bcec 27 *
rosarium 0:2ddc0583bcec 28 * PktStackInit stackInit={
rosarium 0:2ddc0583bcec 29 * PKT_PREAMBLE_LENGTH_08BYTES, // preamble length in bytes
rosarium 0:2ddc0583bcec 30 * PKT_SYNC_LENGTH_4BYTES, // sync word length in bytes
rosarium 0:2ddc0583bcec 31 * 0x1A2635A8, // sync word
rosarium 0:2ddc0583bcec 32 * PKT_LENGTH_VAR, // variable or fixed payload length
rosarium 0:2ddc0583bcec 33 * 7, // length field width in bits (used only for variable length)
rosarium 0:2ddc0583bcec 34 * PKT_NO_CRC, // CRC mode
rosarium 0:2ddc0583bcec 35 * PKT_CONTROL_LENGTH_0BYTES, // control field length
rosarium 0:2ddc0583bcec 36 * S_DISABLE, // FEC
rosarium 0:2ddc0583bcec 37 * S_ENABLE // whitening
rosarium 0:2ddc0583bcec 38 * };
rosarium 0:2ddc0583bcec 39 *
rosarium 0:2ddc0583bcec 40 * PktStackAddressesInit addressInit={
rosarium 0:2ddc0583bcec 41 * S_ENABLE, // enable/disable filtering on my address
rosarium 0:2ddc0583bcec 42 * 0x34, // my address (address of the current node)
rosarium 0:2ddc0583bcec 43 * S_DISABLE, // enable/disable filtering on multicast address
rosarium 0:2ddc0583bcec 44 * 0xEE, // multicast address
rosarium 0:2ddc0583bcec 45 * S_DISABLE, // enable/disable filtering on broadcast address
rosarium 0:2ddc0583bcec 46 * 0xFF // broadcast address
rosarium 0:2ddc0583bcec 47 * };
rosarium 0:2ddc0583bcec 48 *
rosarium 0:2ddc0583bcec 49 * PktStackLlpInit stackLLPInit ={
rosarium 0:2ddc0583bcec 50 * S_DISABLE, // enable/disable the autoack feature
rosarium 0:2ddc0583bcec 51 * S_DISABLE, // enable/disable the piggybacking feature
rosarium 0:2ddc0583bcec 52 * PKT_DISABLE_RETX // set the max number of retransmissions or disable them
rosarium 0:2ddc0583bcec 53 * };
rosarium 0:2ddc0583bcec 54 * ...
rosarium 0:2ddc0583bcec 55 *
rosarium 0:2ddc0583bcec 56 * SpiritPktStackInit(&stackInit);
rosarium 0:2ddc0583bcec 57 * SpiritPktStackAddressesInit(&addressInit);
rosarium 0:2ddc0583bcec 58 * SpiritPktStackLlpInit(&stackLLPInit);
rosarium 0:2ddc0583bcec 59 *
rosarium 0:2ddc0583bcec 60 * ...
rosarium 0:2ddc0583bcec 61 *
rosarium 0:2ddc0583bcec 62 * SpiritPktStackSetPayloadLength(20);
rosarium 0:2ddc0583bcec 63 * SpiritPktStackSetDestinationAddress(0x44);
rosarium 0:2ddc0583bcec 64 *
rosarium 0:2ddc0583bcec 65 * ...
rosarium 0:2ddc0583bcec 66 *
rosarium 0:2ddc0583bcec 67 * @endcode
rosarium 0:2ddc0583bcec 68 *
rosarium 0:2ddc0583bcec 69 * The module provides some other functions that can be used to modify
rosarium 0:2ddc0583bcec 70 * or read only some configuration parameters.
rosarium 0:2ddc0583bcec 71 *
rosarium 0:2ddc0583bcec 72 *
rosarium 0:2ddc0583bcec 73 * @attention
rosarium 0:2ddc0583bcec 74 *
rosarium 0:2ddc0583bcec 75 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 76 *
rosarium 0:2ddc0583bcec 77 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 78 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 79 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 80 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 81 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 82 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 83 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 84 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 85 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 86 * without specific prior written permission.
rosarium 0:2ddc0583bcec 87 *
rosarium 0:2ddc0583bcec 88 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 89 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 90 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 91 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 92 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 93 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 94 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 95 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 96 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 97 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 98 *
rosarium 0:2ddc0583bcec 99 ******************************************************************************
rosarium 0:2ddc0583bcec 100 */
rosarium 0:2ddc0583bcec 101
rosarium 0:2ddc0583bcec 102 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 103 #ifndef __SPIRIT_PKT_STACK_H
rosarium 0:2ddc0583bcec 104 #define __SPIRIT_PKT_STACK_H
rosarium 0:2ddc0583bcec 105
rosarium 0:2ddc0583bcec 106 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 107
rosarium 0:2ddc0583bcec 108 #include "SPIRIT_Regs.h"
rosarium 0:2ddc0583bcec 109 #include "SPIRIT_Types.h"
rosarium 0:2ddc0583bcec 110 #include "SPIRIT_PktCommon.h"
rosarium 0:2ddc0583bcec 111
rosarium 0:2ddc0583bcec 112 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 113 extern "C" {
rosarium 0:2ddc0583bcec 114 #endif
rosarium 0:2ddc0583bcec 115
rosarium 0:2ddc0583bcec 116
rosarium 0:2ddc0583bcec 117
rosarium 0:2ddc0583bcec 118 /**
rosarium 0:2ddc0583bcec 119 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 120 * @{
rosarium 0:2ddc0583bcec 121 */
rosarium 0:2ddc0583bcec 122
rosarium 0:2ddc0583bcec 123
rosarium 0:2ddc0583bcec 124 /**
rosarium 0:2ddc0583bcec 125 * @defgroup SPIRIT_PktStack Pkt STack
rosarium 0:2ddc0583bcec 126 * @brief Configuration and management of SPIRIT STack packets.
rosarium 0:2ddc0583bcec 127 * @details See the file <i>@ref SPIRIT_PktStack.h</i> for more details.
rosarium 0:2ddc0583bcec 128 * @{
rosarium 0:2ddc0583bcec 129 */
rosarium 0:2ddc0583bcec 130
rosarium 0:2ddc0583bcec 131 /**
rosarium 0:2ddc0583bcec 132 * @defgroup PktStack_Exported_Types Pkt STack Exported Types
rosarium 0:2ddc0583bcec 133 * @{
rosarium 0:2ddc0583bcec 134 */
rosarium 0:2ddc0583bcec 135
rosarium 0:2ddc0583bcec 136 /**
rosarium 0:2ddc0583bcec 137 * @brief Preamble length in bytes enumeration.
rosarium 0:2ddc0583bcec 138 */
rosarium 0:2ddc0583bcec 139 typedef PktPreambleLength StackPreambleLength;
rosarium 0:2ddc0583bcec 140
rosarium 0:2ddc0583bcec 141 #define IS_STACK_PREAMBLE_LENGTH IS_PKT_PREAMBLE_LENGTH
rosarium 0:2ddc0583bcec 142
rosarium 0:2ddc0583bcec 143 /**
rosarium 0:2ddc0583bcec 144 * @brief Sync length in bytes enumeration.
rosarium 0:2ddc0583bcec 145 */
rosarium 0:2ddc0583bcec 146 typedef PktSyncLength StackSyncLength;
rosarium 0:2ddc0583bcec 147
rosarium 0:2ddc0583bcec 148 #define IS_STACK_SYNC_LENGTH IS_PKT_SYNC_LENGTH
rosarium 0:2ddc0583bcec 149
rosarium 0:2ddc0583bcec 150
rosarium 0:2ddc0583bcec 151
rosarium 0:2ddc0583bcec 152 /**
rosarium 0:2ddc0583bcec 153 * @brief CRC length in bytes enumeration.
rosarium 0:2ddc0583bcec 154 */
rosarium 0:2ddc0583bcec 155 typedef PktCrcMode StackCrcMode;
rosarium 0:2ddc0583bcec 156
rosarium 0:2ddc0583bcec 157 #define IS_STACK_CRC_MODE IS_PKT_CRC_MODE
rosarium 0:2ddc0583bcec 158
rosarium 0:2ddc0583bcec 159
rosarium 0:2ddc0583bcec 160 /**
rosarium 0:2ddc0583bcec 161 * @brief Fixed or variable payload length enumeration.
rosarium 0:2ddc0583bcec 162 */
rosarium 0:2ddc0583bcec 163 typedef PktFixVarLength StackFixVarLength;
rosarium 0:2ddc0583bcec 164
rosarium 0:2ddc0583bcec 165 #define IS_STACK_FIX_VAR_LENGTH IS_PKT_FIX_VAR_LENGTH
rosarium 0:2ddc0583bcec 166
rosarium 0:2ddc0583bcec 167 /**
rosarium 0:2ddc0583bcec 168 * @brief Control length in bytes enumeration for SPIRIT.
rosarium 0:2ddc0583bcec 169 */
rosarium 0:2ddc0583bcec 170 typedef PktControlLength StackControlLength;
rosarium 0:2ddc0583bcec 171
rosarium 0:2ddc0583bcec 172 #define IS_STACK_CONTROL_LENGTH IS_PKT_CONTROL_LENGTH
rosarium 0:2ddc0583bcec 173
rosarium 0:2ddc0583bcec 174 /**
rosarium 0:2ddc0583bcec 175 * @brief Sync words enumeration for SPIRIT.
rosarium 0:2ddc0583bcec 176 */
rosarium 0:2ddc0583bcec 177 typedef PktSyncX StackSyncX;
rosarium 0:2ddc0583bcec 178
rosarium 0:2ddc0583bcec 179 #define IS_STACK_SYNCx IS_PKT_SYNCx
rosarium 0:2ddc0583bcec 180
rosarium 0:2ddc0583bcec 181 /**
rosarium 0:2ddc0583bcec 182 * @brief Max retransmission number enumeration for SPIRIT.
rosarium 0:2ddc0583bcec 183 */
rosarium 0:2ddc0583bcec 184 typedef PktNMaxReTx StackNMaxReTx;
rosarium 0:2ddc0583bcec 185
rosarium 0:2ddc0583bcec 186 #define IS_STACK_NMAX_RETX IS_PKT_NMAX_RETX
rosarium 0:2ddc0583bcec 187
rosarium 0:2ddc0583bcec 188
rosarium 0:2ddc0583bcec 189 /**
rosarium 0:2ddc0583bcec 190 * @brief SPIRIT STack Packet Init structure definition. This structure allows users to set the main options
rosarium 0:2ddc0583bcec 191 * for the STack packet.
rosarium 0:2ddc0583bcec 192 */
rosarium 0:2ddc0583bcec 193 typedef struct
rosarium 0:2ddc0583bcec 194 {
rosarium 0:2ddc0583bcec 195
rosarium 0:2ddc0583bcec 196 StackPreambleLength xPreambleLength; /*!< Specifies the preamble length of packet.
rosarium 0:2ddc0583bcec 197 This parameter can be any value of @ref StackPreambleLength */
rosarium 0:2ddc0583bcec 198 StackSyncLength xSyncLength; /*!< Specifies the sync word length of packet.
rosarium 0:2ddc0583bcec 199 This parameter can be any value of @ref StackSyncLength */
rosarium 0:2ddc0583bcec 200 uint32_t lSyncWords; /*!< Specifies the sync words.
rosarium 0:2ddc0583bcec 201 This parameter is a uint32_t word with format: 0x|SYNC1|SYNC2|SYNC3|SYNC4| */
rosarium 0:2ddc0583bcec 202 StackFixVarLength xFixVarLength; /*!< Specifies if a fixed length of packet has to be used.
rosarium 0:2ddc0583bcec 203 This parameter can be any value of @ref StackFixVarLength */
rosarium 0:2ddc0583bcec 204 uint8_t cPktLengthWidth; /*!< Specifies the size of the length of packet in bits. This field is useful only if
rosarium 0:2ddc0583bcec 205 the field xFixVarLength is set to STACK_LENGTH_VAR. For STack packets the length width
rosarium 0:2ddc0583bcec 206 is log2( max payload length + control length (0 to 4) + address length (always 2)).
rosarium 0:2ddc0583bcec 207 This parameter is an uint8_t */
rosarium 0:2ddc0583bcec 208 StackCrcMode xCrcMode; /*!< Specifies the CRC word length of packet.
rosarium 0:2ddc0583bcec 209 This parameter can be any value of @ref StackCrcMode */
rosarium 0:2ddc0583bcec 210 StackControlLength xControlLength; /*!< Specifies the length of a control field to be sent.
rosarium 0:2ddc0583bcec 211 This parameter can be any value of @ref StackControlLength */
rosarium 0:2ddc0583bcec 212 SpiritFunctionalState xFec; /*!< Specifies if FEC has to be enabled.
rosarium 0:2ddc0583bcec 213 This parameter can be any value of @ref SpiritFunctionalState */
rosarium 0:2ddc0583bcec 214 SpiritFunctionalState xDataWhitening; /*!< Specifies if data whitening has to be enabled.
rosarium 0:2ddc0583bcec 215 This parameter can be any value of @ref SpiritFunctionalState */
rosarium 0:2ddc0583bcec 216
rosarium 0:2ddc0583bcec 217 }PktStackInit;
rosarium 0:2ddc0583bcec 218
rosarium 0:2ddc0583bcec 219
rosarium 0:2ddc0583bcec 220 /**
rosarium 0:2ddc0583bcec 221 * @brief SPIRIT STack packet address structure definition. This structure allows users to specify
rosarium 0:2ddc0583bcec 222 * the node/multicast/broadcast addresses and the correspondent filtering options.
rosarium 0:2ddc0583bcec 223 */
rosarium 0:2ddc0583bcec 224 typedef struct
rosarium 0:2ddc0583bcec 225 {
rosarium 0:2ddc0583bcec 226
rosarium 0:2ddc0583bcec 227 SpiritFunctionalState xFilterOnMyAddress; /*!< If set RX packet is accepted if its destination address matches with cMyAddress.
rosarium 0:2ddc0583bcec 228 This parameter can be S_ENABLE or S_DISABLE */
rosarium 0:2ddc0583bcec 229 uint8_t cMyAddress; /*!< Specifies the TX packet source address (address of this node).
rosarium 0:2ddc0583bcec 230 This parameter is an uint8_t */
rosarium 0:2ddc0583bcec 231 SpiritFunctionalState xFilterOnMulticastAddress; /*!< If set RX packet is accepted if its destination address matches with cMulticastAddress.
rosarium 0:2ddc0583bcec 232 This parameter can be S_ENABLE or S_DISABLE */
rosarium 0:2ddc0583bcec 233 uint8_t cMulticastAddress; /*!< Specifies the Multicast group address for this node.
rosarium 0:2ddc0583bcec 234 This parameter is an uint8_t */
rosarium 0:2ddc0583bcec 235 SpiritFunctionalState xFilterOnBroadcastAddress; /*!< If set RX packet is accepted if its destination address matches with cBroadcastAddress.
rosarium 0:2ddc0583bcec 236 This parameter can be S_ENABLE or S_DISABLE */
rosarium 0:2ddc0583bcec 237 uint8_t cBroadcastAddress; /*!< Specifies the Broadcast address for this node.
rosarium 0:2ddc0583bcec 238 This parameter is an uint8_t */
rosarium 0:2ddc0583bcec 239 }PktStackAddressesInit;
rosarium 0:2ddc0583bcec 240
rosarium 0:2ddc0583bcec 241
rosarium 0:2ddc0583bcec 242 /**
rosarium 0:2ddc0583bcec 243 * @brief SPIRIT STack packet LLP structure definition. This structure allows users to configure
rosarium 0:2ddc0583bcec 244 * all the LLP options for STack packets.
rosarium 0:2ddc0583bcec 245 */
rosarium 0:2ddc0583bcec 246 typedef struct
rosarium 0:2ddc0583bcec 247 {
rosarium 0:2ddc0583bcec 248
rosarium 0:2ddc0583bcec 249 SpiritFunctionalState xAutoAck; /*!< Specifies if the auto ACK feature is used or not.
rosarium 0:2ddc0583bcec 250 This parameter can be a value of @ref SpiritFunctionalState */
rosarium 0:2ddc0583bcec 251 SpiritFunctionalState xPiggybacking; /*!< Specifies if the piggybacking feature is used or not.
rosarium 0:2ddc0583bcec 252 This parameter can be a value of @ref SpiritFunctionalState */
rosarium 0:2ddc0583bcec 253 StackNMaxReTx xNMaxRetx; /*!< Specifies the number of MAX-Retransmissions.
rosarium 0:2ddc0583bcec 254 This parameter can be a value of @ref StackNMaxReTx */
rosarium 0:2ddc0583bcec 255 }PktStackLlpInit;
rosarium 0:2ddc0583bcec 256
rosarium 0:2ddc0583bcec 257
rosarium 0:2ddc0583bcec 258
rosarium 0:2ddc0583bcec 259 /**
rosarium 0:2ddc0583bcec 260 *@}
rosarium 0:2ddc0583bcec 261 */
rosarium 0:2ddc0583bcec 262
rosarium 0:2ddc0583bcec 263
rosarium 0:2ddc0583bcec 264 /**
rosarium 0:2ddc0583bcec 265 * @defgroup PktStack_Exported_Constants Pkt STack Exported Constants
rosarium 0:2ddc0583bcec 266 * @{
rosarium 0:2ddc0583bcec 267 */
rosarium 0:2ddc0583bcec 268
rosarium 0:2ddc0583bcec 269 #define IS_STACK_LENGTH_WIDTH_BITS IS_PKT_LENGTH_WIDTH_BITS
rosarium 0:2ddc0583bcec 270
rosarium 0:2ddc0583bcec 271 /**
rosarium 0:2ddc0583bcec 272 *@}
rosarium 0:2ddc0583bcec 273 */
rosarium 0:2ddc0583bcec 274
rosarium 0:2ddc0583bcec 275
rosarium 0:2ddc0583bcec 276 /**
rosarium 0:2ddc0583bcec 277 * @defgroup PktStack_Exported_Macros Pkt STack Exported Macros
rosarium 0:2ddc0583bcec 278 * @{
rosarium 0:2ddc0583bcec 279 */
rosarium 0:2ddc0583bcec 280
rosarium 0:2ddc0583bcec 281 /**
rosarium 0:2ddc0583bcec 282 * @brief Macro used to compute the lower part of the packet length
rosarium 0:2ddc0583bcec 283 * for Spirit STack packets, to write in the PCKTLEN0 register.
rosarium 0:2ddc0583bcec 284 * @param nLength length of the packet payload.
rosarium 0:2ddc0583bcec 285 * This parameter is an uint16_t.
rosarium 0:2ddc0583bcec 286 * @retval None.
rosarium 0:2ddc0583bcec 287 */
rosarium 0:2ddc0583bcec 288 #define STACK_BUILD_PCKTLEN0(nLength) BUILD_PCKTLEN0(nLength)
rosarium 0:2ddc0583bcec 289
rosarium 0:2ddc0583bcec 290
rosarium 0:2ddc0583bcec 291 /**
rosarium 0:2ddc0583bcec 292 * @brief Macro used to compute the upper part of the packet length
rosarium 0:2ddc0583bcec 293 * for Spirit STack packets, to write the PCKTLEN1 register.
rosarium 0:2ddc0583bcec 294 * @param nLength length of the packet payload.
rosarium 0:2ddc0583bcec 295 * This parameter is an uint16_t.
rosarium 0:2ddc0583bcec 296 * @retval None.
rosarium 0:2ddc0583bcec 297 */
rosarium 0:2ddc0583bcec 298 #define STACK_BUILD_PCKTLEN1(nLength) BUILD_PCKTLEN1(nLength)
rosarium 0:2ddc0583bcec 299
rosarium 0:2ddc0583bcec 300
rosarium 0:2ddc0583bcec 301 /**
rosarium 0:2ddc0583bcec 302 * @brief Sets the CONTROL length for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 303 * @param xControlLength length of CONTROL field in bytes.
rosarium 0:2ddc0583bcec 304 * This parameter can be any value of @ref StackControlLength.
rosarium 0:2ddc0583bcec 305 * @retval None.
rosarium 0:2ddc0583bcec 306 */
rosarium 0:2ddc0583bcec 307 #define SpiritPktStackSetControlLength(xControlLength) SpiritPktCommonSetControlLength(xControlLength)
rosarium 0:2ddc0583bcec 308
rosarium 0:2ddc0583bcec 309
rosarium 0:2ddc0583bcec 310 /**
rosarium 0:2ddc0583bcec 311 * @brief Returns the CONTROL length for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 312 * @param None.
rosarium 0:2ddc0583bcec 313 * @retval Control length.
rosarium 0:2ddc0583bcec 314 */
rosarium 0:2ddc0583bcec 315 #define SpiritPktStackGetControlLength() SpiritPktCommonGetControlLength()
rosarium 0:2ddc0583bcec 316
rosarium 0:2ddc0583bcec 317
rosarium 0:2ddc0583bcec 318 /**
rosarium 0:2ddc0583bcec 319 * @brief Sets the PREAMBLE Length mode for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 320 * @param xPreambleLength length of PREAMBLE field in bytes.
rosarium 0:2ddc0583bcec 321 * This parameter can be any value of @ref StackPreambleLength.
rosarium 0:2ddc0583bcec 322 * @retval None.
rosarium 0:2ddc0583bcec 323 */
rosarium 0:2ddc0583bcec 324 #define SpiritPktStackSetPreambleLength(xPreambleLength) SpiritPktCommonSetPreambleLength((PktPreambleLength)xPreambleLength)
rosarium 0:2ddc0583bcec 325
rosarium 0:2ddc0583bcec 326
rosarium 0:2ddc0583bcec 327 /**
rosarium 0:2ddc0583bcec 328 * @brief Returns the PREAMBLE Length mode for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 329 * @param None.
rosarium 0:2ddc0583bcec 330 * @retval uint8_t Preamble length in bytes.
rosarium 0:2ddc0583bcec 331 */
rosarium 0:2ddc0583bcec 332 #define SpiritPktStackGetPreambleLength() SpiritPktCommonGetPreambleLength()
rosarium 0:2ddc0583bcec 333
rosarium 0:2ddc0583bcec 334
rosarium 0:2ddc0583bcec 335 /**
rosarium 0:2ddc0583bcec 336 * @brief Sets the SYNC Length for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 337 * @param xSyncLength length of SYNC field in bytes.
rosarium 0:2ddc0583bcec 338 * This parameter can be any value of @ref StackSyncLength.
rosarium 0:2ddc0583bcec 339 * @retval None.
rosarium 0:2ddc0583bcec 340 */
rosarium 0:2ddc0583bcec 341 #define SpiritPktStackSetSyncLength(xSyncLength) SpiritPktCommonSetSyncLength((PktSyncLength)xSyncLength)
rosarium 0:2ddc0583bcec 342
rosarium 0:2ddc0583bcec 343
rosarium 0:2ddc0583bcec 344 /**
rosarium 0:2ddc0583bcec 345 * @brief Returns the SYNC Length for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 346 * @param None.
rosarium 0:2ddc0583bcec 347 * @retval uint8_t Sync length in bytes.
rosarium 0:2ddc0583bcec 348 */
rosarium 0:2ddc0583bcec 349 #define SpiritPktStackGetSyncLength() SpiritPktCommonGetSyncLength()
rosarium 0:2ddc0583bcec 350
rosarium 0:2ddc0583bcec 351
rosarium 0:2ddc0583bcec 352 /**
rosarium 0:2ddc0583bcec 353 * @brief Sets fixed or variable payload length mode for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 354 * @param xFixVarLength variable or fixed length.
rosarium 0:2ddc0583bcec 355 * PKT_FIXED_LENGTH_VAR -> variable (the length is extracted from the received packet).
rosarium 0:2ddc0583bcec 356 * PKT_FIXED_LENGTH_FIX -> fix (the length is set by PCKTLEN0 and PCKTLEN1).
rosarium 0:2ddc0583bcec 357 * @retval None.
rosarium 0:2ddc0583bcec 358 */
rosarium 0:2ddc0583bcec 359 #define SpiritPktStackSetFixVarLength(xFixVarLength) SpiritPktCommonSetFixVarLength((PktFixVarLength)xFixVarLength)
rosarium 0:2ddc0583bcec 360
rosarium 0:2ddc0583bcec 361
rosarium 0:2ddc0583bcec 362 /**
rosarium 0:2ddc0583bcec 363 * @brief Enables or Disables the CRC filtering.
rosarium 0:2ddc0583bcec 364 * @param xNewState new state for CRC_CHECK.
rosarium 0:2ddc0583bcec 365 * This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 366 * @retval None.
rosarium 0:2ddc0583bcec 367 */
rosarium 0:2ddc0583bcec 368 #define SpiritPktStackFilterOnCrc(xNewState) SpiritPktCommonFilterOnCrc(xNewState)
rosarium 0:2ddc0583bcec 369
rosarium 0:2ddc0583bcec 370
rosarium 0:2ddc0583bcec 371 /**
rosarium 0:2ddc0583bcec 372 * @brief Returns the CRC filtering bit.
rosarium 0:2ddc0583bcec 373 * @param None.
rosarium 0:2ddc0583bcec 374 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 375 */
rosarium 0:2ddc0583bcec 376 #define SpiritPktStackGetFilterOnCrc() SpiritPktCommonGetFilterOnCrc()
rosarium 0:2ddc0583bcec 377
rosarium 0:2ddc0583bcec 378
rosarium 0:2ddc0583bcec 379 /**
rosarium 0:2ddc0583bcec 380 * @brief Sets the CRC mode for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 381 * @param xCrcMode CRC mode.
rosarium 0:2ddc0583bcec 382 * This parameter can be any value of @ref StackCrcMode.
rosarium 0:2ddc0583bcec 383 * @retval None.
rosarium 0:2ddc0583bcec 384 */
rosarium 0:2ddc0583bcec 385 #define SpiritPktStackSetCrcMode(xCrcMode) SpiritPktCommonSetCrcMode((PktCrcMode)xCrcMode)
rosarium 0:2ddc0583bcec 386
rosarium 0:2ddc0583bcec 387
rosarium 0:2ddc0583bcec 388 /**
rosarium 0:2ddc0583bcec 389 * @brief Returns the CRC mode for SPIRIT packets.
rosarium 0:2ddc0583bcec 390 * @param None.
rosarium 0:2ddc0583bcec 391 * @retval StackCrcMode Crc mode.
rosarium 0:2ddc0583bcec 392 */
rosarium 0:2ddc0583bcec 393 #define SpiritPktStackGetCrcMode() (StackCrcMode)SpiritPktCommonGetCrcMode()
rosarium 0:2ddc0583bcec 394
rosarium 0:2ddc0583bcec 395
rosarium 0:2ddc0583bcec 396 /**
rosarium 0:2ddc0583bcec 397 * @brief Enables or Disables WHITENING for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 398 * @param xNewState new state for WHITENING mode.
rosarium 0:2ddc0583bcec 399 * This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 400 * @retval None.
rosarium 0:2ddc0583bcec 401 */
rosarium 0:2ddc0583bcec 402 #define SpiritPktStackWhitening(xNewState) SpiritPktCommonWhitening(xNewState)
rosarium 0:2ddc0583bcec 403
rosarium 0:2ddc0583bcec 404
rosarium 0:2ddc0583bcec 405 /**
rosarium 0:2ddc0583bcec 406 * @brief Enables or Disables FEC for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 407 * @param xNewState new state for FEC mode.
rosarium 0:2ddc0583bcec 408 * This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 409 * @retval None.
rosarium 0:2ddc0583bcec 410 */
rosarium 0:2ddc0583bcec 411 #define SpiritPktStackFec(xNewState) SpiritPktCommonFec(xNewState)
rosarium 0:2ddc0583bcec 412
rosarium 0:2ddc0583bcec 413
rosarium 0:2ddc0583bcec 414 /**
rosarium 0:2ddc0583bcec 415 * @brief Sets a specific SYNC word for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 416 * @param xSyncX SYNC word number to be set.
rosarium 0:2ddc0583bcec 417 * This parameter can be any value of @ref StackSyncX.
rosarium 0:2ddc0583bcec 418 * @param cSyncWord SYNC word.
rosarium 0:2ddc0583bcec 419 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 420 * @retval None.
rosarium 0:2ddc0583bcec 421 */
rosarium 0:2ddc0583bcec 422 #define SpiritPktStackSetSyncxWord(xSyncX, cSyncWord) SpiritPktCommonSetSyncxWord((PktSyncX)xSyncX,cSyncWord)
rosarium 0:2ddc0583bcec 423
rosarium 0:2ddc0583bcec 424
rosarium 0:2ddc0583bcec 425 /**
rosarium 0:2ddc0583bcec 426 * @brief Returns a specific SYNC word for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 427 * @param xSyncX SYNC word number to be get.
rosarium 0:2ddc0583bcec 428 * This parameter can be any value of @ref StackSyncX.
rosarium 0:2ddc0583bcec 429 * @retval uint8_t Sync word x.
rosarium 0:2ddc0583bcec 430 */
rosarium 0:2ddc0583bcec 431 #define SpiritPktStackGetSyncxWord(xSyncX) SpiritPktCommonGetSyncxWord(xSyncX)
rosarium 0:2ddc0583bcec 432
rosarium 0:2ddc0583bcec 433
rosarium 0:2ddc0583bcec 434 /**
rosarium 0:2ddc0583bcec 435 * @brief Sets multiple SYNC words for SPIRIT STack packets.
rosarium 0:2ddc0583bcec 436 * @param lSyncWords SYNC words to be set with format: 0x|SYNC1|SYNC2|SYNC3|SYNC4|.
rosarium 0:2ddc0583bcec 437 * This parameter is a uint32_t.
rosarium 0:2ddc0583bcec 438 * @param xSyncLength SYNC length in bytes. The 32bit word passed will be stored in the SYNCx registers from the MSb
rosarium 0:2ddc0583bcec 439 * until the number of bytes in xSyncLength has been stored.
rosarium 0:2ddc0583bcec 440 * This parameter is a @ref StackSyncLength.
rosarium 0:2ddc0583bcec 441 * @retval None.
rosarium 0:2ddc0583bcec 442 */
rosarium 0:2ddc0583bcec 443 #define SpiritPktStackSetSyncWords(lSyncWords, xSyncLength) SpiritPktCommonSetSyncWords(lSyncWords,(PktSyncLength)xSyncLength)
rosarium 0:2ddc0583bcec 444
rosarium 0:2ddc0583bcec 445
rosarium 0:2ddc0583bcec 446 /**
rosarium 0:2ddc0583bcec 447 * @brief Returns multiple SYNC words for SPIRIT packets.
rosarium 0:2ddc0583bcec 448 * @param xSyncLength SYNC length in bytes. The 32bit word passed will be stored in the SYNCx registers from the MSb
rosarium 0:2ddc0583bcec 449 * until the number of bytes in xSyncLength has been stored.
rosarium 0:2ddc0583bcec 450 * This parameter is a pointer to @ref StackSyncLength.
rosarium 0:2ddc0583bcec 451 * @retval uint32_t Sync words. The format of the read 32 bit word is 0x|SYNC1|SYNC2|SYNC3|SYNC4|.
rosarium 0:2ddc0583bcec 452 */
rosarium 0:2ddc0583bcec 453 #define SpiritPktStackGetSyncWords(xSyncLength) SpiritPktCommonGetSyncWords((PktSyncLength)xSyncLength)
rosarium 0:2ddc0583bcec 454
rosarium 0:2ddc0583bcec 455
rosarium 0:2ddc0583bcec 456 /**
rosarium 0:2ddc0583bcec 457 * @brief Returns the SPIRIT variable length width (in number of bits).
rosarium 0:2ddc0583bcec 458 * @param None.
rosarium 0:2ddc0583bcec 459 * @retval uint8_t Variable length width in bits.
rosarium 0:2ddc0583bcec 460 */
rosarium 0:2ddc0583bcec 461 #define SpiritPktStackGetVarLengthWidth() SpiritPktCommonGetVarLengthWidth()
rosarium 0:2ddc0583bcec 462
rosarium 0:2ddc0583bcec 463
rosarium 0:2ddc0583bcec 464 /**
rosarium 0:2ddc0583bcec 465 * @brief Sets the destination address for the Tx packet.
rosarium 0:2ddc0583bcec 466 * @param cAddress destination address.
rosarium 0:2ddc0583bcec 467 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 468 * @retval None.
rosarium 0:2ddc0583bcec 469 */
rosarium 0:2ddc0583bcec 470 #define SpiritPktStackSetDestinationAddress(cAddress) SpiritPktCommonSetDestinationAddress(cAddress)
rosarium 0:2ddc0583bcec 471
rosarium 0:2ddc0583bcec 472
rosarium 0:2ddc0583bcec 473 /**
rosarium 0:2ddc0583bcec 474 * @brief Sets the Rx packet reference source address. The source address extracted from the received packet is masked
rosarium 0:2ddc0583bcec 475 * with the source reference mask and then compared to the masked reference value.
rosarium 0:2ddc0583bcec 476 * @param cAddress Reference source address.
rosarium 0:2ddc0583bcec 477 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 478 * @retval None.
rosarium 0:2ddc0583bcec 479 */
rosarium 0:2ddc0583bcec 480 #define SpiritPktStackSetSourceReferenceAddress(cAddress) SpiritPktCommonSetDestinationAddress(cAddress)
rosarium 0:2ddc0583bcec 481
rosarium 0:2ddc0583bcec 482
rosarium 0:2ddc0583bcec 483 /**
rosarium 0:2ddc0583bcec 484 * @brief Returns the Rx packet reference source address. The source address extracted from the received packet is masked
rosarium 0:2ddc0583bcec 485 * with the source reference mask and then compared to the masked reference value.
rosarium 0:2ddc0583bcec 486 * @param cAddress Reference source address.
rosarium 0:2ddc0583bcec 487 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 488 * @retval None.
rosarium 0:2ddc0583bcec 489 */
rosarium 0:2ddc0583bcec 490 #define SpiritPktStackGetSourceReferenceAddress() SpiritPktCommonGetTransmittedDestAddress()
rosarium 0:2ddc0583bcec 491
rosarium 0:2ddc0583bcec 492
rosarium 0:2ddc0583bcec 493 /**
rosarium 0:2ddc0583bcec 494 * @brief Returns the settled destination address.
rosarium 0:2ddc0583bcec 495 * @param None.
rosarium 0:2ddc0583bcec 496 * @retval uint8_t Transmitted destination address.
rosarium 0:2ddc0583bcec 497 */
rosarium 0:2ddc0583bcec 498 #define SpiritPktStackGetTransmittedDestAddress() SpiritPktCommonGetTransmittedDestAddress()
rosarium 0:2ddc0583bcec 499
rosarium 0:2ddc0583bcec 500
rosarium 0:2ddc0583bcec 501 /**
rosarium 0:2ddc0583bcec 502 * @brief Sets the node address. When the filtering on my address is on, if the destination address extracted from the received packet is equal to the content of the
rosarium 0:2ddc0583bcec 503 * my address, then the packet is accepted (this is the address of the node).
rosarium 0:2ddc0583bcec 504 * @param cAddress Address of the present node.
rosarium 0:2ddc0583bcec 505 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 506 * @retval None.
rosarium 0:2ddc0583bcec 507 */
rosarium 0:2ddc0583bcec 508 #define SpiritPktStackSetMyAddress(cAddress) SpiritPktCommonSetMyAddress(cAddress)
rosarium 0:2ddc0583bcec 509
rosarium 0:2ddc0583bcec 510
rosarium 0:2ddc0583bcec 511 /**
rosarium 0:2ddc0583bcec 512 * @brief Returns the address of the present node.
rosarium 0:2ddc0583bcec 513 * @param None.
rosarium 0:2ddc0583bcec 514 * @retval uint8_t My address (address of this node).
rosarium 0:2ddc0583bcec 515 */
rosarium 0:2ddc0583bcec 516 #define SpiritPktStackGetMyAddress() SpiritPktCommonGetMyAddress()
rosarium 0:2ddc0583bcec 517
rosarium 0:2ddc0583bcec 518
rosarium 0:2ddc0583bcec 519 /**
rosarium 0:2ddc0583bcec 520 * @brief Sets the broadcast address. When the broadcast filtering is on, if the destination address extracted from the received packet is equal to the content of the
rosarium 0:2ddc0583bcec 521 * BROADCAST_ADDR register, then the packet is accepted.
rosarium 0:2ddc0583bcec 522 * @param cAddress Broadcast address.
rosarium 0:2ddc0583bcec 523 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 524 * @retval None.
rosarium 0:2ddc0583bcec 525 */
rosarium 0:2ddc0583bcec 526 #define SpiritPktStackSetBroadcastAddress(cAddress) SpiritPktCommonSetBroadcastAddress(cAddress)
rosarium 0:2ddc0583bcec 527
rosarium 0:2ddc0583bcec 528
rosarium 0:2ddc0583bcec 529 /**
rosarium 0:2ddc0583bcec 530 * @brief Returns the broadcast address.
rosarium 0:2ddc0583bcec 531 * @param None.
rosarium 0:2ddc0583bcec 532 * @retval uint8_t Broadcast address.
rosarium 0:2ddc0583bcec 533 */
rosarium 0:2ddc0583bcec 534 #define SpiritPktStackGetBroadcastAddress() SpiritPktCommonGetBroadcastAddress()
rosarium 0:2ddc0583bcec 535
rosarium 0:2ddc0583bcec 536
rosarium 0:2ddc0583bcec 537 /**
rosarium 0:2ddc0583bcec 538 * @brief Sets the multicast address. When the multicast filtering is on, if the destination address extracted from the received packet is equal to the content of the
rosarium 0:2ddc0583bcec 539 * MULTICAST_ADDR register, then the packet is accepted.
rosarium 0:2ddc0583bcec 540 * @param cAddress Multicast address.
rosarium 0:2ddc0583bcec 541 * This parameter is an uint8_t.
rosarium 0:2ddc0583bcec 542 * @retval None.
rosarium 0:2ddc0583bcec 543 */
rosarium 0:2ddc0583bcec 544 #define SpiritPktStackSetMulticastAddress(cAddress) SpiritPktCommonSetMulticastAddress(cAddress)
rosarium 0:2ddc0583bcec 545
rosarium 0:2ddc0583bcec 546
rosarium 0:2ddc0583bcec 547 /**
rosarium 0:2ddc0583bcec 548 * @brief Returns the multicast address.
rosarium 0:2ddc0583bcec 549 * @param None.
rosarium 0:2ddc0583bcec 550 * @retval uint8_t Multicast address.
rosarium 0:2ddc0583bcec 551 */
rosarium 0:2ddc0583bcec 552 #define SpiritPktStackGetMulticastAddress() SpiritPktCommonGetMulticastAddress()
rosarium 0:2ddc0583bcec 553
rosarium 0:2ddc0583bcec 554
rosarium 0:2ddc0583bcec 555 /**
rosarium 0:2ddc0583bcec 556 * @brief Sets the control mask. The 1 bits of the CONTROL_MASK indicate the
rosarium 0:2ddc0583bcec 557 * bits to be used in filtering. (All 0s no filtering)
rosarium 0:2ddc0583bcec 558 * @param lMask Control mask.
rosarium 0:2ddc0583bcec 559 * This parameter is an uint32_t.
rosarium 0:2ddc0583bcec 560 * @retval None.
rosarium 0:2ddc0583bcec 561 */
rosarium 0:2ddc0583bcec 562 #define SpiritPktStackSetCtrlMask(lMask) SpiritPktCommonSetCtrlMask(lMask)
rosarium 0:2ddc0583bcec 563
rosarium 0:2ddc0583bcec 564
rosarium 0:2ddc0583bcec 565 /**
rosarium 0:2ddc0583bcec 566 * @brief Returns the control mask. The 1 bits of the CONTROL_MASK indicate the
rosarium 0:2ddc0583bcec 567 * bits to be used in filtering. (All 0s no filtering)
rosarium 0:2ddc0583bcec 568 * @param None.
rosarium 0:2ddc0583bcec 569 * @retval uint32_t Control mask.
rosarium 0:2ddc0583bcec 570 */
rosarium 0:2ddc0583bcec 571 #define SpiritPktStackGetCtrlMask() SpiritPktCommonGetCtrlMask()
rosarium 0:2ddc0583bcec 572
rosarium 0:2ddc0583bcec 573
rosarium 0:2ddc0583bcec 574 /**
rosarium 0:2ddc0583bcec 575 * @brief Sets the control field reference. If the bits enabled by the
rosarium 0:2ddc0583bcec 576 * CONTROL_MASK match the ones of the control fields extracted from the received packet
rosarium 0:2ddc0583bcec 577 * then the packet is accepted.
rosarium 0:2ddc0583bcec 578 * @param lReference Control reference.
rosarium 0:2ddc0583bcec 579 * This parameter is an uint32_t.
rosarium 0:2ddc0583bcec 580 * @retval None.
rosarium 0:2ddc0583bcec 581 */
rosarium 0:2ddc0583bcec 582 #define SpiritPktStackSetCtrlReference(lReference) SpiritPktCommonSetCtrlReference(lReference)
rosarium 0:2ddc0583bcec 583
rosarium 0:2ddc0583bcec 584
rosarium 0:2ddc0583bcec 585 /**
rosarium 0:2ddc0583bcec 586 * @brief Returns the control field reference.
rosarium 0:2ddc0583bcec 587 * @param None.
rosarium 0:2ddc0583bcec 588 * @retval uint32_t Control reference.
rosarium 0:2ddc0583bcec 589 */
rosarium 0:2ddc0583bcec 590 #define SpiritPktStackGetCtrlReference() SpiritPktCommonGetCtrlReference()
rosarium 0:2ddc0583bcec 591
rosarium 0:2ddc0583bcec 592
rosarium 0:2ddc0583bcec 593 /**
rosarium 0:2ddc0583bcec 594 * @brief Sets the TX control field.
rosarium 0:2ddc0583bcec 595 * @param lField TX CONTROL FIELD.
rosarium 0:2ddc0583bcec 596 * This parameter is an uint32_t.
rosarium 0:2ddc0583bcec 597 * @retval None.
rosarium 0:2ddc0583bcec 598 */
rosarium 0:2ddc0583bcec 599 #define SpiritPktStackSetTransmittedCtrlField(lField) SpiritPktCommonSetTransmittedCtrlField(lField)
rosarium 0:2ddc0583bcec 600
rosarium 0:2ddc0583bcec 601
rosarium 0:2ddc0583bcec 602 /**
rosarium 0:2ddc0583bcec 603 * @brief Returns the TX control field.
rosarium 0:2ddc0583bcec 604 * @param None.
rosarium 0:2ddc0583bcec 605 * @retval uint32_t Control field of the transmitted packet.
rosarium 0:2ddc0583bcec 606 */
rosarium 0:2ddc0583bcec 607 #define SpiritPktStackGetTransmittedCtrlField() SpiritPktCommonGetTransmittedCtrlField()
rosarium 0:2ddc0583bcec 608
rosarium 0:2ddc0583bcec 609
rosarium 0:2ddc0583bcec 610 /**
rosarium 0:2ddc0583bcec 611 * @brief If enabled RX packet is accepted if its destination address matches with TX_SOURCE_ADDRESS.
rosarium 0:2ddc0583bcec 612 * @param xNewState new state for DEST_VS_SOURCE_ADDRESS.
rosarium 0:2ddc0583bcec 613 * This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 614 * @retval None.
rosarium 0:2ddc0583bcec 615 */
rosarium 0:2ddc0583bcec 616 #define SpiritPktStackFilterOnMyAddress(xNewState) SpiritPktCommonFilterOnMyAddress(xNewState)
rosarium 0:2ddc0583bcec 617
rosarium 0:2ddc0583bcec 618
rosarium 0:2ddc0583bcec 619 /**
rosarium 0:2ddc0583bcec 620 * @brief If enabled RX packet is accepted if its destination address matches with MULTICAST_ADDRESS.
rosarium 0:2ddc0583bcec 621 * @param xNewState new state for DEST_VS_MULTICAST_ADDRESS.
rosarium 0:2ddc0583bcec 622 * This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 623 * @retval None.
rosarium 0:2ddc0583bcec 624 */
rosarium 0:2ddc0583bcec 625 #define SpiritPktStackFilterOnMulticastAddress(xNewState) SpiritPktCommonFilterOnMulticastAddress(xNewState)
rosarium 0:2ddc0583bcec 626
rosarium 0:2ddc0583bcec 627
rosarium 0:2ddc0583bcec 628 /**
rosarium 0:2ddc0583bcec 629 * @brief If enabled RX packet is accepted if its destination address matches with BROADCAST_ADDRESS.
rosarium 0:2ddc0583bcec 630 * @param xNewState new state for DEST_VS_BROADCAST_ADDRESS.
rosarium 0:2ddc0583bcec 631 * This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 632 * @retval None.
rosarium 0:2ddc0583bcec 633 */
rosarium 0:2ddc0583bcec 634 #define SpiritPktStackFilterOnBroadcastAddress(xNewState) SpiritPktCommonFilterOnBroadcastAddress(xNewState)
rosarium 0:2ddc0583bcec 635
rosarium 0:2ddc0583bcec 636
rosarium 0:2ddc0583bcec 637 /**
rosarium 0:2ddc0583bcec 638 * @brief Returns the enable bit of the my address filtering.
rosarium 0:2ddc0583bcec 639 * @param None.
rosarium 0:2ddc0583bcec 640 * @retval SpiritFunctionalStateThis parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 641 */
rosarium 0:2ddc0583bcec 642 #define SpiritPktStackGetFilterOnMyAddress() SpiritPktCommonGetFilterOnMyAddress();
rosarium 0:2ddc0583bcec 643
rosarium 0:2ddc0583bcec 644
rosarium 0:2ddc0583bcec 645 /**
rosarium 0:2ddc0583bcec 646 * @brief Returns the enable bit of the multicast address filtering.
rosarium 0:2ddc0583bcec 647 * @param None.
rosarium 0:2ddc0583bcec 648 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 649 */
rosarium 0:2ddc0583bcec 650 #define SpiritPktStackGetFilterOnMulticastAddress() SpiritPktCommonGetFilterOnMulticastAddress();
rosarium 0:2ddc0583bcec 651
rosarium 0:2ddc0583bcec 652
rosarium 0:2ddc0583bcec 653 /**
rosarium 0:2ddc0583bcec 654 * @brief Returns the enable bit of the broadcast address filtering.
rosarium 0:2ddc0583bcec 655 * @param None.
rosarium 0:2ddc0583bcec 656 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 657 */
rosarium 0:2ddc0583bcec 658 #define SpiritPktStackGetFilterOnBroadcastAddress() SpiritPktCommonGetFilterOnBroadcastAddress();
rosarium 0:2ddc0583bcec 659
rosarium 0:2ddc0583bcec 660
rosarium 0:2ddc0583bcec 661 /**
rosarium 0:2ddc0583bcec 662 * @brief Returns the control field of the received packet.
rosarium 0:2ddc0583bcec 663 * @param None.
rosarium 0:2ddc0583bcec 664 * @retval uint32_t Received control field.
rosarium 0:2ddc0583bcec 665 */
rosarium 0:2ddc0583bcec 666 #define SpiritPktStackGetReceivedCtrlField() SpiritPktCommonGetReceivedCtrlField()
rosarium 0:2ddc0583bcec 667
rosarium 0:2ddc0583bcec 668
rosarium 0:2ddc0583bcec 669 /**
rosarium 0:2ddc0583bcec 670 * @brief Returns the CRC field of the received packet.
rosarium 0:2ddc0583bcec 671 * @param cCrcFieldVect array in which the CRC field has to be stored.
rosarium 0:2ddc0583bcec 672 * This parameter is an uint8_t array of 3 elements.
rosarium 0:2ddc0583bcec 673 * @retval None.
rosarium 0:2ddc0583bcec 674 */
rosarium 0:2ddc0583bcec 675 #define SpiritPktStackGetReceivedCrcField(cCrcFieldVect) SpiritPktCommonGetReceivedCrcField(cCrcFieldVect)
rosarium 0:2ddc0583bcec 676
rosarium 0:2ddc0583bcec 677 /**
rosarium 0:2ddc0583bcec 678 * @brief Sets the AUTO ACKNOLEDGEMENT mechanism on the receiver. When the feature is enabled and
rosarium 0:2ddc0583bcec 679 * a data packet has been correctly received, then an acknowledgement packet is sent back to the originator of the received
rosarium 0:2ddc0583bcec 680 * packet. If the PIGGYBACKING bit is also set, payload data will be read from the FIFO; otherwise an empty packet is sent
rosarium 0:2ddc0583bcec 681 * only containing the source and destination addresses and the sequence number of the packet being acknowledged.
rosarium 0:2ddc0583bcec 682 * @param xAutoAck new state for autoack.
rosarium 0:2ddc0583bcec 683 * This parameter can be: S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 684 * @param xPiggybacking new state for autoack.
rosarium 0:2ddc0583bcec 685 * This parameter can be: S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 686 * @retval None.
rosarium 0:2ddc0583bcec 687 */
rosarium 0:2ddc0583bcec 688 #define SpiritPktStackAutoAck(xAutoAck, xPiggybacking) SpiritPktCommonAutoAck(xAutoAck, xPiggybacking)
rosarium 0:2ddc0583bcec 689
rosarium 0:2ddc0583bcec 690
rosarium 0:2ddc0583bcec 691 /**
rosarium 0:2ddc0583bcec 692 * @brief Sets the AUTO ACKNOLEDGEMENT mechanism on the transmitter. On the transmitter side, the NACK_TX field can be used to require or not an acknowledgment for each individual packet: if
rosarium 0:2ddc0583bcec 693 * NACK_TX is set to "1" then acknowledgment will not be required; if NACK_TX is set to "0" then acknowledgment will be
rosarium 0:2ddc0583bcec 694 * required.
rosarium 0:2ddc0583bcec 695 * @param xNewState new state for TX_AUTOACK.
rosarium 0:2ddc0583bcec 696 * This parameter can be: S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 697 * @retval None.
rosarium 0:2ddc0583bcec 698 */
rosarium 0:2ddc0583bcec 699 #define SpiritPktStackRequireAck(xNewState) SpiritPktCommonRequireAck(xNewState)
rosarium 0:2ddc0583bcec 700
rosarium 0:2ddc0583bcec 701
rosarium 0:2ddc0583bcec 702 /**
rosarium 0:2ddc0583bcec 703 * @brief Sets the TX sequence number to be used to start counting.
rosarium 0:2ddc0583bcec 704 * @param cSeqNumberReload new value for Tx seq number reload.
rosarium 0:2ddc0583bcec 705 * This parameter can be: S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 706 * @retval None.
rosarium 0:2ddc0583bcec 707 */
rosarium 0:2ddc0583bcec 708 #define SpiritPktStackSetTransmittedSeqNumberReload(cSeqNumberReload) SpiritPktCommonSetTransmittedSeqNumberReload(cSeqNumberReload)
rosarium 0:2ddc0583bcec 709
rosarium 0:2ddc0583bcec 710
rosarium 0:2ddc0583bcec 711 /**
rosarium 0:2ddc0583bcec 712 * @brief Sets the max number of automatic retransmission.
rosarium 0:2ddc0583bcec 713 * @param xNMaxReTx max number of retransmission.
rosarium 0:2ddc0583bcec 714 * This parameter can be any value of @ref PktNMaxReTx.
rosarium 0:2ddc0583bcec 715 * @retval None.
rosarium 0:2ddc0583bcec 716 */
rosarium 0:2ddc0583bcec 717 #define SpiritPktStackSetNMaxReTx(xNMaxReTx) SpiritPktCommonSetNMaxReTx((PktNMaxReTx)xNMaxReTx)
rosarium 0:2ddc0583bcec 718
rosarium 0:2ddc0583bcec 719
rosarium 0:2ddc0583bcec 720 /**
rosarium 0:2ddc0583bcec 721 * @brief Returns the max number of automatic retransmission.
rosarium 0:2ddc0583bcec 722 * @param None.
rosarium 0:2ddc0583bcec 723 * @retval uint8_t Max number of retransmissions.
rosarium 0:2ddc0583bcec 724 */
rosarium 0:2ddc0583bcec 725 #define SpiritPktStackGetNMaxReTx() SpiritPktCommonGetNMaxReTx()
rosarium 0:2ddc0583bcec 726
rosarium 0:2ddc0583bcec 727
rosarium 0:2ddc0583bcec 728 /**
rosarium 0:2ddc0583bcec 729 * @brief Returns the TX ACK request.
rosarium 0:2ddc0583bcec 730 * @param None.
rosarium 0:2ddc0583bcec 731 * @retval SpiritFunctionalState.
rosarium 0:2ddc0583bcec 732 */
rosarium 0:2ddc0583bcec 733 #define SpiritPktStackGetGetTxAckRequest() SpiritPktCommonGetTxAckRequest()
rosarium 0:2ddc0583bcec 734
rosarium 0:2ddc0583bcec 735 /**
rosarium 0:2ddc0583bcec 736 * @brief Returns the destination address of the received packet.
rosarium 0:2ddc0583bcec 737 * @param None.
rosarium 0:2ddc0583bcec 738 * @retval uint8_t Destination address of the received packet.
rosarium 0:2ddc0583bcec 739 */
rosarium 0:2ddc0583bcec 740 #define SpiritPktStackGetReceivedDestAddress() SpiritPktCommonGetReceivedDestAddress()
rosarium 0:2ddc0583bcec 741
rosarium 0:2ddc0583bcec 742
rosarium 0:2ddc0583bcec 743 /**
rosarium 0:2ddc0583bcec 744 * @brief Returns the source address of the received packet.
rosarium 0:2ddc0583bcec 745 * @param None.
rosarium 0:2ddc0583bcec 746 * @retval uint8_t Source address of the received packet.
rosarium 0:2ddc0583bcec 747 */
rosarium 0:2ddc0583bcec 748 #define SpiritPktStackGetReceivedSourceAddress() SpiritPktCommonGetReceivedSourceAddress()
rosarium 0:2ddc0583bcec 749
rosarium 0:2ddc0583bcec 750
rosarium 0:2ddc0583bcec 751 /**
rosarium 0:2ddc0583bcec 752 * @brief Returns the sequence number of the received packet.
rosarium 0:2ddc0583bcec 753 * @param None.
rosarium 0:2ddc0583bcec 754 * @retval uint8_t Received Sequence number.
rosarium 0:2ddc0583bcec 755 */
rosarium 0:2ddc0583bcec 756 #define SpiritPktStackGetReceivedSeqNumber() SpiritPktCommonGetReceivedSeqNumber()
rosarium 0:2ddc0583bcec 757
rosarium 0:2ddc0583bcec 758
rosarium 0:2ddc0583bcec 759 /**
rosarium 0:2ddc0583bcec 760 * @brief Returns the Nack bit of the received packet
rosarium 0:2ddc0583bcec 761 * @param None.
rosarium 0:2ddc0583bcec 762 * @retval uint8_t Value of the NAck bit.
rosarium 0:2ddc0583bcec 763 */
rosarium 0:2ddc0583bcec 764 #define SpiritPktStackGetReceivedNackRx() SpiritPktCommonGetReceivedNackRx()
rosarium 0:2ddc0583bcec 765
rosarium 0:2ddc0583bcec 766
rosarium 0:2ddc0583bcec 767 /**
rosarium 0:2ddc0583bcec 768 * @brief Returns the sequence number of the transmitted packet.
rosarium 0:2ddc0583bcec 769 * @param None.
rosarium 0:2ddc0583bcec 770 * @retval uint8_t Sequence number of the transmitted packet.
rosarium 0:2ddc0583bcec 771 */
rosarium 0:2ddc0583bcec 772 #define SpiritPktStackGetTransmittedSeqNumber() SpiritPktCommonGetTransmittedSeqNumber()
rosarium 0:2ddc0583bcec 773
rosarium 0:2ddc0583bcec 774
rosarium 0:2ddc0583bcec 775 /**
rosarium 0:2ddc0583bcec 776 * @brief Returns the number of retransmission done on the transmitted packet.
rosarium 0:2ddc0583bcec 777 * @param None.
rosarium 0:2ddc0583bcec 778 * @retval uint8_t Number of retransmissions done until now.
rosarium 0:2ddc0583bcec 779 */
rosarium 0:2ddc0583bcec 780 #define SpiritPktStackGetNReTx() SpiritPktCommonGetNReTx()
rosarium 0:2ddc0583bcec 781
rosarium 0:2ddc0583bcec 782
rosarium 0:2ddc0583bcec 783 /**
rosarium 0:2ddc0583bcec 784 * @brief If enabled RX packet is accepted only if the masked control field matches the
rosarium 0:2ddc0583bcec 785 * masked control field reference (CONTROL_MASK & CONTROL_FIELD_REF == CONTROL_MASK & RX_CONTROL_FIELD).
rosarium 0:2ddc0583bcec 786 * @param xNewState new state for Control filtering enable bit.
rosarium 0:2ddc0583bcec 787 * This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 788 * @retval None.
rosarium 0:2ddc0583bcec 789 * @note This filtering control is enabled by default but the control mask is by default set to 0.
rosarium 0:2ddc0583bcec 790 * As a matter of fact the user has to enable the control filtering bit after the packet initialization
rosarium 0:2ddc0583bcec 791 * because the PktInit routine disables it.
rosarium 0:2ddc0583bcec 792 */
rosarium 0:2ddc0583bcec 793 #define SpiritPktStackFilterOnControlField(xNewState) SpiritPktCommonFilterOnControlField(xNewState)
rosarium 0:2ddc0583bcec 794
rosarium 0:2ddc0583bcec 795
rosarium 0:2ddc0583bcec 796 /**
rosarium 0:2ddc0583bcec 797 * @brief Returns the enable bit of the control field filtering.
rosarium 0:2ddc0583bcec 798 * @param None.
rosarium 0:2ddc0583bcec 799 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
rosarium 0:2ddc0583bcec 800 */
rosarium 0:2ddc0583bcec 801 #define SpiritPktStackGetFilterOnControlField() SpiritPktCommonGetFilterOnControlField();
rosarium 0:2ddc0583bcec 802
rosarium 0:2ddc0583bcec 803
rosarium 0:2ddc0583bcec 804 /**
rosarium 0:2ddc0583bcec 805 *@}
rosarium 0:2ddc0583bcec 806 */
rosarium 0:2ddc0583bcec 807
rosarium 0:2ddc0583bcec 808
rosarium 0:2ddc0583bcec 809 /**
rosarium 0:2ddc0583bcec 810 * @defgroup PktStack_Exported_Functions Pkt STack Exported Functions
rosarium 0:2ddc0583bcec 811 * @{
rosarium 0:2ddc0583bcec 812 */
rosarium 0:2ddc0583bcec 813
rosarium 0:2ddc0583bcec 814 void SpiritPktStackInit(PktStackInit* pxPktStackInit);
rosarium 0:2ddc0583bcec 815 void SpiritPktStackGetInfo(PktStackInit* pxPktStackInit);
rosarium 0:2ddc0583bcec 816 void SpiritPktStackAddressesInit(PktStackAddressesInit* pxPktStackAddresses);
rosarium 0:2ddc0583bcec 817 void SpiritPktStackGetAddressesInfo(PktStackAddressesInit* pxPktStackAddresses);
rosarium 0:2ddc0583bcec 818 void SpiritPktStackLlpInit(PktStackLlpInit* pxPktStackLlpInit);
rosarium 0:2ddc0583bcec 819 void SpiritPktStackLlpGetInfo(PktStackLlpInit* pxPktStackLlpInit);
rosarium 0:2ddc0583bcec 820 void SpiritPktStackSetFormat(void);
rosarium 0:2ddc0583bcec 821 void SpiritPktStackSetPayloadLength(uint16_t nPayloadLength);
rosarium 0:2ddc0583bcec 822 uint16_t SpiritPktStackGetPayloadLength(void);
rosarium 0:2ddc0583bcec 823 void SpiritPktStackSetVarLengthWidth(uint16_t nMaxPayloadLength, StackControlLength xControlLength);
rosarium 0:2ddc0583bcec 824 void SpiritPktStackSetRxSourceMask(uint8_t cMask);
rosarium 0:2ddc0583bcec 825 uint8_t SpiritPktStackGetRxSourceMask(void);
rosarium 0:2ddc0583bcec 826 uint16_t SpiritPktStackGetReceivedPktLength(void);
rosarium 0:2ddc0583bcec 827 void SpiritPktStackFilterOnSourceAddress(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 828 void SpiritPktStackSetAddressLength(void);
rosarium 0:2ddc0583bcec 829
rosarium 0:2ddc0583bcec 830 /**
rosarium 0:2ddc0583bcec 831 *@}
rosarium 0:2ddc0583bcec 832 */
rosarium 0:2ddc0583bcec 833
rosarium 0:2ddc0583bcec 834 /**
rosarium 0:2ddc0583bcec 835 *@}
rosarium 0:2ddc0583bcec 836 */
rosarium 0:2ddc0583bcec 837
rosarium 0:2ddc0583bcec 838
rosarium 0:2ddc0583bcec 839 /**
rosarium 0:2ddc0583bcec 840 *@}
rosarium 0:2ddc0583bcec 841 */
rosarium 0:2ddc0583bcec 842
rosarium 0:2ddc0583bcec 843 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 844 }
rosarium 0:2ddc0583bcec 845 #endif
rosarium 0:2ddc0583bcec 846
rosarium 0:2ddc0583bcec 847 #endif
rosarium 0:2ddc0583bcec 848
rosarium 0:2ddc0583bcec 849 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/