Prototype RF driver for STM Sub-1 GHz RF expansion board based on the SPSGRF-868 module for STM32 Nucleo.

Prototype RF Driver for STM Sub-1 GHz RF Expansion Boards based on the SPSGRF-868 and SPSGRF-915 Modules for STM32 Nucleo

Currently supported boards:

Note, in order to use expansion board X-NUCLEO-IDS01A4 in mbed you need to perform the following HW modifications on the board:

  • Unmount resistor R4
  • Mount resistor R7

Furthermore, on some Nucleo development boards (e.g. the NUCLEO_F429ZI), in order to be able to use Ethernet together with these Sub-1 GHz RF expansion boards, you need to compile this driver with macro SPIRIT1_SPI_MOSI=PB_5 defined, while the development board typically requires some HW modification as e.g. described here!

This driver can be used together with the 6LoWPAN stack (a.k.a. Nanostack).

Committer:
Wolfgang Betz
Date:
Tue Nov 22 11:40:10 2016 +0100
Revision:
34:edda6a7238ec
Child:
67:93bec0baf1de
Perform re-naming

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wolfgang Betz 34:edda6a7238ec 1 /**
Wolfgang Betz 34:edda6a7238ec 2 ******************************************************************************
Wolfgang Betz 34:edda6a7238ec 3 * @file SPIRIT_PktBasic.h
Wolfgang Betz 34:edda6a7238ec 4 * @author VMA division - AMS
Wolfgang Betz 34:edda6a7238ec 5 * @version 3.2.2
Wolfgang Betz 34:edda6a7238ec 6 * @date 08-July-2015
Wolfgang Betz 34:edda6a7238ec 7 * @brief Configuration and management of SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 8 *
Wolfgang Betz 34:edda6a7238ec 9 * @details
Wolfgang Betz 34:edda6a7238ec 10 *
Wolfgang Betz 34:edda6a7238ec 11 * This module can be used to manage the configuration of Spirit Basic
Wolfgang Betz 34:edda6a7238ec 12 * packets.
Wolfgang Betz 34:edda6a7238ec 13 * The user can obtain a packet configuration filling the structure
Wolfgang Betz 34:edda6a7238ec 14 * <i>@ref PktBasicInit</i>, defining in it some general parameters
Wolfgang Betz 34:edda6a7238ec 15 * for the Spirit Basic packet format.
Wolfgang Betz 34:edda6a7238ec 16 * Another structure the user can fill is <i>@ref PktBasicAddressesInit</i>
Wolfgang Betz 34:edda6a7238ec 17 * to define the addresses which will be used during the communication.
Wolfgang Betz 34:edda6a7238ec 18 * Moreover, functions to set the payload length and the destination address
Wolfgang Betz 34:edda6a7238ec 19 * are provided.
Wolfgang Betz 34:edda6a7238ec 20 *
Wolfgang Betz 34:edda6a7238ec 21 * <b>Example:</b>
Wolfgang Betz 34:edda6a7238ec 22 * @code
Wolfgang Betz 34:edda6a7238ec 23 *
Wolfgang Betz 34:edda6a7238ec 24 * PktBasicInit basicInit={
Wolfgang Betz 34:edda6a7238ec 25 * PKT_PREAMBLE_LENGTH_08BYTES, // preamble length in bytes
Wolfgang Betz 34:edda6a7238ec 26 * PKT_SYNC_LENGTH_4BYTES, // sync word length in bytes
Wolfgang Betz 34:edda6a7238ec 27 * 0x1A2635A8, // sync word
Wolfgang Betz 34:edda6a7238ec 28 * PKT_LENGTH_VAR, // variable or fixed payload length
Wolfgang Betz 34:edda6a7238ec 29 * 7, // length field width in bits (used only for variable length)
Wolfgang Betz 34:edda6a7238ec 30 * PKT_NO_CRC, // CRC mode
Wolfgang Betz 34:edda6a7238ec 31 * PKT_CONTROL_LENGTH_0BYTES, // control field length
Wolfgang Betz 34:edda6a7238ec 32 * S_ENABLE, // address field
Wolfgang Betz 34:edda6a7238ec 33 * S_DISABLE, // FEC
Wolfgang Betz 34:edda6a7238ec 34 * S_ENABLE // whitening
Wolfgang Betz 34:edda6a7238ec 35 * };
Wolfgang Betz 34:edda6a7238ec 36 *
Wolfgang Betz 34:edda6a7238ec 37 * PktBasicAddressesInit addressInit={
Wolfgang Betz 34:edda6a7238ec 38 * S_ENABLE, // enable/disable filtering on my address
Wolfgang Betz 34:edda6a7238ec 39 * 0x34, // my address (address of the current node)
Wolfgang Betz 34:edda6a7238ec 40 * S_DISABLE, // enable/disable filtering on multicast address
Wolfgang Betz 34:edda6a7238ec 41 * 0xEE, // multicast address
Wolfgang Betz 34:edda6a7238ec 42 * S_DISABLE, // enable/disable filtering on broadcast address
Wolfgang Betz 34:edda6a7238ec 43 * 0xFF // broadcast address
Wolfgang Betz 34:edda6a7238ec 44 * };
Wolfgang Betz 34:edda6a7238ec 45 *
Wolfgang Betz 34:edda6a7238ec 46 * ...
Wolfgang Betz 34:edda6a7238ec 47 *
Wolfgang Betz 34:edda6a7238ec 48 * SpiritPktBasicInit(&basicInit);
Wolfgang Betz 34:edda6a7238ec 49 * SpiritPktBasicAddressesInit(&addressInit);
Wolfgang Betz 34:edda6a7238ec 50 *
Wolfgang Betz 34:edda6a7238ec 51 * ...
Wolfgang Betz 34:edda6a7238ec 52 *
Wolfgang Betz 34:edda6a7238ec 53 * SpiritPktBasicSetPayloadLength(20);
Wolfgang Betz 34:edda6a7238ec 54 * SpiritPktBasicSetDestinationAddress(0x44);
Wolfgang Betz 34:edda6a7238ec 55 *
Wolfgang Betz 34:edda6a7238ec 56 * ...
Wolfgang Betz 34:edda6a7238ec 57 *
Wolfgang Betz 34:edda6a7238ec 58 * @endcode
Wolfgang Betz 34:edda6a7238ec 59 *
Wolfgang Betz 34:edda6a7238ec 60 * The module provides some other functions that can be used to modify
Wolfgang Betz 34:edda6a7238ec 61 * or read only some configuration parameters.
Wolfgang Betz 34:edda6a7238ec 62 *
Wolfgang Betz 34:edda6a7238ec 63 *
Wolfgang Betz 34:edda6a7238ec 64 * @attention
Wolfgang Betz 34:edda6a7238ec 65 *
Wolfgang Betz 34:edda6a7238ec 66 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
Wolfgang Betz 34:edda6a7238ec 67 *
Wolfgang Betz 34:edda6a7238ec 68 * Redistribution and use in source and binary forms, with or without modification,
Wolfgang Betz 34:edda6a7238ec 69 * are permitted provided that the following conditions are met:
Wolfgang Betz 34:edda6a7238ec 70 * 1. Redistributions of source code must retain the above copyright notice,
Wolfgang Betz 34:edda6a7238ec 71 * this list of conditions and the following disclaimer.
Wolfgang Betz 34:edda6a7238ec 72 * 2. Redistributions in binary form must reproduce the above copyright notice,
Wolfgang Betz 34:edda6a7238ec 73 * this list of conditions and the following disclaimer in the documentation
Wolfgang Betz 34:edda6a7238ec 74 * and/or other materials provided with the distribution.
Wolfgang Betz 34:edda6a7238ec 75 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Wolfgang Betz 34:edda6a7238ec 76 * may be used to endorse or promote products derived from this software
Wolfgang Betz 34:edda6a7238ec 77 * without specific prior written permission.
Wolfgang Betz 34:edda6a7238ec 78 *
Wolfgang Betz 34:edda6a7238ec 79 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Wolfgang Betz 34:edda6a7238ec 80 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Wolfgang Betz 34:edda6a7238ec 81 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Wolfgang Betz 34:edda6a7238ec 82 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Wolfgang Betz 34:edda6a7238ec 83 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Wolfgang Betz 34:edda6a7238ec 84 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Wolfgang Betz 34:edda6a7238ec 85 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Wolfgang Betz 34:edda6a7238ec 86 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Wolfgang Betz 34:edda6a7238ec 87 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Wolfgang Betz 34:edda6a7238ec 88 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Wolfgang Betz 34:edda6a7238ec 89 *
Wolfgang Betz 34:edda6a7238ec 90 ******************************************************************************
Wolfgang Betz 34:edda6a7238ec 91 */
Wolfgang Betz 34:edda6a7238ec 92
Wolfgang Betz 34:edda6a7238ec 93 /* Define to prevent recursive inclusion -------------------------------------*/
Wolfgang Betz 34:edda6a7238ec 94 #ifndef __SPIRIT_PKT_BASIC_H
Wolfgang Betz 34:edda6a7238ec 95 #define __SPIRIT_PKT_BASIC_H
Wolfgang Betz 34:edda6a7238ec 96
Wolfgang Betz 34:edda6a7238ec 97 /* Includes ------------------------------------------------------------------*/
Wolfgang Betz 34:edda6a7238ec 98
Wolfgang Betz 34:edda6a7238ec 99 #include "SPIRIT_Regs.h"
Wolfgang Betz 34:edda6a7238ec 100 #include "SPIRIT_Types.h"
Wolfgang Betz 34:edda6a7238ec 101 #include "SPIRIT_PktCommon.h"
Wolfgang Betz 34:edda6a7238ec 102
Wolfgang Betz 34:edda6a7238ec 103 #ifdef __cplusplus
Wolfgang Betz 34:edda6a7238ec 104 extern "C" {
Wolfgang Betz 34:edda6a7238ec 105 #endif
Wolfgang Betz 34:edda6a7238ec 106
Wolfgang Betz 34:edda6a7238ec 107
Wolfgang Betz 34:edda6a7238ec 108
Wolfgang Betz 34:edda6a7238ec 109 /**
Wolfgang Betz 34:edda6a7238ec 110 * @addtogroup SPIRIT_Libraries
Wolfgang Betz 34:edda6a7238ec 111 * @{
Wolfgang Betz 34:edda6a7238ec 112 */
Wolfgang Betz 34:edda6a7238ec 113
Wolfgang Betz 34:edda6a7238ec 114
Wolfgang Betz 34:edda6a7238ec 115 /**
Wolfgang Betz 34:edda6a7238ec 116 * @defgroup SPIRIT_PktBasic Pkt Basic
Wolfgang Betz 34:edda6a7238ec 117 * @brief Configuration and management of SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 118 * @details See the file <i>@ref SPIRIT_PktBasic.h</i> for more details.
Wolfgang Betz 34:edda6a7238ec 119 * @{
Wolfgang Betz 34:edda6a7238ec 120 */
Wolfgang Betz 34:edda6a7238ec 121
Wolfgang Betz 34:edda6a7238ec 122 /**
Wolfgang Betz 34:edda6a7238ec 123 * @defgroup PktBasic_Exported_Types Pkt Basic Exported Types
Wolfgang Betz 34:edda6a7238ec 124 * @{
Wolfgang Betz 34:edda6a7238ec 125 */
Wolfgang Betz 34:edda6a7238ec 126
Wolfgang Betz 34:edda6a7238ec 127
Wolfgang Betz 34:edda6a7238ec 128 /**
Wolfgang Betz 34:edda6a7238ec 129 * @brief Preamble length in bytes enumeration.
Wolfgang Betz 34:edda6a7238ec 130 */
Wolfgang Betz 34:edda6a7238ec 131 typedef PktPreambleLength BasicPreambleLength;
Wolfgang Betz 34:edda6a7238ec 132
Wolfgang Betz 34:edda6a7238ec 133 #define IS_BASIC_PREAMBLE_LENGTH IS_PKT_PREAMBLE_LENGTH
Wolfgang Betz 34:edda6a7238ec 134
Wolfgang Betz 34:edda6a7238ec 135 /**
Wolfgang Betz 34:edda6a7238ec 136 * @brief Sync length in bytes enumeration.
Wolfgang Betz 34:edda6a7238ec 137 */
Wolfgang Betz 34:edda6a7238ec 138 typedef PktSyncLength BasicSyncLength;
Wolfgang Betz 34:edda6a7238ec 139
Wolfgang Betz 34:edda6a7238ec 140 #define IS_BASIC_SYNC_LENGTH IS_PKT_SYNC_LENGTH
Wolfgang Betz 34:edda6a7238ec 141
Wolfgang Betz 34:edda6a7238ec 142
Wolfgang Betz 34:edda6a7238ec 143
Wolfgang Betz 34:edda6a7238ec 144 /**
Wolfgang Betz 34:edda6a7238ec 145 * @brief CRC length in bytes enumeration.
Wolfgang Betz 34:edda6a7238ec 146 */
Wolfgang Betz 34:edda6a7238ec 147 typedef PktCrcMode BasicCrcMode;
Wolfgang Betz 34:edda6a7238ec 148
Wolfgang Betz 34:edda6a7238ec 149 #define IS_BASIC_CRC_MODE IS_PKT_CRC_MODE
Wolfgang Betz 34:edda6a7238ec 150
Wolfgang Betz 34:edda6a7238ec 151
Wolfgang Betz 34:edda6a7238ec 152 /**
Wolfgang Betz 34:edda6a7238ec 153 * @brief Fixed or variable payload length enumeration.
Wolfgang Betz 34:edda6a7238ec 154 */
Wolfgang Betz 34:edda6a7238ec 155 typedef PktFixVarLength BasicFixVarLength;
Wolfgang Betz 34:edda6a7238ec 156
Wolfgang Betz 34:edda6a7238ec 157 #define IS_BASIC_FIX_VAR_LENGTH IS_PKT_FIX_VAR_LENGTH
Wolfgang Betz 34:edda6a7238ec 158
Wolfgang Betz 34:edda6a7238ec 159 /**
Wolfgang Betz 34:edda6a7238ec 160 * @brief Control length in bytes enumeration.
Wolfgang Betz 34:edda6a7238ec 161 */
Wolfgang Betz 34:edda6a7238ec 162 typedef PktControlLength BasicControlLength;
Wolfgang Betz 34:edda6a7238ec 163
Wolfgang Betz 34:edda6a7238ec 164 #define IS_BASIC_CONTROL_LENGTH IS_PKT_CONTROL_LENGTH
Wolfgang Betz 34:edda6a7238ec 165
Wolfgang Betz 34:edda6a7238ec 166 /**
Wolfgang Betz 34:edda6a7238ec 167 * @brief Sync words enumeration.
Wolfgang Betz 34:edda6a7238ec 168 */
Wolfgang Betz 34:edda6a7238ec 169 typedef PktSyncX BasicSyncX;
Wolfgang Betz 34:edda6a7238ec 170
Wolfgang Betz 34:edda6a7238ec 171 #define IS_BASIC_SYNCx IS_PKT_SYNCx
Wolfgang Betz 34:edda6a7238ec 172
Wolfgang Betz 34:edda6a7238ec 173
Wolfgang Betz 34:edda6a7238ec 174 /**
Wolfgang Betz 34:edda6a7238ec 175 * @brief SPIRIT Basic Packet Init structure definition. This structure allows users to set the main options
Wolfgang Betz 34:edda6a7238ec 176 * for the Basic packet.
Wolfgang Betz 34:edda6a7238ec 177 */
Wolfgang Betz 34:edda6a7238ec 178 typedef struct
Wolfgang Betz 34:edda6a7238ec 179 {
Wolfgang Betz 34:edda6a7238ec 180
Wolfgang Betz 34:edda6a7238ec 181 BasicPreambleLength xPreambleLength; /*!< Specifies the preamble length.
Wolfgang Betz 34:edda6a7238ec 182 This parameter can be any value of @ref BasicPreambleLength */
Wolfgang Betz 34:edda6a7238ec 183 BasicSyncLength xSyncLength; /*!< Specifies the sync word length. The 32bit word passed (lSyncWords) will be stored in the SYNCx registers from the MSb
Wolfgang Betz 34:edda6a7238ec 184 until the number of bytes in xSyncLength has been stored.
Wolfgang Betz 34:edda6a7238ec 185 This parameter can be any value of @ref BasicSyncLength */
Wolfgang Betz 34:edda6a7238ec 186 uint32_t lSyncWords; /*!< Specifies the sync words.
Wolfgang Betz 34:edda6a7238ec 187 This parameter is a uint32_t word with format: 0x|SYNC1|SYNC2|SYNC3|SYNC4| */
Wolfgang Betz 34:edda6a7238ec 188 BasicFixVarLength xFixVarLength; /*!< Specifies if a fixed length of packet has to be used.
Wolfgang Betz 34:edda6a7238ec 189 This parameter can be any value of @ref BasicFixVarLength */
Wolfgang Betz 34:edda6a7238ec 190 uint8_t cPktLengthWidth; /*!< Specifies the size of the length of packet in bits. This field is useful only if
Wolfgang Betz 34:edda6a7238ec 191 the field xFixVarLength is set to BASIC_LENGTH_VAR. For Basic packets the length width
Wolfgang Betz 34:edda6a7238ec 192 is log2( max payload length + control length (0 to 4) + address length (0 or 1)).
Wolfgang Betz 34:edda6a7238ec 193 This parameter is an uint8_t */
Wolfgang Betz 34:edda6a7238ec 194 BasicCrcMode xCrcMode; /*!< Specifies the CRC word length of packet.
Wolfgang Betz 34:edda6a7238ec 195 This parameter can be any value of @ref BasicCrcMode */
Wolfgang Betz 34:edda6a7238ec 196 BasicControlLength xControlLength; /*!< Specifies the length of a control field to be sent.
Wolfgang Betz 34:edda6a7238ec 197 This parameter can be any value of @ref BasicControlLength */
Wolfgang Betz 34:edda6a7238ec 198 SpiritFunctionalState xAddressField; /*!< Specifies if the destination address has to be sent.
Wolfgang Betz 34:edda6a7238ec 199 This parameter can be S_ENABLE or S_DISABLE */
Wolfgang Betz 34:edda6a7238ec 200 SpiritFunctionalState xFec; /*!< Specifies if FEC has to be enabled.
Wolfgang Betz 34:edda6a7238ec 201 This parameter can be S_ENABLE or S_DISABLE */
Wolfgang Betz 34:edda6a7238ec 202 SpiritFunctionalState xDataWhitening; /*!< Specifies if data whitening has to be enabled.
Wolfgang Betz 34:edda6a7238ec 203 This parameter can be S_ENABLE or S_DISABLE */
Wolfgang Betz 34:edda6a7238ec 204 }PktBasicInit;
Wolfgang Betz 34:edda6a7238ec 205
Wolfgang Betz 34:edda6a7238ec 206
Wolfgang Betz 34:edda6a7238ec 207 /**
Wolfgang Betz 34:edda6a7238ec 208 * @brief SPIRIT Basic Packet address structure definition. This structure allows users to specify
Wolfgang Betz 34:edda6a7238ec 209 * the node/multicast/broadcast addresses and the correspondent filtering options.
Wolfgang Betz 34:edda6a7238ec 210 */
Wolfgang Betz 34:edda6a7238ec 211 typedef struct
Wolfgang Betz 34:edda6a7238ec 212 {
Wolfgang Betz 34:edda6a7238ec 213
Wolfgang Betz 34:edda6a7238ec 214 SpiritFunctionalState xFilterOnMyAddress; /*!< If set RX packet is accepted if its destination address matches with cMyAddress.
Wolfgang Betz 34:edda6a7238ec 215 This parameter can be S_ENABLE or S_DISABLE */
Wolfgang Betz 34:edda6a7238ec 216 uint8_t cMyAddress; /*!< Specifies the TX packet source address (address of this node).
Wolfgang Betz 34:edda6a7238ec 217 This parameter is an uint8_t */
Wolfgang Betz 34:edda6a7238ec 218 SpiritFunctionalState xFilterOnMulticastAddress; /*!< If set RX packet is accepted if its destination address matches with cMulticastAddress.
Wolfgang Betz 34:edda6a7238ec 219 This parameter can be S_ENABLE or S_DISABLE */
Wolfgang Betz 34:edda6a7238ec 220 uint8_t cMulticastAddress; /*!< Specifies the Multicast group address for this node.
Wolfgang Betz 34:edda6a7238ec 221 This parameter is an uint8_t */
Wolfgang Betz 34:edda6a7238ec 222 SpiritFunctionalState xFilterOnBroadcastAddress; /*!< If set RX packet is accepted if its destination address matches with cBroadcastAddress.
Wolfgang Betz 34:edda6a7238ec 223 This parameter can be S_ENABLE or S_DISABLE */
Wolfgang Betz 34:edda6a7238ec 224 uint8_t cBroadcastAddress; /*!< Specifies the Broadcast address for this node.
Wolfgang Betz 34:edda6a7238ec 225 This parameter is an uint8_t */
Wolfgang Betz 34:edda6a7238ec 226 }PktBasicAddressesInit;
Wolfgang Betz 34:edda6a7238ec 227
Wolfgang Betz 34:edda6a7238ec 228 /**
Wolfgang Betz 34:edda6a7238ec 229 *@}
Wolfgang Betz 34:edda6a7238ec 230 */
Wolfgang Betz 34:edda6a7238ec 231
Wolfgang Betz 34:edda6a7238ec 232
Wolfgang Betz 34:edda6a7238ec 233 /**
Wolfgang Betz 34:edda6a7238ec 234 * @defgroup PktBasic_Exported_Constants Pkt Basic Exported Constants
Wolfgang Betz 34:edda6a7238ec 235 * @{
Wolfgang Betz 34:edda6a7238ec 236 */
Wolfgang Betz 34:edda6a7238ec 237
Wolfgang Betz 34:edda6a7238ec 238 #define IS_BASIC_LENGTH_WIDTH_BITS IS_PKT_LENGTH_WIDTH_BITS
Wolfgang Betz 34:edda6a7238ec 239
Wolfgang Betz 34:edda6a7238ec 240
Wolfgang Betz 34:edda6a7238ec 241 /**
Wolfgang Betz 34:edda6a7238ec 242 *@}
Wolfgang Betz 34:edda6a7238ec 243 */
Wolfgang Betz 34:edda6a7238ec 244
Wolfgang Betz 34:edda6a7238ec 245
Wolfgang Betz 34:edda6a7238ec 246 /**
Wolfgang Betz 34:edda6a7238ec 247 * @defgroup PktBasic_Exported_Macros Pkt Basic Exported Macros
Wolfgang Betz 34:edda6a7238ec 248 * @{
Wolfgang Betz 34:edda6a7238ec 249 */
Wolfgang Betz 34:edda6a7238ec 250
Wolfgang Betz 34:edda6a7238ec 251 /**
Wolfgang Betz 34:edda6a7238ec 252 * @brief Macro used to compute per lower part of the packet length
Wolfgang Betz 34:edda6a7238ec 253 * for Spirit Basic packets, to write in the PCKTLEN0 register.
Wolfgang Betz 34:edda6a7238ec 254 * @param nLength Length of the packet payload.
Wolfgang Betz 34:edda6a7238ec 255 * This parameter is an uint16_t.
Wolfgang Betz 34:edda6a7238ec 256 * @retval None.
Wolfgang Betz 34:edda6a7238ec 257 */
Wolfgang Betz 34:edda6a7238ec 258 #define BASIC_BUILD_PCKTLEN0(nLength) BUILD_PCKTLEN0(nLength)
Wolfgang Betz 34:edda6a7238ec 259
Wolfgang Betz 34:edda6a7238ec 260
Wolfgang Betz 34:edda6a7238ec 261 /**
Wolfgang Betz 34:edda6a7238ec 262 * @brief Macro used to compute per upper part of the packet length
Wolfgang Betz 34:edda6a7238ec 263 * for Spirit Basic packets, to write the PCKTLEN1 register.
Wolfgang Betz 34:edda6a7238ec 264 * @param nLengthLength of the packet payload.
Wolfgang Betz 34:edda6a7238ec 265 * This parameter is an uint16_t.
Wolfgang Betz 34:edda6a7238ec 266 * @retval None.
Wolfgang Betz 34:edda6a7238ec 267 */
Wolfgang Betz 34:edda6a7238ec 268 #define BASIC_BUILD_PCKTLEN1(nLength) BUILD_PCKTLEN1(nLength)
Wolfgang Betz 34:edda6a7238ec 269
Wolfgang Betz 34:edda6a7238ec 270 /**
Wolfgang Betz 34:edda6a7238ec 271 * @brief Sets the CONTROL field length for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 272 * @param xControlLength length of CONTROL field in bytes.
Wolfgang Betz 34:edda6a7238ec 273 * This parameter can be any value of @ref PktControlLength.
Wolfgang Betz 34:edda6a7238ec 274 * @retval None.
Wolfgang Betz 34:edda6a7238ec 275 */
Wolfgang Betz 34:edda6a7238ec 276 #define SpiritPktBasicSetControlLength(xControlLength) SpiritPktCommonSetControlLength(xControlLength)
Wolfgang Betz 34:edda6a7238ec 277
Wolfgang Betz 34:edda6a7238ec 278
Wolfgang Betz 34:edda6a7238ec 279 /**
Wolfgang Betz 34:edda6a7238ec 280 * @brief Returns the CONTROL field length for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 281 * @param None.
Wolfgang Betz 34:edda6a7238ec 282 * @retval uint8_t Control field length.
Wolfgang Betz 34:edda6a7238ec 283 */
Wolfgang Betz 34:edda6a7238ec 284 #define SpiritPktBasicGetControlLength() SpiritPktCommonGetControlLength()
Wolfgang Betz 34:edda6a7238ec 285
Wolfgang Betz 34:edda6a7238ec 286
Wolfgang Betz 34:edda6a7238ec 287 /**
Wolfgang Betz 34:edda6a7238ec 288 * @brief Sets the PREAMBLE field length for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 289 * @param xPreambleLength length of PREAMBLE field in bytes.
Wolfgang Betz 34:edda6a7238ec 290 * This parameter can be any value of @ref BasicPreambleLength.
Wolfgang Betz 34:edda6a7238ec 291 * @retval None.
Wolfgang Betz 34:edda6a7238ec 292 */
Wolfgang Betz 34:edda6a7238ec 293 #define SpiritPktBasicSetPreambleLength(xPreambleLength) SpiritPktCommonSetPreambleLength((PktPreambleLength)xPreambleLength)
Wolfgang Betz 34:edda6a7238ec 294
Wolfgang Betz 34:edda6a7238ec 295
Wolfgang Betz 34:edda6a7238ec 296 /**
Wolfgang Betz 34:edda6a7238ec 297 * @brief Returns the PREAMBLE field length mode for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 298 * @param None.
Wolfgang Betz 34:edda6a7238ec 299 * @retval uint8_t Preamble field length in bytes.
Wolfgang Betz 34:edda6a7238ec 300 */
Wolfgang Betz 34:edda6a7238ec 301 #define SpiritPktBasicGetPreambleLength() SpiritPktCommonGetPreambleLength()
Wolfgang Betz 34:edda6a7238ec 302
Wolfgang Betz 34:edda6a7238ec 303
Wolfgang Betz 34:edda6a7238ec 304 /**
Wolfgang Betz 34:edda6a7238ec 305 * @brief Sets the SYNC field length for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 306 * @param xSyncLength length of SYNC field in bytes.
Wolfgang Betz 34:edda6a7238ec 307 * This parameter can be any value of @ref BasicSyncLength.
Wolfgang Betz 34:edda6a7238ec 308 * @retval None.
Wolfgang Betz 34:edda6a7238ec 309 */
Wolfgang Betz 34:edda6a7238ec 310 #define SpiritPktBasicSetSyncLength(xSyncLength) SpiritPktCommonSetSyncLength((PktSyncLength)xSyncLength)
Wolfgang Betz 34:edda6a7238ec 311
Wolfgang Betz 34:edda6a7238ec 312
Wolfgang Betz 34:edda6a7238ec 313 /**
Wolfgang Betz 34:edda6a7238ec 314 * @brief Returns the SYNC field length for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 315 * @param None.
Wolfgang Betz 34:edda6a7238ec 316 * @retval uint8_t SYNC field length in bytes.
Wolfgang Betz 34:edda6a7238ec 317 */
Wolfgang Betz 34:edda6a7238ec 318 #define SpiritPktBasicGetSyncLength() SpiritPktCommonGetSyncLength()
Wolfgang Betz 34:edda6a7238ec 319
Wolfgang Betz 34:edda6a7238ec 320
Wolfgang Betz 34:edda6a7238ec 321 /**
Wolfgang Betz 34:edda6a7238ec 322 * @brief Sets fixed or variable payload length mode for SPIRIT packets.
Wolfgang Betz 34:edda6a7238ec 323 * @param xFixVarLength variable or fixed length.
Wolfgang Betz 34:edda6a7238ec 324 * BASIC_FIXED_LENGTH_VAR -> variable (the length is extracted from the received packet).
Wolfgang Betz 34:edda6a7238ec 325 * BASIC_FIXED_LENGTH_FIX -> fix (the length is set by PCKTLEN0 and PCKTLEN1).
Wolfgang Betz 34:edda6a7238ec 326 * @retval None.
Wolfgang Betz 34:edda6a7238ec 327 */
Wolfgang Betz 34:edda6a7238ec 328 #define SpiritPktBasicSetFixVarLength(xFixVarLength) SpiritPktCommonSetFixVarLength((PktFixVarLength)xFixVarLength)
Wolfgang Betz 34:edda6a7238ec 329
Wolfgang Betz 34:edda6a7238ec 330
Wolfgang Betz 34:edda6a7238ec 331 /**
Wolfgang Betz 34:edda6a7238ec 332 * @brief Enables or Disables the CRC filtering.
Wolfgang Betz 34:edda6a7238ec 333 * @param xNewState new state for CRC_CHECK.
Wolfgang Betz 34:edda6a7238ec 334 * This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 335 * @retval None.
Wolfgang Betz 34:edda6a7238ec 336 */
Wolfgang Betz 34:edda6a7238ec 337 #define SpiritPktBasicFilterOnCrc(xNewState) SpiritPktCommonFilterOnCrc(xNewState)
Wolfgang Betz 34:edda6a7238ec 338
Wolfgang Betz 34:edda6a7238ec 339
Wolfgang Betz 34:edda6a7238ec 340 /**
Wolfgang Betz 34:edda6a7238ec 341 * @brief Returns the CRC filtering bit.
Wolfgang Betz 34:edda6a7238ec 342 * @param None.
Wolfgang Betz 34:edda6a7238ec 343 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 344 */
Wolfgang Betz 34:edda6a7238ec 345 #define SpiritPktBasicGetFilterOnCrc() SpiritPktCommonGetFilterOnCrc()
Wolfgang Betz 34:edda6a7238ec 346
Wolfgang Betz 34:edda6a7238ec 347
Wolfgang Betz 34:edda6a7238ec 348 /**
Wolfgang Betz 34:edda6a7238ec 349 * @brief Sets the CRC mode for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 350 * @param xCrcMode CRC mode.
Wolfgang Betz 34:edda6a7238ec 351 * This parameter can be any value of @ref BasicCrcMode.
Wolfgang Betz 34:edda6a7238ec 352 * @retval None.
Wolfgang Betz 34:edda6a7238ec 353 */
Wolfgang Betz 34:edda6a7238ec 354 #define SpiritPktBasicSetCrcMode(xCrcMode) SpiritPktCommonSetCrcMode((PktCrcMode)xCrcMode)
Wolfgang Betz 34:edda6a7238ec 355
Wolfgang Betz 34:edda6a7238ec 356
Wolfgang Betz 34:edda6a7238ec 357 /**
Wolfgang Betz 34:edda6a7238ec 358 * @brief Returns the CRC mode for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 359 * @param None.
Wolfgang Betz 34:edda6a7238ec 360 * @retval BasicCrcMode Crc mode.
Wolfgang Betz 34:edda6a7238ec 361 */
Wolfgang Betz 34:edda6a7238ec 362 #define SpiritPktBasicGetCrcMode() (BasicCrcMode)SpiritPktCommonGetCrcMode()
Wolfgang Betz 34:edda6a7238ec 363
Wolfgang Betz 34:edda6a7238ec 364
Wolfgang Betz 34:edda6a7238ec 365 /**
Wolfgang Betz 34:edda6a7238ec 366 * @brief Enables or Disables WHITENING for SPIRIT packets.
Wolfgang Betz 34:edda6a7238ec 367 * @param xNewState new state for WHITENING mode.
Wolfgang Betz 34:edda6a7238ec 368 * This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 369 * @retval None.
Wolfgang Betz 34:edda6a7238ec 370 */
Wolfgang Betz 34:edda6a7238ec 371 #define SpiritPktBasicWhitening(xNewState) SpiritPktCommonWhitening(xNewState)
Wolfgang Betz 34:edda6a7238ec 372
Wolfgang Betz 34:edda6a7238ec 373
Wolfgang Betz 34:edda6a7238ec 374 /**
Wolfgang Betz 34:edda6a7238ec 375 * @brief Enables or Disables FEC for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 376 * @param xNewState new state for FEC mode.
Wolfgang Betz 34:edda6a7238ec 377 * This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 378 * @retval None.
Wolfgang Betz 34:edda6a7238ec 379 */
Wolfgang Betz 34:edda6a7238ec 380 #define SpiritPktBasicFec(xNewState) SpiritPktCommonFec(xNewState)
Wolfgang Betz 34:edda6a7238ec 381
Wolfgang Betz 34:edda6a7238ec 382
Wolfgang Betz 34:edda6a7238ec 383 /**
Wolfgang Betz 34:edda6a7238ec 384 * @brief Sets a specific SYNC word for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 385 * @param xSyncX SYNC word number to be set.
Wolfgang Betz 34:edda6a7238ec 386 * This parameter can be any value of @ref BasicSyncX.
Wolfgang Betz 34:edda6a7238ec 387 * @param cSyncWord SYNC word.
Wolfgang Betz 34:edda6a7238ec 388 * This parameter is an uint8_t.
Wolfgang Betz 34:edda6a7238ec 389 * @retval None.
Wolfgang Betz 34:edda6a7238ec 390 */
Wolfgang Betz 34:edda6a7238ec 391 #define SpiritPktBasicSetSyncxWord(xSyncX, cSyncWord) SpiritPktCommonSetSyncxWord((PktSyncX)xSyncX, cSyncWord)
Wolfgang Betz 34:edda6a7238ec 392
Wolfgang Betz 34:edda6a7238ec 393
Wolfgang Betz 34:edda6a7238ec 394 /**
Wolfgang Betz 34:edda6a7238ec 395 * @brief Returns a specific SYNC words for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 396 * @param xSyncX SYNC word number to be get.
Wolfgang Betz 34:edda6a7238ec 397 * This parameter can be any value of @ref BasicSyncX.
Wolfgang Betz 34:edda6a7238ec 398 * @retval uint8_t Sync word x.
Wolfgang Betz 34:edda6a7238ec 399 */
Wolfgang Betz 34:edda6a7238ec 400 #define SpiritPktBasicGetSyncxWord(xSyncX) SpiritPktCommonGetSyncxWord(xSyncX)
Wolfgang Betz 34:edda6a7238ec 401
Wolfgang Betz 34:edda6a7238ec 402
Wolfgang Betz 34:edda6a7238ec 403 /**
Wolfgang Betz 34:edda6a7238ec 404 * @brief Sets multiple SYNC words for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 405 * @param lSyncWords SYNC words to be set with format: 0x|SYNC1|SYNC2|SYNC3|SYNC4|.
Wolfgang Betz 34:edda6a7238ec 406 * This parameter is a uint32_t.
Wolfgang Betz 34:edda6a7238ec 407 * @param xSyncLength SYNC length in bytes. The 32bit word passed will be stored in the SYNCx registers from the MSb
Wolfgang Betz 34:edda6a7238ec 408 * until the number of bytes in xSyncLength has been stored.
Wolfgang Betz 34:edda6a7238ec 409 * This parameter is a @ref BasicSyncLength.
Wolfgang Betz 34:edda6a7238ec 410 * @retval None.
Wolfgang Betz 34:edda6a7238ec 411 */
Wolfgang Betz 34:edda6a7238ec 412 #define SpiritPktBasicSetSyncWords(lSyncWords, xSyncLength) SpiritPktCommonSetSyncWords(lSyncWords, (PktSyncLength)xSyncLength)
Wolfgang Betz 34:edda6a7238ec 413
Wolfgang Betz 34:edda6a7238ec 414
Wolfgang Betz 34:edda6a7238ec 415 /**
Wolfgang Betz 34:edda6a7238ec 416 * @brief Returns multiple SYNC words for SPIRIT Basic packets.
Wolfgang Betz 34:edda6a7238ec 417 * @param xSyncLength SYNC length in bytes. The 32bit word passed will be stored in the SYNCx registers from the MSb
Wolfgang Betz 34:edda6a7238ec 418 * until the number of bytes in xSyncLength has been stored.
Wolfgang Betz 34:edda6a7238ec 419 * This parameter is a pointer to @ref BasicSyncLength.
Wolfgang Betz 34:edda6a7238ec 420 * @retval uint32_t Sync words. The format of the read 32 bit word is 0x|SYNC1|SYNC2|SYNC3|SYNC4|.
Wolfgang Betz 34:edda6a7238ec 421 */
Wolfgang Betz 34:edda6a7238ec 422 #define SpiritPktBasicGetSyncWords(xSyncLength) SpiritPktCommonGetSyncWords((PktSyncLength)xSyncLength)
Wolfgang Betz 34:edda6a7238ec 423
Wolfgang Betz 34:edda6a7238ec 424
Wolfgang Betz 34:edda6a7238ec 425 /**
Wolfgang Betz 34:edda6a7238ec 426 * @brief Returns the SPIRIT variable length width (in number of bits).
Wolfgang Betz 34:edda6a7238ec 427 * @param None.
Wolfgang Betz 34:edda6a7238ec 428 * @retval Variable length width in bits.
Wolfgang Betz 34:edda6a7238ec 429 */
Wolfgang Betz 34:edda6a7238ec 430 #define SpiritPktBasicGetVarLengthWidth() SpiritPktCommonGetVarLengthWidth()
Wolfgang Betz 34:edda6a7238ec 431
Wolfgang Betz 34:edda6a7238ec 432
Wolfgang Betz 34:edda6a7238ec 433 /**
Wolfgang Betz 34:edda6a7238ec 434 * @brief Sets the destination address for the Tx packet.
Wolfgang Betz 34:edda6a7238ec 435 * @param cAddress destination address.
Wolfgang Betz 34:edda6a7238ec 436 * This parameter is an uint8_t.
Wolfgang Betz 34:edda6a7238ec 437 * @retval None.
Wolfgang Betz 34:edda6a7238ec 438 */
Wolfgang Betz 34:edda6a7238ec 439 #define SpiritPktBasicSetDestinationAddress(cAddress) SpiritPktCommonSetDestinationAddress(cAddress)
Wolfgang Betz 34:edda6a7238ec 440
Wolfgang Betz 34:edda6a7238ec 441
Wolfgang Betz 34:edda6a7238ec 442 /**
Wolfgang Betz 34:edda6a7238ec 443 * @brief Returns the settled destination address.
Wolfgang Betz 34:edda6a7238ec 444 * @param None.
Wolfgang Betz 34:edda6a7238ec 445 * @retval uint8_t Transmitted destination address.
Wolfgang Betz 34:edda6a7238ec 446 */
Wolfgang Betz 34:edda6a7238ec 447 #define SpiritPktBasicGetTransmittedDestAddress() SpiritPktCommonGetTransmittedDestAddress()
Wolfgang Betz 34:edda6a7238ec 448
Wolfgang Betz 34:edda6a7238ec 449
Wolfgang Betz 34:edda6a7238ec 450 /**
Wolfgang Betz 34:edda6a7238ec 451 * @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
Wolfgang Betz 34:edda6a7238ec 452 * my address, then the packet is accepted (this is the address of the node).
Wolfgang Betz 34:edda6a7238ec 453 * @param cAddress Address of the present node.
Wolfgang Betz 34:edda6a7238ec 454 * This parameter is an uint8_t.
Wolfgang Betz 34:edda6a7238ec 455 * @retval None.
Wolfgang Betz 34:edda6a7238ec 456 */
Wolfgang Betz 34:edda6a7238ec 457 #define SpiritPktBasicSetMyAddress(cAddress) SpiritPktCommonSetMyAddress(cAddress)
Wolfgang Betz 34:edda6a7238ec 458
Wolfgang Betz 34:edda6a7238ec 459
Wolfgang Betz 34:edda6a7238ec 460 /**
Wolfgang Betz 34:edda6a7238ec 461 * @brief Returns the address of the present node.
Wolfgang Betz 34:edda6a7238ec 462 * @param None.
Wolfgang Betz 34:edda6a7238ec 463 * @retval uint8_t My address (address of this node).
Wolfgang Betz 34:edda6a7238ec 464 */
Wolfgang Betz 34:edda6a7238ec 465 #define SpiritPktBasicGetMyAddress() SpiritPktCommonGetMyAddress()
Wolfgang Betz 34:edda6a7238ec 466
Wolfgang Betz 34:edda6a7238ec 467
Wolfgang Betz 34:edda6a7238ec 468 /**
Wolfgang Betz 34:edda6a7238ec 469 * @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
Wolfgang Betz 34:edda6a7238ec 470 * BROADCAST_ADDR register, then the packet is accepted.
Wolfgang Betz 34:edda6a7238ec 471 * @param cAddress Broadcast address.
Wolfgang Betz 34:edda6a7238ec 472 * This parameter is an uint8_t.
Wolfgang Betz 34:edda6a7238ec 473 * @retval None.
Wolfgang Betz 34:edda6a7238ec 474 */
Wolfgang Betz 34:edda6a7238ec 475 #define SpiritPktBasicSetBroadcastAddress(cAddress) SpiritPktCommonSetBroadcastAddress(cAddress)
Wolfgang Betz 34:edda6a7238ec 476
Wolfgang Betz 34:edda6a7238ec 477
Wolfgang Betz 34:edda6a7238ec 478 /**
Wolfgang Betz 34:edda6a7238ec 479 * @brief Returns the broadcast address.
Wolfgang Betz 34:edda6a7238ec 480 * @param None.
Wolfgang Betz 34:edda6a7238ec 481 * @retval uint8_t Broadcast address.
Wolfgang Betz 34:edda6a7238ec 482 */
Wolfgang Betz 34:edda6a7238ec 483 #define SpiritPktBasicGetBroadcastAddress() SpiritPktCommonGetBroadcastAddress()
Wolfgang Betz 34:edda6a7238ec 484
Wolfgang Betz 34:edda6a7238ec 485
Wolfgang Betz 34:edda6a7238ec 486 /**
Wolfgang Betz 34:edda6a7238ec 487 * @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
Wolfgang Betz 34:edda6a7238ec 488 * MULTICAST_ADDR register, then the packet is accepted.
Wolfgang Betz 34:edda6a7238ec 489 * @param cAddress Multicast address.
Wolfgang Betz 34:edda6a7238ec 490 * This parameter is an uint8_t.
Wolfgang Betz 34:edda6a7238ec 491 * @retval None.
Wolfgang Betz 34:edda6a7238ec 492 */
Wolfgang Betz 34:edda6a7238ec 493 #define SpiritPktBasicSetMulticastAddress(cAddress) SpiritPktCommonSetMulticastAddress(cAddress)
Wolfgang Betz 34:edda6a7238ec 494
Wolfgang Betz 34:edda6a7238ec 495
Wolfgang Betz 34:edda6a7238ec 496 /**
Wolfgang Betz 34:edda6a7238ec 497 * @brief Returns the multicast address.
Wolfgang Betz 34:edda6a7238ec 498 * @param None.
Wolfgang Betz 34:edda6a7238ec 499 * @retval uint8_t Multicast address.
Wolfgang Betz 34:edda6a7238ec 500 */
Wolfgang Betz 34:edda6a7238ec 501 #define SpiritPktBasicGetMulticastAddress() SpiritPktCommonGetMulticastAddress()
Wolfgang Betz 34:edda6a7238ec 502
Wolfgang Betz 34:edda6a7238ec 503
Wolfgang Betz 34:edda6a7238ec 504 /**
Wolfgang Betz 34:edda6a7238ec 505 * @brief Sets the control mask. The 1 bits of the CONTROL_MASK indicate the
Wolfgang Betz 34:edda6a7238ec 506 * bits to be used in filtering. (All 0s no filtering)
Wolfgang Betz 34:edda6a7238ec 507 * @param lMask Control mask.
Wolfgang Betz 34:edda6a7238ec 508 * This parameter is an uint32_t.
Wolfgang Betz 34:edda6a7238ec 509 * @retval None.
Wolfgang Betz 34:edda6a7238ec 510 */
Wolfgang Betz 34:edda6a7238ec 511 #define SpiritPktBasicSetCtrlMask(lMask) SpiritPktCommonSetCtrlMask(lMask)
Wolfgang Betz 34:edda6a7238ec 512
Wolfgang Betz 34:edda6a7238ec 513
Wolfgang Betz 34:edda6a7238ec 514 /**
Wolfgang Betz 34:edda6a7238ec 515 * @brief Returns the control mask. The 1 bits of the CONTROL_MASK indicate the
Wolfgang Betz 34:edda6a7238ec 516 * bits to be used in filtering. (All 0s no filtering)
Wolfgang Betz 34:edda6a7238ec 517 * @param None.
Wolfgang Betz 34:edda6a7238ec 518 * @retval uint32_t Control mask.
Wolfgang Betz 34:edda6a7238ec 519 */
Wolfgang Betz 34:edda6a7238ec 520 #define SpiritPktBasicGetCtrlMask() SpiritPktCommonGetCtrlMask()
Wolfgang Betz 34:edda6a7238ec 521
Wolfgang Betz 34:edda6a7238ec 522
Wolfgang Betz 34:edda6a7238ec 523 /**
Wolfgang Betz 34:edda6a7238ec 524 * @brief Sets the control field reference. If the bits enabled by the
Wolfgang Betz 34:edda6a7238ec 525 * CONTROL_MASK match the ones of the control fields extracted from the received packet
Wolfgang Betz 34:edda6a7238ec 526 * then the packet is accepted.
Wolfgang Betz 34:edda6a7238ec 527 * @param lReference Control reference.
Wolfgang Betz 34:edda6a7238ec 528 * This parameter is an uint32_t.
Wolfgang Betz 34:edda6a7238ec 529 * @retval None.
Wolfgang Betz 34:edda6a7238ec 530 */
Wolfgang Betz 34:edda6a7238ec 531 #define SpiritPktBasicSetCtrlReference(lReference) SpiritPktCommonSetCtrlReference(lReference)
Wolfgang Betz 34:edda6a7238ec 532
Wolfgang Betz 34:edda6a7238ec 533
Wolfgang Betz 34:edda6a7238ec 534 /**
Wolfgang Betz 34:edda6a7238ec 535 * @brief Returns the control field reference.
Wolfgang Betz 34:edda6a7238ec 536 * @param None.
Wolfgang Betz 34:edda6a7238ec 537 * @retval uint32_t Control reference.
Wolfgang Betz 34:edda6a7238ec 538 */
Wolfgang Betz 34:edda6a7238ec 539 #define SpiritPktBasicGetCtrlReference() SpiritPktCommonGetCtrlReference()
Wolfgang Betz 34:edda6a7238ec 540
Wolfgang Betz 34:edda6a7238ec 541
Wolfgang Betz 34:edda6a7238ec 542 /**
Wolfgang Betz 34:edda6a7238ec 543 * @brief Sets the TX control field.
Wolfgang Betz 34:edda6a7238ec 544 * @param lField Tx control field.
Wolfgang Betz 34:edda6a7238ec 545 * This parameter is an uint32_t.
Wolfgang Betz 34:edda6a7238ec 546 * @retval None.
Wolfgang Betz 34:edda6a7238ec 547 */
Wolfgang Betz 34:edda6a7238ec 548 #define SpiritPktBasicSetTransmittedCtrlField(lField) SpiritPktCommonSetTransmittedCtrlField(lField)
Wolfgang Betz 34:edda6a7238ec 549
Wolfgang Betz 34:edda6a7238ec 550
Wolfgang Betz 34:edda6a7238ec 551 /**
Wolfgang Betz 34:edda6a7238ec 552 * @brief Returns the TX control field.
Wolfgang Betz 34:edda6a7238ec 553 * @param None.
Wolfgang Betz 34:edda6a7238ec 554 * @retval uint32_t Control field of the transmitted packet.
Wolfgang Betz 34:edda6a7238ec 555 */
Wolfgang Betz 34:edda6a7238ec 556 #define SpiritPktBasicGetTransmittedCtrlField() SpiritPktCommonGetTransmittedCtrlField()
Wolfgang Betz 34:edda6a7238ec 557
Wolfgang Betz 34:edda6a7238ec 558
Wolfgang Betz 34:edda6a7238ec 559 /**
Wolfgang Betz 34:edda6a7238ec 560 * @brief If enabled RX packet is accepted if its destination address matches with My address.
Wolfgang Betz 34:edda6a7238ec 561 * @param xNewState new state for DEST_VS_SOURCE_ADDRESS.
Wolfgang Betz 34:edda6a7238ec 562 * This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 563 * @retval None.
Wolfgang Betz 34:edda6a7238ec 564 */
Wolfgang Betz 34:edda6a7238ec 565 #define SpiritPktBasicFilterOnMyAddress(xNewState) SpiritPktCommonFilterOnMyAddress(xNewState)
Wolfgang Betz 34:edda6a7238ec 566
Wolfgang Betz 34:edda6a7238ec 567
Wolfgang Betz 34:edda6a7238ec 568 /**
Wolfgang Betz 34:edda6a7238ec 569 * @brief If enabled RX packet is accepted if its destination address matches with multicast address.
Wolfgang Betz 34:edda6a7238ec 570 * @param xNewState new state for DEST_VS_MULTICAST_ADDRESS.
Wolfgang Betz 34:edda6a7238ec 571 * This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 572 * @retval None.
Wolfgang Betz 34:edda6a7238ec 573 */
Wolfgang Betz 34:edda6a7238ec 574 #define SpiritPktBasicFilterOnMulticastAddress(xNewState) SpiritPktCommonFilterOnMulticastAddress(xNewState)
Wolfgang Betz 34:edda6a7238ec 575
Wolfgang Betz 34:edda6a7238ec 576
Wolfgang Betz 34:edda6a7238ec 577 /**
Wolfgang Betz 34:edda6a7238ec 578 * @brief If enabled RX packet is accepted if its destination address matches with broadcast address.
Wolfgang Betz 34:edda6a7238ec 579 * @param xNewState new state for DEST_VS_BROADCAST_ADDRESS.
Wolfgang Betz 34:edda6a7238ec 580 * This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 581 * @retval None.
Wolfgang Betz 34:edda6a7238ec 582 */
Wolfgang Betz 34:edda6a7238ec 583 #define SpiritPktBasicFilterOnBroadcastAddress(xNewState) SpiritPktCommonFilterOnBroadcastAddress(xNewState)
Wolfgang Betz 34:edda6a7238ec 584
Wolfgang Betz 34:edda6a7238ec 585
Wolfgang Betz 34:edda6a7238ec 586 /**
Wolfgang Betz 34:edda6a7238ec 587 * @brief Returns the enable bit of the my address filtering.
Wolfgang Betz 34:edda6a7238ec 588 * @param None.
Wolfgang Betz 34:edda6a7238ec 589 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 590 */
Wolfgang Betz 34:edda6a7238ec 591 #define SpiritPktBasicGetFilterOnMyAddress() SpiritPktCommonGetFilterOnMyAddress();
Wolfgang Betz 34:edda6a7238ec 592
Wolfgang Betz 34:edda6a7238ec 593
Wolfgang Betz 34:edda6a7238ec 594 /**
Wolfgang Betz 34:edda6a7238ec 595 * @brief Returns the enable bit of the multicast address filtering.
Wolfgang Betz 34:edda6a7238ec 596 * @param None.
Wolfgang Betz 34:edda6a7238ec 597 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 598 */
Wolfgang Betz 34:edda6a7238ec 599 #define SpiritPktBasicGetFilterOnMulticastAddress() SpiritPktCommonGetFilterOnMulticastAddress();
Wolfgang Betz 34:edda6a7238ec 600
Wolfgang Betz 34:edda6a7238ec 601
Wolfgang Betz 34:edda6a7238ec 602 /**
Wolfgang Betz 34:edda6a7238ec 603 * @brief Returns the enable bit of the broadcast address filtering.
Wolfgang Betz 34:edda6a7238ec 604 * @param None.
Wolfgang Betz 34:edda6a7238ec 605 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 606 */
Wolfgang Betz 34:edda6a7238ec 607 #define SpiritPktBasicGetFilterOnBroadcastAddress() SpiritPktCommonGetFilterOnBroadcastAddress();
Wolfgang Betz 34:edda6a7238ec 608
Wolfgang Betz 34:edda6a7238ec 609
Wolfgang Betz 34:edda6a7238ec 610 /**
Wolfgang Betz 34:edda6a7238ec 611 * @brief Returns the destination address of the received packet.
Wolfgang Betz 34:edda6a7238ec 612 * @param None.
Wolfgang Betz 34:edda6a7238ec 613 * @retval uint8_t Destination address of the received packet.
Wolfgang Betz 34:edda6a7238ec 614 */
Wolfgang Betz 34:edda6a7238ec 615 #define SpiritPktBasicGetReceivedDestAddress() SpiritPktCommonGetReceivedDestAddress()
Wolfgang Betz 34:edda6a7238ec 616
Wolfgang Betz 34:edda6a7238ec 617
Wolfgang Betz 34:edda6a7238ec 618 /**
Wolfgang Betz 34:edda6a7238ec 619 * @brief Returns the control field of the received packet.
Wolfgang Betz 34:edda6a7238ec 620 * @param None.
Wolfgang Betz 34:edda6a7238ec 621 * @retval uint32_t Received control field.
Wolfgang Betz 34:edda6a7238ec 622 */
Wolfgang Betz 34:edda6a7238ec 623 #define SpiritPktBasicGetReceivedCtrlField() SpiritPktCommonGetReceivedCtrlField()
Wolfgang Betz 34:edda6a7238ec 624
Wolfgang Betz 34:edda6a7238ec 625
Wolfgang Betz 34:edda6a7238ec 626 /**
Wolfgang Betz 34:edda6a7238ec 627 * @brief Returns the CRC field of the received packet.
Wolfgang Betz 34:edda6a7238ec 628 * @param cCrcFieldVect array in which the CRC field has to be stored.
Wolfgang Betz 34:edda6a7238ec 629 * This parameter is an uint8_t array of 3 elements.
Wolfgang Betz 34:edda6a7238ec 630 * @retval None.
Wolfgang Betz 34:edda6a7238ec 631 */
Wolfgang Betz 34:edda6a7238ec 632 #define SpiritPktBasicGetReceivedCrcField(cCrcFieldVect) SpiritPktCommonGetReceivedCrcField(cCrcFieldVect)
Wolfgang Betz 34:edda6a7238ec 633
Wolfgang Betz 34:edda6a7238ec 634
Wolfgang Betz 34:edda6a7238ec 635 /**
Wolfgang Betz 34:edda6a7238ec 636 * @brief If enabled RX packet is accepted only if the masked control field matches the
Wolfgang Betz 34:edda6a7238ec 637 * masked control field reference (CONTROL_MASK & CONTROL_FIELD_REF == CONTROL_MASK & RX_CONTROL_FIELD).
Wolfgang Betz 34:edda6a7238ec 638 * @param xNewState new state for Control filtering enable bit.
Wolfgang Betz 34:edda6a7238ec 639 * This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 640 * @retval None.
Wolfgang Betz 34:edda6a7238ec 641 * @note This filtering control is enabled by default but the control mask is by default set to 0.
Wolfgang Betz 34:edda6a7238ec 642 * As a matter of fact the user has to enable the control filtering bit after the packet initialization
Wolfgang Betz 34:edda6a7238ec 643 * because the PktInit routine disables it.
Wolfgang Betz 34:edda6a7238ec 644 */
Wolfgang Betz 34:edda6a7238ec 645 #define SpiritPktBasicFilterOnControlField(xNewState) SpiritPktCommonFilterOnControlField(xNewState)
Wolfgang Betz 34:edda6a7238ec 646
Wolfgang Betz 34:edda6a7238ec 647
Wolfgang Betz 34:edda6a7238ec 648 /**
Wolfgang Betz 34:edda6a7238ec 649 * @brief Returns the enable bit of the control field filtering.
Wolfgang Betz 34:edda6a7238ec 650 * @param None.
Wolfgang Betz 34:edda6a7238ec 651 * @retval SpiritFunctionalState This parameter can be S_ENABLE or S_DISABLE.
Wolfgang Betz 34:edda6a7238ec 652 */
Wolfgang Betz 34:edda6a7238ec 653 #define SpiritPktBasicGetFilterOnControlField() SpiritPktCommonGetFilterOnControlField();
Wolfgang Betz 34:edda6a7238ec 654
Wolfgang Betz 34:edda6a7238ec 655 /**
Wolfgang Betz 34:edda6a7238ec 656 *@}
Wolfgang Betz 34:edda6a7238ec 657 */
Wolfgang Betz 34:edda6a7238ec 658
Wolfgang Betz 34:edda6a7238ec 659
Wolfgang Betz 34:edda6a7238ec 660 /**
Wolfgang Betz 34:edda6a7238ec 661 * @defgroup PktBasic_Exported_Functions Pkt Basic Exported Functions
Wolfgang Betz 34:edda6a7238ec 662 * @{
Wolfgang Betz 34:edda6a7238ec 663 */
Wolfgang Betz 34:edda6a7238ec 664
Wolfgang Betz 34:edda6a7238ec 665 void SpiritPktBasicInit(PktBasicInit* pxPktBasicInit);
Wolfgang Betz 34:edda6a7238ec 666 void SpiritPktBasicGetInfo(PktBasicInit* pxPktBasicInit);
Wolfgang Betz 34:edda6a7238ec 667 void SpiritPktBasicAddressesInit(PktBasicAddressesInit* pxPktBasicAddresses);
Wolfgang Betz 34:edda6a7238ec 668 void SpiritPktBasicGetAddressesInfo(PktBasicAddressesInit* pxPktBasicAddresses);
Wolfgang Betz 34:edda6a7238ec 669 void SpiritPktBasicSetFormat(void);
Wolfgang Betz 34:edda6a7238ec 670 void SpiritPktBasicAddressField(SpiritFunctionalState xAddressField);
Wolfgang Betz 34:edda6a7238ec 671 SpiritFunctionalState SpiritPktBasicGetAddressField(void);
Wolfgang Betz 34:edda6a7238ec 672 void SpiritPktBasicSetPayloadLength(uint16_t nPayloadLength);
Wolfgang Betz 34:edda6a7238ec 673 uint16_t SpiritPktBasicGetPayloadLength(void);
Wolfgang Betz 34:edda6a7238ec 674 uint16_t SpiritPktBasicGetReceivedPktLength(void);
Wolfgang Betz 34:edda6a7238ec 675 void SpiritPktBasicSetVarLengthWidth(uint16_t nMaxPayloadLength,SpiritFunctionalState xAddressField, BasicControlLength xControlLength);
Wolfgang Betz 34:edda6a7238ec 676
Wolfgang Betz 34:edda6a7238ec 677 /**
Wolfgang Betz 34:edda6a7238ec 678 *@}
Wolfgang Betz 34:edda6a7238ec 679 */
Wolfgang Betz 34:edda6a7238ec 680
Wolfgang Betz 34:edda6a7238ec 681 /**
Wolfgang Betz 34:edda6a7238ec 682 *@}
Wolfgang Betz 34:edda6a7238ec 683 */
Wolfgang Betz 34:edda6a7238ec 684
Wolfgang Betz 34:edda6a7238ec 685
Wolfgang Betz 34:edda6a7238ec 686 /**
Wolfgang Betz 34:edda6a7238ec 687 *@}
Wolfgang Betz 34:edda6a7238ec 688 */
Wolfgang Betz 34:edda6a7238ec 689
Wolfgang Betz 34:edda6a7238ec 690 #ifdef __cplusplus
Wolfgang Betz 34:edda6a7238ec 691 }
Wolfgang Betz 34:edda6a7238ec 692 #endif
Wolfgang Betz 34:edda6a7238ec 693
Wolfgang Betz 34:edda6a7238ec 694 #endif
Wolfgang Betz 34:edda6a7238ec 695
Wolfgang Betz 34:edda6a7238ec 696 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/