HelloWorld_IDS01A4 mbed application for Spirit1 P2P demo.

Dependencies:   mbed

Fork of HelloWorld_IDS01A5_Program by rosarium pila

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

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

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rosarium 0:2ddc0583bcec 1 /**
rosarium 0:2ddc0583bcec 2 ******************************************************************************
rosarium 0:2ddc0583bcec 3 * @file SPIRIT_PktCommon.h
rosarium 0:2ddc0583bcec 4 * @author VMA division - AMS
rosarium 0:2ddc0583bcec 5 * @version 3.2.2
rosarium 0:2ddc0583bcec 6 * @date 08-July-2015
rosarium 0:2ddc0583bcec 7 * @brief Configuration and management of the common features of SPIRIT packets.
rosarium 0:2ddc0583bcec 8 *
rosarium 0:2ddc0583bcec 9 * @details
rosarium 0:2ddc0583bcec 10 *
rosarium 0:2ddc0583bcec 11 * This module provides all the common functions and definitions used by the
rosarium 0:2ddc0583bcec 12 * packets modules.
rosarium 0:2ddc0583bcec 13 * Here are also defined all the generic enumeration types that are redefined
rosarium 0:2ddc0583bcec 14 * in the specific packets modules, but every enumeration value is referred
rosarium 0:2ddc0583bcec 15 * to this module. So the user who wants to configure the preamble of a Basic,
rosarium 0:2ddc0583bcec 16 * or a STack packet has to use the enumeration values defined here.
rosarium 0:2ddc0583bcec 17 *
rosarium 0:2ddc0583bcec 18 * <b>Example:</b>
rosarium 0:2ddc0583bcec 19 * @code
rosarium 0:2ddc0583bcec 20 *
rosarium 0:2ddc0583bcec 21 * ...
rosarium 0:2ddc0583bcec 22 *
rosarium 0:2ddc0583bcec 23 * SpiritPktBasicSetPreambleLength(PKT_PREAMBLE_LENGTH_18BYTES);
rosarium 0:2ddc0583bcec 24 *
rosarium 0:2ddc0583bcec 25 * ...
rosarium 0:2ddc0583bcec 26 *
rosarium 0:2ddc0583bcec 27 * @endcode
rosarium 0:2ddc0583bcec 28 *
rosarium 0:2ddc0583bcec 29 * @note Is recommended for the user to not use these API directly
rosarium 0:2ddc0583bcec 30 * importing this module in his application.
rosarium 0:2ddc0583bcec 31 *
rosarium 0:2ddc0583bcec 32 *
rosarium 0:2ddc0583bcec 33 * @attention
rosarium 0:2ddc0583bcec 34 *
rosarium 0:2ddc0583bcec 35 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
rosarium 0:2ddc0583bcec 36 *
rosarium 0:2ddc0583bcec 37 * Redistribution and use in source and binary forms, with or without modification,
rosarium 0:2ddc0583bcec 38 * are permitted provided that the following conditions are met:
rosarium 0:2ddc0583bcec 39 * 1. Redistributions of source code must retain the above copyright notice,
rosarium 0:2ddc0583bcec 40 * this list of conditions and the following disclaimer.
rosarium 0:2ddc0583bcec 41 * 2. Redistributions in binary form must reproduce the above copyright notice,
rosarium 0:2ddc0583bcec 42 * this list of conditions and the following disclaimer in the documentation
rosarium 0:2ddc0583bcec 43 * and/or other materials provided with the distribution.
rosarium 0:2ddc0583bcec 44 * 3. Neither the name of STMicroelectronics nor the names of its contributors
rosarium 0:2ddc0583bcec 45 * may be used to endorse or promote products derived from this software
rosarium 0:2ddc0583bcec 46 * without specific prior written permission.
rosarium 0:2ddc0583bcec 47 *
rosarium 0:2ddc0583bcec 48 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
rosarium 0:2ddc0583bcec 49 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
rosarium 0:2ddc0583bcec 50 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rosarium 0:2ddc0583bcec 51 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
rosarium 0:2ddc0583bcec 52 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
rosarium 0:2ddc0583bcec 53 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rosarium 0:2ddc0583bcec 54 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
rosarium 0:2ddc0583bcec 55 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
rosarium 0:2ddc0583bcec 56 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
rosarium 0:2ddc0583bcec 57 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
rosarium 0:2ddc0583bcec 58 *
rosarium 0:2ddc0583bcec 59 ******************************************************************************
rosarium 0:2ddc0583bcec 60 */
rosarium 0:2ddc0583bcec 61
rosarium 0:2ddc0583bcec 62 /* Define to prevent recursive inclusion -------------------------------------*/
rosarium 0:2ddc0583bcec 63 #ifndef __SPIRIT_PKT_COMMON_H
rosarium 0:2ddc0583bcec 64 #define __SPIRIT_PKT_COMMON_H
rosarium 0:2ddc0583bcec 65
rosarium 0:2ddc0583bcec 66 /* Includes ------------------------------------------------------------------*/
rosarium 0:2ddc0583bcec 67
rosarium 0:2ddc0583bcec 68 #include "SPIRIT_Regs.h"
rosarium 0:2ddc0583bcec 69 #include "SPIRIT_Types.h"
rosarium 0:2ddc0583bcec 70
rosarium 0:2ddc0583bcec 71
rosarium 0:2ddc0583bcec 72 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 73 extern "C" {
rosarium 0:2ddc0583bcec 74 #endif
rosarium 0:2ddc0583bcec 75
rosarium 0:2ddc0583bcec 76
rosarium 0:2ddc0583bcec 77
rosarium 0:2ddc0583bcec 78 /**
rosarium 0:2ddc0583bcec 79 * @addtogroup SPIRIT_Libraries
rosarium 0:2ddc0583bcec 80 * @{
rosarium 0:2ddc0583bcec 81 */
rosarium 0:2ddc0583bcec 82
rosarium 0:2ddc0583bcec 83
rosarium 0:2ddc0583bcec 84 /**
rosarium 0:2ddc0583bcec 85 * @defgroup SPIRIT_PktCommon Pkt Common
rosarium 0:2ddc0583bcec 86 * @brief Configuration and management of the common features of SPIRIT packets.
rosarium 0:2ddc0583bcec 87 * @details See the file <i>@ref SPIRIT_PktCommon.h</i> for more details.
rosarium 0:2ddc0583bcec 88 * @{
rosarium 0:2ddc0583bcec 89 */
rosarium 0:2ddc0583bcec 90
rosarium 0:2ddc0583bcec 91 /**
rosarium 0:2ddc0583bcec 92 * @defgroup PktCommon_Exported_Types Pkt Common Exported Types
rosarium 0:2ddc0583bcec 93 * @{
rosarium 0:2ddc0583bcec 94 */
rosarium 0:2ddc0583bcec 95
rosarium 0:2ddc0583bcec 96
rosarium 0:2ddc0583bcec 97 /**
rosarium 0:2ddc0583bcec 98 * @brief Preamble length in bytes enumeration.
rosarium 0:2ddc0583bcec 99 */
rosarium 0:2ddc0583bcec 100 typedef enum
rosarium 0:2ddc0583bcec 101 {
rosarium 0:2ddc0583bcec 102 PKT_PREAMBLE_LENGTH_01BYTE = 0x00, /*!< Preamble length 1 byte*/
rosarium 0:2ddc0583bcec 103 PKT_PREAMBLE_LENGTH_02BYTES = 0x08, /*!< Preamble length 2 bytes */
rosarium 0:2ddc0583bcec 104 PKT_PREAMBLE_LENGTH_03BYTES = 0x10, /*!< Preamble length 3 bytes */
rosarium 0:2ddc0583bcec 105 PKT_PREAMBLE_LENGTH_04BYTES = 0x18, /*!< Preamble length 4 bytes */
rosarium 0:2ddc0583bcec 106 PKT_PREAMBLE_LENGTH_05BYTES = 0x20, /*!< Preamble length 5 bytes */
rosarium 0:2ddc0583bcec 107 PKT_PREAMBLE_LENGTH_06BYTES = 0x28, /*!< Preamble length 6 bytes */
rosarium 0:2ddc0583bcec 108 PKT_PREAMBLE_LENGTH_07BYTES = 0x30, /*!< Preamble length 7 bytes */
rosarium 0:2ddc0583bcec 109 PKT_PREAMBLE_LENGTH_08BYTES = 0x38, /*!< Preamble length 8 bytes */
rosarium 0:2ddc0583bcec 110 PKT_PREAMBLE_LENGTH_09BYTES = 0x40, /*!< Preamble length 9 bytes */
rosarium 0:2ddc0583bcec 111 PKT_PREAMBLE_LENGTH_10BYTES = 0x48, /*!< Preamble length 10 bytes */
rosarium 0:2ddc0583bcec 112 PKT_PREAMBLE_LENGTH_11BYTES = 0x50, /*!< Preamble length 11 bytes */
rosarium 0:2ddc0583bcec 113 PKT_PREAMBLE_LENGTH_12BYTES = 0x58, /*!< Preamble length 12 bytes */
rosarium 0:2ddc0583bcec 114 PKT_PREAMBLE_LENGTH_13BYTES = 0x60, /*!< Preamble length 13 bytes */
rosarium 0:2ddc0583bcec 115 PKT_PREAMBLE_LENGTH_14BYTES = 0x68, /*!< Preamble length 14 bytes */
rosarium 0:2ddc0583bcec 116 PKT_PREAMBLE_LENGTH_15BYTES = 0x70, /*!< Preamble length 15 bytes */
rosarium 0:2ddc0583bcec 117 PKT_PREAMBLE_LENGTH_16BYTES = 0x78, /*!< Preamble length 16 bytes */
rosarium 0:2ddc0583bcec 118 PKT_PREAMBLE_LENGTH_17BYTES = 0x80, /*!< Preamble length 17 bytes */
rosarium 0:2ddc0583bcec 119 PKT_PREAMBLE_LENGTH_18BYTES = 0x88, /*!< Preamble length 18 bytes */
rosarium 0:2ddc0583bcec 120 PKT_PREAMBLE_LENGTH_19BYTES = 0x90, /*!< Preamble length 19 bytes */
rosarium 0:2ddc0583bcec 121 PKT_PREAMBLE_LENGTH_20BYTES = 0x98, /*!< Preamble length 20 bytes */
rosarium 0:2ddc0583bcec 122 PKT_PREAMBLE_LENGTH_21BYTES = 0xA0, /*!< Preamble length 21 bytes */
rosarium 0:2ddc0583bcec 123 PKT_PREAMBLE_LENGTH_22BYTES = 0xA8, /*!< Preamble length 22 bytes */
rosarium 0:2ddc0583bcec 124 PKT_PREAMBLE_LENGTH_23BYTES = 0xB0, /*!< Preamble length 23 bytes */
rosarium 0:2ddc0583bcec 125 PKT_PREAMBLE_LENGTH_24BYTES = 0xB8, /*!< Preamble length 24 bytes */
rosarium 0:2ddc0583bcec 126 PKT_PREAMBLE_LENGTH_25BYTES = 0xC0, /*!< Preamble length 25 bytes */
rosarium 0:2ddc0583bcec 127 PKT_PREAMBLE_LENGTH_26BYTES = 0xC8, /*!< Preamble length 26 bytes */
rosarium 0:2ddc0583bcec 128 PKT_PREAMBLE_LENGTH_27BYTES = 0xD0, /*!< Preamble length 27 bytes */
rosarium 0:2ddc0583bcec 129 PKT_PREAMBLE_LENGTH_28BYTES = 0xD8, /*!< Preamble length 28 bytes */
rosarium 0:2ddc0583bcec 130 PKT_PREAMBLE_LENGTH_29BYTES = 0xE0, /*!< Preamble length 29 bytes */
rosarium 0:2ddc0583bcec 131 PKT_PREAMBLE_LENGTH_30BYTES = 0xE8, /*!< Preamble length 30 bytes */
rosarium 0:2ddc0583bcec 132 PKT_PREAMBLE_LENGTH_31BYTES = 0xF0, /*!< Preamble length 31 bytes */
rosarium 0:2ddc0583bcec 133 PKT_PREAMBLE_LENGTH_32BYTES = 0xF8 /*!< Preamble length 32 bytes */
rosarium 0:2ddc0583bcec 134
rosarium 0:2ddc0583bcec 135 }PktPreambleLength;
rosarium 0:2ddc0583bcec 136
rosarium 0:2ddc0583bcec 137 #define IS_PKT_PREAMBLE_LENGTH(LENGTH) ((LENGTH == PKT_PREAMBLE_LENGTH_01BYTE) || \
rosarium 0:2ddc0583bcec 138 (LENGTH == PKT_PREAMBLE_LENGTH_02BYTES) || \
rosarium 0:2ddc0583bcec 139 (LENGTH == PKT_PREAMBLE_LENGTH_03BYTES) || \
rosarium 0:2ddc0583bcec 140 (LENGTH == PKT_PREAMBLE_LENGTH_04BYTES) || \
rosarium 0:2ddc0583bcec 141 (LENGTH == PKT_PREAMBLE_LENGTH_05BYTES) || \
rosarium 0:2ddc0583bcec 142 (LENGTH == PKT_PREAMBLE_LENGTH_06BYTES) || \
rosarium 0:2ddc0583bcec 143 (LENGTH == PKT_PREAMBLE_LENGTH_07BYTES) || \
rosarium 0:2ddc0583bcec 144 (LENGTH == PKT_PREAMBLE_LENGTH_08BYTES) || \
rosarium 0:2ddc0583bcec 145 (LENGTH == PKT_PREAMBLE_LENGTH_09BYTES) || \
rosarium 0:2ddc0583bcec 146 (LENGTH == PKT_PREAMBLE_LENGTH_10BYTES) || \
rosarium 0:2ddc0583bcec 147 (LENGTH == PKT_PREAMBLE_LENGTH_11BYTES) || \
rosarium 0:2ddc0583bcec 148 (LENGTH == PKT_PREAMBLE_LENGTH_12BYTES) || \
rosarium 0:2ddc0583bcec 149 (LENGTH == PKT_PREAMBLE_LENGTH_13BYTES) || \
rosarium 0:2ddc0583bcec 150 (LENGTH == PKT_PREAMBLE_LENGTH_14BYTES) || \
rosarium 0:2ddc0583bcec 151 (LENGTH == PKT_PREAMBLE_LENGTH_15BYTES) || \
rosarium 0:2ddc0583bcec 152 (LENGTH == PKT_PREAMBLE_LENGTH_16BYTES) || \
rosarium 0:2ddc0583bcec 153 (LENGTH == PKT_PREAMBLE_LENGTH_17BYTES) || \
rosarium 0:2ddc0583bcec 154 (LENGTH == PKT_PREAMBLE_LENGTH_18BYTES) || \
rosarium 0:2ddc0583bcec 155 (LENGTH == PKT_PREAMBLE_LENGTH_19BYTES) || \
rosarium 0:2ddc0583bcec 156 (LENGTH == PKT_PREAMBLE_LENGTH_20BYTES) || \
rosarium 0:2ddc0583bcec 157 (LENGTH == PKT_PREAMBLE_LENGTH_21BYTES) || \
rosarium 0:2ddc0583bcec 158 (LENGTH == PKT_PREAMBLE_LENGTH_22BYTES) || \
rosarium 0:2ddc0583bcec 159 (LENGTH == PKT_PREAMBLE_LENGTH_23BYTES) || \
rosarium 0:2ddc0583bcec 160 (LENGTH == PKT_PREAMBLE_LENGTH_24BYTES) || \
rosarium 0:2ddc0583bcec 161 (LENGTH == PKT_PREAMBLE_LENGTH_25BYTES) || \
rosarium 0:2ddc0583bcec 162 (LENGTH == PKT_PREAMBLE_LENGTH_26BYTES) || \
rosarium 0:2ddc0583bcec 163 (LENGTH == PKT_PREAMBLE_LENGTH_27BYTES) || \
rosarium 0:2ddc0583bcec 164 (LENGTH == PKT_PREAMBLE_LENGTH_28BYTES) || \
rosarium 0:2ddc0583bcec 165 (LENGTH == PKT_PREAMBLE_LENGTH_29BYTES) || \
rosarium 0:2ddc0583bcec 166 (LENGTH == PKT_PREAMBLE_LENGTH_30BYTES) || \
rosarium 0:2ddc0583bcec 167 (LENGTH == PKT_PREAMBLE_LENGTH_31BYTES) || \
rosarium 0:2ddc0583bcec 168 (LENGTH == PKT_PREAMBLE_LENGTH_32BYTES))
rosarium 0:2ddc0583bcec 169
rosarium 0:2ddc0583bcec 170
rosarium 0:2ddc0583bcec 171
rosarium 0:2ddc0583bcec 172 /**
rosarium 0:2ddc0583bcec 173 * @brief Sync length in bytes enumeration.
rosarium 0:2ddc0583bcec 174 */
rosarium 0:2ddc0583bcec 175 typedef enum
rosarium 0:2ddc0583bcec 176 {
rosarium 0:2ddc0583bcec 177 PKT_SYNC_LENGTH_1BYTE = 0x00, /*!< Sync length 1 byte*/
rosarium 0:2ddc0583bcec 178 PKT_SYNC_LENGTH_2BYTES = 0x02, /*!< Sync length 2 bytes*/
rosarium 0:2ddc0583bcec 179 PKT_SYNC_LENGTH_3BYTES = 0x04, /*!< Sync length 3 bytes */
rosarium 0:2ddc0583bcec 180 PKT_SYNC_LENGTH_4BYTES = 0x06 , /*!< Sync length 4 bytes */
rosarium 0:2ddc0583bcec 181
rosarium 0:2ddc0583bcec 182 }PktSyncLength;
rosarium 0:2ddc0583bcec 183
rosarium 0:2ddc0583bcec 184 #define IS_PKT_SYNC_LENGTH(LENGTH) ((LENGTH == PKT_SYNC_LENGTH_1BYTE) || \
rosarium 0:2ddc0583bcec 185 (LENGTH == PKT_SYNC_LENGTH_2BYTES)|| \
rosarium 0:2ddc0583bcec 186 (LENGTH == PKT_SYNC_LENGTH_3BYTES)|| \
rosarium 0:2ddc0583bcec 187 (LENGTH == PKT_SYNC_LENGTH_4BYTES))
rosarium 0:2ddc0583bcec 188
rosarium 0:2ddc0583bcec 189
rosarium 0:2ddc0583bcec 190
rosarium 0:2ddc0583bcec 191 /**
rosarium 0:2ddc0583bcec 192 * @brief CRC length in bytes enumeration.
rosarium 0:2ddc0583bcec 193 */
rosarium 0:2ddc0583bcec 194 typedef enum
rosarium 0:2ddc0583bcec 195 {
rosarium 0:2ddc0583bcec 196 PKT_NO_CRC = 0x00, /*!< No CRC */
rosarium 0:2ddc0583bcec 197 PKT_CRC_MODE_8BITS = 0x20, /*!< CRC length 8 bits - poly: 0x07 */
rosarium 0:2ddc0583bcec 198 PKT_CRC_MODE_16BITS_1 = 0x40, /*!< CRC length 16 bits - poly: 0x8005 */
rosarium 0:2ddc0583bcec 199 PKT_CRC_MODE_16BITS_2 = 0x60, /*!< CRC length 16 bits - poly: 0x1021 */
rosarium 0:2ddc0583bcec 200 PKT_CRC_MODE_24BITS = 0x80, /*!< CRC length 24 bits - poly: 0x864CFB */
rosarium 0:2ddc0583bcec 201
rosarium 0:2ddc0583bcec 202 }PktCrcMode;
rosarium 0:2ddc0583bcec 203
rosarium 0:2ddc0583bcec 204 #define IS_PKT_CRC_MODE(MODE) ((MODE == PKT_NO_CRC) || \
rosarium 0:2ddc0583bcec 205 (MODE == PKT_CRC_MODE_8BITS) || \
rosarium 0:2ddc0583bcec 206 (MODE == PKT_CRC_MODE_16BITS_1) || \
rosarium 0:2ddc0583bcec 207 (MODE == PKT_CRC_MODE_16BITS_2) || \
rosarium 0:2ddc0583bcec 208 (MODE == PKT_CRC_MODE_24BITS))
rosarium 0:2ddc0583bcec 209
rosarium 0:2ddc0583bcec 210
rosarium 0:2ddc0583bcec 211
rosarium 0:2ddc0583bcec 212 /**
rosarium 0:2ddc0583bcec 213 * @brief Fixed or variable payload length enumeration.
rosarium 0:2ddc0583bcec 214 */
rosarium 0:2ddc0583bcec 215 typedef enum
rosarium 0:2ddc0583bcec 216 {
rosarium 0:2ddc0583bcec 217 PKT_LENGTH_FIX = 0x00, /*!< Fixed payload length */
rosarium 0:2ddc0583bcec 218 PKT_LENGTH_VAR = 0x01 /*!< Variable payload length */
rosarium 0:2ddc0583bcec 219
rosarium 0:2ddc0583bcec 220 }PktFixVarLength;
rosarium 0:2ddc0583bcec 221
rosarium 0:2ddc0583bcec 222 #define IS_PKT_FIX_VAR_LENGTH(LENGTH) ((LENGTH == PKT_LENGTH_FIX) || \
rosarium 0:2ddc0583bcec 223 (LENGTH == PKT_LENGTH_VAR))
rosarium 0:2ddc0583bcec 224
rosarium 0:2ddc0583bcec 225
rosarium 0:2ddc0583bcec 226 /**
rosarium 0:2ddc0583bcec 227 * @brief Control length in bytes enumeration for SPIRIT packets.
rosarium 0:2ddc0583bcec 228 */
rosarium 0:2ddc0583bcec 229 typedef enum
rosarium 0:2ddc0583bcec 230 {
rosarium 0:2ddc0583bcec 231 PKT_CONTROL_LENGTH_0BYTES = 0x00, /*!< Control length 0 byte*/
rosarium 0:2ddc0583bcec 232 PKT_CONTROL_LENGTH_1BYTE, /*!< Control length 1 byte*/
rosarium 0:2ddc0583bcec 233 PKT_CONTROL_LENGTH_2BYTES, /*!< Control length 2 bytes*/
rosarium 0:2ddc0583bcec 234 PKT_CONTROL_LENGTH_3BYTES, /*!< Control length 3 bytes*/
rosarium 0:2ddc0583bcec 235 PKT_CONTROL_LENGTH_4BYTES /*!< Control length 4 bytes*/
rosarium 0:2ddc0583bcec 236
rosarium 0:2ddc0583bcec 237 }PktControlLength;
rosarium 0:2ddc0583bcec 238
rosarium 0:2ddc0583bcec 239 #define IS_PKT_CONTROL_LENGTH(LENGTH) ((LENGTH == PKT_CONTROL_LENGTH_0BYTES) || \
rosarium 0:2ddc0583bcec 240 (LENGTH == PKT_CONTROL_LENGTH_1BYTE) || \
rosarium 0:2ddc0583bcec 241 (LENGTH == PKT_CONTROL_LENGTH_2BYTES) || \
rosarium 0:2ddc0583bcec 242 (LENGTH == PKT_CONTROL_LENGTH_3BYTES) || \
rosarium 0:2ddc0583bcec 243 (LENGTH == PKT_CONTROL_LENGTH_4BYTES))
rosarium 0:2ddc0583bcec 244
rosarium 0:2ddc0583bcec 245 /**
rosarium 0:2ddc0583bcec 246 * @brief Sync words enumeration for SPIRIT packets.
rosarium 0:2ddc0583bcec 247 */
rosarium 0:2ddc0583bcec 248 typedef enum
rosarium 0:2ddc0583bcec 249 {
rosarium 0:2ddc0583bcec 250 PKT_SYNC_WORD_1=0x01, /*!< Index of the 1st sync word*/
rosarium 0:2ddc0583bcec 251 PKT_SYNC_WORD_2, /*!< Index of the 2nd sync word*/
rosarium 0:2ddc0583bcec 252 PKT_SYNC_WORD_3, /*!< Index of the 3rd sync word*/
rosarium 0:2ddc0583bcec 253 PKT_SYNC_WORD_4 /*!< Index of the 4th sync word*/
rosarium 0:2ddc0583bcec 254
rosarium 0:2ddc0583bcec 255 }PktSyncX;
rosarium 0:2ddc0583bcec 256
rosarium 0:2ddc0583bcec 257 #define IS_PKT_SYNCx(WORD) ((WORD == PKT_SYNC_WORD_1) || \
rosarium 0:2ddc0583bcec 258 (WORD == PKT_SYNC_WORD_2) || \
rosarium 0:2ddc0583bcec 259 (WORD == PKT_SYNC_WORD_3) || \
rosarium 0:2ddc0583bcec 260 (WORD == PKT_SYNC_WORD_4))
rosarium 0:2ddc0583bcec 261
rosarium 0:2ddc0583bcec 262
rosarium 0:2ddc0583bcec 263
rosarium 0:2ddc0583bcec 264 /**
rosarium 0:2ddc0583bcec 265 * @brief Max retransmissions number enumeration for SPIRIT packets.
rosarium 0:2ddc0583bcec 266 */
rosarium 0:2ddc0583bcec 267 typedef enum
rosarium 0:2ddc0583bcec 268 {
rosarium 0:2ddc0583bcec 269 PKT_DISABLE_RETX = 0x00, /*!< No retrasmissions*/
rosarium 0:2ddc0583bcec 270 PKT_N_RETX_1 = 0x10, /*!< Max retrasmissions 1*/
rosarium 0:2ddc0583bcec 271 PKT_N_RETX_2 = 0x20, /*!< Max retrasmissions 2*/
rosarium 0:2ddc0583bcec 272 PKT_N_RETX_3 = 0x30, /*!< Max retrasmissions 3*/
rosarium 0:2ddc0583bcec 273 PKT_N_RETX_4 = 0x40, /*!< Max retrasmissions 4*/
rosarium 0:2ddc0583bcec 274 PKT_N_RETX_5 = 0x50, /*!< Max retrasmissions 5*/
rosarium 0:2ddc0583bcec 275 PKT_N_RETX_6 = 0x60, /*!< Max retrasmissions 6*/
rosarium 0:2ddc0583bcec 276 PKT_N_RETX_7 = 0x70, /*!< Max retrasmissions 7*/
rosarium 0:2ddc0583bcec 277 PKT_N_RETX_8 = 0x80, /*!< Max retrasmissions 8*/
rosarium 0:2ddc0583bcec 278 PKT_N_RETX_9 = 0x90, /*!< Max retrasmissions 9*/
rosarium 0:2ddc0583bcec 279 PKT_N_RETX_10 = 0xA0, /*!< Max retrasmissions 10*/
rosarium 0:2ddc0583bcec 280 PKT_N_RETX_11 = 0xB0, /*!< Max retrasmissions 11*/
rosarium 0:2ddc0583bcec 281 PKT_N_RETX_12 = 0xC0, /*!< Max retrasmissions 12*/
rosarium 0:2ddc0583bcec 282 PKT_N_RETX_13 = 0xD0, /*!< Max retrasmissions 13*/
rosarium 0:2ddc0583bcec 283 PKT_N_RETX_14 = 0xE0, /*!< Max retrasmissions 14*/
rosarium 0:2ddc0583bcec 284 PKT_N_RETX_15 = 0xF0 /*!< Max retrasmissions 15*/
rosarium 0:2ddc0583bcec 285
rosarium 0:2ddc0583bcec 286 }PktNMaxReTx;
rosarium 0:2ddc0583bcec 287
rosarium 0:2ddc0583bcec 288 #define IS_PKT_NMAX_RETX(N_RETX) ((N_RETX == PKT_DISABLE_RETX) || \
rosarium 0:2ddc0583bcec 289 (N_RETX == PKT_N_RETX_1) || \
rosarium 0:2ddc0583bcec 290 (N_RETX == PKT_N_RETX_2) || \
rosarium 0:2ddc0583bcec 291 (N_RETX == PKT_N_RETX_3) || \
rosarium 0:2ddc0583bcec 292 (N_RETX == PKT_N_RETX_4) || \
rosarium 0:2ddc0583bcec 293 (N_RETX == PKT_N_RETX_5) || \
rosarium 0:2ddc0583bcec 294 (N_RETX == PKT_N_RETX_6) || \
rosarium 0:2ddc0583bcec 295 (N_RETX == PKT_N_RETX_7) || \
rosarium 0:2ddc0583bcec 296 (N_RETX == PKT_N_RETX_8) || \
rosarium 0:2ddc0583bcec 297 (N_RETX == PKT_N_RETX_9) || \
rosarium 0:2ddc0583bcec 298 (N_RETX == PKT_N_RETX_10) || \
rosarium 0:2ddc0583bcec 299 (N_RETX == PKT_N_RETX_11) || \
rosarium 0:2ddc0583bcec 300 (N_RETX == PKT_N_RETX_12) || \
rosarium 0:2ddc0583bcec 301 (N_RETX == PKT_N_RETX_13) || \
rosarium 0:2ddc0583bcec 302 (N_RETX == PKT_N_RETX_14) || \
rosarium 0:2ddc0583bcec 303 (N_RETX == PKT_N_RETX_15))
rosarium 0:2ddc0583bcec 304
rosarium 0:2ddc0583bcec 305
rosarium 0:2ddc0583bcec 306 /**
rosarium 0:2ddc0583bcec 307 *@}
rosarium 0:2ddc0583bcec 308 */
rosarium 0:2ddc0583bcec 309
rosarium 0:2ddc0583bcec 310
rosarium 0:2ddc0583bcec 311 /**
rosarium 0:2ddc0583bcec 312 * @defgroup PktCommon_Exported_Constants Pkt Common Exported Constants
rosarium 0:2ddc0583bcec 313 * @{
rosarium 0:2ddc0583bcec 314 */
rosarium 0:2ddc0583bcec 315
rosarium 0:2ddc0583bcec 316 #define IS_PKT_LENGTH_WIDTH_BITS(BITS) (BITS<=16)
rosarium 0:2ddc0583bcec 317 #define IS_PKT_SEQ_NUMBER_RELOAD(SEQN) (SEQN<=3)
rosarium 0:2ddc0583bcec 318
rosarium 0:2ddc0583bcec 319 /**
rosarium 0:2ddc0583bcec 320 *@}
rosarium 0:2ddc0583bcec 321 */
rosarium 0:2ddc0583bcec 322
rosarium 0:2ddc0583bcec 323
rosarium 0:2ddc0583bcec 324 /**
rosarium 0:2ddc0583bcec 325 * @defgroup PktCommon_Exported_Macros Pkt Common Exported Macros
rosarium 0:2ddc0583bcec 326 * @{
rosarium 0:2ddc0583bcec 327 */
rosarium 0:2ddc0583bcec 328
rosarium 0:2ddc0583bcec 329
rosarium 0:2ddc0583bcec 330 /**
rosarium 0:2ddc0583bcec 331 * @brief Macro used to compute the lower part of the packet length, to write in the PCKTLEN0 register
rosarium 0:2ddc0583bcec 332 * @param nLength Length of the packet payload.
rosarium 0:2ddc0583bcec 333 * This parameter is an uint16_t.
rosarium 0:2ddc0583bcec 334 * @retval None.
rosarium 0:2ddc0583bcec 335 */
rosarium 0:2ddc0583bcec 336 #define BUILD_PCKTLEN0(nLength) ((nLength) & 0xFF)
rosarium 0:2ddc0583bcec 337
rosarium 0:2ddc0583bcec 338
rosarium 0:2ddc0583bcec 339 /**
rosarium 0:2ddc0583bcec 340 * @brief Macro used to compute the upper part of the packet length, to write the PCKTLEN1 register
rosarium 0:2ddc0583bcec 341 * @param nLength Length of the packet payload.
rosarium 0:2ddc0583bcec 342 * This parameter is an uint16_t.
rosarium 0:2ddc0583bcec 343 * @retval None.
rosarium 0:2ddc0583bcec 344 */
rosarium 0:2ddc0583bcec 345 #define BUILD_PCKTLEN1(nLength) ((nLength) >> 8)
rosarium 0:2ddc0583bcec 346
rosarium 0:2ddc0583bcec 347 /**
rosarium 0:2ddc0583bcec 348 *@}
rosarium 0:2ddc0583bcec 349 */
rosarium 0:2ddc0583bcec 350
rosarium 0:2ddc0583bcec 351
rosarium 0:2ddc0583bcec 352 /**
rosarium 0:2ddc0583bcec 353 * @defgroup PktCommon_Exported_Functions Pkt Common Exported Functions
rosarium 0:2ddc0583bcec 354 * @{
rosarium 0:2ddc0583bcec 355 */
rosarium 0:2ddc0583bcec 356
rosarium 0:2ddc0583bcec 357 void SpiritPktCommonSetControlLength(PktControlLength xControlLength);
rosarium 0:2ddc0583bcec 358 uint8_t SpiritPktCommonGetControlLength(void);
rosarium 0:2ddc0583bcec 359 void SpiritPktCommonSetPreambleLength(PktPreambleLength xPreambleLength);
rosarium 0:2ddc0583bcec 360 uint8_t SpiritPktCommonGetPreambleLength(void);
rosarium 0:2ddc0583bcec 361 void SpiritPktCommonSetSyncLength(PktSyncLength xSyncLength);
rosarium 0:2ddc0583bcec 362 uint8_t SpiritPktCommonGetSyncLength(void);
rosarium 0:2ddc0583bcec 363 void SpiritPktCommonSetFixVarLength(PktFixVarLength xFixVarLength);
rosarium 0:2ddc0583bcec 364 void SpiritPktCommonFilterOnCrc(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 365 SpiritFunctionalState SpiritPktCommonGetFilterOnCrc(void);
rosarium 0:2ddc0583bcec 366 void SpiritPktCommonSetCrcMode(PktCrcMode xCrcLength);
rosarium 0:2ddc0583bcec 367 PktCrcMode SpiritPktCommonGetCrcMode(void);
rosarium 0:2ddc0583bcec 368 void SpiritPktCommonWhitening(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 369 void SpiritPktCommonFec(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 370 void SpiritPktCommonSetSyncxWord(PktSyncX xSyncX, uint8_t cSyncWord);
rosarium 0:2ddc0583bcec 371 uint8_t SpiritPktCommonGetSyncxWord(PktSyncX xSyncX);
rosarium 0:2ddc0583bcec 372 void SpiritPktCommonSetSyncWords(uint32_t lSyncWords, PktSyncLength xSyncLength);
rosarium 0:2ddc0583bcec 373 uint32_t SpiritPktCommonGetSyncWords(PktSyncLength xSyncLength);
rosarium 0:2ddc0583bcec 374 uint8_t SpiritPktCommonGetVarLengthWidth(void);
rosarium 0:2ddc0583bcec 375 void SpiritPktCommonSetDestinationAddress(uint8_t cAddress);
rosarium 0:2ddc0583bcec 376 uint8_t SpiritPktCommonGetTransmittedDestAddress(void);
rosarium 0:2ddc0583bcec 377 void SpiritPktCommonSetMyAddress(uint8_t cAddress);
rosarium 0:2ddc0583bcec 378 uint8_t SpiritPktCommonGetMyAddress(void);
rosarium 0:2ddc0583bcec 379 void SpiritPktCommonSetBroadcastAddress(uint8_t cAddress);
rosarium 0:2ddc0583bcec 380 uint8_t SpiritPktCommonGetBroadcastAddress(void);
rosarium 0:2ddc0583bcec 381 SpiritFunctionalState SpiritPktCommonGetTxAckRequest(void);
rosarium 0:2ddc0583bcec 382 void SpiritPktCommonSetMulticastAddress(uint8_t cAddress);
rosarium 0:2ddc0583bcec 383 uint8_t SpiritPktCommonGetMulticastAddress(void);
rosarium 0:2ddc0583bcec 384 void SpiritPktCommonSetCtrlMask(uint32_t lMask);
rosarium 0:2ddc0583bcec 385 uint32_t SpiritPktCommonGetCtrlMask(void);
rosarium 0:2ddc0583bcec 386 void SpiritPktCommonSetCtrlReference(uint32_t lReference);
rosarium 0:2ddc0583bcec 387 uint32_t SpiritPktCommonGetCtrlReference(void);
rosarium 0:2ddc0583bcec 388 void SpiritPktCommonSetTransmittedCtrlField(uint32_t lField);
rosarium 0:2ddc0583bcec 389 uint32_t SpiritPktCommonGetTransmittedCtrlField(void);
rosarium 0:2ddc0583bcec 390 void SpiritPktCommonFilterOnMyAddress(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 391 void SpiritPktCommonFilterOnMulticastAddress(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 392 void SpiritPktCommonFilterOnBroadcastAddress(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 393 SpiritFunctionalState SpiritPktCommonGetFilterOnMyAddress(void);
rosarium 0:2ddc0583bcec 394 SpiritFunctionalState SpiritPktCommonGetFilterOnMulticastAddress(void);
rosarium 0:2ddc0583bcec 395 SpiritFunctionalState SpiritPktCommonGetFilterOnBroadcastAddress(void);
rosarium 0:2ddc0583bcec 396 uint8_t SpiritPktCommonGetReceivedDestAddress(void);
rosarium 0:2ddc0583bcec 397 uint32_t SpiritPktCommonGetReceivedCtrlField(void);
rosarium 0:2ddc0583bcec 398 void SpiritPktCommonGetReceivedCrcField(uint8_t* cCrcFieldVect);
rosarium 0:2ddc0583bcec 399 void SpiritPktCommonAutoAck(SpiritFunctionalState xAutoAck,SpiritFunctionalState xPiggybacking);
rosarium 0:2ddc0583bcec 400 void SpiritPktCommonRequireAck(SpiritFunctionalState xRequireAck);
rosarium 0:2ddc0583bcec 401 void SpiritPktCommonSetTransmittedSeqNumberReload(uint8_t cSeqNumberReload);
rosarium 0:2ddc0583bcec 402 void SpiritPktCommonSetNMaxReTx(PktNMaxReTx xNMaxReTx);
rosarium 0:2ddc0583bcec 403 uint8_t SpiritPktCommonGetNMaxReTx(void);
rosarium 0:2ddc0583bcec 404 uint8_t SpiritPktCommonGetReceivedDestAddress(void);
rosarium 0:2ddc0583bcec 405 uint8_t SpiritPktCommonGetReceivedSourceAddress(void);
rosarium 0:2ddc0583bcec 406 uint8_t SpiritPktCommonGetReceivedSeqNumber(void);
rosarium 0:2ddc0583bcec 407 uint8_t SpiritPktCommonGetReceivedNackRx(void);
rosarium 0:2ddc0583bcec 408 uint8_t SpiritPktCommonGetTransmittedSeqNumber(void);
rosarium 0:2ddc0583bcec 409 uint8_t SpiritPktCommonGetNReTx(void);
rosarium 0:2ddc0583bcec 410 void SpiritPktCommonFilterOnControlField(SpiritFunctionalState xNewState);
rosarium 0:2ddc0583bcec 411 SpiritFunctionalState SpiritPktCommonGetFilterOnControlField(void);
rosarium 0:2ddc0583bcec 412
rosarium 0:2ddc0583bcec 413 /**
rosarium 0:2ddc0583bcec 414 *@}
rosarium 0:2ddc0583bcec 415 */
rosarium 0:2ddc0583bcec 416
rosarium 0:2ddc0583bcec 417 /**
rosarium 0:2ddc0583bcec 418 *@}
rosarium 0:2ddc0583bcec 419 */
rosarium 0:2ddc0583bcec 420
rosarium 0:2ddc0583bcec 421
rosarium 0:2ddc0583bcec 422 /**
rosarium 0:2ddc0583bcec 423 *@}
rosarium 0:2ddc0583bcec 424 */
rosarium 0:2ddc0583bcec 425
rosarium 0:2ddc0583bcec 426 #ifdef __cplusplus
rosarium 0:2ddc0583bcec 427 }
rosarium 0:2ddc0583bcec 428 #endif
rosarium 0:2ddc0583bcec 429
rosarium 0:2ddc0583bcec 430 #endif
rosarium 0:2ddc0583bcec 431
rosarium 0:2ddc0583bcec 432 /******************* (C) COPYRIGHT 2015 STMicroelectronics *****END OF FILE****/