ST / stm-spirit1-rf-driver

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 Jul 06 11:13:31 2017 +0200
Revision:
67:93bec0baf1de
Parent:
34:edda6a7238ec
Clarify some comments

Who changed what in which revision?

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