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:
Thu Oct 13 15:41:39 2016 +0200
Revision:
0:4fb29d9ee571
First compiling version (without warnings)

Who changed what in which revision?

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